
هاتف يعمل كأداة اختبار اختراق للفريق الأحمر مدعومة بالذكاء الاصطناعي المحلي
وكيل اختبار اختراق ذاتي يعمل بالكامل على الهاتف الذكي. ضع الهاتف على الشبكة، وابتعد، وسيكتشف المضيفين، ويرسم خريطة الخدمات، ويجد الثغرات، وينشئ تقرير اختبار اختراق — كل ذلك دون اتصال سحابي.
░█▄░█ █ █▀▀ █░█ ▀█▀ █▀▀ █▀█ ▄▀█ █░█░█ █░░ █▀▀ █▀█
░█░▀█ █ █▄█ █▀█ ░█░ █▄▄ █▀▄ █▀█ ▀▄▀▄▀ █▄▄ ██▄ █▀▄ v0.1.0
AUTONOMOUS MOBILE PENTEST AGENT
OnePlus 8 · NetHunter · LFM2.5-1.2B · OpenCL GPU
اختبار الاختراق هو ممارسة اختبار أمان شبكة الكمبيوتر من خلال محاكاة هجوم — بإذن صريح من مالك الشبكة. يتم توظيف مختبرين اختراق محترفين للعثور على الثغرات قبل أن يفعل المهاجمون الحقيقيون ذلك.
يقوم Nightcrawler بأتمتة هذه العملية على الهاتف. يستخدم نموذج ذكاء اصطناعي صغير (LFM2.5-1.2B-Instruct-Heretic، 1.2 مليار معامل) يعمل محليًا على وحدة معالجة الرسومات في الهاتف ليقرر ما يجب فعله بعد ذلك — أي مضيف يفحص، وأي أداة يستخدم، وما الذي يبحث عنه. لا حاجة لاتصال بالإنترنت أو واجهة برمجة تطبيقات سحابية.
▶️ شاهد Nightcrawler أثناء العمل على Instagram
يعمل الوكيل مثل مختبر اختراق بشري صبور — يتنقل بين المضيفين، وينفذ إجراءً صغيرًا واحدًا لكل دورة، ويبني المعرفة تدريجيًا على مدى ساعات. هذا يجعله أصعب بكثير في الاكتشاف من ماسحات الثغرات التقليدية التي تقصف كل مضيف دفعة واحدة.
| المصطلح | ما يعنيه |
|---|---|
| صندوق الإسقاط | جهاز يُترك على شبكة مستهدفة لإجراء الاختبار بشكل ذاتي |
| النطاق | مجموعة الشبكات/المضيفين المصرح لك باختبارها |
| قواعد الاشتباك (ROE) | مستند قانوني يحدد ما يُسمح لك بفعله |
| الخفاء | تقنيات لتجنب الاكتشاف بواسطة مراقبة الشبكة (IDS/IPS) |
| MCP | بروتوكول سياق النموذج — واجهة قياسية لاستخدام أدوات الذكاء الاصطناعي |
| C2 | القيادة والتحكم — لوحة الويب لمراقبة الوكيل وتوجيهه |
┌──────────────────────────────────────────────────────────┐
│ PHONE (OnePlus 8) │
│ │
│ ┌─────────────┐ ┌──────────────────┐ │
│ │ LFM2.5 │ │ Agent Loop │ │
│ │ 1.2B model │◄───►│ (main.py) │ │
│ │ on GPU │ │ Decides what │ │
│ │ (:8080) │ │ to do next │ │
│ └─────────────┘ └────────┬─────────┘ │
│ │ │
│ ┌────────▼─────────┐ │
│ │ Scope Proxy │ ← Safety layer │
│ │ Validates every │ Blocks out- │
│ │ command before │ of-scope │
│ │ execution │ actions │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────▼─────────┐ │
│ │ Kali MCP Server │ ← Runs the │
│ │ nmap, curl, │ actual │
│ │ smbclient, ... │ commands │
│ └──────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Web Dashboard │ │ SQLite DB │ │
│ │ (:8888) │ │ Hosts, vulns, │ │
│ │ Monitor & steer │ │ creds, commands │ │
│ └──────────────────┘ └──────────────────┘ │
└──────────────────────────────────────────────────────────┘
للحصول على تصميم النظام الكامل، راجع docs/ARCHITECTURE.md.
راجع docs/FEATURES.md للمرجع الكامل للميزات.
جميع الاستدلالات عبر OpenCL على وحدة معالجة الرسومات Adreno 650:
| النموذج | التكميم | سرعة المطالبة | سرعة التوليد |
|---|---|---|---|
| LFM2.5-1.2B-Instruct-Heretic (الإنتاج) | Q8_0 | 115 tok/s | 13 tok/s |
| Qwen3.5-0.8B | Q8_0 | 30.5 tok/s | 6.3 tok/s |
| Qwen3.5-4B | Q4_0 | 10.1 tok/s | 2.0 tok/s |
ملاحظة: يخنق Android وحدة معالجة الرسومات عند العمل بالبطارية (تباطؤ 6x). يتضمن Nightcrawler برنامجًا خفيًا لمنظم وحدة معالجة الرسومات يفرض الأداء الأقصى ويخنق تلقائيًا عند ≤15% من البطارية.
# 1. التثبيت (داخل Kali NetHunter chroot)
bash INSTALL.sh
# 2. انتظر بدء llama-server (~5 دقائق بعد الإقلاع)
curl -s http://127.0.0.1:8080/health # Should return {"status":"ok"}
# 3. ابدأ جميع الخدمات
bash scripts/run-36h.sh
# 4. افتح لوحة الويب (من أي جهاز على شبكة Tailscale الخاصة بك)
# https://<your-tailscale-hostname>:8888
NC_DRY_RUN=1 python3 main.py
يستخدم هذا خادم Kali وهميًا حتى تتمكن من اختبار حلقة الوكيل دون تنفيذ أوامر شبكة حقيقية.
kali-server-mcp --port 5000 &
python3 scope_proxy.py --config config.yaml --port 8800 --upstream http://127.0.0.1:5000 &
bash scripts/webui-daemon.sh start
python3 main.py &
عدّل config.yaml قبل النشر:
mission:
id: "CLIENT-YYYY-XXX" # Your engagement ID
scope:
networks: ["auto"] # "auto" = detect from wlan0 at startup
excluded_hosts: ["auto"] # "auto" = gateway + self IP
excluded_ports: [502, 503] # SCADA/ICS ports to never touch
authorization: "ROE-YYYY-XXX.pdf"
max_runtime_hours: 0 # 0 = no limit
model:
local:
ctx_size: 8192
port: 8080
اكتشاف النطاق الديناميكي يعني عدم الحاجة لتغييرات التكوين عند التنقل بين الشبكات — يقرأ الوكيل الشبكة الفرعية الحالية من wlan0 عند بدء التشغيل.