
IATelligence is a Python script that will extract the IAT of a PE file and request GPT to get more information about the API and the ATT&CK matrix related
IATelligence est un script Python qui extrait la table d'adresses d'importation (IAT) d'un fichier PE et utilise le modèle GPT-3 d'OpenAI pour fournir des détails sur chaque API Windows importée par le fichier. Le script recherche également les techniques MITRE ATT&CK associées et explique comment l'API pourrait potentiellement être utilisée par des attaquants.
Il affiche également les hashs du fichier et estime le coût des requêtes GPT-3. IATelligence est une preuve de concept pour l'utilisation de GPT-3 dans l'analyse de logiciels malveillants et pour évaluer rapidement le comportement d'un malware à partir de son IAT.
Voici un exemple rapide du résultat que vous obtiendrez. Remarquez que la requête peut prendre plus de temps selon la taille de l'IAT.

Pour exécuter cet outil, vous aurez besoin d'un accès à l'API OpenAI, puis vous devrez modifier le script pour ajouter votre propre clé API.
# Authenticate with the OpenAI API
openai.api_key = ""
Vous devrez également installer les dépendances.
pip install -r requirements.txt
Pour exécuter l'outil, il suffit de spécifier un fichier PE comme argument au script.
python iatelligence.py sample.exe
Le script calcule également les hashs ainsi que le coût estimé de la requête.
[+] IAT Request from the file: .\sample.exe
[+] 33 functions will be requested to GPT!
[+] MD5: 2f82623f9523c0d167862cad0eff6806
[+] SHA1: 5d77804b87735e66d7d1e263c31c4ef010f16153
[+] SHA256: 9c2c8a8588fe6db09c09337e78437cb056cd557db1bcf5240112cbfb7b600efb
[+] Imphash: 8eeaa9499666119d13b3f44ecd77a729
[!] Estimated cost of requests: $0.0693
Le résultat peut être visualisé dans un tableau. Voici un extrait tronqué.
+------------------------------------------+-----------------------------+------------------------------------------+
| Libraries | API | GPT Verdict |
+------------------------------------------+-----------------------------+------------------------------------------+
| SHELL32.dll | ShellExecuteW | The purpose of this API, ShellExecuteW, |
| | | is to launch an application or open a |
| | | file in the Windows operating system. It |
| | | is associated with MITRE ATT&CK |
| | | technique T1218 - Execution Through |
| | | Module Load. This technique involves |
| | | using shell32.dll to execute malicious |
| | | code without directly invoking the |
| | | executable file itself, which can help |
| | | attackers evade detection and gain |
| | | access to systems. |
| | | |
| KERNEL32.dll | GetCurrentThreadId | The purpose of this API is to retrieve |
| | | the identifier of the calling thread. It |
| | | is associated with MITRE ATT&CK |
| | | technique T1155 - Thread Execution, |
| | | which involves creating and running |
| | | threads within a process or code |
| | | injection into an existing thread. The |
| | | GetCurrentThreadId() function allows |
| | | attackers to identify and target |
| | | specific threads for malicious |
| | | activities. |
| | | |
| KERNEL32.dll | GetSystemTimeAsFileTime | The purpose of this API is to retrieve |
| | | the current system time as a file time |
| | | format. It is associated with the MITRE |
| | | ATT&CK technique T1124 - System Time |
| | | Discovery, which is used by adversaries |
| | | to gain insight into when certain |
| | | activities occurred or are scheduled to |
| | | occur. This allows them to perform |
| | | timing-based attacks and evade |
| | | detection. |
| | | |
| KERNEL32.dll | GetTickCount | The purpose of this API is to retrieve |
| | | the number of milliseconds since Windows |
| | | was started. It is associated with MITRE |
| | | ATT&CK technique T1082 - System Time |
| | | Discovery, which involves an adversary |
| | | querying system information to gain |
| | | insight into file and system times or to |
| | | determine valid accounts. This can be |
| | | used for various malicious activities |
| | | such as enumeration, credential dumping, |
| | | and lateral movement. |
| | | |
| KERNEL32.dll | RtlCaptureContext | The purpose of this API is to capture |
| | | the Context Record of a thread in order |
| | | to provide information about its state. |
| | | This can be used for debugging, logging |
| | | or other purposes. The associated MITRE |
| | | ATT&CK technique is T1113 - Process |
| | | Injection, as this API can be used to |
| | | inject code into a running process. |
| | | |
| KERNEL32.dll | GetCurrentProcessId | The purpose of this API is to retrieve |
| | | the current process identifier (PID) for |
| | | a process running on Windows. This can |
| | | be used to identify which processes are |
| | | currently active and running on a |
| | | system. It is associated with MITRE |
| | | ATT&CK technique T1057 - Process |
| | | Discovery, as it allows an adversary to |
| | | gain knowledge about the processes that |
| | | are running on a system. |
| | | |
| KERNEL32.dll | RtlVirtualUnwind | The purpose of this API is to provide an |
| | | unwinding mechanism that can be used to |
| | | traverse the stack frames of a program. |
| | | It is associated with the MITRE ATT&CK |
| | | technique called "Stack Walking" |
| | | (T1063). This technique involves using |
| | | APIs like RtlVirtualUnwind() to walk |
| | | through the stack frames, which can help |
| | | attackers gain access to sensitive |
| | | information or bypass security controls. |
| | | |
| KERNEL32.dll | UnhandledExceptionFilter | The purpose of this API is to provide an |
| | | exception handler for unhandled |
| | | exceptions in the Windows operating |
| | | system. It is associated with the MITRE |
| | | ATT&CK technique T1136 - Create or |
| | | Modify System Process, as it allows a |
| | | program to be able to handle unexpected |
| | | events that may occur during its |
| | | execution. |
Le coût de l'utilisation de GPT-3 d'OpenAI pour analyser les API Windows importées dans un fichier PE peut varier en fonction de la taille de l'IAT. Bien que le coût des requêtes individuelles ne soit pas élevé, le coût total peut rapidement s'accumuler pour les fichiers plus volumineux. Le coût estimé fourni par le script est une approximation et peut varier.
En raison de la conception du script, l'analyse est effectuée une API à la fois, ce qui peut rendre le processus lent. Une barre de progression est affichée pour indiquer l'avancement de l'analyse.
Il est important de noter que GPT-3 est un modèle linguistique, les résultats peuvent donc ne pas toujours être précis. De plus, le script fournit des détails sur les techniques MITRE ATT&CK associées sans contexte ; ces informations doivent donc être soigneusement examinées par un analyste en malware.
Twitter : @fr0gger_