
التحقيق في تسجيلات الدخول الضارة إلى Windows من خلال تصور وتحليل سجل أحداث Windows
LogonTracer v2 هي أداة للتحقيق في عمليات تسجيل الدخول الضارة عن طريق تصور وتحليل سجلات أحداث Windows Active Directory. تربط هذه الأداة اسم المضيف (أو عنوان IP) واسم الحساب الموجودين في الأحداث المتعلقة بتسجيل الدخول وتعرضهما كرسم بياني. بهذه الطريقة، يمكن رؤية أي حساب يحدث فيه محاولة تسجيل الدخول وأي مضيف يُستخدم.
يمكن لهذه الأداة تصور معرفات الأحداث التالية المتعلقة بتسجيل الدخول في Windows.
| معرف الحدث | الوصف |
|---|---|
| 4624 | تسجيل دخول ناجح |
| 4625 | فشل تسجيل الدخول |
| 4662 | تم تنفيذ عملية على كائن |
| 4672 | تعيين صلاحيات خاصة |
| 4719 | تم تغيير سياسة التدقيق للنظام |
| 4720 | تم إنشاء حساب مستخدم |
| 4726 | تم حذف حساب مستخدم |
| 4728 / 4732 / 4756 | تمت إضافة عضو إلى مجموعة ممكّنة أمنيًا |
| 4729 / 4733 / 4757 | تمت إزالة عضو من مجموعة ممكّنة أمنيًا |
| 4768 | مصادقة Kerberos (طلب TGT) |
| 4769 | تذكرة خدمة Kerberos (طلب ST) |
| 4776 | مصادقة NTLM |
| 5137 | تم إنشاء كائن خدمة دليل |
| 5141 | تم حذف كائن خدمة دليل |
المزيد من التفاصيل موصوفة في المستندات التالية:

يدمج LogonTracer v2.0 محرك تحليل ذكاء اصطناعي باستخدام نماذج OpenAI GPT لتوفير كشف تهديدات ذكي يتجاوز الأساليب القائمة على القواعد التقليدية.
يستخدم LogonTracer PageRank و نموذج ماركوف المخفي و ChangeFinder لكشف المضيفين والحسابات الضارة من سجلات الأحداث.

باستخدام LogonTracer، يمكن أيضًا عرض سجلات الأحداث بترتيب زمني.

Python 3.9 أو أحدث (يُوصى بـ 3.12)
Neo4j 5.x (Community أو Enterprise)
مفتاح واجهة برمجة تطبيقات OpenAI (اختياري — مطلوب فقط لميزات تحليل الذكاء الاصطناعي)
وحدات Python
numpy
evtx
lxml
scipy
changefinder
flask
hmmlearn>=0.2.8
scikit-learn
elasticsearch-dsl>=7.0.0,<8.0.0
pyyaml
flask-sqlalchemy
flask-login
flask_wtf
flask-limiter
wtforms
GitPython
pysigma>=0.11.0
pysigma-backend-sqlite
openai>=1.0.0
aiohttp
neo4j
git clone https://github.com/JPCERTCC/LogonTracer.git
cd LogonTracer
pip3 install -r requirements.txt
قم بتنزيل وبدء Neo4j. عيِّن كلمة المرور الأولية ولاحظ منفذ Bolt (الافتراضي: 7687).
vi config/config.yml
الإعدادات الرئيسية:
settings:
logontracer:
WEB_PORT: "8080"
default_user: "neo4j" # اسم مستخدم Neo4j لحساب LogonTracer الافتراضي
default_password: "password" # غيِّر هذا قبل التشغيل الأول
neo4j:
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "password" # كلمة مرور Neo4j الخاصة بك
NEO4J_SERVER: "localhost"
WS_PORT: "7687"
python3 logontracer.py --run
افتح متصفحك على http://localhost:8080.
python3 logontracer.py -e <path/to/Security.evtx> -z <UTC offset> -s <Neo4j server> -u <user> -p <password>
python3 logontracer.py -x <path/to/event.xml> -z <UTC offset> -s <Neo4j server> -u <user> -p <password>
python3 logontracer.py --es -s <Neo4j server> -u <user> -p <password> --es-server <ES host:port>
أضف العلامة --sigma لتشغيل كشف قواعد Sigma أثناء الاستيراد:
python3 logontracer.py -e <path/to/Security.evtx> -z 9 -s localhost -u neo4j -p password --sigma
python3 logontracer.py -e <path/to/Security.evtx> -z 9 -s localhost -u neo4j -p password --add
بعد بدء تطبيق الويب، انقر على Upload Event Log في الشريط الجانبي الأيسر. يمكنك:

بعد الرفع مع تفعيل فحص Sigma، أو بعد تشغيل إعادة فحص عبر واجهة API، انقر على Sigma Scan Results في الشريط الجانبي لعرض النتائج.








مع إصدار Neo4j Enterprise، يدعم LogonTracer قضايا تحقيق مستقلة متعددة — كل منها مخزنة في قاعدة بيانات Neo4j منفصلة.
docker run \
--detach \
--publish=7474:7474 --publish=7687:7687 --publish=8080:8080 \
-e LTHOSTNAME=<IP Address> \
jpcertcc/docker-logontracer
cd docker-compose
docker compose build
docker compose up -d
cd docker-compose-with-nginx
docker compose build
docker compose up -d
cd docker-compose-with-elasticstack
docker compose build
docker compose up -d
يُظهر فيديو YouTube التالي كيفية استخدام LogonTracer.
لمزيد من التفاصيل، يُرجى مراجعة ويكي LogonTracer.
| الخيار | الوصف |
|---|
-r, --run | بدء تطبيق الويب |
-o PORT | منفذ تطبيق الويب (الافتراضي: 8080) |
--host HOST | عنوان الربط (الافتراضي: 0.0.0.0) |
-e EVTX [...] | استيراد ملف(ملفات) EVTX |
-x XML [...] | استيراد ملف(ملفات) سجل أحداث XML |
-s SERVER | عنوان خادم Neo4j (الافتراضي: localhost) |
-u USER | اسم مستخدم Neo4j (الافتراضي: neo4j) |
-p PASSWORD | كلمة مرور Neo4j |
--wsport PORT | منفذ Neo4j Bolt (الافتراضي: 7687) |
-z UTC | إزاحة المنطقة الزمنية (مثلاً 9 لـ JST) |
-f DATE | تحليل السجلات من هذا التاريخ والوقت (مثلاً 2024-01-01T00:00:00) |
-t DATE | تحليل السجلات حتى هذا التاريخ والوقت |
--add | إلحاق البيانات دون مسح قاعدة البيانات |
--delete | مسح قاعدة البيانات قبل الاستيراد |
--sigma | تشغيل فحص قواعد Sigma أثناء الاستيراد |
--sigma-only | تشغيل فحص Sigma فقط (بدون معالجة Neo4j) |
--sigma-rules PATH | مسار مجلد قواعد Sigma (الافتراضي: sigma) |
--es | استيراد البيانات من Elasticsearch |
--postes | نشر نتائج التحليل إلى Elasticsearch |
--es-server HOST:PORT | خادم Elasticsearch |
--es-index INDEX | فهرس Elasticsearch (الافتراضي: winlogbeat-*) |
--es-prefix PREFIX | بادئة حدث Elasticsearch (الافتراضي: winlog) |
--case NAME | اسم القضية لوضع قواعد بيانات متعددة لـ Neo4j Enterprise |
-c FILE | مسار ملف التكوين (الافتراضي: config/config.yml) |
--create_user USER | إنشاء مستخدم Neo4j جديد |
--create_password PASS | كلمة مرور مستخدم Neo4j الجديد |
--role ROLE | دور المستخدم الجديد (admin, architect, reader) |
--delete_user USER | حذف مستخدم Neo4j |
-l, --learn | تشغيل تحليل التعلم الآلي (نموذج ماركوف المخفي) |