
idahunt — это фреймворк для анализа бинарных файлов с помощью IDA Pro и поиска интересующих объектов в IDA Pro.

idahunt — это фреймворк для анализа бинарных файлов с помощью IDA Pro и поиска различных элементов в IDA Pro. Это инструмент командной строки для рекурсивного анализа всех исполняемых файлов из заданной папки. Он запускает IDA в фоновом режиме, поэтому вам не нужно открывать каждый файл вручную. Он поддерживает выполнение внешних IDA Python скриптов.
Полезные примеры включают (неисчерпывающий список):
Возможности IDA Python скриптов безграничны. Вы можете импортировать любой существующий IDA Python скрипт или создать свой собственный. Некоторые примеры:
idahunt.py: основной инструмент для анализа исполняемых файловfilters/: содержит базовые фильтры для определения, какие файлы во входной директории анализировать с помощью IDA
filters/default.py: базовый фильтр по умолчанию, не фильтрующий ничего и используемый по умолчаниюfilters/ciscoasa.py: полезен для анализа образов Cisco ASA Firewallfilters/hpilo.py: полезен для анализа образов HP iLOfilters/names.py: базовый фильтр по имени, длине имени или расширениюscript_template.py: содержит IDA Python скрипт hello worldC:\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 с любой командной строкой, чтобы просто вывести список того, что инструмент сделал бы, не выполняя этого.
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
Здесь мы запускаем первоначальный анализ. Он завершается через несколько секунд:
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 файлы, созданные первоначальным анализом:
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.
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 скрипт, который выводит [script_template] I execute in IDA, yay! в окно вывода IDA Pro.
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 файле, мы можем проверить, что он успешно выполнился: