FritzFrog - die nächste Generation von Botnetzen

Zusammenfassung



  • Guardicore entdeckte das hoch entwickelte Peer-to-Peer-Botnetz (P2P) FritzFrog , das seit Januar 2020 aktiv in SSH-Server hackt.
  • Malware auf Golang : FritzFrog führt auf Golang modularen, Multithread- und fileless Schadcode aus, der keine Spuren auf der Festplatte eines infizierten Geräts hinterlässt.
  • Aktive Ausrichtung auf Regierungs-, Bildungs-, Finanz- und andere Ressourcen : FritzFrog versuchte, Gewalt auszuüben und an zig Millionen IP-Adressen von Regierungsstellen, Bildungseinrichtungen, medizinischen Zentren, Banken und vielen Telekommunikationsunternehmen zu verteilen. Unter ihnen wurden mehr als 500 Server erfolgreich angegriffen, darunter bekannte Universitäten in den USA und Europa sowie eine Eisenbahngesellschaft.
  • Komplexität : FritzFrog ist vollständig proprietär, seine P2P-Implementierung wurde von Grund auf neu geschrieben, was auf die hohe Professionalität seiner Entwickler im Bereich der Softwareentwicklung hinweist.
  • : Guardcore Labs Golang, P2P FritzFrog .
  • : , FritzFrog, Rakos.




FritzFrog ist ein sehr ausgeklügeltes Peer-to-Peer-Botnetz, das weltweit aktiv in SSH-Server eindringt. Dank seiner dezentralen Struktur verteilt es die Kontrolle auf alle seine Knoten. Dieses Netzwerk hat keinen einzigen Fehlerpunkt, und Peers kommunizieren ständig miteinander, um es stabil, aktualisiert und ständig aktiv zu halten. P2P-Verbindungen werden über einen verschlüsselten Kanal mit AES für die symmetrische Verschlüsselung und Diffie-Hellman für den Schlüsselaustausch hergestellt.



Im Gegensatz zu anderen P2P-Botnetzen ist FritzFrog in seinen Eigenschaften einzigartig: Es ist fileless, da es Pakete direkt im Speicher erstellt und ausführt. Trotz der effektiven gleichmäßigen Verteilung der Ziele in seinem Netzwerk zwingt er sie sehr aggressiv brutal; Die proprietären P2P-Protokolle basieren nicht auf einer der derzeit bekannten Implementierungen.



Der in Golang geschriebene Schadcode ist sehr veränderbar und hinterlässt keine Spuren auf der Festplatte. Es erstellt eine Hintertür in Form eines öffentlichen SSH-Schlüssels und ermöglicht Angreifern so den permanenten Zugriff auf das Gerät des Opfers. Von Beginn seiner Tätigkeit an haben wir 20 verschiedene Versionen der ausführbaren Malware identifiziert.



In diesem Beitrag erklären wir, wie FritzFrog ausgesetzt war, sowie die Art seines P2P-Netzwerks und die Interna des Schadcodes - einschließlich des Infektionsprozesses, der Befehlsverschlüsselung und des flüchtigen Verhaltens.



Guardicore Labs hat ein Github-Repository mit einem Skript zur Erkennung dieser Malware und einer Liste von Indikatoren für Kompromisse (IoC) für ihre Aktivitäten zur Verfügung gestellt.





Geografische Verteilung infizierter Wirte. Die am stärksten gefährdeten Länder waren die USA, China und Südkorea.



FritzFrog Research



Guardcore Labs untersuchte FritzFrog erstmals in einer Botnet Encyclopedia- Studie . Am 9. Januar neue Angriffe mit der Ausführung von böswilligen Prozessen ifconfigund nginx. Wir haben begonnen, eine stetige und signifikante Zunahme böswilliger Aktivitäten zu verfolgen, die bald 13.000 Angriffe auf das Guardcore Global Sensors Network (GGSN) erreichte. Wir haben im Laufe der Jahre 20 verschiedene Versionen der FritzFrog-Binärdateien verfolgt.





Die Grafik zeigt die Anzahl der FritzFrog-Angriffe auf GGSN.



Überraschenderweise schien der Schadcode auf den ersten Blick nicht mit einem Befehls- und Steuerungsserver (CNC) zu kommunizieren. Erst als wir anfingen, das Botnetz ernsthaft zu untersuchen, stellten wir fest, dass es überhaupt keinen Server gab.



Um das Botnetzwerk abzufangen, hat Guardcore Labs auf Golang einen Client entwickelt, der Schlüssel mit Malware austauschen sowie Befehle senden und Antworten empfangen kann. Dieses Programm, das wir dann "Frogger" nannten, ermöglichte es uns, die Art und den Zweck des Netzwerks zu untersuchen. Dank des Froggers haben wir unsere eigenen Knoten zum Netzwerk "hinzugefügt", konnten eine Verbindung zum Botnetz herstellen und waren an der Übertragung aktiver P2P-Verkehrsdaten beteiligt.



FritzFrog hat Millionen von IP-Adressen brutal erzwungen, darunter Regierungsbüros, Bildungseinrichtungen, medizinische Zentren, Banken und viele Telekommunikationsunternehmen. Davon wurden mehr als 500 Server erfolgreich angegriffen, darunter bekannte Universitäten in den USA und Europa sowie eine Eisenbahngesellschaft.



P2P der nächsten Generation



Warum neue Generation?



FritzFrog , :



  • : FritzFrog , (BLOB).
  • : .
  • : . , P2P DDG «root».
  • : .
  • : P2P - P2P , μTP.


Sobald das Opfer erfolgreich gehackt wurde, wird UPX-gepackter Schadcode darauf gestartet, der sich dann sofort selbst löscht. Um den Verdacht zu minimieren, werden böswillige Prozesse unter den Namen ifconfig und nginx ausgeführt. Zu Beginn seiner Arbeit wartet der Schadcode auf Port 1234 und wartet auf Befehle. Die ersten empfangenen Befehle synchronisieren das Opfer mit der Datenbank von Netzwerkkollegen und Brute-Force-Zielen.





FritzFrog-Hostcluster. Jeder Knoten ist ein infizierter SSH-Server. Die Größe der Knoten zeigt ihre Konnektivität mit dem Rest des Netzwerks.



Datenverkehr an einem nicht standardmäßigen Port, z. B. 1234, kann von einer Firewall oder einem anderen Sicherheitssystem leicht erkannt und blockiert werden. Daher gingen die Entwickler von FritzFrog kreativ auf das Problem ein und anstatt Befehle direkt über Port 1234 zu übertragen, stellt der Angreifer über SSH eine Verbindung zum Opfer her und startet einen Client auf dem Netcat-Gerät, der wiederum eine Verbindung zum Botnet-Server herstellt. Somit wird jeder Befehl als Netcat-Eingabe über SSH übergeben und erreicht leicht den Schadcode.





FritzFrog tunnelt seine P2P-Befehle über den klassischen SSH-Port mit dem lokalen Netcat-Client des infizierten Geräts.



FritzFrog-Angreifer haben einen verschlüsselten Befehlskanal mit über 30 verschiedenen Befehlen bereitgestellt. Befehlsparameter und Antworten werden in bestimmten Datenstrukturen übergeben und im JSON-Format freigegeben ("mobilisiert"). Die Daten werden mit symmetrischer AES-Verschlüsselung verschlüsselt und vor dem Senden in Base64 codiert. Die an der Datenübertragung beteiligten Knoten verwenden das Diffie-Hellman-Protokoll, um Schlüssel auszutauschen.







Die Knoten im FritzFrog-Netzwerk halten engen Kontakt und pingen sich ständig an, um die Konnektivität, den Peer- und Zielaustausch sowie die gegenseitige Synchronisierung zu überprüfen. Knoten beteiligen sich auch an einem cleveren Wahlprozess, der sich auf die Verteilung von Brute-Force-Zielen im Netzwerk auswirkt. Beobachtungen von Guardcore Labs bestätigen, dass die Ziele gleichmäßig über das Netzwerk verteilt sind und keine zwei Knoten versuchen, dasselbe Ziel zu hacken.



Eintauchen in bösartigen Code



Die FritzFrog-Binärdatei ist ein fortschrittlicher Schadcode auf Golang. Es funktioniert vollständig im Speicher. Jeder Knoten mit bösartigem Code speichert die gesamte Datenbank mit Zielen und Peers im Speicher. Der Schadcode erstellt mehrere Threads, um verschiedene Aufgaben gleichzeitig zu verarbeiten, wie in der folgenden Tabelle gezeigt.



FritzFrog definiert die Kontrollzustände von Opfern und Zielgeräten wie folgt:



  1. Ziel : Das Gerät aus der Zielanforderung wird dann an das Cracker-Modul übergeben, das wiederum versucht, es zu scannen und zu knacken.
  2. Bereitstellen : Ein erfolgreich gefährdetes Gerät wird über das DeployMgmt-Modul in die Warteschlange für Malware-Infektionen gestellt.
  3. Owned (): P2P Owned.






Jeder Knoten mit bösartigem Code verfügt über einen Arbeitsthread, der dafür verantwortlich ist, Befehle zu empfangen, zu analysieren und an die entsprechenden Funktionen im Code zu übergeben.





Eine Arbeitsfunktion in einem Disassembler. Jeder Zweig entspricht der unterstützten P2P-Funktionalität.



Der Schadcode ist vorübergehender Natur: Obwohl er versucht, Systemneustarts zu überleben, wird für den zukünftigen Zugriff auf das gehackte Ziel eine Hintertür gespeichert, deren Login und Passwort von den Peers im Netzwerk gespeichert werden. Der Schadcode fügt der Datei den öffentlichen SSH-RSA-Schlüssel hinzu authorized_keys. Diese einfache Hintertür ermöglicht es einem Angreifer - mit einem privaten, privaten Schlüssel -, sich ohne Kennwort zu authentifizieren, falls das ursprüngliche Kennwort geändert wird. Der einzige öffentliche Schlüssel, den FritzFrog verwendet, ist unten dargestellt.



ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJYZIsncBTFc+iCRHXkeGfFA67j+kUVf7h/IL+sh0RXJn7yDN0vEXz7ig73hC//2/71sND+x+Wu0zytQhZxrCPzimSyC8FJCRtcqDATSjvWsIoI4j/AJyKk5k3fCzjPex3moc48TEYiSbAgXYVQ62uNhx7ylug50nTcUH1BNKDiknXjnZfueiqAO1vcgNLH4qfqIj7WWXu8YgFJ9qwYmwbMm+S7jYYgCtD107bpSR7/WoXSr1/SJLGX6Hg1sTet2USiNevGbfqNzciNxOp08hHQIYp2W9sMuo02pXj9nEoiximR4gSKrNoVesqNZMcVA0Kku01uOuOBAOReN7KJQBt


Die schädliche Datei führt alle Arten von Shell-Befehlen auf dem lokalen Gerät aus, einige mehrmals, um den Status des Systems zu überwachen. Beispielsweise wird es ausgeführt free –m, um den verfügbaren RAM zu überprüfen uptime, journalctl –s @0 –u sshdSSH-Anmeldungen zu verfolgen und andere Befehle, um Statistiken zur CPU-Auslastung anzuzeigen. Diese Statistiken stehen anderen Knoten im Netzwerk zur Verfügung und werden verwendet, um verschiedene Entscheidungen zu treffen, z. B. ob der Cryptominer auf dem Gerät ausgeführt werden soll oder nicht. Wenn eine Entscheidung getroffen wird, startet der Schadcode einen separaten Prozess libexec, um Monero abzubauen. Dieser Miner basiert auf dem beliebten XMRig-Miner und kommuniziert web.xmrpool.euüber Port 5555 mit dem öffentlichen Schwimmbad .



Bösartiges Torrent-ähnliches Netzwerk



FritzFrog ist auf die Möglichkeit angewiesen, Dateien im gesamten Netzwerk gemeinsam zu nutzen, um neue Geräte zu infizieren und schädliche Elemente wie den Monero Cryptominer zu starten.



Um Dateien zwischen Knoten auszutauschen, verwendet FritzFrog einen heimlichen, dateilosen Ansatz: Dateien werden in speicherinterne Arrays von Binärdaten unterteilt, und bösartiger Code überwacht die verfügbaren Arrays, indem er sie zusammen mit dem Hashwert jedes Arrays in einer Karte speichert.



Wenn Knoten A eine Datei von seinem Peer, Knoten B, empfangen möchte, kann er eine Anfrage getblobstatsan Knoten B senden , um herauszufinden, welche Arrays er besitzt. Dann kann Knoten A ein bestimmtes Array über seinen Hash abrufen, entweder mit einem P2P-Befehl getbinoder mit HTTP an der Adresse http://1234/. Sobald Knoten A alle Arrays empfangen hat, erstellt er die Datei über das Assemble-Modul und führt sie aus.





getblolbstats. , .





Das Verfolgen von P2P-Botnetz-Vorgängen ist schwierig. Aufgrund der verteilten Natur des Netzwerks können darin enthaltene Befehle von jedem Knoten zu jedem Knoten übertragen werden. Wir haben jedoch versucht, dieses P2P-Botnetz mit früheren ähnlichen Bedrohungen zu vergleichen.



Auch im Vergleich zu anderen P2P-Botnetzen bleibt FritzFrog einzigartig: Es verwendet IRC nicht wie IRCflu, läuft im Gegensatz zu DDG direkt im Speicher und läuft auf Unix-Geräten im Gegensatz zum InterPlanetary Storm-Botnetz. Wenn es wie jemand aussieht, insbesondere in Bezug auf die Benennung von Funktionen und die Versionsnummerierung, dann auf Rakos , einem P2P-Botnetz auf Golang, das bereits 2016 von ESET analysiert wurde.



Aktivitätsverfolgung und -minderung



Guardcore Labs stellte das FritzFrog-Tracking-Skript zur Verfügung, das auf SSH-Servern ausgeführt werden kann. Es sucht nach folgenden Botnet-Indikatoren:



  • Starten von Prozessen nginx, ifconfigoder libexecderen ausführbaren Datei existiert nicht mehr auf dem System (wie Sie unten sehen können).
  • Abhören von Port 1234.


Darüber hinaus kann der TCP-Verkehr auf Port 5555 den Netzwerkverkehr zum Monero-Pool anzeigen.



ubuntu@ip-111-11-11-11:~$ ./detect_fritzfrog.sh
FritzFrog Detection Script by Guardicore Labs
=============================================
 
[*] Fileless process nginx is running on the server.
[*] Listening on port 1234
[*] There is evidence of FritzFrog's malicious activity on this machine.


FritzFrog nutzt die Port- und Protokoll-Forcing-Funktion der meisten Firewall-Systeme. Sie können solche Bedrohungen mithilfe prozessbasierter Segmentierungsregeln beseitigen.



Schwache Passwörter sind eine wichtige Sicherheitslücke für FritzFrog-Angriffe. Wir empfehlen die Verwendung sicherer Kennwörter und öffentlicher Autorisierungsschlüssel, die viel sicherer sind. Darüber hinaus ist es von entscheidender Bedeutung, den öffentlichen Schlüssel von FritzFrog aus der Datei auszuschließen authorization_keys, um zu verhindern, dass Angreifer Zugriff auf das Gerät erhalten. Router und IoT-Geräte legen normalerweise ihre SSH offen und sind daher anfällig für FritzFrog-Angriffe. Wir empfehlen, den SSH-Port für solche Geräte zu ändern oder SSH vollständig zu deaktivieren, wenn die Funktionalität nicht verwendet wird.



All Articles