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

Gen茅rico

Redes

Sockets CrudosSockets WinAPI
socket()WSAStratup()
bind()bind()
listen()listen()
accept()accept()
connect()connect()
read()/recv()recv()
write()send()
shutdown()WSACleanup()

Persistencia

RegistroArchivoServicio
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贸nInstrucciones 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
VirtualAllocAsignar memoria (empaquetadores)
VirtualProtectCambiar permisos de memoria (empaquetador otorgando permisos de ejecuci贸n a una secci贸n)
ReadProcessMemoryInyecci贸n en procesos externos
WriteProcessMemoryA/WInyecci贸n en procesos externos
NtWriteVirtualMemory
CreateRemoteThreadInyecci贸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

  1. Localizar el proceso para inyectar la DLL maliciosa: CreateToolhelp32Snapshot, Process32First, Process32Next
  2. Abrir el proceso: GetModuleHandle, GetProcAddress, OpenProcess
  3. Escribir la ruta a la DLL dentro del proceso: VirtualAllocEx, WriteProcessMemory
  4. 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

  1. Encontrar un hilo objetivo: CreateToolhelp32Snapshot, Thread32First, Thread32Next
  2. Abrir el hilo: OpenThread
  3. Suspender el hilo: SuspendThread
  4. Escribir la ruta a la DLL maliciosa dentro del proceso de la v铆ctima: VirtualAllocEx, WriteProcessMemory
  5. 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

  1. Crear un nuevo proceso: CreateProcess
  2. Desmapear la memoria: ZwUnmapViewOfSection, NtUnmapViewOfSection
  3. Escribir el binario malicioso en la memoria del proceso: VirtualAllocEc, WriteProcessMemory
  4. 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