Kobalos erschien in freier Wildbahn



ESET-Experten sprachen über neue Malware für HPC-Cluster auf der ganzen Welt. Es ist aus mehreren Gründen interessant. Trotz der relativ geringen Größe der Codebasis (die analysierten Beispiele waren 25 KB groß) ist die Malware komplex genug, um Angriffe auf Linux, BSD und Solaris auszuführen, und kann möglicherweise für Angriffe auf AIX und Microsoft Windows geeignet sein . Ein weiteres Unterscheidungsmerkmal ist die Möglichkeit, infizierte Server auf Befehl des Bedieners in neue C & C umzuwandeln. Aufgrund der vielen Tricks und der geringen Größe des Codes nannten die Forscher ihn Kobalos - nach den schelmischen antiken griechischen Geistern, die einst Herkules beraubten und es verehrten, Menschen zu täuschen und zu erschrecken.



Die von Experten veröffentlichte Studie beschreibt die geschätzten Anfangsvektoren von Kompromiss-, Authentifizierungs- und Verteilungsmechanismen, integrierten Funktionen und bietet eine technische Analyse des Schadcodes. Danach weisen die Experten auf die Anzeichen eines Kompromisses und die angewandten Methoden von MITRE ATT & CK hin.



Wir hatten die Idee, dass Menschen, die schlecht Englisch sprechen, aber der aktuellen Forschung auf dem Gebiet der Informationssicherheit, insbesondere der Analyse von Malware, nicht gleichgültig gegenüberstehen, interessant und nützlich wären, um die Analyse solcher zu übersetzen unserer Meinung nach ungewöhnliche Malware.



ESET Research analysierte Kobalos, eine bisher unbekannte, komplexe Malware mit mehreren Plattformen, die unter Linux, FreeBSD und Solaris ausgeführt werden kann. Angesichts der Tatsache, dass es sich bei den Opfern hauptsächlich um bekannte Organisationen handelt, besteht kein Zweifel daran, dass sie von der Software als Ziel ausgewählt wurden. Bei der Bereitstellung bietet Kobalos Zugriff auf das Dateisystem und das Remote-Terminal des gefährdeten Hosts, sodass Angreifer beliebige Befehle ausführen können.



Kobalos verfügt über bemerkenswerte Netzwerkfähigkeiten. Es kann entweder im passiven Modus oder als Bot arbeiten und eine aktive Verbindung zu seinen C & C-Servern herstellen. Es ist merkwürdig, dass diese Server selbst von Kobalos kompromittiert wurden: Der Code für ihre Verwendung ist in allen Beispielen dieser Malware enthalten.



Durch umfangreiche Netzwerkrecherchen konnte ESET Research Kobalos-Opfer identifizieren und benachrichtigen. Es ist nicht bekannt, wann diese Software entwickelt wurde, aber ihre erste bekannte Aktivität, die von einem Opfer bestätigt wurde, wurde Ende 2019 aufgezeichnet. Die Gruppe der Angreifer, die Kobalos regierten, wurde 2020 fortgesetzt. Die Linux-Angriffstechniken entwickeln sich weiter und Malware-Autoren geben sich große Mühe, ihre Designs zu verbessern. Kobalos ist ein solches Programm.



Hauptschlussfolgerungen



  • Kobalos ist eine plattformübergreifende Backdoor, die unter Linux, FreeBSD und Solaris ausgeführt wird. Es gibt Hinweise darauf, dass diese Software unter AIX und sogar Windows vorhanden sein kann.


  • Kobalos , , , -. Kobalos , .
  • Kobalos , .
  • Kobalos C&C- . , .
  • OpenSSH. Kobalos.
  • Kobalos. , , - . , SSH.




Wenn Sie in den letzten Jahren ESET Research gefolgt sind, haben Sie möglicherweise festgestellt, dass wir es vorziehen, serverseitige Malware zu suchen und zu dokumentieren, die für Linux und andere weniger verbreitete Betriebssysteme entwickelt wurde. Einer der ersten derartigen Berichte ist der Operation Windigo gewidmet und beschreibt mehrere Softwarefamilien, die zusammenarbeiten, um den Internetverkehr umzuleiten, Spam zu senden und andere böswillige Aktivitäten durchzuführen. Operation Windigo basiert auf Ebury, einer OpenSSH-Hintertür, die Anmeldeinformationen stiehlt. Ebury kann SSH-Client und -Server gefährden, ohne die ausführbaren OpenSSH-Dateien zu ändern. Stattdessen werden die zu ladende Bibliothek und die Patch-Funktionen so geändert, dass nach dem Laden der Hintertür Anmeldeinformationen gestartet und gestohlen werden können. Die Aufgabe ist nicht einfach, aber die Autoren von Ebury haben es geschafft, sie zu lösen.



Nach der Operation Windigo haben wir unter Linux mehrere andere Malware- Programme entdeckt und beschrieben, z. B. Mumblehard , Moose , Shishiga . Außerdem haben wir Dutzende von Hintertüren für OpenSSH in der dunklen Seite des ForSSHe-Berichts beschrieben .



Bisher sind wir nicht auf Linux-Malware gestoßen, die so schwer zu analysieren war wie Ebury. Diesmal ist die Situation jedoch anders: Im Gegensatz zu Ebury sehen die Aktionen von Kobalos nicht so groß aus. Die Anzahl der von ihnen kompromittierten Autos liegt bei Zehntausenden und bei Ebury bei Zehntausenden. Dieser Artikel enthält eine vollständige technische Analyse von Kobalos, den Zielen von Angreifern, und Kompromissindikatoren, die potenziellen Opfern helfen können, Malware zu finden und diese zu beseitigen.



Die Opfer



Nach der Analyse der Malware führte ESET einen umfassenden Internet-Scan durch, um nach Kobalos-Opfern zu suchen. Wir suchten nach einem bestimmten Backdoor-Verhalten, das durch das Herstellen einer TCP-Verbindung mit einem gefährdeten Host von einem bestimmten ausgehenden Port aus gekennzeichnet ist.



Angesichts der Komplexität dieser Software waren wir von der sehr geringen Anzahl der gefundenen Opfer überrascht. Die Ziele selbst wurden jedoch eindeutig nicht zufällig ausgewählt: Dies sind Hochleistungscomputer (HPC) und Server, die Teil von Wissenschafts- und Forschungsnetzwerken sind. Einer dieser Computer hatte mindestens 512 GB RAM und fast Petabyte Festplattenspeicher. Wir haben auch andere bekannte Opferorganisationen gefunden, z. B. einen Endpoint Security-Anbieter (nicht wir!).





Abbildung 1. Branchen und Regionen, zu denen die gefährdeten Organisationen gehören.



In einigen Organisationen wurden mehrere Server gleichzeitig infiziert. Wir haben alle gefundenen Opfer benachrichtigt und zusammengearbeitet, um die Malware zu entfernen. Vielen Dank an alle, die geantwortet und Informationen ausgetauscht haben, die uns bei dieser Studie geholfen haben.



Anfänglicher Kompromissvektor



Wir wissen nicht aus erster Hand, wie die Systeme kompromittiert wurden, damit Angreifer Administratorzugriff auf die Installation von Kobalos erhalten konnten. Wir können nur auf der Grundlage der gesammelten Beweise spekulieren.



Auf den kompromittierten Computern, deren Systemadministratoren an der Untersuchung beteiligt waren, stellten wir fest, dass das SSH-Programm zum Stehlen von Anmeldeinformationen als trojanisierter OpenSSH-Client dargestellt wurde. Datei /usr/bin/ssh



wurde durch eine modifizierte ausführbare Datei ersetzt, die den Benutzernamen, das Kennwort und den Zielhostnamen aufzeichnete und in einer verschlüsselten Datei speicherte. Daher glauben wir, dass Identitätsdiebstahl eine der Arten war, wie Kobalos verbreitet wurde. Es könnte auch erklären, warum viele akademische Netzwerke kompromittiert wurden: Wenn ein SSH-Client von Studenten oder Forschern mehrerer Universitäten verwendet wurde, könnten die Anmeldeinformationen für all diese Systeme von Drittanbietern gestohlen werden.



Ein weiterer möglicher Einstiegspunkt könnte die Ausnutzung einer bekannten Sicherheitsanfälligkeit sein: Auf einigen kompromittierten Computern wurden alte, nicht unterstützte oder nicht gepatchte Betriebssysteme und Anwendungen ausgeführt, sodass die Option, einen bekannten Exploit zu verwenden, höchstwahrscheinlich ist. Sie sollten jedoch auch nicht die Möglichkeit ausschließen, eine derzeit unbekannte Sicherheitsanfälligkeit zu verwenden.



Angriff auf Netzwerke für Hochleistungsrechnen



ESET hat Informationen mit Organisationen ausgetauscht, die eine wichtige Rolle bei der Lösung von Vorfällen in Forschungs- und akademischen Systemen spielen, wie z. B. dem CERN Computer Security Team. Sie bestätigten, dass die HPC-Community von Ende 2019 bis Mitte 2020 von einer Welle von drei verschiedenen Angriffen betroffen war, von denen einige öffentlich angekündigt wurden .



Nach vielen Monaten der Untersuchung ist immer noch unklar, ob diese drei Wellen miteinander in Beziehung standen oder ob es sich nur um einen unerwarteten Zufall handelte. Malware-Betreiber verwendeten unterschiedliche Taktiken, Techniken und Schwierigkeitsgrade. Andererseits ist es seltsam, dass bei verschiedenen Angriffen einige IP-Adressen zusammenfielen.



  1. Die erste Welle verwendete Kobalos, das in dieser Studie beschrieben wird.
  2. Die zweite Welle konzentrierte sich auf den Abbau von Kryptowährungen mit ganz anderen Tools.
  3. Die dritte Welle war die größte, aber ihre Nutzlast wurde noch nicht bestimmt.


Indirekte Anzeichen eines Kompromisses infolge der zweiten und dritten Welle wurden vom European Grid Infrastructure Computer Security Incident Response Team in Form der Vorfälle # EGI20200421 und # EGI2020512 beschrieben .



Es ist unklar, warum die HPC-Community unter den Opfern dieser Angriffe dominiert. HPCs sind natürlich von Interesse, aber normalerweise schwieriger zu durchdringen als andere F & E-Server. Durch einen verteilten Community-basierten Prozess zur Reaktion auf Vorfälle haben das CERN und andere beteiligte Teams eine Reihe veralteter Architekturen und suboptimaler Sicherheitspraktiken identifiziert, die eine Schlüsselrolle bei der Verbreitung von Angriffen gespielt haben. Darüber hinaus waren die meisten Opfer aus der HPC-Gemeinschaft nicht in der Lage, Ermittlungen durchzuführen, insbesondere im Hinblick auf die Überwachung der Systemaktivität.



Kobalos Bewertung



Kobalos verfügt über zahlreiche Funktionen, um auf gefährdete Systeme zuzugreifen und Spuren ihrer Verwendung zu verbergen.



Zugriff auf gefährdete Systeme



Erstens bietet Kobalos allgemeine Befehle zum Lesen und Schreiben in das Dateisystem sowie zum Starten eines Terminals und zum Ausführen beliebiger Befehle. Leider enthält das Programm keine spezifische Nutzlast, die auf die Absichten der Autoren schließen lässt. Höchstwahrscheinlich führen Operatoren eine Befehlsshell über das Terminal aus und führen die erforderlichen Befehle aus.



Verfügbarkeit



Zweitens verfügt Kobalos über eine Reihe von Funktionen, mit denen Sie eine Netzwerkverbindung zwischen Betreibern und der ausgeführten Malware herstellen können. Die Software bietet ihre externe Zugänglichkeit auf verschiedene Arten:



  1. Öffnet einen TCP-Port und wartet auf eine eingehende Verbindung (dieser Modus wird manchmal als passive Hintertür bezeichnet).
  2. Stellt eine Verbindung zu einer anderen Kobalos-Instanz her, die als C & C-Server konfiguriert ist.
  3. Warten auf Verbindungen zu einem bereits ausgeführten legitimen Dienst, der von einem bestimmten TCP-Port ausgeht.


Bei letzterer Methode muss der ausgeführte Dienst durch einen anderen ersetzt werden, der den Kobalos-Code enthält. In allen Fällen, in denen wir die Verwendung dieser Methode festgestellt haben, mussten die Angreifer den laufenden OpenSSH-Server ändern. Die Datei wurde sshd



vollständig ersetzt, sodass das Programm auch nach einem Neustart des Dienstes oder Systems weiter funktionierte.



Authentifizierung und Netzwerkverschlüsselung



Drittens müssen Sie zum Ausführen der Hintertür die Clients authentifizieren, die über einen privaten RSA-512-Schlüssel und ein Kennwort verfügen müssen. Nach der Überprüfung generiert und verschlüsselt Kobalos zwei 16-Byte-Schlüssel mit öffentlichem Schlüssel mithilfe des RSA-512-Algorithmus und sendet sie an die Angreifer. Diese beiden Schlüssel werden für die RC4-Verschlüsselung des nachfolgenden eingehenden und ausgehenden Datenverkehrs verwendet.



Portwechsel



Viertens kann der Bediener während der Authentifizierung weiterhin über eine andere TCP-Verbindung interagieren. Auf Anfrage kann Kobalos den gewünschten Port abhören und die gesamte nachfolgende Kommunikation an diesen übertragen. Daten, die über diesen Kanal übertragen werden, werden mit RC4-Schlüsseln verschlüsselt, die während der Authentifizierung erstellt wurden.



Proxying zu anderen kompromittierten Maschinen



Fünftens kann Kobalos als Proxy verwendet werden, um eine Verbindung zu anderen von ihm gefährdeten Servern herzustellen. Dies ist kein gewöhnlicher TCP-Proxy: Er erfordert die Kapselung von Daten in speziellen Paketen und unterstützt auch die obige Portänderung: Hierzu wird ein Befehl gesendet, der die Verbindung "umschaltet".



Proxies können verkettet werden, was bedeutet, dass Bediener mehrere von Kobalos gefährdete Computer verwenden können, um eine Verbindung zu Zielservern herzustellen.



Eine Reihe von Möglichkeiten





Abbildung 2. Übersicht über die Kobalos-Funktionen und mögliche Szenarien für den Zugriff auf gefährdete Server.



Das erste Szenario ist die direkte Verbindung zu gefährdeten Servern, um auf deren Ressourcen zuzugreifen. In der Abbildung wird die Backdoor im OpenSSH-Serverprozess ausgeführt und erwartet, dass die Verbindung über einen Quellport verfügt. Der Bediener muss den richtigen Quell-TCP-Port verwenden, um mit der Hintertür zu kommunizieren.



Das zweite Szenario ist wohl das schwierigste, aber es verfügt über die einzigartigen Eigenschaften des Kobalos. Der Bediener kann den C & C-Server von jedem Server aus ausführen, auf dem diese Software ausgeführt wird. Hierfür wird kein zusätzlicher Code benötigt, alle Funktionen sind bereits integriert. Nach dem Start überprüft der C & C-Server die Liste der verbundenen Bots, und der Bediener kann eine Verbindung zu jedem dieser Bots herstellen. Der letzte Knoten erfordert eine Authentifizierung und erzwingt eine End-to-End-Verschlüsselung mithilfe des RC4-Schlüsselaustauschs. Um ein solches Arbeitsschema sicherzustellen, muss die Kobalos-Instanz auf Server B die IP-Adresse und den Port des C & C-Servers auf Server A haben. Server B tauscht Datenverkehr nur mit Server A aus und verbirgt die IP-Adresse des Betreibers.



Im dritten Szenario wird Server A zum Proxy der Verbindung zu Server C verwendet. Dies gilt auch für die Authentifizierung und die erzwungene End-to-End-Verschlüsselung. Der Bediener kann den Quellport festlegen, wenn eine Verbindung von Server A zu C hergestellt wird. Dies bedeutet, dass Server A verwendet werden kann, um eine Verbindung zu Kobalos-Instanzen herzustellen, die auf eine Verbindung von einem bestimmten Port warten.



Technische Analyse von Kobalos



Zum ersten Mal haben wir einen trojanisierten OpenSSH-Server analysiert. Die Größe des Schadcodes und der Daten von Kobalos ist recht gering: ca. 25 KB für x86-64-Beispiele. Seltsamerweise ist der gesamte Code in einer Funktion gepackt. Es gibt nur einen Aufruf dieser Funktion im legitimen OpenSSH-Code.



Kobalos ist eine komplexe Software. Offensichtlich haben die Entwickler viel Mühe in die Erstellung gesteckt. Die Autoren haben zahlreiche Funktionen implementiert und ihre eigene Verschleierung implementiert.



Verschleierung



Außergewöhnliche Abflachung des Kontrollflusses



Die Tatsache, dass der Code in eine Funktion passt, bedeutet nicht, dass der Kontrollfluss linear ist. Kobalos ruft seine Funktion rekursiv auf, um die erforderlichen Unteraufgaben auszuführen.





Abbildung 3. Flussdiagramm der Kobalos-Steuerung.



Der erste Parameter der Funktion ist die auszuführende Aktion. Kobalos kann 37 Aktionen ausführen. Diese sind im Anhang zu den integrierten Funktionen von Kobalos aufgeführt , mit dem Sie aktuelle und wahrscheinliche zukünftige Versionen dieser Software analysieren können. Die Funktion dient auch als Signalhandler , um den untergeordneten SIGCHLD



Prozess ordnungsgemäß zu beenden und SIGALRM



das Verbindungszeitlimit zu verarbeiten.



Was den Kobalos-Quellcode betrifft, könnte dies wie das Kompilieren des folgenden C-Codes aussehen. Ein Teil der Konvertierung kann durch Inlining von Funktionen durch den Compiler automatisiert werden, wobei jedoch allen Funktionen numerische Bezeichner zugewiesen werden und die gleiche Anzahl von Argumenten in Funktionen verarbeitet wird erfordert manuelle Arbeit oder Spezialwerkzeuge.



Vor Nach dem
int add(int a, int b) {
return a + b;
}

int mul(int a, int b) {
return a * b;
}

int square(int a) {
return mul(a, a);
}

int get_magic(void) {
return add(square(59), 56);
}

int main(void) {
return get_magic();
}

      
      





int f(int action, int a, int b) {
int ret;
switch(action) {
case 1000:
ret = a + b;
break; case 1001:
ret = a * b;
break; case 1002:
ret = f(1001, a, a);
break; case 1003:
ret = f(1002, 59, 0);
ret = f(1000, ret, 56);
break;
}
return ret;
}

int main(void) {
return f(1003, 0, 0);
}

      
      







Abbildung 4. Dieser C-Code zeigt, wie der Kobalos-Quellcode nach dem Ausrichten des Kontrollflusses aussehen könnte.



Verschlüsselte Zeichenfolgenwerte



Kobalos-Code und -Daten enthalten keine Nur-Text-Zeichenfolgenwerte. Hier werden nur wenige mit RC4 verschlüsselte kurze Zeichenfolgen verwendet. Sie werden unmittelbar nach der ersten Interaktion mit dem Programm, jedoch vor der Authentifizierung entschlüsselt. Für alle von uns analysierten Proben wird ein Schlüssel verwendet - AE 0E 05 09 0F 3A C2 B5 0B 1B C6 E9 1D 2F E3 CE



.



Dekodierte Zeichenfolgenwerte:



  1. % s% s
  2. / dev / ptmx
  3. ptem
  4. ldterm
  5. ttcompat
  6. / dev / tty
  7. % s
  8. % d
  9. /.
  10. \.
  11. % d.% d
  12. win3.11
  13. win95
  14. winNT
  15. Sieg ??
  16. \\. \ pipe \ 2
  17. % s% s.% s
  18. / dev / ptc


In den von uns analysierten Kobalos-Proben werden nur die fettgedruckten Werte (1 und 6-9) verwendet. Andere werden nicht erwähnt, obwohl sie in einigen anderen Versionen verwendet werden können. Insbesondere:



  • Die Zeilen 10 und 12-16 scheinen Windows-spezifisch zu sein.
  • Zeile 18 ist der Pfad zum Pseudo-Endgerätetreiber unter AIX.
  • Die Zeilen 3 bis 5 werden von Solaris-Pseudo-Terminal-Systemaufrufen verwendet.


Wir können nicht ausschließen, dass versucht wird, Forscher über die Existenz von Versionen für andere Betriebssysteme falsch zu informieren. Angesichts der Tatsache, dass wir die Unterstützung für drei Betriebssysteme bestätigt haben, sollte es keine Überraschung sein, wenn es mehr gibt. Andererseits sind Windows 3.11 und Windows 95 über 25 Jahre alt. Gibt es Versionen von Kobalos für diese Legacy-Systeme?



Gegen eine Untersuchung



Nach der Authentifizierung werden einige Techniken auf den Backdoor-Prozess angewendet, um die Untersuchung zu behindern:



  • Der Wert RLIMIT_CORE



    wird gelöscht, um zu verhindern, dass im Falle eines Prozessabsturzes ein Kernel-Dump generiert wird.
  • Die meisten Signale werden ignoriert, um das Unterbrechen des Prozesses zu erschweren.




Abbildung 5. Kobalos vermeidet Kernel-Dumps beim Absturz und ignoriert die meisten Signale.



Es ist wichtig zu beachten, dass die Konfiguration RLIMIT_CORE



nicht schadet, um den Prozess manuell zu sichern, z. B. mit gcore



gdb. Diese Grenze wird vom Kernel verwendet, um die maximale Größe eines Speicherauszugs zu bestimmen, wenn ein Prozess abstürzt.



Zeitstempel



Eine Analyse des Dateisystems kompromittierter Server ergab, dass nach dem Festlegen die Zeitstempel der ersetzten Dateien (z. B. ssh



zum Hinzufügen eines Diebstahlmoduls sshd



für Anmeldeinformationen oder zum Bereitstellen von Kobalos) manipuliert werden, um Verdacht zu vermeiden.



Aufbau



Kobalos verfügt über eine statische Konfiguration, die Softwarefunktionen aktiviert oder deaktiviert. In Tabelle 1 sind die Felder aufgeführt, die wir als Teil der Konfiguration betrachten. Abbildung 6 zeigt ein Beispiel aus der Praxis.



Tabelle 1. Struktur der statischen Konfiguration Kobalos:

Größe (Bytes) Beschreibung
2 Wahrscheinlich eine Versionsnummer. Wird bei erfolgreicher Authentifizierung übertragen. Bei allen gefundenen Proben ist es wichtig 0xB03



(wenn man bedenkt, dass es wie alle anderen Kobalos-Daten im Format vom höchsten zum niedrigsten übertragen wird).
320 RSA-Modul für öffentliche Schlüssel. In einem speziellen Binärformat verschlüsselt.
2 TCP-Port zum Abhören. Wenn auf Null gesetzt, überwacht Kobalos die Ports nicht, sondern verwendet andere Methoden, um auf eine Verbindung zur Hintertür zu warten.
2 C&C-, . , — .
2 . ( ) ( ).
4 IP- C&C- . Kobalos .
2 x 16 TCP-, C&C-.
16 MD5- , .




Abbildung 6. Beispielkonfiguration des in sshd eingebetteten Kobalos-Beispiels.



Einige der Konfigurationen unterscheiden sich, wenn Kobalos intern sshd



oder als separate ausführbare Datei ausgeführt wird. Im letzteren Fall ist die Adresse des Remote-C & C-Servers ( remote_c2_addr



) oder des Überwachungsports ( listen_port



) erforderlich .



Bereitstellung und Aufbewahrung



Wenn Kobalos zur Ausführung als Teil eines OpenSSH-Servers bereitgestellt wird, sshd



muss die Datei neu kompiliert werden, um schädlichen Code hinzuzufügen. Wir haben die trojanisierte Version von OpenSSH mit der Version verglichen, die auf dem System installiert werden soll, z. B. vom Paketmanager. Es sieht so aus, als würde der Bediener Kobalos basierend auf der richtigen OpenSSH-Quelle kompilieren, die bereits auf dem Server installiert ist. Die infizierte ausführbare Datei wird wahrscheinlich auf dem Computer des Opfers kompiliert, bevor das Original ersetzt wird. Höchstwahrscheinlich wurde ein solches Schema gewählt, um die Sicherheit der Software zu gewährleisten, indem Versionsinkongruenzen verhindert werden, aufgrund derer Inkompatibilität der Bibliothek auftreten kann.



Es sei darauf hingewiesen, dass zu ersetzen sshd



benötigt Root-Rechte. Es gibt jedoch Versionen von Kobalos als separate Dateien, die eine Verbindung zum C & C-Server herstellen oder den TCP-Port überwachen. Sie benötigen keine Administratorrechte, um sie auszuführen, aber der Zugriff auf das Dateisystem und die Befehle wird durch die Zugriffsebene des aktuellen Benutzers eingeschränkt.



Backdoor-Interaktion



Backdoor-Verbindung



Eines der bemerkenswerten Merkmale von Kobalos ist die Flexibilität beim Herstellen von Verbindungen zwischen Betreibern und gefährdeten Hosts. Dies kann auf drei Arten erfolgen:



  1. Abhören des angegebenen TCP-Ports (passiver Modus).
  2. Durch Herstellen einer Verbindung zum C & C-Server (aktiver Modus) und Warten auf die Verbindung des Bedieners über diesen Server.
  3. Durch Ersetzen des vorhandenen Dienstes, der TCP-Ports überwacht, und Warten auf eine Verbindung von einem bestimmten Quell-TCP-Port.


Mit der statischen Konfiguration von Kobalos können mehrere Methoden gleichzeitig aktiviert werden. In jeder von uns analysierten Probe wurde jedoch nur eine aktiviert.



Die letztere Methode erfordert das Ändern des ausführbaren Dämons. Die trojanisierte Version ruft den Kobalos-Code jedes Mal auf, wenn eine neue TCP-Verbindung akzeptiert wird (siehe Abbildung 7). Die Backdoor kann ihn akzeptieren, wenn die Verbindung von einem bestimmten TCP-Port stammt. Wenn die Portnummer übereinstimmt, gibt die Funktion nichts zurück und der Unterprozess endet, wenn die Verbindung geschlossen wird. Wenn der Port nicht dem vorgeschriebenen entspricht, unternimmt das Programm nichts und überträgt die Arbeit an den Code des legitimen Dienstes, der weiterhin ordnungsgemäß funktioniert.





Abbildung 7. Aufrufen einer Funktion von einer trojanisierten OpenSSH-Funktion nach dem Akzeptieren einer neuen TCP-Verbindung. Dies ist die, die wir am meisten gesehen haben und die nur vom OpenSSH-Server missbraucht wurde. Die Daten können jedoch fehlerhaft sein, da wir dies beim Scannen des Internets feststellen können. Wie in Abbildung 8 dargestellt, überwacht Kobalos den TCP-Port 55201. kobalos



main

















Abbildung 8. Vergleich des Quellports mit 55201.



Kobalos implementiert eine zusätzliche Methode zum Filtern eingehender TCP-Verbindungen, bei der der Quellport mit einer Liste von 16 Ports verglichen wird:





Abbildung 9. Vergleich eines Quellports mit einer Liste von 16 Ports.



Liste von 16 Ports:



zwanzig 567 2734 22392
21 982 5392 33921
53 1821 11568 44983
230 1912 19678 55201


Keine der gefundenen Proben verwendete diesen Filter. Es wurde möglicherweise in einer früheren Version der Hintertür verwendet.



Authentifizierung



Nachdem die Verbindung hergestellt wurde, wird die Authentifizierung durchgeführt. Für die weitere Arbeit benötigen Sie einen privaten RSA-Schlüssel und ein 32-Byte-Passwort. Der Kobalos-Client sendet ein erstes 320-Byte-Paket an den infizierten Server, dessen Struktur in Tabelle 2 beschrieben ist.



Tabelle 2. Die Struktur des Authentifizierungspakets (verschlüsselt mit dem privaten RSA-Schlüssel) :

Größe (Bytes) Beschreibung Wert
vier Geheimnisvoller Parameter 0x7FFF000A





2 Bindungsport Wenn 0x0000



, dann wählt Kobalos einen zufälligen Port. Wenn 0xFFFF



, dann verwendet es eine vorhandene TCP-Verbindung.
eins Kommunikationskanal-ID Scheint immer so eingestellt zu sein 0xFF



.
32 Passwort Der Kennwortwert entspricht dem MD5-Hash in der statischen Konfiguration.
280 Füllung


Die ersten 64 Bytes des Pakets werden mit dem konfigurierten RSA-512-Modul und Exponenten für den öffentlichen Schlüssel entschlüsselt 0x10001



(siehe Abbildung 11). Anschließend wird, wie in Abbildung 10 dargestellt, MD5-Hashing auf das 32-Byte-Kennwort angewendet und das Ergebnis mit den Informationen aus der statischen Konfiguration verglichen.





Abbildung 10. Nach dem Empfang von 320 Bytes wird die Authentifizierung durchgeführt.





Abbildung 11. Laden eines öffentlichen RSA-512-Schlüssels.



Mit dem öffentlichen RSA-Schlüssel verschlüsselt und legt Kobalos RC4-Schlüssel fest, die für die weitere Kommunikation verwendet werden: einer für eingehenden Verkehr, einer für ausgehenden Verkehr. Kobalos sendet in seiner Antwort verschlüsselte Schlüssel.



Tabelle 3. Struktur der Kobalos-Antwort (verschlüsselt mit dem öffentlichen RSA-Schlüssel) :

Größe (Bytes) Beschreibung Wert
vier Geheimnisvoller Parameter 0x7FFF000A





16 RC4-Schlüssel für eingehenden Verkehr RC4-Schlüssel für den Datenverkehr zum gefährdeten Host.
16 RC4-Schlüssel für ausgehenden Verkehr RC4-Schlüssel für den Datenverkehr von einem kompromittierten Host.
2 Gebundener Hafen TCP-Port als aktiver Kanal. Der Wert 0xFFFF



bedeutet die Verwendung der aktuellen Verbindung.
282 Füllung


Aktiver Kanal



Nach dem Übergeben der Authentifizierung kann der aktive Kanal einen anderen Port verwenden. Möglicherweise haben Sie bemerkt, dass Sie bei der Clientauthentifizierung einen "Bindungsport" in der verschlüsselten Nachricht angeben müssen.



  • Wenn der Wert von abweicht 0xFFFF



    , beginnt Kobalos, den angegebenen TCP-Port abzuhören.
  • Wenn der Wert Null ist, beginnt die Hintertür, einen zufälligen Port über 1024 abzuhören.


Wie oben erwähnt, wird in der Authentifizierungsantwort zusammen mit dem Paar von RC4-Schlüsseln die Nummer des neu geöffneten Ports übertragen. Falls gewünscht, kann eine zusätzliche TCP-Verbindung erstellt werden: Wenn ein Wert als Bindungsport übertragen wird 0xFFFF



, wird die aktuelle Verbindung verwendet.



Die nachfolgende Kommunikation über diese TCP-Verbindungen ist in Paketen gekapselt, deren Format in Tabelle 4 beschrieben ist.



Tabelle 4. Kobalos-Paketstruktur :

Größe (Bytes) Wert
eins Geheimnisvolle Bedeutung ( 0x7F



)
2 Nutzlast
eins Kommunikationskanal-ID.
eins Kommunikationskanal-ID.
payload_size Nutzlast (verschlüsselt mit RC4).


Kobalos ist der erste, der das Paket an den verbundenen Betreiber sendet. Das Paket enthält grundlegende Informationen zum Computer, z. B. den Hostnamen und die Kernelversion. Abbildung 12 zeigt die Einkapselungsstufen in einem Paket.





Abbildung 12. Informationen, die von einem kompromittierten Host an den Bediener gesendet wurden.



Abbildung 13 zeigt die Kommunikationsprozesse zwischen Kobalos und seinem Kunden.





Abbildung 13. Sequenzdiagramm des Kobalos-Netzwerkprotokolls.



Backdoor-Management



Nach der Authentifizierung kann der Bediener verschiedene Befehle an die Hintertür senden. Wir haben sie in Kategorien unterteilt:



  1. Stellen Sie eine Verbindung zu anderen mit Kobalos infizierten Servern her und fungieren Sie als Proxy.
  2. Lesen und Schreiben von Dateien in das Dateisystem.
  3. Starten und Zugreifen auf ein Pseudo-Terminal auf einem kompromittierten Host.
  4. Starten und Verwalten von Kobalos C & C-Servern mit Zugriff auf verbundene Bots.


Die Befehle sind im aktiven Kanal gekapselt. Sie beginnen mit einem identifizierenden Byte, gefolgt von den Parametern, die von diesem Befehl analysiert werden. Die in dieser Arbeit beschriebenen Befehle werden von Kobalos verarbeitet, dh der Bediener sendet sie mit einem speziellen Client an das gefährdete System. Kobalos antwortet im gleichen Format mit dem ersten Bezeichnerbyte, und die Antworten werden vom gleichen Client verarbeitet. Beispielsweise kann nach der Authentifizierung der Befehl "Hostinformationen senden" ( 0x04



) gegeben werden .



Verwendung als Proxy



Bediener können die auf dem gefährdeten Computer installierten Kobalos verwenden, um eine Verbindung zu anderen Instanzen der Hintertür auf anderen Systemen herzustellen. Der Proxy-Modus verwendet die oben beschriebene spezielle Paketgröße für die Authentifizierung und Kapselung, dh es handelt sich nicht um einen normalen TCP-Proxy.



Bei der Verbindung mit einem Computer eines Drittanbieters kann der Bediener den Quell-TCP-Port auswählen. Auf diese Weise können Sie eine Verbindung zu Kobalos-Instanzen herstellen, die von einem bestimmten Port auf eine Verbindung warten. Das erneute Verbinden des aktiven Kanals über einen alternativen Port wird ebenfalls unterstützt. Hierzu wird ein spezieller Befehl gegeben.



Eine der Aufgaben in diesem Fall besteht darin, ein gewisses Maß an Anonymität des Betreibers sicherzustellen. Der Endknoten sieht nur die IP-Adresse des anderen gefährdeten Computers, nicht die IP-Adresse des Bedieners. Um die Adresse des Bedieners weiter auszublenden, können Sie Ketten gefährdeter Proxy-Computer erstellen. Abbildung 14 zeigt ein solches Szenario.





Abbildung 14. Kobalos wird als Proxy verwendet.



Proxy-Steuerbefehle sind in Tabelle 5 beschrieben.



Tabelle 5. Befehle zur Verwendung von Kobalos als Proxy :

Befehl Beschreibung Optionen
0x01 Herstellen einer Verbindung zu einem anderen von Kobalos kompromittierten Host. Remote-Adresse. Quellport. Port beenden. Authentifizierungsnachricht (320 Byte).
0x03 . , TCP-. .
0x05 .




Nach der Authentifizierung kann der Bediener beliebige Dateien lesen oder in das System schreiben. Im Kobalos-Netzwerkprotokoll wird die gekapselte Nutzlast mithilfe einer 16-Bit-Ganzzahl definiert. Dies bedeutet, dass der Bediener nur 64K-Pakete senden kann. Wenn er beispielsweise 200 KB in eine Datei schreiben möchte, muss er vier erfolgreiche Schreibbefehle ausführen. Der Lesebefehl hat eine noch strengere Einschränkung: Es können jeweils nur 1000 Bytes gelesen und gesendet werden.



Tabelle 6 beschreibt die Befehle zum Arbeiten mit dem Dateisystem.



Tabelle 6. Befehle zum Lesen und Schreiben von Dateien :

Befehl Beschreibung Optionen
0x18 Öffnen einer Datei zum Schreiben; Wenn nicht, wird die Datei erstellt. Suchposition. Der Pfad zur Datei.
0x1A In eine Datei schreiben. Zu schreibende Daten. Sie werden von der Suchposition aus überschrieben.
0x1C Schließen der Datei nach der Aufnahme.
0x1D Öffnen und Lesen einer Datei. Suchposition. Der Pfad zur Datei.
0x20 Schließen der Datei nach dem Lesen.


Erstellen eines Pseudo-Terminals



Diese Funktionalität ermöglicht es einem authentifizierten Operator, eine Shell in einem neuen Pseudo-Terminal zu erstellen und beliebige Befehle auszuführen. Verwenden Sie dazu die Befehle aus Tabelle 7.



Tabelle 7. Befehle zum Erstellen und Verwalten von Pseudo-Terminals :

Befehl Beschreibung Optionen
0x12 Start eines neuen Pseudo-Terminals. Der Pfad zur Shell (zum Beispiel /bin/sh



). Streit.
0x0D Gibt die Größe des Pseudo-Terminal-Fensters an. Struktur Werte winsize



von akzeptiert TIOCSWINSZ .
0x14 Pseudo-Terminal schließen.
0x16 Schreiben in ein Pseudo-Terminal. Zu schreibende Daten.


Daten vom Terminal werden an die Bediener gesendet, und nach den Daten wird die Kennung des Schließbefehls angezeigt 0x17



. Es ist in dem Client implementiert, den die Operatoren verwenden.



Verwendung als C & C-Server



Eine der ungewöhnlichsten Eigenschaften von Kobalos ist, dass der C & C-Servercode bereits in die Hintertür selbst integriert ist. Auf diese Weise können Angreifer infizierte Computer mit einem einzigen Befehl in C & C-Server (für andere Bots) verwandeln. Nach dem Starten des Servers kann der Bediener seine IP-Adresse und seinen Port in den Konfigurationen zukünftiger Kobalos-Instanzen festlegen, die auf anderen Hosts bereitgestellt werden. Dies erlaubt:



  • Verwenden Sie gefährdete Ressourcen als C & C-Server, anstatt Server von regulären Anbietern zu mieten. Dies verringert die Wahrscheinlichkeit einer Nichtverfügbarkeit des Servers.
  • Verwenden Sie den C & C-Server als Zwischenknoten für Computer hinter Firewalls, mit denen keine direkte Verbindung über das Internet besteht.


Wenn der Bediener einen Befehl "Übergang in den C & C-Modus" ( 0x21



) sendet, wird die Portnummer als Parameter übergeben. Kobalos hört es sich an und Bots verwenden diesen Port, um eine Verbindung zur C & C-Serverinstanz herzustellen. Die Hintertür überwacht jedoch auch die nächsthöhere Portnummer. Wenn Bots beispielsweise den TCP-Port 7070 verwenden, überwacht Kobalos im C & C-Modus auch 7071. Der zweite Port wird vom Bediener verwendet, um C & C-Funktionen zu steuern, z. B. das Auflisten von Bots und das Einrichten von Tunneln für diese. Das Diagramm ist in Abbildung 15 dargestellt.





Abbildung 15. Operator Kobalos ruft Bots auf, die sich beim C & C-Server gemeldet haben.



In Tabelle 8 werden die Befehle zum Steuern der Funktionen des C & C-Servers beschrieben.



Tabelle 8. Befehle zur Steuerung der Funktionen des C & C-Servers :

Befehl Beschreibung Optionen
0x21 Start des C & C-Servers. TCP-Port für C & C-Server.
0x23 Ermitteln Sie die Anzahl der aktiven Verbindungen und die Gesamtzahl seit dem Start von C & C.
0x25 Liste aller Bots, die zur Ausführung von Befehlen bereit sind.
0x29 Trennen des C & C-Servers.
0x2B Stellen Sie eine Verbindung zum Bot her. Bot-Index aus der Liste der Bots, die zur Verbindung bereit sind. Authentifizierungsnachricht (320 Byte).
0x2D Verbindung zu einem Bot ohne Authentifizierung herstellen. Bot-Index aus der Liste der Bots, die zur Verbindung bereit sind.


Befehle 0x23



- 0x2D



werden vom C & C-Server-Unterprozess verarbeitet. Wie in Abbildung 16 gezeigt, werden Daten nach dem Senden auf einem aktiven Kanal über TCP an die Loopback-Schnittstelle des Steuerports (eine mehr als die von den Bots verwendete Portnummer) des C & C-Servers umgeleitet.





Abbildung 16. Pakete im Zusammenhang mit der C & C-Serververwaltung werden über TCP an einen Unterprozess weitergeleitet.



Andere Befehle



Umgebungsvariablen



Für den Backdoor-Prozess gibt es einen Befehl zum Festlegen von Umgebungsvariablen. Es nimmt eine Zeichenfolge als Parameter und übergibt sie einfach an putenv , das Daten im Format "VAR = Wert" erwartet.



Tabelle 9. Andere Befehle, die Kobalos versteht :

Befehl Beschreibung Optionen
0x0E Legt die Umgebungsvariable für die Sitzung fest. Zeichenfolge, an die übergeben werden soll putenv



.


Leere Operationen



Es sind zwei weitere Befehle implementiert, die jedoch nichts tun. Wir haben zwei Erklärungen dafür:



  • Die Autoren haben die Funktionalität der Befehle entfernt, wie sie in früheren Versionen verwendet wurden und nicht mehr benötigt werden.
  • Die Befehle sind plattformspezifisch und gelten nicht für die von uns analysierten Linux- und FreeBSD-Versionen von Kobalos.




Abbildung 17. Teams und nichts tun. Die zweite Erklärung ist wahrscheinlicher, da wir die Zeichenfolgenwerte für Solaris, AIX und Windows kennen (siehe Kapitel Verschlüsselte Zeichenfolgenwerte). 0x07



0x09











OpenSSH-Programm zum Stehlen von Anmeldeinformationen



Auf den meisten von Kobalos kompromittierten Systemen stellte die Hintertür auch ein Programm bereit, um SSH-Anmeldeinformationen über einen trojanisierten SSH-Client zu stehlen. Wir haben verschiedene Versionen dieser Dateien gefunden, einschließlich Linux und FreeBSD. Im Gegensatz zu Kobalos wurden die Fähigkeiten dieses Programms kaum verschleiert. Die Hauptfunktion besteht darin, den Hostnamen, die Portnummer sowie den Benutzernamen und das Kennwort zu stehlen, um eine SSH-Verbindung von einem gefährdeten Host herzustellen. Die Daten werden in einer verschlüsselten Datei gespeichert. Neuere Versionen des Trojaners können auch Informationen über das Netzwerk über UDP übertragen. Diese Funktion wurde jedoch in der Konfiguration der meisten gefundenen Beispiele nicht aktiviert.



Zum Zeitpunkt der Veröffentlichung unserer vorherigen Studie zu OpenSSH-Hintertüren "Die dunkle Seite des ForSSHE" wussten wir jedoch nichts über diesen Trojaner, weshalb er in dieser Arbeit nicht erwähnt wird. Wir können es auch nicht mit einem der in Open Source beschriebenen OpenSSH-Programme zum Stehlen von Anmeldeinformationen verknüpfen.



Der Speicherort der gestohlenen Datendatei hängt von der Version des Programms ab. Alle Beispiele haben eine /var/run



Datei mit der Erweiterung .pid im Verzeichnis erstellt . Es wird in vielen Dateien in diesem Verzeichnis verwendet. Beispiele für Dateinamen und Pfade zu diesen aus verschiedenen Beispielen finden Sie im Kapitel "Anzeichen eines Kompromisses".



Alle gefundenen Beispiele verschlüsseln den Inhalt der Dateien mit einer einfachen Chiffre. Wie in Abbildung 18 dargestellt, fügt der Trojaner einfach jedem gespeicherten Datenbyte 123 hinzu.





Abbildung 18. Verschlüsseln und Schreiben gestohlener SSH-Anmeldeinformationen in die Datei



Die FreeBSD-Version verwendet dasselbe Format und dieselbe Verschlüsselung. Sie sind jedoch etwas anders implementiert, beispielsweise wird im Programm der Pfad zur Datei mit einem Einzelbyte-XOR verschlüsselt.



Entwicklung einer Programmfamilie



Nachdem wir eine der Opferorganisationen benachrichtigt hatten, entdeckten sie eine neuere Version eines Trojaners, der Anmeldeinformationen stiehlt. Es enthält eine verschlüsselte Konfiguration und ermöglicht die Übertragung gestohlener Informationen über UDP an den in der Konfiguration angegebenen Remote-Host. Ebury und andere SSH-Programme zum Diebstahl von Anmeldeinformationen wie Bonadan, Kessel und Chandrila verfügen ebenfalls über diese Funktion. Möglicherweise wurde UDP ausgewählt, um Firewalls zu umgehen und keine TCP-Verbindungen zu potenziell nicht vertrauenswürdigen Hosts herzustellen. Der Trojaner verwendet nur eine Übertragungsmethode - über eine Datei oder ein Netzwerk, da der Name des Zielhosts und der Pfad zur Datei in derselben Variablen gespeichert sind.



Abbildung 19 zeigt den dekompilierten Code zum Senden von Daten über UDP. Und Abbildung 20 zeigt die Konfiguration aus dem gefundenen Beispiel. Es wurde konfiguriert, um die gestohlenen Informationen anzumelden /var/run/sshd/sshd.pid



.





Abbildung 19. Der Trojaner sendet Anmeldeinformationen über UDP .





Abbildung 20. Beispiel einer Konfiguration, bei der gestohlene Daten mithilfe einer Datei erfasst werden.



Seltsamerweise enthält die Konfiguration auch den Namen des Hosts des Opfers. Es wird wahrscheinlich von Operatoren verwendet, um eine Datenquelle zu bezeichnen. Dies bedeutet auch, dass jeder gefährdete Server eine eindeutige Instanz des Trojaners empfängt.



Fazit



Zahlreiche gut implementierte Funktionen und Techniken zur Netzwerkumgehung zeigen, dass die Kobalos-Autoren weitaus erfahrener sind als viele Malware-Autoren für Linux und andere Nicht-Windows-Systeme. Targeting - ziemlich bekannte Organisationen - zeigt uns auch, dass Kobalos-Betreiber nicht darauf abzielen, so viele Systeme wie möglich zu infizieren. Geringe Spuren und Netzwerk-Bypass-Techniken könnten der Grund dafür sein, dass die Hintertür unbemerkt blieb, bis wir die Opfer über die Ergebnisse unseres Netzwerk-Scans informierten.



Wir können die Frage nach den Absichten der Angreifer nicht beantworten. Mit den Funktionen der Hintertür können Sie damit jedes Problem lösen. Auf den gefährdeten Computern wurde keine zusätzliche Software gefunden, außer einem Trojaner, der SSH-Anmeldeinformationen stiehlt. Daher betrachten wir SSH als Einstiegspunkt und nicht als Nutzlast. Nach Informationen der Systemadministratoren der kompromittierten HPC-Informationssysteme aus den Systemadministratoren der kompromittierten HPC-Systeme hat niemand versucht, Kryptowährungen abzubauen oder andere Aufgaben zu starten, die viel Rechenleistung erfordern.



Was verfolgen die Angreifer?



Wir konnten auch nicht herausfinden, wie lange diese Software verwendet wird. Wir haben Zeilen gefunden, die sich auf Windows 3.11 und Windows 95 beziehen und vor über 25 Jahren herauskamen. Gibt es eine Windows-Version von Kobalos? Dieses Programm wurde vor so langer Zeit erstellt? Wir wissen von Neuinfektionen in den Jahren 2019 und 2020, haben jedoch keine Hinweise auf eine frühere Anwendung gefunden.



Während die Autoren dieser Software mit der Bedienung der Netzwerkprotokolle und Betriebssysteme ihrer Opfer vertraut zu sein scheinen, weist Kobalos mehrere Schwachstellen auf. Erstens sind die Probleme mit der Kryptographie wahrscheinlich auf die Entwicklung dieser Branche zurückzuführen, wenn Kobalos wirklich für eine sehr lange Zeit entwickelt wurde. Zweitens stellen Sie möglicherweise fest, dass es passiv abhörende Instanzen gibt, insbesondere wenn sie einen bestimmten Quell-TCP-Port erfordern. Wir haben diese Funktion erfolgreich genutzt und die Opfer benachrichtigt, um die Anzahl der infizierten Hosts zu verringern und diese neu entdeckte Bedrohung besser zu verstehen.



Wir berichten auch über die Arbeit von Maciej Kotowicz von MalwareLab pl , der Kobalos unabhängig analysierte und mit dem wir Umfrageergebnisse austauschten. Er erzählte Oh My H@ck 2020.



. Kobalos



1003 INITIALIZE socket, filter Kobalos , ( enum).
1004 START_LISTENING C&C- .
1005 START_C2_SERVER socket_1, socket_2 C&C-.
1006 SEND_PACKET socket_fd, &channel_1,

&channel_2, data, data_len
Kobalos socket_fd.
1007 RECV_PACKET socket_fd, &channel_1,

&channel_2, data, data_len
Kobalos socket_fd.
1008 GET_RANDOM_INT random_int 32- . PRNG .
1009 GET_HOST_INFO out_buf, returns buf_len , IP- .
1010 SET_COMMON_SOCKOPT socket SO_REUSEADDR SO_KEEPALIVE

true, SO_LINGER —

15 .
1011 RC4_DECRYPT_STRING_INPLACE str, len str RC4- .
1012 CLEANUP_THINGS what_to_close, send_report . . .
1013 RC4_INIT context, key_size, key RC4 .
1014 RC4_CRYPT context, len, data_in, data_out RC4- .
1015 MD5 input, input_len, output_digest MD5-.
1016

to 1037
, .
1038 RSA_PUBLIC_DECRYPT
1039 LOAD_PUB_KEY key_bin_data, public_key Lädt ein BLOB mit einem öffentlichen RSA-Schlüssel von key_bin_data in public_key.


Anzeichen eines Kompromisses



Von ESET gefundene Namen



  • Linux / Kobalos
  • Linux / Agent.IV
  • Linux / SSHDoor.EV
  • Linux / SSHDoor.FB
  • Linux / SSHDoor.FC


Proben



Kobalos



SHA-1 Zielbetriebssystem Eingebaut Verfügbarkeit
FBF0A76CED2939D1F7EC5F9EA58C5A294207F7FE



RHEL sshd Warten auf Verbindung vom Quellport 55201.
479F470E83F9A5B66363FBA5547FDFCF727949DA



Debian Eigenständige Verbindet mit

151.80.57 [.] 191: 7070
AFFA12CC94578D63A8B178AE19F6601D5C8BB224



FreeBSD sshd Warten auf Verbindung vom Quellport 55201.
325F24E8F5D56DB43D6914D9234C08C888CDAE50



Ubuntu sshd Warten auf Verbindung vom Quellport 55201.
A4050A8171B0FA3AE9031E0F8B7272FACF04A3AA



Arch Linux sshd Warten auf Verbindung vom Quellport 55201.


Trojaner zum Stehlen von SSH-Anmeldeinformationen



SHA-1 Zielbetriebssystem Schreibt in
6616DE799B5105EE2EB83BBE25C7F4433420DFF7



RHEL /var/run/nscd/ns.pid



E094DD02CC954B6104791925E0D1880782B046CF



RHEL /var/run/udev/ud.pid



1DD0EDC5744D63A731DB8C3B42EFBD09D91FED78



FreeBSD /var/run/udevd.pid



C1F530D3C189B9A74DBE02CFEB29F38BE8CA41BA



Arch Linux /var/run/nscd/ns.pid



659CBDF9288137937BB71146B6F722FFCDA1C5FE



Ubuntu /var/run/sshd/sshd.pid





Schlüssel



Öffentlicher RSA-Schlüssel



-----BEGIN PUBLIC KEY----- MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOUgD8sEF1kZ04QxCd60HrB+TxWnLQED
wzb0sZ8vMMD6xnUAJspdYzSVDnRnKYjTOM43qtLNcJOwVj6cuC1uHHMCAwEAAQ==
-----END PUBLIC KEY-----

      
      





Statischer RC4-Schlüssel für Zeichenfolgenwerte



AE0E05090F3AC2B50B1BC6E91D2FE3CE

      
      





YARA-Regeln



rule kobalos
{
meta:
 = “Kobalos malware” author = “Marc-Etienne M.Léveillé” date = “2020-11-02”

reference = «http://www.welivesecurity.com» source = «https://github.com/eset/malware-ioc/» license = «BSD 2-Clause»

version = “1”

strings:
$encrypted_strings_sizes = {
05 00 00 00 09 00 00 00 04 00 00 00 06 00 00 00
08 00 00 00 08 00 00 00 02 00 00 00 02 00 00 00
01 00 00 00 01 00 00 00 05 00 00 00 07 00 00 00
05 00 00 00 05 00 00 00 05 00 00 00 0A 00 00 00
}
$password_md5_digest = { 3ADD48192654BD558A4A4CED9C255C4C }
$rsa_512_mod_header = { 10 11 02 00 09 02 00 }
$strings_RC4_key = { AE0E05090F3AC2B50B1BC6E91D2FE3CE }

condition:
any of them
}

rule kobalos_ssh_credential_stealer { meta:
 = “Kobalos SSH credential stealer seen in OpenSSH client” author = “Marc-Etienne M.Léveillé”
date = “2020-11-02”
reference = «http://www.welivesecurity.com» source = «https://github.com/eset/malware-ioc/» license = «BSD 2-Clause»

version = “1”

strings:
$ = “user: %.128s host: %.128s port %05d user: %.128s password: %.128s”

condition:
any of them

}

      
      





MITRE ATT & CK-Techniken



Die Tabelle wurde mit der achten Version des ATT & CK-Frameworks erstellt.



Taktik Kennung Name Beschreibung
Nachhaltigkeit T1554 Kompromiss ClientSoftware Binary Kobalos OpenSSH- sshd



.Kobalos SSH- .
T1205 Traffic Signaling Kobalos TCP- .
Defense Evasion T1070.003 Clear Command History Kobalos , .
T1070.006 Timestomp Kobalos .
T1027.002 Software Packing Kobalos .
Command And Control T1573.001 Encrypted Channel: Symmetric Cryptography RC4.
T1573.002 Encrypted Channel: Asymmetric Cryptography RSA-512.
T1090.003 Proxy: Multi-hop Proxy Kobalos , Kobalos.



All Articles