API Com煤n Usada en Malware
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Gen茅rico
Redes
Sockets Crudos | Sockets WinAPI |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Persistencia
Registro | Archivo | Servicio |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Cifrado
Nombre |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Anti-An谩lisis/VM
Nombre de Funci贸n | Instrucciones de Ensamblador |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Verificar si un proceso est谩 en ejecuci贸n] | |
CreateFileW/A [Verificar si un archivo existe] |
Sigilo
Nombre | |
---|---|
VirtualAlloc | Asignar memoria (empaquetadores) |
VirtualProtect | Cambiar permisos de memoria (empaquetador otorgando permisos de ejecuci贸n a una secci贸n) |
ReadProcessMemory | Inyecci贸n en procesos externos |
WriteProcessMemoryA/W | Inyecci贸n en procesos externos |
NtWriteVirtualMemory | |
CreateRemoteThread | Inyecci贸n de DLL/proceso... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Ejecuci贸n
Nombre de Funci贸n |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Varios
- GetAsyncKeyState() -- Registro de teclas
- SetWindowsHookEx -- Registro de teclas
- GetForeGroundWindow -- Obtener el nombre de la ventana en ejecuci贸n (o el sitio web de un navegador)
- LoadLibrary() -- Importar biblioteca
- GetProcAddress() -- Importar biblioteca
- CreateToolhelp32Snapshot() -- Listar procesos en ejecuci贸n
- GetDC() -- Captura de pantalla
- BitBlt() -- Captura de pantalla
- InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Acceso a Internet
- FindResource(), LoadResource(), LockResource() -- Acceso a recursos del ejecutable
T茅cnicas de Malware
Inyecci贸n de DLL
Ejecutar una DLL arbitraria dentro de otro proceso
- Localizar el proceso para inyectar la DLL maliciosa: CreateToolhelp32Snapshot, Process32First, Process32Next
- Abrir el proceso: GetModuleHandle, GetProcAddress, OpenProcess
- Escribir la ruta a la DLL dentro del proceso: VirtualAllocEx, WriteProcessMemory
- Crear un hilo en el proceso que cargar谩 la DLL maliciosa: CreateRemoteThread, LoadLibrary
Otras funciones a utilizar: NTCreateThreadEx, RtlCreateUserThread
Inyecci贸n de DLL Reflectiva
Cargar una DLL maliciosa sin llamar a las llamadas normales de la API de Windows.
La DLL se mapea dentro de un proceso, resolver谩 las direcciones de importaci贸n, corregir谩 las reubicaciones y llamar谩 a la funci贸n DllMain.
Secuestro de Hilos
Encontrar un hilo de un proceso y hacer que cargue una DLL maliciosa
- Encontrar un hilo objetivo: CreateToolhelp32Snapshot, Thread32First, Thread32Next
- Abrir el hilo: OpenThread
- Suspender el hilo: SuspendThread
- Escribir la ruta a la DLL maliciosa dentro del proceso de la v铆ctima: VirtualAllocEx, WriteProcessMemory
- Reanudar el hilo cargando la biblioteca: ResumeThread
Inyecci贸n PE
Inyecci贸n de Ejecuci贸n Port谩til: El ejecutable se escribir谩 en la memoria del proceso de la v铆ctima y se ejecutar谩 desde all铆.
Hollowing de Proceso
El malware desmapear谩 el c贸digo leg铆timo de la memoria del proceso y cargar谩 un binario malicioso
- Crear un nuevo proceso: CreateProcess
- Desmapear la memoria: ZwUnmapViewOfSection, NtUnmapViewOfSection
- Escribir el binario malicioso en la memoria del proceso: VirtualAllocEc, WriteProcessMemory
- Establecer el punto de entrada y ejecutar: SetThreadContext, ResumeThread
Hooking
- La SSDT (Tabla de Descriptores de Servicios del Sistema) apunta a funciones del kernel (ntoskrnl.exe) o controlador GUI (win32k.sys) para que los procesos de usuario puedan llamar a estas funciones.
- Un rootkit puede modificar estos punteros a direcciones que controla.
- IRP (Paquetes de Solicitud de I/O) transmiten piezas de datos de un componente a otro. Casi todo en el kernel utiliza IRPs y cada objeto de dispositivo tiene su propia tabla de funciones que puede ser enganchada: DKOM (Manipulaci贸n Directa de Objetos del Kernel).
- La IAT (Tabla de Direcciones de Importaci贸n) es 煤til para resolver dependencias. Es posible enganchar esta tabla para secuestrar el c贸digo que ser谩 llamado.
- EAT (Tabla de Direcciones de Exportaci贸n) Hooks. Estos hooks se pueden hacer desde userland. El objetivo es enganchar funciones exportadas por DLLs.
- Inline Hooks: Este tipo son dif铆ciles de lograr. Esto implica modificar el c贸digo de las funciones mismas. Tal vez poniendo un salto al principio de esto.
tip
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 馃挰 Discord group or the telegram group or follow us on Twitter 馃惁 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.