Loki 1.8: Dossier über junge und aufstrebende Data Stealer





Mitte Juni war der Kampf gegen das Coronavirus in Kasachstan in vollem Gange. Angesichts der wachsenden Zahl von Fällen (damals wurde sogar der frühere Präsident Nursultan Nasarbajew infiziert) beschlossen die lokalen Behörden, alle Einkaufs- und Unterhaltungszentren, Filialisten, Märkte und Basare wieder zu schließen. In diesem Moment nutzten Cyberkriminelle die Situation, indem sie böswillige Mailings an russische und internationale Unternehmen schickten.



Gefährliche Briefe, getarnt als Appell des Gesundheitsministers der Republik Kasachstan, wurden von der Gruppe IB des Threat Detection System (TDS) abgefangen. Der Anhang enthielt Dokumente, die beim Start ein Schadprogramm aus der Loki PWS-Familie (Password Stealer) installierten, mit dem Anmeldungen und Kennwörter von einem infizierten Computer gestohlen werden konnten. In Zukunft können Angreifer sie verwenden, um Zugriff auf E-Mail-Konten für Finanzbetrug, Spionage zu erhalten oder sie in Hackerforen zu verkaufen.



In diesem Artikel untersucht Nikita Karpov, Analyst bei CERT-GIB , eine Instanz eines der derzeit beliebtesten Data Stealer - Loki.



Heute werden wir eine der beliebtesten Bot-Versionen betrachten - 1.8. Es wird aktiv verkauft und das Admin-Panel ist sogar gemeinfrei: hier .



Beispiel für das Admin-Panel:







Loki ist in C ++ geschrieben und eine der beliebtesten Malware, mit der Benutzerinformationen von einem infizierten Computer gestohlen werden. Wie die Geißel unserer Zeit - Ransomware-Viren - führt Data Stealer, nachdem er auf dem Computer des Opfers getroffen wurde, die Aufgabe mit sehr hoher Geschwindigkeit aus - er muss nicht Fuß fassen und seine Privilegien im System erhöhen, er lässt fast keine Zeit, sich gegen einen Angriff zu verteidigen. Daher spielt bei Ereignissen mit Malware, die Benutzerdaten stiehlt, die Untersuchung von Vorfällen die Hauptrolle.



Auspacken und Abrufen eines funktionsfähigen Malware-Dumps



Die Verteilung erfolgt in den meisten Fällen über Anhänge in Mailinglisten. Der als legitime Datei getarnte Benutzer lädt den Anhang herunter, öffnet ihn und startet die Malware.



Der Injektionsmarker weist auf das Vorhandensein eines Laders hin.





Mit Hilfe von DIE erhalten wir Informationen, dass die Quelldatei in VB6 geschrieben ist.





Das Entropiediagramm zeigt eine große Menge verschlüsselter Daten an.





Beim Start erstellt der erste Prozess einen untergeordneten Prozess, injiziert ihn und wird beendet. Der zweite Prozess ist für die Arbeit der Malware verantwortlich. Nach kurzer Zeit stoppen wir den Prozess und speichern den Speicherauszug. Um zu bestätigen, dass sich Loki im Dump befindet, schauen Sie in die URL der Kommandozentrale, die in den meisten Fällen mit fre.php endet .





Wir sichern das Speicherfragment mit dem Loki und korrigieren den PE-Header.



Wir werden die Leistung des Dumps mit dem TDS Huntbox-System überprüfen.





Bot-Funktionalität



Bei der Prüfung des dekompilierten Malware-Codes finden wir einen Teil mit vier Funktionen, die unmittelbar nach der Initialisierung der für den Vorgang erforderlichen Bibliotheken ausgeführt werden. Nachdem wir jeden von ihnen im Inneren zerlegt haben, bestimmen wir ihren Zweck und ihre Funktionalität für unsere Malware.





Funktionsnamen wurden umbenannt, um der Einfachheit halber aussagekräftiger zu sein.

Die Bot-Funktionalität wird durch zwei Hauptfunktionen bestimmt:



  1. Data Stealer ist die erste Funktion, die Daten aus 101 Anwendungen stiehlt und an den Server sendet.
  2. Downloader - eine Anforderung von CnC-Befehlen (Command & Control) zur Ausführung.


In der folgenden Tabelle sind der Einfachheit halber alle Anwendungen aufgeführt, aus denen die untersuchte Loki-Instanz versucht, Daten zu stehlen.

Funktions-ID Anwendung Funktions-ID Anwendung Funktions-ID Anwendung
1 Mozilla Firefox 35 FTPInfo 69 ClassicFTP
2 Comodo IceDragon 36 LinasFTP 70 PuTTY / KiTTY
3 Apple Safari 37 FileZilla 71 Thunderbird
4 K-Meleon 38 Mitarbeiter-FTP 72 Foxmail
fünf Seeaffe 39 BlazeFtp 73 Pocomail
6 Herde 40 NETFile 74 IncrediMail
7 NETGATE BlackHawk 41 GoFTP 75 Google Mail Notifier Pro
8 Lunascape 42 ALFTP 76 Checkmail
neun Google Chrome 43 DeluxeFTP 77 WinFtp
zehn Oper 44 Total Commander 78 Martin Prikryl
elf QTWeb Browser 45 FTPGetter 79 32BitFtp
12 QupZilla 46 WS_FTP 80 FTP Navigator
dreizehn Internet Explorer 47 Mail Client-Konfigurationsdateien 81 Mailing

(softwarenetz)
vierzehn Oper 2 48 Full Tilt Poker 82 Opera Mail
fünfzehn Cyberfox 49 Pokerstars 83 Briefkasten
Sechszehn Blasser Mond 50 ExpanDrive 84 FossaMail
17 Wasserfuchs 51 Ross 85 Becky!
achtzehn Pidgin 52 FlashFXP 86 POP3
19 SuperPutty 53 NovaFTP 87 Ausblick
20 FTPShell 54 NetDrive 88 Ymail2
21 NppFTP 55 Total Commander 2 89 Trojitá
22 MyFTP 56 SmartFTP 90 TrulyMail
23 FTPBox 57 FAR Manager 91 .spn-Dateien
24 Sherrod FTP 58 Bitvise 92 To-Do-Desklist
25 FTP jetzt 59 RealVNC

TightVNC
93 Stickies
26 NexusFile 60 mSecure Wallet 94 NoteFly
27 Xftp 61 Syncovery 95 NoteZilla
28 EasyFTP 62 FreshFTP 96 Haftnotizen
29 SftpNetDrive 63 BitKinex 97 KeePass
dreißig AbleFTP 64 UltraFXP 98 Übergeben
31 JaSFtp 65 FTP jetzt 2 99 Mein RoboForm
32 Automatisieren 66 Vandyk SecureFX 100 1Passwort
33 Cyberduck 67 Odin Secure FTP-Experte 101 Mikrotik WinBox
34 Fullsync 68 Schleudern
In dieser Phase ist die statische Analyse von Malware abgeschlossen. Im nächsten Abschnitt werden wir untersuchen, wie Loki mit dem Server kommuniziert.



Vernetzung



Es gibt zwei Probleme, die behoben werden müssen, um Netzwerkinteraktionen aufzuzeichnen:



  1. Das Command Center ist nur zum Zeitpunkt des Angriffs verfügbar.
  2. Wireshark zeichnet keine Bot-Kommunikation im Loopback auf, daher müssen Sie andere Mittel verwenden.


Die einfachste Lösung besteht darin, die CnC-Adresse, mit der Loki kommuniziert, an localhost weiterzuleiten. Für den Bot ist der Server jetzt jederzeit verfügbar, obwohl er nicht antwortet, aber es ist nicht erforderlich, die Kommunikation des Bots aufzuzeichnen. Um das zweite Problem zu lösen, verwenden wir das Dienstprogramm RawCap, mit dem wir die für pcap erforderlichen Mitteilungen schreiben können. Als nächstes werden wir die aufgezeichnete PCAP in Wireshark analysieren.





Vor jeder Kommunikation überprüft der Bot die Verfügbarkeit von CnC und öffnet, falls verfügbar, einen Socket. Die gesamte Netzwerkkommunikation findet auf Transportebene unter Verwendung des TCP-Protokolls statt, und auf Anwendungsebene wird HTTP verwendet.



Die folgende Tabelle zeigt die Paket-Header, die Loki standardmäßig verwendet.

Feld Wert Beschreibung
User-Agent Mozilla / 4.08 (Charon; Inferno) Ein typischer User Agent für Loki
Akzeptieren * / *
Inhaltstyp Anwendung / Oktett-Stream
Inhaltskodierung binär
Inhaltsschlüssel 7DE968CC Hashing-Ergebnis früherer Header (Hashing wird von einem benutzerdefinierten CRC-Algorithmus mit dem Polynom 0xE8677835 durchgeführt)
Verbindung schließen
Achten wir auf den Hauptteil des Pakets:



  1. Die Struktur der aufgezeichneten Daten hängt von der Version des Bots ab. In früheren Versionen gibt es keine Felder, die für die Verschlüsselungs- und Komprimierungsoptionen verantwortlich sind.
  2. Der Server bestimmt anhand der Art der Anforderung, wie die empfangenen Daten verarbeitet werden sollen. Es gibt 7 Arten von Daten, die der Server lesen kann:

    • 0x26 Gestohlene Brieftaschendaten
    • 0x27 Gestohlene Anwendungsdaten
    • 0x28 Befehlsanforderung vom Server
    • 0x29 Entladen einer gestohlenen Datei
    • 0x2A POS
    • 0x2B Keylogger-Daten
    • 0x2C Screenshot
  3. In der untersuchten Instanz waren nur 0x27, 0x28 und 0x2B vorhanden.
  4. Jede Anfrage enthält allgemeine Informationen über den Bot und das infizierte System, nach denen der Server alle Berichte für einen Computer identifiziert. Anschließend gibt es Informationen, die von der Art der Anfrage abhängen.
  5. In der neuesten Version des Bots ist nur die Datenkomprimierung implementiert, und verschlüsselte Felder werden für die Zukunft vorbereitet und nicht vom Server verarbeitet.
  6. Die Open Source APLib-Bibliothek wird zum Komprimieren von Daten verwendet.


Beim Bilden einer Anfrage mit gestohlenen Daten weist der Bot einen Puffer der Größe 0x1388 (5000 Byte) zu. Die Struktur der 0x27-Anforderungen ist in der folgenden Tabelle aufgeführt:

Vorspannen Die Größe Wert Beschreibung
0x0 0x2 0x0012 Bot-Version
0x2 0x2 0x0027 Anfragetyp (gestohlene Daten senden)
0x4 0xD ckav.ru Binäre ID (XXXXX11111 tritt auch auf)
0x11 0x10 - - Benutzername
0x21 0x12 - - Computername
0x33 0x12 - - Domänenname des Computers
0x45 0x4 - - Bildschirmauflösung (Breite und Höhe)

0x49 0x4 - -
0x4D 0x2 0x0001 Benutzerrechte-Flag (1, wenn Administrator)
0x4F 0x2 0x0001 SID-Flag (1, falls gesetzt)
0x51 0x2 0x0001 Systembitness-Flag (1, wenn x64)
0x53 0x2 0x0006 Windows-Version (Hauptversionsnummer)
0x55 0x2 0x0001 Windows-Version (Nebenversionsnummer)
0x57 0x2 0x0001 Zusätzliche Systeminformationen (1 = VER_NT_WORKSTATION)
0x59 0x2 - -
0x5B 0x2 0x0000 Wurden die gestohlenen Daten gesendet?
0x5D 0x2 0x0001 Wurde Datenkomprimierung verwendet?
0x5F 0x2 0x0000 Komprimierungsart
0x61 0x2 0x0000 Wurde Datenverschlüsselung verwendet?
0x63 0x2 0x0000 Verschlüsselungstyp
0x65 0x36 - - MD5 aus dem MachineGuid-Registerwert
0x9B - - - - Komprimierte gestohlene Daten
Die zweite Phase der Interaktion mit dem Server beginnt, nachdem sie im System behoben wurde. Der Bot sendet eine Anfrage vom Typ 0x28, deren Struktur unten gezeigt wird



: Puffergröße: 0x2BC (700 Bytes)

Vorspannen Die Größe Wert Beschreibung
0x0 0x2 0x0012 Bot-Version
0x2 0x2 0x0028 Anfragetyp (Befehlsanforderung von der Kommandozentrale)
0x4 0xD ckav.ru Binäre ID (XXXXX11111 tritt auch auf)
0x11 0x10 - - Benutzername
0x21 0x12 - - Computername
0x33 0x12 - - Domänenname des Computers
0x45 0x4 - - Bildschirmauflösung (Breite und Höhe)
0x49 0x4 - -
0x4D 0x2 0x0001 Benutzerrechte-Flag (1, wenn Administrator)
0x4F 0x2 0x0001 SID-Flag (1, falls gesetzt)
0x51 0x2 0x0001 Systembitness-Flag (1, wenn x64)
0x53 0x2 0x0006 Windows-Version (Hauptversionsnummer)
0x55 0x2 0x0001 Windows-Version (Nebenversionsnummer)
0x57 0x2 0x0001 Zusätzliche Systeminformationen (1 = VER_NT_WORKSTATION)
0x59 0x2 0xFED0
0x5B 0x36 - - MD5 aus dem MachineGuid-Registerwert
Nach der Anforderung erwartet der Bot eine Antwort vom Server, die die Nummer und die Befehle selbst enthält. Mögliche Befehlsvarianten werden mithilfe einer statischen Analyse des dekompilierten Malware-Codes ermittelt und im Folgenden vorgestellt.



Puffergröße: 0x10 (16 Byte) + 0x10 (16 Byte) für jeden Befehl im Paket.

HTTP-Header (Datenanfang) \ r \ n \ r \ n [0D 0A 0D 0A] 4 Bytes
- - 4
2 [00 00 00 02] 4


4


4


4


4



()

#0

EXE-
[00 00 00 00] [00 00 00 00] [00 00 00 00] [00 00 00 23] www.notsogood.site/malicious.exe
#1

DLL
[00 00 00 00] [00 00 00 01] [00 00 00 00] [00 00 00 23] www.notsogood.site/malicious.dll
#2

EXE-
[00 00 00 00] [00 00 00 02] [00 00 00 00] [00 00 00 23] www.notsogood.site/malicious.exe
#8

(HDB file)
[00 00 00 00] [00 00 00 08] [00 00 00 00] [00 00 00 00] -
#9

[00 00 00 00] [00 00 00 09] [00 00 00 00] [00 00 00 00] -
#10

[00 00 00 00] [00 00 00 0A] [00 00 00 00] [00 00 00 00] -
#14

Loki
[00 00 00 00] [00 00 00 0E] [00 00 00 00] [00 00 00 00] -
#15

Loki
[00 00 00 00] [00 00 00 0F] [00 00 00 00] [00 00 00 23] www.notsogood.site/malicious.exe
# 16

Ändern Sie die Häufigkeit der Überprüfung der Antwort vom Server
[00 00 00 00] [00 00 00 10] [00 00 00 00] [00 00 00 01] fünf
# 17

Loki entfernen und beenden
[00 00 00 00] [00 00 00 11] [00 00 00 00] [00 00 00 00] - -


Netzwerkverkehrsparser



Dank dieser Analyse verfügen wir über alle Informationen, die wir zum Analysieren der Netzwerkinteraktionen von Loki benötigen.



Der Parser ist in Python implementiert, empfängt eine pcap-Datei als Eingabe und findet darin alle zu Loki gehörenden Kommunikationen.



Verwenden wir zunächst die dkpt-Bibliothek, um alle TCP-Pakete zu finden. Um nur http-Pakete zu empfangen, setzen wir einen Filter auf den verwendeten Port. Unter den empfangenen http-Paketen wählen wir diejenigen aus, die die bekannten Loki-Header enthalten, und erhalten Mitteilungen, die analysiert werden müssen, um Informationen in lesbarer Form daraus zu extrahieren.



for ts, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf)
    if not isinstance(eth.data, dpkt.ip.IP):
        ip = dpkt.ip.IP(buf)
    else:
        ip = eth.data
 
    if isinstance(ip.data, dpkt.tcp.TCP):
        tcp = ip.data
        try:
            if tcp.dport == 80 and len(tcp.data) > 0:  # HTTP REQUEST
                if str(tcp.data).find('POST') != -1:
                    http += 1
                    httpheader = tcp.data
                    continue
                else:
                    if httpheader != "":
                        print('Request information:')
 
                        pkt = httpheader + tcp.data
                        httpheader = ""
                        if debug:
                            print(pkt)
                        req += 1
                        request = dpkt.http.Request(pkt)
                        uri = request.headers['host'] + request.uri
                        parsed_payload['Network']['Source IP'] = socket.inet_ntoa(ip.src)
                        parsed_payload['Network']['Destination IP'] = socket.inet_ntoa(ip.dst)
                        parsed_payload_same['Network']['CnC'] = uri
                        parsed_payload['Network']['HTTP Method'] = request.method
 
                        if uri.find("fre.php"):
                            print("Loki detected!")
                        pt = parseLokicontent(tcp.data, debug)
                        parsed_payload_same['Malware Artifacts/IOCs']['User-Agent String'] = request.headers['user-agent']
 
                        print(json.dumps(parsed_payload, ensure_ascii=False, sort_keys=False, indent=4))
                        parsed_payload['Network'].clear()
                        parsed_payload['Compromised Host/User Data'].clear()
                        parsed_payload['Malware Artifacts/IOCs'].clear()
                        print("----------------------")
            if tcp.sport == 80 and len(tcp.data) > 0:  # HTTP RESPONCE
                resp += 1
                if pt == 40:
                    print('Responce information:')
                    parseC2commands(tcp.data, debug)
                    print("----------------------")
                    pt = 0
        except(dpkt.dpkt.NeedData, dpkt.dpkt.UnpackError):
            continue


Bei allen Loki-Anforderungen sind die ersten 4 Bytes für die Bot-Version und den Anforderungstyp verantwortlich. Mit diesen beiden Parametern bestimmen wir, wie wir die Daten verarbeiten.



def parseLokicontent(data, debug):
    index = 0
 
    botV = int.from_bytes(data[0:2], byteorder=sys.byteorder)
    parsed_payload_same['Malware Artifacts/IOCs']['Loki-Bot Version'] =  botV
 
    payloadtype = int.from_bytes(data[2:4], byteorder=sys.byteorder)
    index = 4
    print("Payload type: : %s" % payloadtype)
    if payloadtype == 39:
        parsed_payload['Network']['Traffic Purpose'] =  "Exfiltrate Application/Credential Data"
        parse_type27(data, debug)
    elif payloadtype == 40:
        parsed_payload['Network']['Traffic Purpose'] = "Get C2 Commands"
        parse_type28(data, debug)
    elif payloadtype == 43:
        parsed_payload['Network']['Traffic Purpose'] = "Exfiltrate Keylogger Data"
        parse_type2b(lb_payload)
    elif payloadtype == 38:
        parsed_payload['Network']['Traffic Purpose'] = "Exfiltrate Cryptocurrency Wallet"
    elif payloadtype == 41:
        parsed_payload['Network']['Traffic Purpose'] = "Exfiltrate Files"
    elif payloadtype == 42:
        parsed_payload['Network'].['Traffic Purpose'] = "Exfiltrate POS Data"
    elif payloadtype == 44:
        parsed_payload['Network']['Traffic Purpose'] = "Exfiltrate Screenshots"
 
    return payloadtype


Als Nächstes wird die Antwort vom Server analysiert. Um nur nützliche Informationen zu lesen, suchen Sie nach der Sequenz \ r \ n \ r \ n , die das Ende der Paket-Header und den Beginn der Befehle vom Server definiert.



def parseC2commands(data, debug):
    word = 2
    dword = 4
    end = data.find(b'\r\n\r\n')
    if end != -1:
        index = end + 4
        if (str(data).find('<html>')) == -1:
            if debug:
                print(data)
            fullsize = getDWord(data, index)
            print("Body size: : %s" % fullsize)
            index += dword
            count = getDWord(data, index)
            print("Commands: : %s" % count)
            if count == 0:
                print('No commands received')
            else:
                index += dword
                for i in range(count):
                    print("Command: %s" % (i + 1))
 
                    id = getDWord(data, index)
                    print("Command ID: %s" % id)
                    index += dword
 
                    type = getDWord(data, index)
                    print("Command type: %s" % type)
                    index += dword
 
                    timelimit = getDWord(data, index)
                    print("Command timelimit: %s" % timelimit)
                    index += dword
 
                    datalen = getDWord(data, index)
                    index += dword
 
                    command_data = getString(data, index, datalen)
                    print("Command data: %s" % command_data)
                    index += datalen
        else:
            print('No commands received')
    return None


Dies schließt die Analyse des Hauptteils des Parser-Algorithmus ab und fährt mit dem Ergebnis fort, das wir am Ausgang erhalten. Alle Informationen werden im JSON-Format angezeigt.



Unten finden Sie Bilder des Ergebnisses der Arbeit des Parsers, die aus der Kommunikation verschiedener Bots mit unterschiedlichem CnC erhalten und in verschiedenen Umgebungen aufgezeichnet wurden.



Request information:
Loki detected!
Payload type: 39
Decompressed data: 
{'Module': {'Mozilla Firefox'}, 'Version': {0}, 'Data': {'domain': {'https://accounts.google.com'}, 'username': {'none@gmail.com'}, 'password': {'test'}}}
{'Module': {'NppFTP'}, 'Version': {0}, 'Data': {b'<?xml version="1.0" encoding="UTF-8" ?>\r\n<NppFTP defaultCache="%CONFIGDIR%\\Cache\\%USERNAME%@%HOSTNAME%" outputShown="0" windowRatio="0.5" clearCache="0" clearCachePermanent="0">\r\n    <Profiles />\r\n</NppFTP>\r\n'}}
{
    "Network": {
        "Source IP": "-",
        "Destination IP": "185.141.27.187",
        "HTTP Method": "POST",
        "Traffic Purpose": "Exfiltrate Application/Credential Data",
        "First Transmission": true
    },
    "Compromised Host/User Data": {},
    "Malware Artifacts/IOCs": {}
}


Oben sehen Sie ein Beispiel für eine Anforderung an Server 0x27 (Hochladen von Anwendungsdaten). Zum Testen wurden Konten in drei Anwendungen erstellt: Mozilla Firefox, NppFTP und FileZilla. Loki bietet drei Optionen zum Aufzeichnen von Anwendungsdaten:



  1. In Form einer SQL-Datenbank (der Parser speichert die Datenbank und zeigt alle verfügbaren Zeilen darin an).
  2. In offener Form, wie im Beispiel Firefox.
  3. Als XML-Datei wie NppFTP und FileZilla.


Request information:
Loki detected!
Payload type: 39
No data stolen
{
    "Network": {
        "Source IP": "-",
        "Destination IP": "185.141.27.187",
        "HTTP Method": "POST",
        "Traffic Purpose": "Exfiltrate Application/Credential Data",
        "First Transmission": false
    },
    "Compromised Host/User Data": {},
    "Malware Artifacts/IOCs": {}
}


Die zweite Anforderung ist vom Typ 0x28 und fordert Befehle vom Server an.



Responce information:
Body size: 26
Commands: 1
Command: 1
Command ID: 0
Command type: 9
Command timelimit: 0
Command data: 35


Ein Beispiel für eine Antwort von CnC, die einen Befehl zum Starten des Keyloggers gesendet hat. Und das anschließende Entladen von Keylogger-Daten.



Request information:
Loki detected!
Payload type: : 43
{
    "Network": {
        "Source IP": "-",
        "Destination IP": "185.141.27.187",
        "HTTP Method": "POST",
        "Traffic Purpose": "Exfiltrate Keylogger Data"
    },
    "Compromised Host/User Data": {},
    "Malware Artifacts/IOCs": {}
}


Am Ende der Arbeit gibt der Parser die in jeder Anforderung enthaltenen Informationen vom Bot (Informationen über den Bot und das System) sowie die Anzahl der mit Loki verknüpften Anforderungen und Antworten in der pcap-Datei aus.



General information:
{
    "Network": {
        "CnC": "nganyin-my.com/chief6/five/fre.php"
    },
    "Compromised Host/User Description": {
        "User Name": "-",
        "Hostname": "-",
        "Domain Hostname": "-",
        "Screen Resolution": "1024x768",
        "Local Admin": true,
        "Built-In Admin": true,
        "64bit OS": false,
        "Operating System": "Windows 7 Workstation"
    },
    "Malware Artifacts/IOCs": {
        "Loki-Bot Version": 18,
        "Binary ID": "ckav.ru",
        "MD5 from GUID": "-",
        "User-Agent String": "Mozilla/4.08 (Charon; Inferno)"
    }
}
Requests: 3
Responces: 3 




Der vollständige Parser-Code ist verfügbar unter: github.com/Group-IB/LokiParser



Fazit



In diesem Artikel haben wir uns die Loki-Malware genauer angesehen, ihre Funktionalität analysiert und einen Netzwerkverkehrsparser implementiert, der die Analyse eines Vorfalls erheblich vereinfacht und uns hilft, zu verstehen, was genau von einem infizierten Computer gestohlen wurde. Während die Loki-Entwicklung noch andauert, ist nur Version 1.8 (und früher) durchgesickert. Dies ist die Version, auf die Sicherheitsexperten täglich stoßen.



Im nächsten Artikel werden wir einen anderen beliebten Data Stealer, Pony, analysieren und diese Malware vergleichen.



Kompromissindikator (IOCs):



Urls:



  • nganyin-my.com/chief6/five/fre.php
  • wardia.com.pe/wp-includes/texts/five/fre.php
  • gebrochen2.cf/Work2/fre.php
  • 185.141.27.187/danielsden/ver.php
  • MD5-Hash: B0C33B1EF30110C424BABD66126017E5
  • User-Agent String: «Mozilla/4.08 (Charon; Inferno)»
  • Binary ID: «ckav.ru»



All Articles