# API Com煤n Usada en Malware {% hint style="success" %} Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Apoya a HackTricks * Revisa los [**planes de suscripci贸n**](https://github.com/sponsors/carlospolop)! * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
{% endhint %} ## Gen茅rico ### Redes | Sockets en Crudo | 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() -- Acceder a Internet * FindResource(), LoadResource(), LockResource() -- Acceder 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 pueden hacerse desde **userland**. El objetivo es enganchar funciones exportadas por DLLs. * **Inline Hooks**: Este tipo es dif铆cil de lograr. Esto implica modificar el c贸digo de las funciones mismas. Tal vez poniendo un salto al principio de estas. {% hint style="success" %} Aprende y practica Hacking en AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Aprende y practica Hacking en GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Apoya a HackTricks * Revisa los [**planes de suscripci贸n**](https://github.com/sponsors/carlospolop)! * **脷nete al** 馃挰 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **s铆guenos** en **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos de github.
{% endhint %}