hacktricks/reversing/common-api-used-in-malware.md

181 lines
11 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
2022-04-28 16:01:33 +00:00
- Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
- **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menaces proactives, trouve des problèmes dans l'ensemble de votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) dès aujourd'hui.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
# Générique
2022-05-01 16:32:23 +00:00
2023-06-03 13:10:46 +00:00
## Réseau
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
| Sockets bruts | Sockets WinAPI |
| ------------- | -------------- |
| socket() | WSAStratup() |
| bind() | bind() |
| listen() | listen() |
| accept() | accept() |
| connect() | connect() |
| read()/recv() | recv() |
| write() | send() |
| shutdown() | WSACleanup() |
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
## Persistance
2020-12-03 18:00:02 +00:00
| Registre | Fichier | Service |
| ------------------ | ------------- | ---------------------------- |
| RegCreateKeyEx() | GetTempPath() | OpenSCManager |
| RegOpenKeyEx() | CopyFile() | CreateService() |
| RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
| RegDeleteKeyEx() | WriteFile() | |
| RegGetValue() | ReadFile() | |
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
## Cryptage
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
| Nom |
| --------------------- |
| WinCrypt |
| CryptAcquireContext() |
| CryptGenKey() |
| CryptDeriveKey() |
| CryptDecrypt() |
| CryptReleaseContext() |
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
## Anti-Analyse/VM
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
| Nom de la fonction | Instructions d'assemblage |
| --------------------------------------------------------- | ------------------------ |
| IsDebuggerPresent() | CPUID() |
| GetSystemInfo() | IN() |
| GlobalMemoryStatusEx() | |
| GetVersion() | |
| CreateToolhelp32Snapshot \[Vérifier si un processus est en cours d'exécution] | |
| CreateFileW/A \[Vérifier si un fichier existe] | |
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
## Furtivité
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
| Nom | |
| ------------------------ | -------------------------------------------------------------------------- |
2023-06-03 13:10:46 +00:00
| VirtualAlloc | Allouer de la mémoire (packers) |
| VirtualProtect | Modifier les autorisations de mémoire (packer donnant l'autorisation d'exécution à une section) |
2023-06-03 13:10:46 +00:00
| ReadProcessMemory | Injection dans des processus externes |
| WriteProcessMemoryA/W | Injection dans des processus externes |
| NtWriteVirtualMemory | |
2023-06-03 13:10:46 +00:00
| CreateRemoteThread | Injection de DLL/processus... |
| NtUnmapViewOfSection | |
| QueueUserAPC | |
| CreateProcessInternalA/W | |
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
## Exécution
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
| Nom de la fonction |
| ---------------- |
2020-12-09 00:31:50 +00:00
| CreateProcessA/W |
| ShellExecute |
| WinExec |
| ResumeThread |
| NtResumeThread |
2020-12-03 18:00:02 +00:00
2023-06-03 13:10:46 +00:00
## Divers
2021-09-07 00:15:14 +00:00
2023-06-03 13:10:46 +00:00
* GetAsyncKeyState() -- Enregistrement des touches
* SetWindowsHookEx -- Enregistrement des touches
* GetForeGroundWindow -- Obtenir le nom de la fenêtre en cours d'exécution (ou le site web d'un navigateur)
* LoadLibrary() -- Importer une bibliothèque
* GetProcAddress() -- Importer une bibliothèque
* CreateToolhelp32Snapshot() -- Liste des processus en cours d'exécution
* GetDC() -- Capture d'écran
* BitBlt() -- Capture d'écran
* InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Accéder à Internet
2023-06-03 13:10:46 +00:00
* FindResource(), LoadResource(), LockResource() -- Accéder aux ressources de l'exécutable
2021-09-07 00:15:14 +00:00
# Techniques de Malware
2021-09-07 00:15:14 +00:00
2023-06-03 13:10:46 +00:00
## Injection de DLL
2021-09-07 00:15:14 +00:00
Exécutez une DLL arbitraire à l'intérieur d'un autre processus
2021-09-07 00:15:14 +00:00
1. Localisez le processus dans lequel injecter la DLL malveillante : CreateToolhelp32Snapshot, Process32First, Process32Next
2. Ouvrez le processus : GetModuleHandle, GetProcAddress, OpenProcess
3. Écrivez le chemin de la DLL à l'intérieur du processus : VirtualAllocEx, WriteProcessMemory
4. Créez un thread dans le processus qui chargera la DLL malveillante : CreateRemoteThread, LoadLibrary
2021-09-07 00:15:14 +00:00
2023-06-03 13:10:46 +00:00
Autres fonctions à utiliser : NTCreateThreadEx, RtlCreateUserThread
2021-09-07 00:15:14 +00:00
2023-06-03 13:10:46 +00:00
## Injection de DLL réfléchie
2021-09-07 00:15:14 +00:00
Chargez une DLL malveillante sans appeler les appels d'API Windows normaux.\
2023-06-03 13:10:46 +00:00
La DLL est mappée à l'intérieur d'un processus, elle résoudra les adresses d'importation, corrigera les relocalisations et appellera la fonction DllMain.
## Détournement de thread
2021-09-07 00:15:14 +00:00
Trouver un thread d'un processus et le charger avec une DLL malveillante
2021-09-07 00:15:14 +00:00
2023-06-03 13:10:46 +00:00
1. Trouver un thread cible : CreateToolhelp32Snapshot, Thread32First, Thread32Next
2. Ouvrir le thread : OpenThread
3. Suspendre le thread : SuspendThread
4. Écrire le chemin de la DLL malveillante dans le processus victime : VirtualAllocEx, WriteProcessMemory
2023-06-03 13:10:46 +00:00
5. Reprendre le thread en chargeant la bibliothèque : ResumeThread
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
## Injection PE
2022-05-01 16:32:23 +00:00
2023-06-03 13:10:46 +00:00
Injection d'exécution portable : L'exécutable sera écrit dans la mémoire du processus victime et sera exécuté à partir de là.
2022-04-28 16:01:33 +00:00
## Processus creux
2022-05-01 16:32:23 +00:00
Le logiciel malveillant va désallouer le code légitime de la mémoire du processus et charger un binaire malveillant
2022-05-01 16:32:23 +00:00
2023-06-03 13:10:46 +00:00
1. Créer un nouveau processus : CreateProcess
2. Désallouer la mémoire : ZwUnmapViewOfSection, NtUnmapViewOfSection
3. Écrire le binaire malveillant dans la mémoire du processus : VirtualAllocEx, WriteProcessMemory
4. Définir le point d'entrée et exécuter : SetThreadContext, ResumeThread
# Hooking
* La **SSDT** (**System Service Descriptor Table**) pointe vers des fonctions du noyau (ntoskrnl.exe) ou du pilote GUI (win32k.sys) afin que les processus utilisateur puissent appeler ces fonctions.
* Un rootkit peut modifier ces pointeurs vers des adresses qu'il contrôle.
* Les **IRP** (**I/O Request Packets**) transmettent des morceaux de données d'un composant à un autre. Presque tout dans le noyau utilise des IRP et chaque objet de périphérique a sa propre table de fonctions qui peut être accrochée : DKOM (Direct Kernel Object Manipulation)
* La **IAT** (**Import Address Table**) est utile pour résoudre les dépendances. Il est possible d'accrocher cette table afin de détourner le code qui sera appelé.
* Accrochage de la **EAT** (**Export Address Table**). Ces accrochages peuvent être réalisés depuis l'espace utilisateur. Le but est d'accrocher les fonctions exportées par les DLL.
* **Accrochage en ligne** : Ce type est difficile à réaliser. Cela implique de modifier le code des fonctions elles-mêmes. Peut-être en plaçant un saut au début de celles-ci.
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Trouvez les vulnérabilités les plus importantes afin de pouvoir les corriger plus rapidement. Intruder suit votre surface d'attaque, effectue des analyses de menaces proactives, trouve des problèmes dans toute votre pile technologique, des API aux applications web et aux systèmes cloud. [**Essayez-le gratuitement**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) dès aujourd'hui.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
- Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
- Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au référentiel [hacktricks](https://github.com/carlospolop/hacktricks) et [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>