Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
idahunt — idahunt is a framework to analyze binaries with IDA Pro and hunt for things in IDA Pro | Kitploit
أدوات/GitHubGitHub/nccgroup/idahunt
Embedded Systems SecurityVulnerability AnalysisReverse EngineeringScripting & AutomationMalware AnalysisBinary AnalysisFirmware Analysis
GitHubnccgroup/idahunt

idahunt

idahunt is a framework to analyze binaries with IDA Pro and hunt for things in IDA Pro

عرض المستودع
39361منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

  • نظرة عامة
    • المتطلبات
    • الميزات
    • البرمجة النصية
  • الاستخدام
    • المحاكاة دون تنفيذ
    • التحليل الأولي
    • تنفيذ سكربت IDA Python
    • مقارنة الملفات الثنائية
      • المتطلبات
      • التحليل الأولي
      • مقارنة الملفات
      • مقارنة دالة
    • عوامل التصفية
      • اكتشاف البنية
      • خاص بالهدف
  • مشاريع معروفة تستخدم idahunt

نظرة عامة

idahunt هو إطار عمل لتحليل الملفات الثنائية باستخدام IDA Pro والبحث عن الأشياء داخل IDA Pro. إنها أداة سطر أوامر لتحليل جميع الملفات القابلة للتنفيذ بشكل متكرر من مجلد معين. يقوم بتنفيذ IDA في الخلفية حتى لا تضطر إلى فتح كل ملف يدويًا. وهو يدعم تنفيذ سكربتات IDA Python الخارجية.

المتطلبات

  • Python3 فقط (باستثناء سكربتات IDA Python التي يمكن أن تكون Python2/Python3 اعتمادًا على إعداد IDA لديك)
  • IDA Pro
  • Windows, Linux, OS X

الميزات

  • تحديد عدد نسخ IDA التي تريد تشغيلها في نفس الوقت
  • أتمتة إنشاء ملفات IDB لملفات قابلة للتنفيذ متعددة
  • تنفيذ سكربتات IDA Python عبر ملفات قابلة للتنفيذ متعددة
  • فتح عدة ملفات IDB موجودة
  • دعم أي تنسيق ثنائي (raw assembly/PE/ELF/MACH-O/إلخ) مدعوم من IDA
  • (اختياري) تضمين مساعدات IDA Python. يمكنك استخدامها لبناء سكربتات IDA Python الخاصة بك بسهولة أو يمكنك استخدام أي مكتبة IDA Python أخرى مثل sark أو bip على سبيل المثال لا الحصر

تشمل الأمثلة المفيدة (قائمة غير حصرية):

  • تحليل تحديثات Patch Tuesday من Microsoft
  • تحليل برمجيات خبيثة من العائلة نفسها
  • تحليل إصدارات متعددة من البرنامج نفسه
  • تحليل مجموعة من الملفات الثنائية (UEFI, HP iLO, Cisco IOS router, Cisco ASA firewall, إلخ)

البرمجة النصية

إمكانيات سكربتات IDA Python غير محدودة. يمكنك استيراد أي سكربت IDA Python موجود أو بناء سكربت خاص بك. بعض الأمثلة:

  • إعادة تسمية الدوال بناءً على سلاسل التصحيح
  • فك تشفير السلاسل (مثل البرمجيات الخبيثة)
  • البحث عن نفس الرمز عبر إصدارات متعددة (باستخدام الاستدلالات)
  • البحث عن أدوات ROP
  • نقل أسماء/رموز الدوال المعكوسة من إصدار إلى آخر باستخدام أدوات مثل diaphora
  • إلخ

الاستخدام

  • idahunt.py: الأداة الرئيسية لتحليل الملفات القابلة للتنفيذ
  • filters/: يحتوي على عوامل تصفية أساسية لتحديد الملفات التي سيتم تحليلها باستخدام IDA في مجلد الإدخال
    • filters/default.py: عامل التصفية الأساسي الافتراضي الذي لا يقوم بتصفية أي شيء ويُستخدم افتراضيًا
    • filters/ciscoasa.py: مفيد لتحليل صور Cisco ASA Firewall
    • filters/hpilo.py: مفيد لتحليل صور HP iLO
    • filters/names.py: عامل تصفية أساسي يعتمد على الاسم أو طول الاسم أو الامتداد
  • script_template.py: يحتوي على سكربت IDA Python بصيغة hello world
root@kitploit:~
C:\idahunt> C:\Python37-x64\python.exe .\idahunt.py -h
usage: idahunt.py [-h] [--inputdir INPUTDIR] [--analyse] [--open]
                  [--ida-args IDA_ARGS] [--scripts SCRIPTS [SCRIPTS ...]]
                  [--filter FILTER] [--cleanup] [--temp-cleanup] [--verbose]
                  [--max-ida MAX_IDA] [--list-only] [--version IDA_VERSION]

optional arguments:
  -h, --help            show this help message and exit
  --inputdir INPUTDIR   Input folder to search for files
  --analyse, --analyze  analyse all files i.e. create .idb for all of them
  --open                open all files into IDA (debug only)
  --ida-args IDA_ARGS   Additional arguments to pass to IDA (e.g.
                        -p<processor> -i<entry_point> -b<load_addr>)
  --scripts SCRIPTS [SCRIPTS ...]
                        List of IDA Python scripts to execute in this order
  --filter FILTER       External python script with optional arguments
                        defining a filter for the names of the files to
                        analyse. See filters/names.py for example
  --cleanup             Cleanup i.e. remove .asm files that we don't need
  --temp-cleanup        Cleanup temporary database files i.e. remove .id0,
                        .id1, .id2, .nam, .dmp files if IDA Pro crashed and
                        did not delete them
  --verbose             be more verbose to debug script
  --max-ida MAX_IDA     Maximum number of instances of IDA to run at a time
                        (default: 10)
  --list-only           List only what files would be handled without
                        executing IDA
  --version IDA_VERSION
                        Override IDA version (e.g. "7.5"). This is used to
                        find the path of IDA on Windows.

المحاكاة دون تنفيذ

يمكنك استخدام --list-only مع أي سطر أوامر لمجرد عرض ما ستفعله الأداة دون تنفيذه فعليًا.

root@kitploit:~
C:\idahunt>idahunt.py --inputdir C:\re --analyse --filter "filters\names.py -a 32 -v" --list-only
[idahunt] Simulating only...
[idahunt] ANALYSING FILES
[idahunt] Analysing C:\re\cves\cve-2014-4076.dll
[idahunt] Analysing C:\re\cves\cve-2014-4076.exe
[idahunt] Analysing C:\re\DownloadExecute.exe
[idahunt] Analysing C:\re\ReverseShell.exe

التحليل الأولي

هنا نبدأ تحليلًا أوليًا. يستغرق الانتهاء بضع ثوانٍ:

root@kitploit:~
C:\idahunt>idahunt.py --inputdir C:\re --analyse --filter "filters\names.py -a 32 -v"
[idahunt] ANALYSING FILES
[idahunt] Analysing C:\re\cves\cve-2014-4076.dll
[idahunt] Analysing C:\re\cves\cve-2014-4076.exe
[idahunt] Analysing C:\re\DownloadExecute.exe
[idahunt] Analysing C:\re\ReverseShell.exe
[idahunt] Waiting on remaining 4 IDA instances

هنا نقوم بتنظيف ملفات .asm المؤقتة التي أنشأها التحليل الأولي:

root@kitploit:~
C:\idahunt>idahunt.py --inputdir C:\re --cleanup
[idahunt] Deleting C:\re\cves\cve-2014-4076.asm
[idahunt] Deleting C:\re\DownloadExecute.asm
[idahunt] Deleting C:\re\ReverseShell.asm

يمكننا رؤية ملفات .idb المولّدة بالإضافة إلى بعض ملفات .log التي تحتوي على نافذة مخرجات IDA Pro.

root@kitploit:~
C:\idahunt>tree /f C:\re
Folder PATH listing
Volume serial number is XXXX-XXXX
C:\RE
│   DownloadExecute.exe
│   DownloadExecute.idb
│   DownloadExecute.log
│   ReverseShell.exe
│   ReverseShell.idb
│   ReverseShell.log
│
└───cves
        cve-2014-4076.dll
        cve-2014-4076.exe
        cve-2014-4076.idb
        cve-2014-4076.log

تنفيذ سكربت IDA Python

هنا ننفّذ سكربت IDA Python أساسي يطبع [script_template] I execute in IDA, yay! في نافذة مخرجات IDA Pro.

root@kitploit:~
C:\idahunt>idahunt.py --inputdir C:\re --filter "filters\names.py -a 32 -v" --scripts C:\idahunt\script_template.py
[idahunt] EXECUTE SCRIPTS
[idahunt] Executing script C:\idahunt\script_template.py for C:\re\cves\cve-2014-4076.dll
[idahunt] Executing script C:\idahunt\script_template.py for C:\re\cves\cve-2014-4076.exe
[idahunt] Executing script C:\idahunt\script_template.py for C:\re\DownloadExecute.exe
[idahunt] Executing script C:\idahunt\script_template.py for C:\re\ReverseShell.exe
[idahunt] Waiting on remaining 4 IDA instances

وبما أنه محفوظ في ملف .log، يمكننا التحقق من أنه نُفذ بنجاح:

root@kitploit:~
Autoanalysis subsystem has been initialized.
Database for file 'ReverseShell.exe' has been loaded.
Compiling file 'C:\Program Files (x86)\IDA 6.95\idc\ida.idc'...
Executing function 'main'...
[script_template] I execute in IDA, yay!

مقارنة الملفات الثنائية

يتكامل idahunt بشكل رائع مع diaphora لإجراء المقارنة الثنائية منذ هذا PR.

المتطلبات

تحتاج إلى تسلسل هرمي من المجلدات يحتوي على إصدارات مختلفة من نفس اسم الملف، على سبيل المثال:

root@kitploit:~
C:\> tree C:\tests\ /F
C:\tests
├───patch
│       tm.sys
│
└───vuln
        tm.sys

التحليل الأولي

إذا لم تكن قد قمت بذلك مسبقًا، فأنت بحاجة إلى إجراء تحليل IDA الأولي لإنشاء ملفات idb.

root@kitploit:~
C:\idahunt> python idahunt.py --inputdir C:\tests\ --analyse --verbose
[idahunt] IDA32 = C:\Program Files\IDA Core 8.1\ida.exe
[idahunt] IDA64 = C:\Program Files\IDA Core 8.1\ida64.exe
[idahunt] ANALYSING FILES
[idahunt] Analysing C:\tests\patch\tm.sys
[idahunt] C:\Program Files\IDA Core 8.1\ida64.exe -B -oC:\tests\patch\tm.i64 -LC:\tests\patch\tm.log C:\tests\patch\tm.sys
[idahunt] Analysing C:\tests\vuln\tm.sys
[idahunt] C:\Program Files\IDA Core 8.1\ida64.exe -B -oC:\tests\vuln\tm.i64 -LC:\tests\vuln\tm.log C:\tests\vuln\tm.sys
[idahunt] Executed IDA 2/2 times IDA instances
[idahunt] Took 0:00:15.03 to execute this
root@kitploit:~
C:\> tree C:\tests\ /F
C:\tests
├───patch
│       tm.i64
│       tm.log
│       tm.sys
│
└───vuln
        tm.i64
        tm.log
        tm.sys

مقارنة الملفات

يستخدم هذا diaphora لتصدير المقارنة لكل ملف (إنشاء قاعدة بيانات sqlite3 باسم <filename>.sqlite)، ثم إجراء المقارنة بين الإصدارات (إنشاء قاعدة بيانات sqlite3 باسم <filename>.diaphora).

root@kitploit:~
C:\idahunt> python idahunt.py --diaphora-path C:\diaphora --inputdir C:\tests --diff --filename tm.sys --verbose
[idahunt] IDA32 = C:\Program Files\IDA Core 8.1\ida.exe
[idahunt] IDA64 = C:\Program Files\IDA Core 8.1\ida64.exe
[idahunt] EXECUTE DIFF-EXPORT
[idahunt] Executing script C:\diaphora\diaphora_ida.py for C:\tests\patch\tm.sys
[idahunt] C:\Program Files\IDA Core 8.1\ida64.exe -A -SC:\diaphora\diaphora_ida.py -LC:\tests\patch\tm.log C:\tests\patch\tm.i64
[idahunt] Environment variables:
[idahunt] DIAPHORA_AUTO2=1
[idahunt] DIAPHORA_EXPORT_FILE=tm.sqlite
[idahunt] Executing script C:\diaphora\diaphora_ida.py for C:\tests\vuln\tm.sys
[idahunt] C:\Program Files\IDA Core 8.1\ida64.exe -A -SC:\diaphora\diaphora_ida.py -LC:\tests\vuln\tm.log C:\tests\vuln\tm.i64
[idahunt] Environment variables:
[idahunt] DIAPHORA_AUTO2=1
[idahunt] DIAPHORA_EXPORT_FILE=tm.sqlite
[idahunt] Executed IDA 2/2 times IDA instances
[idahunt] EXECUTE DIFF
[idahunt] Diffing patch vs vuln
[idahunt] C:\Program Files\Python39\python.exe C:\diaphora\diaphora.py C:\tests\patch\tm.sqlite C:\tests\vuln\tm.sqlite -o C:\tests\vuln\patch_vs_vuln\tm.sys.diaphora
[diaphora][Wed Dec 14 10:33:49 2022] Diffing...es
[diaphora][Wed Dec 14 10:33:49 2022] Callgraphs from both programs differ in 0.706714%
[diaphora][Wed Dec 14 10:33:49 2022] Finding best matches...
[diaphora][Wed Dec 14 10:33:49 2022] Finding with heuristic 'Perfect match, same name'
[diaphora][Wed Dec 14 10:33:50 2022] All functions matched in at least one database, finishing.
[diaphora][Wed Dec 14 10:33:50 2022] Finding partial matches
[diaphora][Wed Dec 14 10:33:50 2022] All functions matched in at least one database, finishing.
[diaphora][Wed Dec 14 10:33:50 2022] Finding with heuristic 'Small names difference'
[diaphora][Wed Dec 14 10:33:50 2022] Finding with heuristic 'Call address sequence'
[diaphora][Wed Dec 14 10:33:50 2022] Finding with heuristic 'Call address sequence'
[diaphora][Wed Dec 14 10:33:50 2022] Finding unmatched functions
[diaphora][Wed Dec 14 10:33:50 2022] Done. Took 1.110000000000582 seconds.
[diaphora][Wed Dec 14 10:33:50 2022] Diffing results saved in file 'C:\tests\vuln\patch_vs_vuln\tm.sys.diaphora'.
[idahunt] Executed Python 1/1 times
[idahunt] Took 0:00:30.07 to execute this
root@kitploit:~
C:\> tree C:\tests\ /F
C:\tests
├───patch
│       tm.i64
│       tm.log
│       tm.sqlite
│       tm.sys
│
└───vuln
    │   tm.i64
    │   tm.log
    │   tm.sqlite
    │   tm.sys
    │
    └───patch_vs_vuln
            tm.sys.diaphora
            tm.sys.txt

كما هو موضح أعلاه، يقوم أيضًا بإنشاء ملف <filename>.txt بجانب ملف <filename>.diaphora مع قائمة أفضل التطابقات:

root@kitploit:~
partial,00000,1c0002708,WPP_SF_DDq,1c0002708,WPP_SF_DDq,0.950,1,1,Perfect match, same name
partial,00001,1c0002770,WPP_SF_Dq,1c0002770,WPP_SF_Dq,0.940,1,1,Perfect match, same name
partial,00002,1c00027c8,WPP_SF_qq_guid_D,1c00027c8,WPP_SF_qq_guid_D,0.960,1,1,Perfect match, same name
partial,00003,1c0002844,WPP_SF_qqi,1c0002844,WPP_SF_qqi,0.950,1,1,Perfect match, same name
partial,00004,1c00028a8,WPP_SF_qqii,1c00028a8,WPP_SF_qqii,0.960,1,1,Perfect match, same name
partial,00005,1c0015500,TmRecoverResourceManagerExt,1c0015500,TmRecoverResourceManagerExt,0.860,37,36,Perfect match, same name
partial,00006,1c001a610,TmpHeuristicAbortTransaction,1c001a640,TmpHeuristicAbortTransaction,0.986,6,6,Perfect match, same name
partial,00007,1c001a6c0,TmpHeuristicAbortTransactionAfterCheckpoint,1c001a6f0,TmpHeuristicAbortTransactionAfterCheckpoint,0.992,11,11,Perfect match, same name
partial,00008,1c001ad58,TmpIsClusteredTransactionManager,1c001ad88,TmpIsClusteredTransactionManager,0.994,15,15,Perfect match, same name
partial,00009,1c001b0c0,TmpMigrateEnlistments,1c001b0f0,TmpMigrateEnlistments,0.980,10,10,Perfect match, same name

مقارنة دالة

اتضح أن ملفات tm.sys (المرفقة في المستودع) مرتبطة بـ CVE-2018-8611 لذا دعنا نحلل الدالة المُصححة TmRecoverResourceManagerExt():

root@kitploit:~
C:\idahunt> python idahunt.py --diaphora-path C:\diaphora\ --inputdir C:\tests\ --html --filename tm.sys --funcname TmRecoverResourceManagerExt --verbose
[idahunt] IDA32 = C:\Program Files\IDA Core 8.1\ida.exe
[idahunt] IDA64 = C:\Program Files\IDA Core 8.1\ida64.exe
[idahunt] EXECUTE GENERATE HTML
C:\tests\patch\tm.sqlite C:\tests\vuln\tm.sqlite
C:\tests\vuln\patch_vs_vuln\tm.sys\TmRecoverResourceManagerExt_asm.html C:\tests\vuln\patch_vs_vuln\tm.sys\TmRecoverResourceManagerExt_pseudo.html
[idahunt] Showing patch vs vuln for TmRecoverResourceManagerExt
[idahunt] C:\Program Files\IDA Core 8.1\ida64.exe -A -SC:\diaphora\diaphora_ida.py -LC:\tests\patch\tm.log C:\tests\patch\tm.i64
[idahunt] Environment variables:
[idahunt] DIAPHORA_AUTO4=1
[idahunt] DIAPHORA_DB1=C:\tests\patch\tm.sqlite
[idahunt] DIAPHORA_DB2=C:\tests\vuln\tm.sqlite
[idahunt] DIAPHORA_DIFF=C:\tests\vuln\patch_vs_vuln\tm.sys.diaphora
[idahunt] DIAPHORA_EA1=1c0015500
[idahunt] DIAPHORA_EA2=1c0015500
[idahunt] DIAPHORA_HTML_ASM=C:\tests\vuln\patch_vs_vuln\tm.sys\TmRecoverResourceManagerExt_asm.html
[idahunt] DIAPHORA_HTML_PSEUDO=C:\tests\vuln\patch_vs_vuln\tm.sys\TmRecoverResourceManagerExt_pseudo.html
[idahunt] Executed IDA 1/1 times IDA instances
[idahunt] Took 0:00:10.03 to execute this

الآن لدينا الكود المُجمّع والكود المُفكك المُولّد لهذه الدالة:

root@kitploit:~
C:\idahunt> tree C:\tests\ /F
C:\tests
├───patch
│       tm.i64
│       ...
│
└───vuln
    │   tm.i64
    │   ...
    │
    └───patch_vs_vuln
        │   tm.sys.diaphora
        │   tm.sys.txt
        │
        └───tm.sys
                TmRecoverResourceManagerExt_asm.html
                TmRecoverResourceManagerExt_pseudo.html

عوامل التصفية

يمكننا تصفية idahunt بحيث يحلل فقط الملفات التي يحتوي اسمها على نمط معين (-n Download أدناه):

root@kitploit:~
C:\idahunt>idahunt.py --inputdir C:\re --filter "filters\names.py -a 32 -v -n Download" --scripts C:\idahunt\script_template.py --list-only
[idahunt] Simulating only...
[idahunt] EXECUTE SCRIPTS
[names] Skipping non-matching name Download in cve-2014-4076.dll
[names] Skipping non-matching name Download in cve-2014-4076.exe
[idahunt] Executing script C:\idahunt\script_template.py for C:\re\DownloadExecute.exe
[names] Skipping non-matching name Download in ReverseShell.exe

يمكننا أيضًا تصفية idahunt بحيث يحلل فقط الملفات ذات الامتداد المعين (-e dll أدناه):

root@kitploit:~
C:\idahunt>idahunt.py --inputdir C:\re --filter "filters\names.py -a 32 -v -e dll" --scripts C:\idahunt\script_template.py --list-only
[idahunt] Simulating only...
[idahunt] EXECUTE SCRIPTS
[idahunt] Executing script C:\idahunt\script_template.py for C:\re\cves\cve-2014-4076.dll
[names] Skipping non-matching extension .dll in cve-2014-4076.exe
[names] Skipping non-matching extension .dll in DownloadExecute.exe
[names] Skipping non-matching extension .dll in ReverseShell.exe

اكتشاف البنية

يلزم معرفة البنية مسبقًا بسبب بنية IDA Pro وحقيقة أنها تحتوي على ملفين تنفيذيين مختلفين idaq.exe و idaq64.exe لتحليل الملفات الثنائية للبنيتين 32-bit و64-bit. هذا مهم بشكل خاص إذا كنت تريد استخدام مفكك HexRays.

سيقوم idahunt تلقائيًا باكتشاف البنى i386 وia64 وamd64 في ملفات Windows PE. إذا كنت بحاجة إلى اكتشاف بنى أخرى تلقائيًا، يمكنك إنشاء issue أو إضافتها إلى idahunt وتقديم PR.

إذا نسيت توفير البنية للملفات التي تريد تحليلها، فسيعيد عامل التصفية الأساسي filters\names.py خطأً:

root@kitploit:~
C:\idahunt>idahunt.py --inputdir C:\re --filter "filters\names.py -v -e dll" --scripts C:\idahunt\script_template.py --list-only
[idahunt] Simulating only...
[idahunt] EXECUTE SCRIPTS
[names] Unknown architecture: None. You need to specify it with -a
[names] Skipping non-matching extension .dll in cve-2014-4076.exe
[names] Skipping non-matching extension .dll in DownloadExecute.exe
[names] Skipping non-matching extension .dll in ReverseShell.exe

خاص بالهدف

توجد عوامل تصفية لتحليل برمجيات HP iLO أو Cisco ASA الثابتة (firmware).

مشاريع معروفة تستخدم idahunt

  • asadbg
تنزيل الأداة