9.1 KiB
API Comuni utilizzate nel Malware
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud github repos.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
Generico
Networking
Raw Sockets | WinAPI Sockets |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Persistenza
Registro | File | Servizio |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Crittografia
Nome |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Anti-Analisi/VM
Nome Funzione | Istruzioni Assembly |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Controlla se un processo è in esecuzione] | |
CreateFileW/A [Controlla se un file esiste] |
Stealth
Nome | |
---|---|
VirtualAlloc | Allocare memoria (packers) |
VirtualProtect | Cambiare le autorizzazioni di memoria (packer che dà autorizzazione di esecuzione a una sezione) |
ReadProcessMemory | Iniezione in processi esterni |
WriteProcessMemoryA/W | Iniezione in processi esterni |
NtWriteVirtualMemory | |
CreateRemoteThread | Iniezione DLL/Processo... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Esecuzione
Nome Funzione |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Varie
- GetAsyncKeyState() -- Key logging
- SetWindowsHookEx -- Key logging
- GetForeGroundWindow -- Ottieni il nome della finestra in esecuzione (o il sito web da un browser)
- LoadLibrary() -- Importa libreria
- GetProcAddress() -- Importa libreria
- CreateToolhelp32Snapshot() -- Elenca i processi in esecuzione
- GetDC() -- Schermata
- BitBlt() -- Schermata
- InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Accesso a Internet
- FindResource(), LoadResource(), LockResource() -- Accesso alle risorse dell'eseguibile
Tecniche Malware
Iniezione DLL
Esegue una DLL arbitraria all'interno di un altro processo
- Trova il processo in cui iniettare la DLL dannosa: CreateToolhelp32Snapshot, Process32First, Process32Next
- Apre il processo: GetModuleHandle, GetProcAddress, OpenProcess
- Scrive il percorso della DLL all'interno del processo: VirtualAllocEx, WriteProcessMemory
- Crea un thread nel processo che caricherà la DLL dannosa: CreateRemoteThread, LoadLibrary
Altre funzioni da utilizzare: NTCreateThreadEx, RtlCreateUserThread
Iniezione DLL Riflessiva
Carica una DLL dannosa senza chiamare le normali chiamate API di Windows.
La DLL è mappata all'interno di un processo, risolverà gli indirizzi di importazione, correggerà le rilocazioni e chiamerà la funzione DllMain.
Dirottamento Thread
Trova un thread da un processo e fai sì che carichi una DLL dannosa
- Trova un thread target: CreateToolhelp32Snapshot, Thread32First, Thread32Next
- Apre il thread: OpenThread
- Sospendi il thread: SuspendThread
- Scrivi il percorso della DLL dannosa all'interno del processo vittima: VirtualAllocEx, WriteProcessMemory
- Riprendi il thread caricando la libreria: ResumeThread
Iniezione PE
Iniezione di Esecuzione Portatile: L'eseguibile sarà scritto nella memoria del processo vittima e verrà eseguito da lì.
Process Hollowing
Il malware rimuoverà il codice legittimo dalla memoria del processo e caricherà un binario dannoso
- Crea un nuovo processo: CreateProcess
- Rimuovi la memoria: ZwUnmapViewOfSection, NtUnmapViewOfSection
- Scrivi il binario dannoso nella memoria del processo: VirtualAllocEc, WriteProcessMemory
- Imposta il punto di ingresso ed esegui: SetThreadContext, ResumeThread
Hooking
- Il SSDT (System Service Descriptor Table) punta alle funzioni del kernel (ntoskrnl.exe) o al driver GUI (win32k.sys) in modo che i processi utente possano chiamare queste funzioni.
- Un rootkit potrebbe modificare questi puntatori a indirizzi che controlla
- IRP (I/O Request Packets) trasmettono pezzi di dati da un componente all'altro. Quasi tutto nel kernel utilizza gli IRP e ogni oggetto dispositivo ha la propria tabella delle funzioni che possono essere agganciate: DKOM (Direct Kernel Object Manipulation)
- L'IAT (Import Address Table) è utile per risolvere le dipendenze. È possibile agganciare questa tabella per dirottare il codice che verrà chiamato.
- EAT (Export Address Table) Hooks. Questi hooks possono essere fatti da userland. L'obiettivo è agganciare le funzioni esportate dalle DLL.
- Inline Hooks: Questo tipo è difficile da raggiungere. Coinvolge la modifica del codice delle funzioni stesse. Forse inserendo un salto all'inizio di questo.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository di HackTricks e HackTricks Cloud su GitHub.