
APT-Hunter هي أداة بحث عن التهديدات لسجلات أحداث Windows صُممت بعقلية الفريق الأرجواني لتوفير كشف تحركات APT المخفية في بحر سجلات أحداث Windows لتقليل الوقت اللازم لكشف النشاط المشبوه.
اصطياد التهديدات في سجلات أحداث Windows، مبني بعقلية الفريق البنفسجي.
APT-Hunter هي أداة لاصطياد التهديدات في سجلات أحداث Windows. تستخدم قواعد كشف محددة مسبقًا وإحصاءات السجلات لإظهار نشاط APT المخفي في كميات كبيرة من الأحداث، مما يقلل الوقت اللازم لكشف السلوك المشبوه. وهي فعّالة بشكل خاص في تقييمات الاختراق.
تُكتب النتائج كخط زمني يمكن تحليله مباشرة في Excel وTimeline Explorer وTimesketch والأدوات المشابهة، أو استكشافه في لوحة التحكم على الويب المدمجة مع فرز اختياري بواسطة LLM محلي.
نزّل الملفات التنفيذية المُجمّعة من صفحة الإصدارات، أو شغّلها من المصدر (Python 3.8+):
git clone https://github.com/ahmedkhlief/APT-Hunter.git
cd APT-Hunter
python3 -m pip install -r requirements.txt
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
يقبل -p مجلدًا أو ملفًا واحدًا. أضف -web لفتح لوحة التحكم عند انتهاء التحليل.





شغّل python3 APT-Hunter.py -h للحصول على القائمة الكاملة. الخيارات الرئيسية:
تحليل مجلد من ملفات EVTX (تُكتشف أنواع السجلات تلقائيًا):
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
التركيز على إطار زمني:
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport -start 2022-04-03 -end 2022-04-05T20:56
الاصطياد بسلسلة نصية، أو تعبير نمطي، أو ملف من التعبيرات النمطية:
python3 APT-Hunter.py -hunt "psexec" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile "(psexec|psexesvc)" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile huntfile.txt -p /opt/wineventlogs/ -o Project2
الاصطياد بقواعد Sigma:
python3 APT-Hunter.py -sigma -rules rules.json -p /opt/wineventlogs/ -o Project2
جلب أحدث قواعد Sigma المحوّلة لـ APT-Hunter (يكتب rules.json):
./Get_Latest_Sigma_Rules.sh
تصفّح تقريرًا مُنشأً في المتصفح: التصفية والرسوم البيانية وخط زمني للحوادث وتصدير تقرير الاستجابة للحوادث.
python3 run_webapp.py <Output>/<Output>_Report.xlsx # or pass the output directory
python3 APT-Hunter.py -p <logs> -o <Output> -web # analyse, then open the dashboard
python3 APT-Hunter.py -webview <Output> # open an existing report
قبول نتيجة فرز يثبّتها على الخط الزمني للحوادث مع أدلتها، مرفقة كـ أحداث فرعية قابلة للطي: تظهر أسفل النتيجة في الجدول بدلًا من تشابكها مع كل شيء آخر، وتُستبعد من رسوم الخط الزمني البيانية لتبقى الرسوم قابلة للقراءة. إزالة نتيجة تُزيل أحداثها الفرعية معها.
يرتبط الخادم بـ 0.0.0.0:5000 افتراضيًا. استخدم --host / --port (أو -webhost / -webport) لتغيير ذلك، على سبيل المثال --host 127.0.0.1 لإبقائه محليًا. تُحفظ النتائج المراجَعة والخط الزمني عند إعادة بناء ذاكرة التخزين المؤقت للتقرير.

لوحة التحكم الرئيسية: إجمالي الأحداث وعدد مرات الخطورة، وتوزيع الخطورة، وأكثر قواعد الكشف تفعيلًا، وحجم الأحداث اليومي. تُدرج الشريط الجانبي كل سجل أحداث وجدول ملخص في التقرير.

الخط الزمني للحوادث: النتائج المثبّتة مرسومة حسب الوقت ومُرمّزة بالألوان حسب الخطورة. قرّب وحُرّك داخل الفترات المزدحمة، وأنشئ ملخصًا تنفيذيًا بالذكاء الاصطناعي، وصدّر تقرير الاستجابة للحوادث أو CSV.

الخط الزمني الزمني: تتوسّع سلسلة الهجوم إلى أحداثها الفرعية، وتُظهر لوحة التفاصيل السرد وتقنيات MITRE والنتيجة.
مخطط الخط الزمني للحوادث قابل للتكبير، لذا تبقى دفعات الأحداث المتباعدة بدقائق أو ثوانٍ قابلة للقراءة: اسحب عبر المخطط للتكبير في فترة، وShift+اسحب للتحريك، وCtrl/Cmd+عجلة للتكبير حول المؤشر، أو استخدم شريط النظرة العامة أسفله. لا تتداخل التسميات أبدًا؛ تُخفى التسميات التي لا تتسع، وتمرير المؤشر فوق نقطة يسرد كل حدث متراكم عليها.
قيّم الأحداث المكتشفة من حيث الخبث باستخدام نموذج محلي، من سطر الأوامر:
python3 APT-Hunter.py -p <logs> -o <Output> -llm -llm-provider ollama -llm-model llama3 -llm-severity High
أو لكل حدث من لوحة التحكم (تحقق، اشرح، اربط). اضبط المزوّد (Ollama / LM Studio / llama.cpp) والنموذج وعنوان URL والمهلة في صفحة الإعدادات بلوحة التحكم. أي خادم محلي متوافق مع OpenAI يعمل؛ لا تُرسل أي بيانات إلى خدمة سحابية.
يحوّل الفرز الوكيلي في الشريط الجانبي للوحة التحكم آلاف التنبيهات إلى قائمة قصيرة من النتائج:
تحتاج مرحلة التحقيق إلى LLM يدعم استدعاء الأدوات. إذا لم يدعمه نموذجك، يتراجع APT-Hunter إلى خط أنابيب ثابت للتحويل/الربط. التغطية متطابقة في كلتا الحالتين، لأن الوكيل يضيف عمقًا فقط فوق المرور الأول. تُحدَّد جولات الأدوات وحد زمني فعلي في الإعدادات.

الفرز الوكيلي: يُظهر سجل التشغيل النطاق وأعداد التنبيهات والمجموعات والنتائج واستدعاءات LLM لكل تشغيل. هنا تقلّصت 91 تنبيهًا حرجًا على مضيف واحد إلى 32 مجموعة وسلسلة هجوم واحدة عالية التقييم.

تفاصيل النتيجة: السرد وتقنيات MITRE والأدلة وأثر التحقيق الكامل (كل حدث مقروء ونافذة زمنية وبحث تنبيهات أجراه الوكيل)، بحيث يمكن تدقيق كل استنتاج.
ملاحظة: مخرجات LLM أداة مساعدة للفرز، وليست حكمًا نهائيًا. راجع النتائج قبل الاعتماد عليها. قد تحتاج نماذج الاستدلال إلى رفع مهلة الطلب أعلى بكثير من الافتراضي البالغ 200 ثانية.
Twitter: @ahmed_khlief · LinkedIn: Ahmed Khlief
موزّع تحت GNU GPL v3. راجع LICENSE.
شكرًا لـ Joe Maccry على مساهمته الرائعة في حالات استخدام Sysmon (أضاف Joe أكثر من 100 حالة استخدام)
| الخيار | الوصف |
|---|
-p, --path | ملف السجل أو المجلد المراد تحليله |
-o, --out | اسم / مجلد المخرجات |
-start, -end | تقييد الخط الزمني (بصيغة ISO) |
-tz | المنطقة الزمنية (local أو مثل Asia/Dubai) |
-cores | أنوية المعالج المراد استخدامها (الافتراضي: نصف المتاح) |
-hunt, -huntfile, -eid | الاصطياد بواسطة سلسلة نصية/تعبير نمطي، أو ملف تعبيرات نمطية، أو معرّف الحدث |
-sigma, -rules | الاصطياد بقواعد Sigma المحوّلة إلى JSON |
-o365hunt, -o365rules, -o365raw | اصطياد سجلات تدقيق Office 365 |
-procexec, -logon, -objaccess, -allreport | تقارير إضافية |
-web, -webview, -webhost, -webport | تشغيل لوحة التحكم على الويب |
-llm, -llm-provider, -llm-url, -llm-model, -llm-key, -llm-severity, -llm-batch, -llm-context | تحليل LLM المحلي |
| النموذج | الوصف |
|---|
| Sample_TimeSketch.csv | خط زمني يمكنك رفعه إلى Timesketch لرؤية الصورة الكاملة لهجوم |
| Sample_Report.xlsx | كل حدث مكتشف عبر جميع سجلات Windows المقدَّمة |
| Sample_Logon_Events.csv | جميع أحداث تسجيل الدخول مع الحقول المحللة (التاريخ، المستخدم، عنوان IP المصدر، عملية تسجيل الدخول، محطة العمل، نوع تسجيل الدخول، الجهاز، السجل الأصلي) |
| Sample_Process_Execution_Events.csv | جميع عمليات تنفيذ العمليات الملتقطة من سجلات الأحداث |
| Sample_Object_Access_Events.csv | الوصول إلى الكائنات الملتقط من الحدث 4663 |
| Sample_Collected-SIDS.csv | المستخدمون ومعرّفات SID الخاصة بهم، للمساعدة في التحقيقات |
| EventID_Frequency_Analysis.xls | تحليل تكرار معرّف الحدث |