7 KiB
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
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 !
-
Découvrez The PEASS Family, notre collection d'NFTs exclusifs.
-
Obtenez le swag officiel PEASS & HackTricks.
-
Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez-moi sur Twitter 🐦@carlospolopm.
-
Partagez vos astuces de piratage en soumettant des PR au dépôt hacktricks et au dépôt hacktricks-cloud.
Générique
Réseau
Sockets bruts | Sockets WinAPI |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Persistance
Registre | Fichier | Service |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Cryptage
Nom |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Anti-Analyse/VM
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] |
Furtivité
Nom | |
---|---|
VirtualAlloc | Allouer de la mémoire (packers) |
VirtualProtect | Modifier les autorisations de la mémoire (packer donnant l'autorisation d'exécution à une section) |
ReadProcessMemory | Injection dans des processus externes |
WriteProcessMemoryA/W | Injection dans des processus externes |
NtWriteVirtualMemory | |
CreateRemoteThread | Injection de DLL/processus... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Exécution
Nom de la fonction |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Divers
- 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ès à Internet
- FindResource(), LoadResource(), LockResource() -- Accéder aux ressources de l'exécutable
Techniques de malware
Injection de DLL
Exécuter une DLL arbitraire à l'intérieur d'un autre processus
- Localiser le processus pour injecter la DLL malveillante : CreateToolhelp32Snapshot, Process32First, Process32Next
- Ouvrir le processus : GetModuleHandle, GetProcAddress, OpenProcess
- Écrire le chemin de la DLL à l'intérieur du processus : VirtualAllocEx, WriteProcessMemory
- Créer un thread dans le processus qui chargera la DLL malveillante : CreateRemoteThread, LoadLibrary
Autres fonctions à utiliser : NTCreateThreadEx, RtlCreateUserThread
Injection de DLL réfléchie
Charger une DLL malveillante sans appeler les appels API Windows normaux.
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
Trouver un thread d'un processus et le faire charger une DLL malveillante
- Trouver un thread cible : CreateToolhelp32Snapshot, Thread32First, Thread32Next
- Ouvrir le thread : OpenThread
- Suspendre le thread : SuspendThread
- Écrire le chemin de la DLL malveillante à l'intérieur du processus victime : VirtualAllocEx, WriteProcessMemory
- Reprendre le thread en chargeant la bibliothèque : ResumeThread
Injection PE
Injection d'exécution portable : L'exécutable sera écrit dans la mémoire du processus victime et sera exécuté à partir de là.
Creusement de processus
Le malware va désallouer le code légitime de la mémoire du processus et charger un binaire malveillant
- Créer un nouveau processus : CreateProcess
- Désallouer la mémoire : ZwUnmapViewOfSection, N