Communitygithub.com

Linux-ELF-Malware analysieren

Analysieren Sie bösartige Linux-ELF-Binärdateien – Botnets, Kryptominer, Ransomware.

Was ist Linux-ELF-Malware analysieren?

Diese Fähigkeit (Skill) dient der detaillierten Analyse von schädlichen Linux-ELF-Binärdateien. Sie ist ideal für Sicherheitsanalysten und Incident-Responder, die einen kompromittierten Linux-Server oder -Container untersuchen. Der Skill unterstützt die Analyse von Botnets (Mirai, Gafgyt, XorDDoS), Kryptominern, Ransomware, Rootkits und Kernel-Modulen. Er ist plattformunabhängig und funktioniert mit ELF-Binärdateien für x86_64, ARM und MIPS. Der Workflow umfasst sechs strukturierte Schritte: Identifikation der ELF-Eigenschaften, Extraktion von Strings und Indikatoren, Analyse von Systemaufrufen und Bibliotheksnutzung, dynamische Analyse mit GDB, Reverse Engineering mit Ghidra und die Untersuchung Linux-spezifischer Persistenzmechanismen. Der Skill liefert als Output einen standardisierten Analysebericht, der alle gefundenen Indikatoren (IOCs), die Klassifizierung der Malware-Familie, Netzwerkverbindungen und Persistenzmechanismen zusammenfasst. Er verwendet standardisierte Tools wie `readelf`, `strings`, `strace`, `GDB` und `Ghidra` und warnt vor typischen Fallstricken.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/analyzing-linux-elf-malware

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Linux-ELF-Malware analysieren?

Wann einsetzen

  • Ein Linux-Server oder -Container wurde kompromittiert und es wurden verdächtige ELF-Binärdateien gefunden
  • Analyse von Linux-Botnets (Mirai, Gafgyt, XorDDoS), Kryptominern oder Ransomware
  • Untersuchung von Malware, die auf Cloud-Infrastruktur, Docker-Container oder Kubernetes-Pods abzielt
  • Reverse Engineering von Linux-Rootkits und Kernel-Modulen
  • Analyse plattformübergreifender Malware, die für Linux x86_64, ARM oder MIPS kompiliert wurde

Nicht verwenden für die Analyse von Windows-PE-Binärdateien; verwenden Sie PEStudio, Ghidra oder IDA für Windows-Malware.

Voraussetzungen

  • Ghidra oder IDA mit Linux-ELF-Unterstützung für Disassemblierung und Dekompilierung
  • Linux-Analyse-VM (Ubuntu 22.04 empfohlen) mit installierten Entwicklungstools
  • strace, ltrace und GDB für dynamische Analyse und Debugging
  • readelf, objdump und nm aus GNU binutils für statische Inspektion
  • Radare2 für schnelles binäres Triage und scriptgesteuerte Analyse
  • Docker für isolierte, containerbasierte Malware-Ausführung

Arbeitsablauf

Schritt 1: ELF-Binärdaten-Eigenschaften identifizieren

Untersuchen Sie den ELF-Header und die grundlegenden Eigenschaften:

# Dateityp-Identifizierung
file verdaechtige_binaerdatei

# Detaillierte ELF-Header-Analyse
readelf -h verdaechtige_binaerdatei

# Abschnitts-Header
readelf -S verdaechtige_binaerdatei

# Programm-Header (Segmente)
readelf -l verdaechtige_binaerdatei

# Symboltabelle (falls nicht gestrippt)
readelf -s verdaechtige_binaerdatei
nm verdaechtige_binaerdatei 2>/dev/null

# Dynamische Verknüpfungsinformationen
readelf -d verdaechtige_binaerdatei
ldd verdaechtige_binaerdatei 2>/dev/null  # Nur bei passender Architektur!

# Hashes berechnen
md5sum verdaechtige_binaerdatei
sha256sum verdaechtige_binaerdatei

# Auf Packing/UPX prüfen
upx -t verdaechtige_binaerdatei
# Python-basierte ELF-Analyse
from elftools.elf.elffile import ELFFile
import hashlib

with open("verdaechtige_binaerdatei", "rb") as f:
    data = f.read()
    sha256 = hashlib.sha256(data).hexdigest()

with open("verdaechtige_binaerdatei", "rb") as f:
    elf = ELFFile(f)

    print(f"SHA-256:      {sha256}")
    print(f"Klasse:       {elf.elfclass}-Bit")
    print(f"Endian:       {elf.little_endian and 'Little' or 'Big'}")
    print(f"Maschine:     {elf.header.e_machine}")
    print(f"Typ:          {elf.header.e_type}")
    print(f"Einsprungspunkt: 0x{elf.header.e_entry:X}")

    # Prüfen, ob gestrippt
    symtab = elf.get_section_by_name('.symtab')
    print(f"Gestrippt:    {'Ja' if symtab is None else 'Nein'}")

    # Abschnittsentropie-Analyse
    import math
    from collections import Counter
    for section in elf.iter_sections():
        data = section.data()
        if len(data) > 0:
            entropy = -sum((c/len(data)) * math.log2(c/len(data))
                          for c in Counter(data).values() if c > 0)
            if entropy > 7.0:
                print(f"  [!] Abschnitt mit hoher Entropie: {section.name} ({entropy:.2f})")

Schritt 2: Zeichenketten und Indikatoren extrahieren

Suchen Sie nach eingebetteten IOCs und Hinweisen auf die Funktionalität:

# ASCII-Zeichenketten
strings verdaechtige_binaerdatei > strings_ausgabe.txt

# Nach Netzwerk-Indikatoren suchen
grep -iE "(http|https|ftp)://" strings_ausgabe.txt
grep -iE "([0-9]{1,3}\.){3}[0-9]{1,3}" strings_ausgabe.txt
grep -iE "[a-zA-Z0-9.-]+\.(com|net|org|io|ru|cn)" strings_ausgabe.txt

# Nach Shell-Befehlen suchen
grep -iE "(bash|sh|wget|curl|chmod|/tmp/|/dev/)" strings_ausgabe.txt

# Nach Crypto-Mining-Indikatoren suchen
grep -iE "(stratum|xmr|monero|pool\.|mining)" strings_ausgabe.txt

# Nach SSH-/Credential-Diebstahl suchen
grep -iE "(ssh|authorized_keys|id_rsa|shadow|passwd)" strings_ausgabe.txt

# Nach Persistenzmechanismen suchen
grep -iE "(crontab|systemd|init\.d|rc\.local|ld\.so\.preload)" strings_ausgabe.txt

# FLOSS für obfuskierte Zeichenketten (falls verfügbar)
floss verdaechtige_binaerdatei

Schritt 3: Systemaufrufe und Bibliotheksnutzung analysieren

Identifizieren Sie, welche Systemaufrufe und Bibliotheken die Malware verwendet:

# Importierte Funktionen auflisten (dynamisch verknüpft)
readelf -r verdaechtige_binaerdatei | grep -E "socket|connect|exec|fork|open|write|bind|listen"

# Systemaufrufe während der Ausführung verfolgen (nur in isolierter VM)
strace -f -e trace=network,process,file -o strace_ausgabe.txt ./verdaechtige_binaerdatei

# Bibliotheksaufrufe verfolgen
ltrace -f -o ltrace_ausgabe.txt ./verdaechtige_binaerdatei

# Wichtige Systemaufrufe, auf die zu achten ist:
# Netzwerk: socket, connect, bind, listen, accept, sendto, recvfrom
# Prozess: fork, execve, clone, kill, ptrace
# Datei:   open, read, write, unlink, rename, chmod
# Persistenz: inotify_add_watch (Dateiüberwachung)

Schritt 4: Dynamische Analyse mit GDB

Debuggen Sie die Malware, um das Laufzeitverhalten zu beobachten:

# GDB mit der Binärdatei starten
gdb ./verdaechtige_binaerdatei

# Haltepunkte auf Schlüsselfunktionen setzen
(gdb) break main
(gdb) break socket
(gdb) break connect
(gdb) break execve
(gdb) break fork

# Ausführen und analysieren
(gdb) run
(gdb) info registers    # Register-Status anzeigen
(gdb) x/20s $rdi        # Zeichenketten-Argument untersuchen
(gdb) bt                # Rückverfolgung
(gdb) continue

# Bei gestrippten Binärdateien am Einsprungspunkt unterbrechen
(gdb) break *0x400580   # Einsprungspunkt von readelf
(gdb) run

# Netzwerkverbindungen während der Ausführung überwachen
# In einem anderen Terminal:
ss -tlnp  # Laufende Listener-Sockets auflisten
ss -tnp   # Bestehende Verbindungen auflisten

Schritt 5: Reverse Engineering mit Ghidra

Führen Sie eine tiefgehende Code-Analyse der ELF-Binärdatei durch:

Ghidra-Analyse für Linux-ELF:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Importieren: Datei -> Importieren -> ELF-Binärdatei auswählen
   - Ghidra erkennt das ELF-Format und die Architektur automatisch
   - Standardanalyse-Optionen akzeptieren

2. Wichtige Analyseziele:
   - main()-Funktion (oder Einsprungspunkt, falls gestrippt)
   - Socket-Erstellungs- und Verbindungsfunktionen
   - Befehlsverteilungslogik (switch/case für empfangene Daten)
   - Verschlüsselungs-/Kodierungsroutinen
   - Persistenz-Installationscode
   - Selbstvermehrungs-/Scan-Funktionen

3. Bei Mirai-ähnlichen Botnets suchen nach:
   - Credential-Liste für Brute-Force (Telnet/SSH)
   - Angriffsmodul-Auswahl (UDP-Flood, SYN-Flood, ACK-Flood)
   - Scanner-Modul (Port-Scanning für verwundbare Geräte)
   - Killer-Modul (Ausschalten konkurrierender Botnets)

4. Bei Kryptominern suchen nach:
   - Mining-Pool-Verbindung (Stratum-Protokoll)
   - Wallet-Adress-Zeichenketten
   - CPU/GPU-Nutzungsfunktionen
   - Prozessversteck-Techniken

Schritt 6: Linux-spezifische Persistenz analysieren

Prüfen Sie auf Persistenzmechanismen:

# Auf LD_PRELOAD-Rootkit prüfen
strings verdaechtige_binaerdatei | grep "ld.so.preload"
# Malware, die in /etc/ld.so.preload schreibt, kann alle dynamischen Bibliotheksaufrufe abfangen

# Auf Crontab-Persistenz prüfen
strings verdaechtige_binaerdatei | grep -i "cron"

# Auf systemd-Dienst-Erstellung prüfen
strings verdaechtige_binaerdatei | grep -iE "systemd|\.service|systemctl"

# Auf Init-Skript-Erstellung prüfen
strings verdaechtige_binaerdatei | grep -iE "init\.d|rc\.local|update-rc"

# Auf SSH-Schlüssel-Injektion prüfen
strings verdaechtige_binaerdatei | grep -i "authorized_keys"

# Auf Kernel-Modul- (Rootkit-)Laden prüfen
strings verdaechtige_binaerdatei | grep -iE "insmod|modprobe|init_module"

# Auf Prozessverstecken prüfen
strings verdaechtige_binaerdatei | grep -iE "proc|readdir|getdents"

Schlüsselkonzepte

BegriffDefinition
ELF (Executable and Linkable Format)Standard-Binärformat für Linux-Programme, gemeinsame Bibliotheken und Core-Dumps mit Headern, Abschnitten und Segmenten
Gestrippte BinärdateiELF-Binärdatei, bei der Debug-Symbole entfernt wurden, was Reverse Engineering erschwert, da Funktionsnamen fehlen
LD_PRELOADLinux-Umgebungsvariable, die angibt, welche gemeinsamen Bibliotheken vor allen anderen geladen werden sollen; von Rootkits missbraucht, um Systembibliotheksaufrufe abzufangen
straceLinux-Systemaufruf-Tracer, der alle Systemaufrufe und Signale eines Prozesses protokolliert und so Datei-, Netzwerk- und Prozessoperationen offenlegt
GOT/PLTGlobal Offset Table und Procedure Linkage Table; ELF-Strukturen für dynamisches Verknüpfen, die für Funktions-Hooking gekapert werden können
Statisch verknüpftBinärdatei, die mit allen Bibliothekscodes kompiliert wurde; häufig bei IoT-Malware, um auf Systemen ohne passende gemeinsame Bibliotheken zu laufen
MiraiWeit verbreitetes Linux-Botnet, das IoT-Geräte per Telnet-Brute-Force angreift; Quellcode durchgesickert, was zu vielen Varianten führte

Werkzeuge und Systeme

  • Ghidra: NSA-Reverse-Engineering-Tool mit vollständiger ELF-Unterstützung für x86, x86_64, ARM, MIPS und andere Linux-Architekturen
  • Radare2: Open-Source-Reverse-Engineering-Framework mit Befehlszeilenschnittstelle für schnelle Binäranalyse und Skripterstellung
  • strace: Linux-Systemaufruf-Tracing-Tool zur Beobachtung des Binärverhaltens, einschließlich Datei-, Netzwerk- und Prozessoperationen
  • GDB: GNU-Debugger zum Setzen von Haltepunkten, Untersuchen des Speichers und schrittweisem Durchlaufen der Linux-Binärausführung
  • pyelftools: Python-Bibliothek zum programmatischen Parsen von ELF-Dateien für automatisierte Analyse-Pipelines

Häufige Szenarien

Szenario: Analyse eines Kryptominers auf einem kompromittierten Linux-Server

Kontext: Ein Cloud-Server zeigt 100% CPU-Auslastung. Die Untersuchung ergibt eine unbekannte Binärdatei, die von /tmp mit einem verdächtigen Namen ausgeführt wird. Die Binärdatei muss analysiert werden, um zu bestätigen, dass es sich um einen Kryptominer handelt, und um die Wallet und den Pool des Angreifers zu identifizieren.

Vorgehen:

  1. Kopieren Sie die Binärdatei in eine Analyse-VM und berechnen Sie den SHA-256-Hash
  2. Führen Sie file und readelf aus, um Architektur und Verknüpfungsart zu identifizieren
  3. Extrahieren Sie Zeichenketten und suchen Sie nach Mining-Pool-Adressen (stratum+tcp://) und Wallet-Adressen
  4. Führen Sie die Binärdatei mit strace in einer Sandbox aus, um Netzwerkverbindungen (Mining-Pool-Verbindung) zu beobachten
  5. Importieren Sie die Binärdatei in Ghidra, um den Mining-Algorithmus und die Konfigurationsextraktion zu identifizieren
  6. Prüfen Sie auf Persistenzmechanismen (crontab, systemd-Dienst, SSH-Schlüssel)
  7. Dokumentieren Sie alle IOCs, einschließlich Pool-Adresse, Wallet, C2 für Updates und Persistenz-Artefakte

Fallstricke:

  • Ausführen von ldd auf Malware außerhalb einer Sandbox (ldd kann Code in der Binärdatei ausführen)
  • Nicht auf ARM/MIPS-Architektur prüfen, bevor ein x86_64-Laufversuch unternommen wird
  • Fehlende Begleitskripte (.sh-Dateien), die Persistenz und Bereinigung handhaben könnten, übersehen
  • Ignorieren des anfänglichen Zugriffsvektors (wie der Miner bereitgestellt wurde: SSH-Brute-Force, Web-Exploit, Container-Ausbruch)

Ausgabeformat

LINUX-ELF-MALWARE-ANALYSEBERICHT
====================================
Datei:            /tmp/.X11-unix/.rsync
SHA-256:          e3b0c44298fc1c149afbf4c8996fb924...
Typ:              ELF 64-Bit LSB-Programm, x86-64
Verknüpfung:      Statisch verknüpft (alle Bibliotheken eingebettet)
Gestrippt:        Ja
Größe:            2.847.232 Bytes
Packer:           UPX 3.96 (für Analyse entpackt)

KLASSIFIZIERUNG
Familie:          XMRig Kryptominer (modifiziert)
Variante:         Eigener Build mit C2-Update-Mechanismus

FUNKTIONALITÄT
[*] XMR (Monero)-Mining über RandomX-Algorithmus
[*] Stratum-Pool-Verbindung zur Arbeitseinreichung
[*] C2-Check-In für Konfigurationsupdates
[*] Prozessnamen-Verschleierung (argv[0] = "[kworker/0:0]")
[*] Töten konkurrierender Prozesse (tötet andere Miner)
[*] SSH-Schlüssel-Injektion für Wiederzugriff

NETZWERK-INDIKATOREN
Mining-Pool:      stratum+tcp://pool.minexmr[.]com:4444
C2-Server:        hxxp://update.malicious[.]com/config
Wallet:           49jZ5Q3b...Monero_Wallet_Adresse...

PERSISTENZ
[1] Crontab-Eintrag: */5 * * * * /tmp/.X11-unix/.rsync
[2] SSH-Schlüssel zu /root/.ssh/authorized_keys hinzugefügt
[3] systemd-Dienst: /etc/systemd/system/rsync-daemon.service
[4] /etc/ld.so.preload für Prozessverstecken modifiziert

PROZESSVERSTECKEN
LD_PRELOAD:       /usr/lib/.libsystem.so
Hook:             readdir(), um /tmp/.X11-unix/.rsync vor ls zu verstecken
Hook:             fopen(), um vor /proc/*/maps-Lesen zu verstecken

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Verwandte Skills