# 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**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/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 1. Trova il processo in cui iniettare la DLL dannosa: CreateToolhelp32Snapshot, Process32First, Process32Next 2. Apre il processo: GetModuleHandle, GetProcAddress, OpenProcess 3. Scrive il percorso della DLL all'interno del processo: VirtualAllocEx, WriteProcessMemory 4. 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 1. Trova un thread target: CreateToolhelp32Snapshot, Thread32First, Thread32Next 2. Apre il thread: OpenThread 3. Sospendi il thread: SuspendThread 4. Scrivi il percorso della DLL dannosa all'interno del processo vittima: VirtualAllocEx, WriteProcessMemory 5. 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 1. Crea un nuovo processo: CreateProcess 2. Rimuovi la memoria: ZwUnmapViewOfSection, NtUnmapViewOfSection 3. Scrivi il binario dannoso nella memoria del processo: VirtualAllocEc, WriteProcessMemory 4. 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**](https://github.com/sponsors/carlospolop)! * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family) * **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR ai repository di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) su GitHub.