
idahunt est un framework permettant d'analyser des binaires avec IDA Pro et de rechercher des éléments dans IDA Pro.

idahunt est un framework pour analyser des binaires avec IDA Pro et rechercher des éléments dans IDA Pro. C'est un outil en ligne de commande qui analyse récursivement tous les fichiers exécutables à partir d'un dossier donné. Il exécute IDA en arrière-plan afin que vous n'ayez pas à ouvrir chaque fichier manuellement. Il prend en charge l'exécution de scripts IDA Python externes.
Des exemples utiles incluent (liste non exhaustive) :
Les capacités des scripts IDA Python sont illimitées. Vous pouvez importer n'importe quel script IDA Python existant ou créer le vôtre. Quelques exemples :
idahunt.py : outil principal pour analyser les fichiers exécutablesfilters/ : contient des filtres de base pour décider quels fichiers d'un dossier d'entrée analyser avec IDA
filters/default.py : filtre de base par défaut qui ne filtre rien et utilisé par défautfilters/ciscoasa.py : utile pour analyser les images du pare-feu Cisco ASAfilters/hpilo.py : utile pour analyser les images HP iLOfilters/names.py : filtre de base basé sur le nom, la longueur du nom ou l'extensionscript_template.py : contient un script 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.
Vous pouvez utiliser --list-only avec n'importe quelle ligne de commande pour simplement lister ce que l'outil ferait sans réellement le faire.
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
Ici, nous lançons une analyse initiale. Elle se termine après quelques secondes :
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
Ici, nous nettoyons les fichiers .asm temporaires créés par l'analyse initiale :
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
On peut voir le .idb généré ainsi que certains fichiers .log qui contiennent la fenêtre de sortie d'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
Ici, nous exécutons un script IDA Python de base qui affiche [script_template] I execute in IDA, yay! dans la fenêtre de sortie d'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
Comme il est enregistré dans le fichier .log, nous pouvons vérifier qu'il s'est exécuté avec succès :