Anatomie der Kryptominer: Analyse von Kryptominern
Zusammenfassung
Dies ist der zweite Teil unserer dreiteiligen Blogreihe „Anatomie der Kryptominer“. In Teil 1ging es um Kryptowährungen im Allgemeinen, um ihre unterschiedlichen Eigenschaften und um die Frage, warum einige von ihnen für Cyberkriminelle besonders interessant sind.
In diesem Teil wollen wir einige Kryptominer-Proben eingehender analysieren, um ihre Funktionsmechanismen zu verstehen. Wir werden uns auf Kryptominer konzentrieren, die Monero und Zephyr schürfen. Dies sind zwei der Coins, die sich als geeignet für bösartige Aktivitäten erwiesen haben. In diesem Blogbeitrag gehen wir auf die folgenden Themen ein:
Die Verwendung des Blockchain-Netzwerks zur Identifizierung verdächtiger Mining-Kommunikation über eine potenzielle Kryptominer-Malware
Vier exemplarische Fallstudien, in denen verschiedene Topologien über einen längeren Zeitraum für hartnäckige Mining-Aktivitäten verwendet werden
Der faszinierende Fall einer lange andauernden, intensiven Kampagne mit Tausenden von Opfern, die 5,50 US-Dollar pro Stunde generiert
Angreifer, die mehrere Coins in einer einzigen Kampagne verwenden
Erkennung durch Netzwerkaktivitäten und Querverbindungen zum Blockchain-Netzwerk
Erkennung durch Speicheranalyse von Prozessen sowie Fingerprinting von Konsensus-Algorithmen
Für diesen Blogbeitrag haben wir außerdem aus den Fallstudien eine Liste von Indikatoren für eine Kompromittierung (Indicators of Compromise, IoCs) zusammengestellt, um Sicherheitsteams beim Schutz ihrer Assets zu unterstützen.
Zum Schluss werden wir noch Erkennungstechniken behandeln, die auf den Konzepten der ASIC-resistenten Algorithmen basieren, und auf Methoden zur Erkennung von Kryptomining-Aktivitäten eingehen. Die Erkennung konzentriert sich auf grundlegende Mining-Aspekte und kann auf Netzwerkebene oder Betriebssystemebene angewendet werden.
Analyse des Monero-Netzwerks
Das Monero-Netzwerk basiert auf dem Levin-Protokoll zur Implementierung von P2P-Kommunikation (Peer-to-Peer) über die Netzwerkknoten. Es verwendet das Protokoll, um Blockchain-Vorgänge wie neue Transaktionen und neue Blöcke zu verteilen. Darüber hinaus gibt es dem Netzwerk die Fähigkeit, sich durch die Veröffentlichung von Peer-Knoten auf dezentrale Weise selbst zu erhalten und Angriffe durch Konsensus-Algorithmen auszuschalten.
Wir verwenden Monero als Beispiel, doch Netzwerkerkennung einer Blockchain dürfte in den meisten Kryptowährungen möglich sein. Das liegt an der verteilten Struktur der Blockchain-Netzwerke. Nähere Einzelheiten dazu finden Sie in unserem vorherigen Blogbeitrag.
Netzwerkerkundung
Da das Monero-Netzwerk ein dezentralisiertes P2P-Netzwerk von einzelnen Beitragenden ist, können wir uns einfach selbst mit ihm verbinden. Durch eine Kartierung der Monero-Netzwerkstruktur erhalten wir zuverlässige IOCs (wie Knoten-IP-Adressen) und erkennen potenzielle Aktivitäten der Knoten-Hubs, die stärker verbunden sind als andere.
Diese Informationen können zur Erkennung und Untersuchung von Mining-Vorgängen verwendet werden. Außerdem geben sie uns die Möglichkeit, das Netzwerk auf Schwachstellen und Anfälligkeit für Blockchain-Angriffe zu untersuchen. Abbildung 1 ist eine visuelle Darstellung des Monero-Mining-Netzwerks. Die Wärmekarte zeigt die Dichte der Knoten nach geografischem Gebiet. Wir haben Knoten, die öffentlich für die Welt zugänglich sind, mit roten Punkten gekennzeichnet.
Da das Netzwerk aus verteilten Peer-Knoten besteht, muss jeder Kryptominer direkt oder indirekt mit einem der weltweit rund 30.000 Server interagieren, die auf unserer Karte zu finden sind. Wie wir noch zeigen werden, hat sich die Karte für die Suche nach Kryptominer-Proben sowie für das Erkennen direkter Netzwerkverbindungen zu den Blockchains als sehr wertvoll erwiesen. (Weitere Informationen finden Sie auf unserem GitHub-Repository, wo auch der Quellcode für Blockchain-Crawling und Kartenerstellung verfügbar ist.)
Verbindungen von Kryptominern zum Netzwerk erkennen
Anhand der verschiedenen durch Mapping des Monero-Netzwerks gewonnenen Indikatoren ist es möglich, Proben zu identifizieren, die mit dem Blockchain-Netzwerk interagieren. Mit VirusTotal Livehunt lassen sich beispielsweise Dateien identifizieren, die bekannte Knotenadressen enthalten, was die Erkennung aktiver Kryptominer-Kampagnen unterstützt (Abbildung 2).
Wie alle anderen Methoden im Sicherheitsbereich auch ist dies keine Suchtechnik, die immer ausreichend ist. Die ausschließliche Verwendung dieses Ansatzes kann zu falsch positiven Ergebnissen führen, wenn der Server kein exklusiver Blockchain-Knoten ist. Unter Umständen liefert er auch zu wenig Transparenz, da die Karte nicht alle Knoten aufdeckt. Eine Kombination dieser Technik mit anderen Indikatoren erhöht jedoch die Erkennungsrate für True Positives.
Die Karte enthält öffentlich zugängliche Knoten sowie Knoten, die vor Kurzem zugänglich waren. Einige der Knoten werden für mehr als einen Monero-Knoten verwendet und dienen beispielsweise als Spiegel des Python PyPi- Repositorys oder eines anderen Dienstes. Abbildung 3 zeigt ein Beispiel für einen Server, der mehrere Dienste bereitstellt, was zu erheblichen Ablenkungen im Suchprozess führen kann. Wir haben diese Server aus der Analyse entfernt, um die Zahl potenzieller False Positives zu verringern.
Das Herausfiltern irrelevanter Proben ist bei der Bedrohungsjagd genauso wichtig wie die Ermittlung relevanter Proben. Die Netzwerkanalyse kann in Kombination mit einem Querverbindungsansatz Kryptominer und vollständige, über Botnets orchestrierte Mining-Kampagnen aufdecken. Durch die Integration zusätzlicher statischer Analysetechniken, wie zum Beispiel das Abgleichen von hartcodierten Wallet-Adressen, können wir uns effizient auf die relevantesten schädlichen Proben konzentrieren.
Analyse von Kryptominer-Proben
Da Kryptomining seinem Wesen nach auffällig ist, sind entsprechende Aktivitäten gleichsam mit „bloßem Auge“ zu erkennen. Ein aufmerksamer IT-Experte kann auch ohne ausgeklügelte Anti-Malware-Tools die Anomalien erkennen, die von Kryptominern erzeugt werden. Selbst Mitarbeiter aus nichttechnischen Bereichen haben ein Gefühl für die normale Performance ihres Computers. Verlangsamt sie sich stark, werden sie wahrscheinlich einen Experten für die Analyse hinzuziehen, der die Ursache leicht finden kann. Aus diesem Grund machen sich viele Kryptominer nicht die Mühe, die Malware vor Analyse und Erkennung zu schützen, sondern operieren stattdessen gemäß einer Strategie der nicht zielgerichteten Masseninfektion.
In den folgenden Fallstudien behandeln wir einige der Kryptominer-Proben, die wir im freien Internet identifiziert haben, und untersuchen einige der interessantesten Aspekte ihres Betriebs und ihres Verhaltens. Für die Erstellung dieser Fallstudien wurden zwei Hauptfaktoren herangezogen: (1) ein relevanter Coin entsprechend den Erläuterungen im ersten Blogbeitrag dieser Reiheund (2) die genutzte Mining-Topologie.
Fallstudie 1: Eine hartnäckige und massive Kampagne
Im Rahmen dieser Studie haben wir eine Vielzahl von Kryptominer-Proben analysiert. In einem Fall handelte es sich um eine über sechs Jahre laufende Kampagne. Wie bei lang andauernden Kampagnen üblich, scheint es sich entweder um eine organisierte Operation oder einen Malware-Verteilungsdienst zu handeln, der den Kryptominer für einen Dritten bereitstellt.
Eine Analyse dieser Probe zeigt, dass sie mehrere Proxys enthält, die eine kumulierte Hashrate von 5,6 MH/s ergeben.Das entspricht Tausenden kompromittierter Maschinen (Abbildung 4). Dies ist ein massiver und hartnäckiger Angriff, und da die Hashrate stabil bleibt, bleibt die Malware wahrscheinlich von den meisten Opfern unentdeckt und läuft ungehindert weiter. Diese Art von Angriff stellt für die Urheber eine äußerst lukrative Kampagne dar.
Die Kampagne ist mindestens seit Juni 2018 aktiv und enthält Indikatoren (zum Beispiel die Sprache, die in den Proben verwendet wird), die auf eine Zusammenarbeit von russischen und chinesischen Cyberkriminellen hindeuten könnten. Auch die Analyse der C2-Server (Command and Control) spricht für diese Theorie. Eine endgültige Bestätigung lag zum Datum der Veröffentlichung dieses Beitrags jedoch noch nicht vor.
Als der vorliegende Beitrag verfasst wurde, hatte der Angreifer mindestens 1.702 XMR angesammelt. Das entspricht nach heutigem Wechselkurs einem Wert von etwa 280.000 US-Dollar. Verteilt auf sechs Jahre beläuft sich der Wert auf durchschnittlich 47.000 US-Dollar pro Jahr aus einer einzigen Kampagne.
Die meisten mit dieser Kampagne verknüpften Proben verwenden eine Skriptsprache, die dem Betriebssystem des Opfers als dem ursprünglichen Loader und Downloader entspricht. Sie ist stark auf Routing und irreführende Netzwerkverbindungen angewiesen, wahrscheinlich um die schädliche Datei vom C2-Server zu entkoppeln.
Nach der Analyse der Kampagnen-Proben stellten wir fest, dass PowerShell zur Bereitstellung einer ausführbaren Datei namens loader in getarnter Form und mithilfe des r77-Rootkit verwendet wird. Selbst ohne eine Analyse des komplexen Droppers sehen wir, dass es mehrere Versionen dieses Kryptominers gibt.
In einigen Versionen enthält der Kryptominer selbst die config.json-Datei, die die Mining-Konfiguration enthält. In anderen Proben legt das OracleLoader-Skript den Kryptominer ab und richtet die Konfiguration ein. Die Malware verfügt außerdem über einen Aktualisierungsmechanismus, der das Botnet im Falle einer Kompromittierung wiederherstellen kann (Tabelle 1).
Merkmal |
Wert |
Hinweis |
---|---|---|
Malware-Name |
Oracle Loader |
|
Aktuelle Version |
1.1.72.0 |
<5.133.65.53>/Oracle/ver$77_loader.exe.txt |
Zugehörige Komponenten |
|
Tabelle 1: Oracle Loader-Eigenschaften
Die Malware hört auch auf Port 999 und legt die HTTP-API-Funktion von XMRig offen. Dadurch kann der Angreifer auf den Miner des Opfers zugreifen und den Mining-Prozess überwachen. Wenn der Computer des Opfers direkt mit dem Internet verbunden ist und sich nicht hinter einem NAT-Router (Network Address Translation) oder einer externen Firewall befindet, können wir die Opfer theoretisch über Netzwerküberwachungsdienste wie Shodan finden. Abbildung 5 zeigt das Ergebnis einer Shodan-Abfrage, mit der potenzielle Opfer ermittelt werden.
Wenn wir die XMRig Worker Monitor-Webanwendung zur Überwachung der Miner von Opfern verwenden, können wir Miner-Informationen wie CPU-Modell und Hashrate erhalten. Über diese Schnittstelle können wir nur Informationen abfragen. Obwohl wir also Aktivitäten sehen können, können wir über die Schnittstelle den Miner weder kontrollieren noch herunterfahren (Abbildung 6).
Wie wir im Dashboard des Mining-Pools sehen können, deutet die konstante Hashrate darauf hin, dass die Opfer über die ganzen Welt verteilt sind.Andernfalls wäre eine wechselnde Hashrate basierend auf den aktiven Stunden der Zeitzone zu erwarten. Eine weitere Erklärung könnte sein, dass der Angreifer Server und nicht Verbraucher ins Visier nimmt, wie es andere Kryptominer-Kampagnen tun.
Fallstudie 2: Von einem Zephyr-Kryptominer verwendete Public-Pool-Topologie
Zwar gibt es einige hochmotivierte und raffinierte Angreifer mit langfristigen Kampagnen, die wie in Fallstudie 1 enorme Gewinne einstreichen. Sie machen jedoch nicht den Hauptanteil an der Bedrohung aus. Am häufigsten sind Kryptominer, die öffentliche Pools verwenden. Diese Kryptominer enthalten keine ausgeklügelten Funktionen wie Verschleierungs- oder Antianalysetechniken. Ein typischer Modus Operandi wäre, den Pool direkt mit einer Klartext-Wallet-Adresse zu kontaktieren. Solche Kryptominer haben in der Regel auch geringere Auswirkungen und erzielen weniger Gewinn.
Der Markt für Kryptowährungen bietet Angreifern mehrere Optionen mit unterschiedlicher Rentabilität und unterschiedlichem Coin-Wert. Trotz des finanziellen Aspekts, der dem Kryptomining inhärent ist, ist die Mining-Rentabilität einer Währung für viele Angreifer offensichtlich nicht die wichtigste Erwägung. Der Zephyr-Coin, der weniger profitabel ist als Monero, ist unter Cyberkriminellen sehr verbreitet. Die Volatilität des Kryptomarktes ist für Angreifer und legitime Kryptokäufer gleichermaßen ein Kriterium. Möglicherweise ist der potenzielle langfristige Wert ausschlaggebend dafür, dass sie eine bestimmte Kryptowährung einer anderen vorziehen.
Die größte Zephyr-Kampagne, die wir beobachtet haben, hat über 1.400 aktive Opfer mit einer Gesamt-Hashrate von 800 KH/s und einem Gesamtgewinn von 906,3 ZEPH, was derzeit 2.528 US-Dollar entspricht.
Wir können feststellen, wenn ein Angreifer bestimmte geografische Regionen angreift, indem wir die Hashrate des Botnets im Zeitverlauf überprüfen. Ein Beispiel hierfür liefert eine andere beobachtete Kampagne, die Proxys in Kombination mit Malware für direkte Verbindungen verwendet und offensichtlich russischsprachige Nutzer ins Visier nimmt (Abbildung 7).
Die periodischen Änderungen sprechen dafür, dass die meisten Opfer menschliche Nutzer und keine Server sind, da individuell genutzte Rechner eher regelmäßig ausgeschaltet werden. Wenn wir die Häufigkeit der Hashrate analysieren, können wir sehen, dass der Zyklus 24 Stunden lang ist. Geht man davon aus, dass der Tiefpunkt in der Nacht liegt, ist es möglich, die Zeitzone zu lokalisieren, in der die meisten Opfer leben (Abbildung 8).
Die Zeitintervalle allein sind kein hinreichender Beweis für den Standort der Opfer. Unsere Theorie wurde durch die IP-Standortsuchfunktion gestützt, die vom Hashvault-Pool bereitgestellt wird. Durch die Kombination dieser Funktion mit einer Malware-Analyse und den Namen der Malware-Bereitstellung, die einen Gaming-Bezug haben, wie zum Beispiel Fortnite oder Solara Executor for Roblox, können wir zu fundierteren Aussagen gelangen. Die Malware gibt sich als eine Cheat-Engine aus und verleitet Gamer dazu, sie finden zu wollen. Wir haben auch den Verdacht, dass sie sich über soziale Medien und Messenger wie Telegram und Discord verbreitet hat.
Fallstudie 3: Ein Kryptominer, der eine Mining-Proxy-Topologie verwendet
Wir haben die Netzwerkkarte von Monero genutzt, um Informationen über mehr als 25.000 Knoten zu sammeln, aber nur 10 % von ihnen waren direkt erreichbar. Umgekehrt haben wir diese Karte auch verwendet, um alle bekannten Kryptominer herauszufiltern, die nicht mit dem Netzwerk in Verbindung treten. So fanden wir eine Kampagne, die seit April 2022 aktiv ist.
Abbildung 9 zeigt die Angriffsvektoren der Malware: Sie verwendet einen Mining-Proxy wie XMRig-Proxy und verteilt ihren Kryptominer über Piraterie-Software wie gecrackte IDMs (Internet Download Manager).
Was den Ablauf der Angriffe betrifft, ähneln sich die Malware-Proben der verschiedenen Kampagnen. Es beginnt in der Regel mit einem Drive-by-Download von crackingcity.com, der eine Payloadkette auslöst. In der letzten Phase wird dann der Kryptominer dlIhost.exe eingesetzt, der eine Verbindung zu einem in custompool.xyzgehosteten Proxy herstellt. Der Angreifer verwendet Umgebungsvariablen, um Zeichenfolgen als Argumente an untergeordnete Prozesse, hauptsächlich Batch-Dateien, zu übergeben. Dabei handelt es sich um eine Ausweichtechnik. Eingebettete Archive werden entschlüsselt und Skripte oder Dateien ausgeführt, nachdem die Ausschlussliste des Verteidigers manipuliert wurde.
Der Angreifer hat die Proxy-Domain unter dem Namen custompool.xyz am 29. April 2022 registriert, nur drei Tage nach der ersten Erkennung auf VirusTotal. Die erste Probe, genannt VScan.exe, ist ein selbstextrahierendes Archiv, das zwei Batch-Dateien verwendet. Die erste ist main.bat, die ein in den Umgebungsvariablen verborgenes Kennwort verwendet, um die Second-Stage-Batchdatei zu extrahieren: VS.bat. Die ausgeblendeten Informationen lassen sich mit einem Debugger auf zwei Arten extrahieren: unterbrechen, wenn auf eine Umgebungsvariable namens „l3“ zugegriffen wird (Abbildung 10), oder unterbrechen bei jeder Änderung der Umgebungsvariablen.
Mithilfe des Kennworts un#912345678@rarkönnen wir den Second-Stage-Loader extrahieren, der eine Verbindung zur anderen C2-Domäne, crackingcity.com, herstellt. In der letzten Phase führt die Malware dlIhost.exe aus (im Wesentlichen ein modifizierter XMRig-Client mit eingebetteter Konfiguration zum custompool.xyz -Pool). Dies ist zu diesem Zeitpunkt die direkte IP (Abbildung 11).
Nun stellt sich die Frage nach dem Servertyp. Handelt es sich um einen privaten Pool? Einen Mining-Proxy? Oder ist es eine Art nutzerdefinierter Knoten, den wir genauso wie einen privaten Pool betrachten können? Um diese Fragen zu beantworten, brauchen wir eine Möglichkeit, einige Kennungen vom Server zu extrahieren. Für das Solo-Mining über einen dedizierten Knoten muss der Miner im Daemon-Modus arbeiten (in dem die RPC-Anfrage über HTTP übertragen wird), der in dieser Konfiguration nicht vorhanden ist, weshalb dieser Fall hier eindeutig nicht vorliegt.
Die JSON-Struktur wird über die gesamte Serialisierung hinweg beibehalten, sodass wir versuchen können, Antworten vom Server abzurufen, indem wir die verschiedenen von XMRig-Proxy unterstützten Stratum-Methoden senden. Wenn die Antworten vom Server mit der Reihenfolge der Schlüssel und Werte übereinstimmen, kann dies ein starkes Anzeichen dafür sein, dass der Server XMRig-Proxy verwendet oder darauf basiert.
Das XMRig unterstützt drei Stratum-Protokollmethoden:
- Anmelden – die erste vom Mining-Worker initiierte Anfrage, die normalerweise das Wallet als Anmeldung enthält
- Keepalived – das einfache Aufrechterhalten der Verbindung
- Übermitteln – das Übermitteln des Ergebnisses, wenn ein gültiger Share gefunden wurde
Wenn eine ungültige Methode angefordert wird, antwortet der XMRig-Proxy mit einem Fehler (Abbildung 12). Dies kann auf den Servertyp hindeuten, da andere Services wie Pools einfach die fehlerhafte Anfrage ignorieren, anstatt abzustürzen. All dies führt uns zu dem Schluss, dass wir es mit XMRig-Proxy zu tun haben.
Wir haben die Übermittlungsmethode in drei Fälle unterteilt, die explizite Fehler von einem XMRig-Proxy zurückgeben sollten (Tabelle 2).
Um einen Share mit geringem Schwierigkeitsgrad handelt es sich, wenn der Miner einen Hash mit einem Wert übermittelt, der niedriger ist als das erwartete Ziel.
Eine ungültige Nonce ist das Ergebnis einer Nonce außerhalb des zulässigen Bereichs gemäß dem nicehash-Design.
Ein Hash mit maximaler Schwierigkeit ist der speziell gestaltete Hash, der wahrscheinlich das Ziel jedes Jobs erfüllt. In diesem Fall umgehen wir die XMRig-Proxy-Schwierigkeitsüberprüfung und übermitteln direkt an den Pool, der den Poolfehler zurückgibt.
Anfrage |
XMRig-Proxy |
MoneroOcean |
HashVault |
Nanopool |
SupportXMR |
C3Pool |
Anmelden |
(Baseline) |
✕ |
✕ |
✕ |
✕ |
✕ |
Keepalived |
(Baseline) |
≈ |
✅ |
≈ |
✕ |
≈ |
Unbekannt |
(Baseline) |
✕ |
✕ |
✕ |
✕ |
✕ |
Übermitteln – geringer Schwierigkeitsgrad |
(Baseline) |
✕ |
✕ |
✕ |
✕ |
✕ |
Übermitteln – ungültige Nonce |
(Baseline) |
NA – gesperrte IP |
✕ |
✕ |
✕ |
✕ |
Übermitteln – maximaler Schwierigkeitsgrad |
Antwortnachricht des Pools wiederholen |
NA – gesperrte IP |
✅ |
✕ |
✅ |
✅ |
Tabelle 2: Vergleich der Stratum-Protokollanfragen über XMRig-Proxy und verschiedene öffentliche Pools hinweg; ✅ bedeutet „dasselbe wie Baseline“, ✕ bedeutet „unterschiedliche Daten“ und ≈ bedeutet „dieselben Daten in unterschiedlicher Reihenfolge“
Wir können nicht nur XMRig-Proxy von häufig verwendeten Pools unterscheiden, sondern auch zwischen den Pools selbst unterscheiden. Diese Informationen können nützlich sein, wenn man über andere Netzwerkkomponenten, wie zum Beispiel Reverse Proxy, zu einem Pool weiterleitet. In diesem Fall erhalten wir, wenn wir Mining-Ergebnisse mit dem maximalen Schwierigkeitsgrad übermitteln, den Fehler aus dem Backend-Pool und nicht aus dem Proxy. Anhand dieser Informationen können wir erkennen, dass der Angreifer Nanopool verwendet. Da wir jedoch keine Wallet-Adresse haben, können wir für diese Kampagne keine Einschätzung der Opferzahl oder des erzielten Gewinns erhalten.
Fallstudie 4: Eine verborgene Blockchain-Kommunikation, die eine Stratum-Proxy-Topologie verwendet
Der Stratum-Protokoll-Proxy arbeitet auf Netzwerkebene, indem er Stratum-Protokollanfragen direkt an einen anderen Server weiterleitet, ohne die Wallet-Adressen zu ändern. Dadurch wird sichergestellt, dass die Arbeit jedes Miners dem jeweiligen Wallet gutgeschrieben wird. Die Implementierung eines Stratum-Proxy kann mit einem einfachen Netzwerk-Proxy auf Transportebene oder einem spezialisierten Anwendungsproxy erfolgen, der das Protokoll versteht und verarbeitet.
Wir haben eine aktive Kampagne gefunden, die diese Topologie verwendet und über einen Stratum-Proxy eine Verbindung zu einem öffentlichen Pool herstellt. Wir konnten nicht feststellen, ob es sich um einen Reverse Proxy auf Netzwerkebene handelt oder ob der Proxy das Stratum-Protokoll selbst abfängt und als Anwendungsproxy fungiert. In beiden Fällen leitet er die Stratum-Nachrichten um, um den Backend-Pool oder -Knoten zu verbergen. Werden öffentliche Pools nach dem bereitgestellten Wallet durchsucht, zeigt sich, dass es den öffentlichen Pool MoneroOcean kontaktiert.
Die Kampagne ist seit mindestens vier Monaten aktiv, und ihr Gesamtgewinn beträgt 1,158 XMR (ca. 180 US-Dollar). Für sich genommen ist das noch keine sehr erfolgreiche Kampagne. Doch die offensichtlichen Anstrengungen der Angreifer deuten auf potenziell größere Pläne hin, die die eigenständige Entwicklung der gesamten Kampagne beinhalten – die Infrastruktur, den Kryptominer und die verschiedenen bösartigen Dateien, mit denen er abgelegt wird. Die Angreifer verteilen die Kampagne auch selbst, ohne sich auf Dritte zu verlassen, und implementieren gleichzeitig Anti-Reverse-Engineering-Mechanismen, einschließlich Verschlüsselung, Verschleierung und Verhinderung des Einsatzes von Überwachungstools (Abbildung 13).
Auch wenn die Kampagne träge ist, können wir eine durchdachte Ausführung der Malware feststellen, insbesondere beim Verschleierungsprozess. Die Malware versucht, die Payload zu verbergen, indem sie während der Laufzeit ein Archiv herunterlädt und Prozesse mit legitimen Systemdateinamen ausführt.
Erkennungen
Es gibt verschiedene Wege, die Sie bei Erkennungen generell beschreiten können. Die einzelnen Methoden können nur bestehen, wenn sie in Verbindung mit anderen Erkennungsmechanismen verwendet werden. Kryptominer sind keine Ausnahme. In der Tat sind sie aufgrund ihrer gutartigen Eigenschaften nur schwer als Malware-Varianten zu erkennen. Sie verwenden die einzige Ressource, die in den meisten Betriebssystemen keine spezielle Berechtigung erfordert: Rechenleistung bzw. CPU-Zeit.
Verbindungen zum Netzwerk
Um diese Miner zu erkennen, können wir das Blockchain-Netzwerk (zum Beispiel das Monero-Netzwerk, das wir zuvor ausgelesen haben) mit den Daten abgleichen, die wir von einem Tool für Netzwerktransparenz erhalten, wie zum Beispiel einer Firewall oder einer Segmentierungslösung. Jeder Knoten oder Pool muss mit der Monero-Blockchain interagieren. Dadurch erhalten Netzwerkadministratoren wertvolle Einblicke in den Traffic, der aus ihrem Netzwerk kommt. In Verbindung mit Netzwerkports vereinfacht dies die Erkennung erheblich, da die meisten Kryptominer eindeutige Portnummern wie 999, 3333 oder 7777 verwenden. In dieser Fallstudie wird Monero verwendet, doch das Mapping des Blockchain-Netzwerks ist in allen PoW-basierten Netzwerken (Proof-of-Work) anwendbar.
Zu beachten ist jedoch, dass nicht der gesamte Traffic zu Monero-Knoten notwendigerweise Kryptomining ist, da diese Knoten manchmal mehr als einen Service bereitstellen. Beispielsweise findet sich IP 157[.]90[.]212[.]53 auf unserer Monero-Netzwerkkarte, ist aber auch ein Exit-Knoten für das Tor-Netzwerk. Es kann viele Erklärungen dafür geben, warum ein Monero-Knoten andere Dienste bereitstellt. Er kann kompromittiert sein oder einfach absichtlich für mehrere Zwecke genutzt werden. In beiden Fällen kann die Verwendung der Verbindung zum Netzwerk ohne zusätzliche Informationen ein schwacher Hinweis auf eine Verbindung zur Blockchain sein und False Positives generieren. Das ist ein weiterer Grund dafür, dass Informationen zur Portnummer für eine genaue Erkennung wichtig sind.
Ein weiterer Grund für False Positives kann eine niedrige Aktualisierungsrate der Karte sein. Einem legitimen Server kann eine IP-Adresse zugewiesen werden, die zuvor von einem Monero-Knoten verwendet wurde und ein False Positive verursacht, wenn die Karte nicht aktuell ist.
Diese Erkennung kann nicht für sich allein stehen. Sie kann aber als Auslöser für eine umfassendere Erkennungslogik oder Untersuchung verwendet werden. Jede Aktivität eines Kryptominers muss die Kommunikation mit einem Stratum-Server für die Zuweisung eines Mining-Jobs einschließen. In der Regel arbeitet er mit öffentlich bekannten Mining-Pools. In manchen Fällen kann er jedoch mithilfe eines Proxys versteckt werden, der nicht auf der Netzwerkkarte angezeigt wird.
Erkennen der Algorithmusausführung
Kryptominer nutzen intensiv die Computer-Ressourcen des Opfers, sodass die Überwachung des Systems auf Nutzungsspitzen Hinweise auf eine Infektion liefern kann. Aber genau wie der Abgleich mit der Netzwerkkarte ist dies allein keine hinreichend genaue Erkennungsmethode.
Die Kombination mehrerer detektierbarer IOCs erhöht die Erkennungssicherheit, oder mit anderen Worten: Die Zahl der False Positives verringert sich. Damit eine Mining-Operation erfolgreich ist, müssen einige wesentliche Dinge gewährleistet sein. Kryptominer müssen die gewählte Coin mithilfe ihres Konsensus-Algorithmus als Proof-of-Work schürfen. Ein solcher Algorithmus hat während der Laufzeit einen eindeutigen Fingerabdruck im System, und das Extrahieren dieser Eigenschaften kann eine solide Methode zur Erkennung bösartiger Kryptominer erzeugen.
ASIC-resistente Algorithmen wie RandomXimplementieren in der Regel einen komplexen Satz von Vorgängen, die eindeutig identifiziert werden können. So entwickelte der Entwickler von RandomX ein Erkennungstool basierend auf genau dieser Annahme. Durch Iteration der ausgeführten Threads im System können wir den Threadstatus prüfen, einschließlich der Werte der CPU-Register. RandomX wird mithilfe vieler moderner Funktionen von CPUs implementiert. Daher ist die Verwendung der Rounding-Control- Konfigurationen wie im Erkennungstool des RandomX-Entwicklers eine mögliche Vorgehensweise.
Kombiniert man es mit anderen Indikatoren wie zum Beispiel AES-Hardware-Vorgängen und HugePage- Konfiguration, verbessert sich die Erkennungsrate. Fassen wir zusammen: Man kann eine Erkennung erreichen, indem man nach eindeutigen AES-Schlüsseln in den SSE- Registern sucht beziehungsweise die Zugriffstoken- Berechtigungen für den Threadabfragt.
Wir können diese Methoden auch auf andere Betriebssysteme ausdehnen, weil die meisten Kryptominer plattformunabhängig sein wollen und sich auch auf verschiedenen Betriebssystemen gleich verhalten dürften. Wenn eine Kampagne nicht auf ein einziges Betriebssystem beschränkt bleibt, kann sie erfolgreicher sein, da sich die Zahl möglicher Angriffsziele drastisch erhöht.
Wallet-Lokalisierung im Prozessspeicher
Wenn Kryptominer direkt mit dem Mining-Pool kommunizieren und nicht über einen Proxy, sollte sich das Wallet des Miners im Speicher des Prozesses befinden. Dies liegt daran, dass das Stratum-Protokoll dem Miner vorschreibt, den Server zu authentifizieren und ihm mitzuteilen, welches Konto für gültige Share-Übermittlungen belohnt werden soll. In der Regel wird eine Wallet-Adresse verwendet, und speziell bei Monero Mining basiert der Miner wahrscheinlich auf der XMRig-Software. Mithilfe dieser Annahmen können wir das Wallet, wenn es an den Pool gesendet wird, durch Hooking-Eingriffe in die verschiedenen Socket-APIs finden und abfangen. Theoretisch können wir auch einen MITM-Angriff (Machine-in-the-Middle) verwenden, um die vom Miner gesendete Authentifizierungsnachricht abzufangen.
Wir können auch eine einfache Regex-Suche über den gesamten zugewiesenen Speicher des Prozesses verwenden, um die 95 Zeichen umfassende Adresse zu finden, die einem strengen Format folgt. Sie beginnt mit 4 oder 8 und besteht aus gültigen BASE58-Zeichen. Das Muster /[48][1-9A-HJ-NP-Za-km-z]{94}/ kann also für diese Aufgabe ausreichen und auch in eine YARA-Regel eingebettet werden. Der Scan-Vorgang kann jederzeit nach der ersten Verbindung des Kryptominers mit dem Pool durchgeführt werden, da der Miner die Wallet-Adresse für den Fall verfügbar halten muss, dass er eine erneute Verbindung herstellen muss.
Schließlich können wir jede der genannten Techniken verwenden, um andere mit dem Stratum-Protokoll in Verbindung stehende Zeichenfolgen zu suchen und das Wallet von innen heraus zu analysieren. Solche Indikatoren könnten die Zahl der False Positives reduzieren, da die JSON-Struktur des Protokolls sehr viel eindeutiger ist. Sehen Sie sich zum Beispiel die Anmeldeanfrage in Abbildung 14 an. Wir können eine stärkere Signatur erstellen, die mehrere Schlüssel enthält, und so eine genauere Erkennung ermöglichen.
{
"id": 1,
"jsonrpc": "2.0",
"method": "login",
"params": {
"login": "<wallet address>",
"pass": "<Usually the worker name>",
"agent": "<Usually xmrig agent>",
"algo": [
"rx/0"
]
}
}
Abb. 14: Eine Beispielanfrage für die Anmeldung; eine Übereinstimmung mit dem Muster könnte eine genauere Erkennung ermöglichen
Fazit
Die Forscher von Akamai werden weiterhin schädliche Kampagnen und die dahinter stehenden Cyberkriminellen aufdecken und IOCs identifizieren, um zum Schutz von Kunden und der Öffentlichkeit beizutragen.
In diesem zweiten Teil unserer dreiteiligen Blogreihe zu Kryptominern haben wir eine Reihe von Techniken vorgestellt, um über verschiedene Arten von Kampagnen aufzuklären. Behandelt haben wir unter anderem die Identifizierung eines Mining-Pools hinter einem Mining-Proxy oder die geografische Lokalisierung der Kampagnen-Aktivitäten durch Analyse der Hashrate des Kryptominer-Botnet im Zeitverlauf.
Wir beobachteten bösartige Kryptominer, die neben dem bestens bekannten Monero Zephyr verwendeten. Durch die Verwendung der verschiedenen Mining-Topologien konnten die Kryptominer Informationen verbergen und die Anzahl der Erkennungen und die Indikatoren für eine Kompromittierung minimieren.
Nachdem wir die Anatomie der verschiedenen Kryptominer und den Mining-Prozess im Allgemeinen verdeutlicht haben, stellt sich die folgende Frage: Können wir die Mining-Aktivitäten des Kryptominer-Botnets stoppen? Die Mining-Operation effektiv zu stoppen heißt, die Kryptominer ausschalten, die die Rechner der Opfer infizieren und ihre Ressourcen verbrauchen. Dieser Frage werden wir im letzten Teil unserer Reihe nachgehen.
Um keinen Teil dieser Reihe zu verpassen und Informationen zu anderen aktuellen Sicherheitsforschungen zu erhalten, können Sie unsere Seite für Sicherheitsforschung besuchen und uns in den sozialen Medienfolgen.