hacktricks/reversing/common-api-used-in-malware.md

180 lines
11 KiB
Markdown
Raw Normal View History

<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Comparte tus trucos de hacking enviando PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, realiza escaneos proactivos de amenazas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) hoy.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
2023-06-03 01:46:23 +00:00
# Genérico
2022-05-01 16:32:23 +00:00
2023-06-03 01:46:23 +00:00
## Redes
2020-12-03 18:00:02 +00:00
| Raw Sockets | WinAPI Sockets |
| ------------- | -------------- |
| socket() | WSAStratup() |
| bind() | bind() |
| listen() | listen() |
| accept() | accept() |
| connect() | connect() |
| read()/recv() | recv() |
| write() | send() |
| shutdown() | WSACleanup() |
2020-12-03 18:00:02 +00:00
2023-06-03 01:46:23 +00:00
## Persistencia
2020-12-03 18:00:02 +00:00
| Registro | Archivo | Servicio |
| ----------------- | ------------- | ---------------------------- |
| RegCreateKeyEx() | GetTempPath() | OpenSCManager |
| RegOpenKeyEx() | CopyFile() | CreateService() |
| RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
| RegDeleteKeyEx() | WriteFile() | |
| RegGetValue() | ReadFile() | |
2020-12-03 18:00:02 +00:00
2023-06-03 01:46:23 +00:00
## Encriptación
2020-12-03 18:00:02 +00:00
| Nombre |
| ---------------------- |
| WinCrypt |
| CryptAcquireContext() |
| CryptGenKey() |
| CryptDeriveKey() |
| CryptDecrypt() |
| CryptReleaseContext() |
2020-12-03 18:00:02 +00:00
2023-06-03 01:46:23 +00:00
## Anti-Análisis/VM
2020-12-03 18:00:02 +00:00
| Nombre de la Función | Instrucciones de Ensamblador |
| --------------------------------------------------------- | --------------------------- |
| IsDebuggerPresent() | CPUID() |
| GetSystemInfo() | IN() |
| GlobalMemoryStatusEx() | |
| GetVersion() | |
| CreateToolhelp32Snapshot \[Comprobar si un proceso se está ejecutando] | |
| CreateFileW/A \[Comprobar si un archivo existe] | |
2020-12-03 18:00:02 +00:00
2023-06-03 01:46:23 +00:00
## Sigilo
2020-12-03 18:00:02 +00:00
| Nombre | |
| ------------------------- | -------------------------------------------------------------------------- |
| VirtualAlloc | Asignar memoria (empaquetadores) |
| VirtualProtect | Cambiar los permisos de memoria (empaquetador que da permiso 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 | |
2020-12-03 18:00:02 +00:00
2023-06-03 01:46:23 +00:00
## Ejecución
2020-12-03 18:00:02 +00:00
| Nombre de la Función |
| ----------------------- |
| CreateProcessA/W |
| ShellExecute |
| WinExec |
| ResumeThread |
| NtResumeThread |
2020-12-03 18:00:02 +00:00
2023-06-03 01:46:23 +00:00
## Varios
2020-12-03 18:00:02 +00:00
2023-06-03 01:46:23 +00:00
* 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() -- Enumerar procesos en ejecución
2023-06-03 01:46:23 +00:00
* GetDC() -- Captura de pantalla
* BitBlt() -- Captura de pantalla
* InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Acceder a Internet
* FindResource(), LoadResource(), LockResource() -- Acceder a los recursos del ejecutable
2020-12-03 18:00:02 +00:00
2023-06-03 01:46:23 +00:00
# Técnicas de Malware
2021-09-07 00:15:14 +00:00
2023-06-03 01:46:23 +00:00
## Inyección de DLL
2021-09-07 00:15:14 +00:00
Ejecuta una DLL arbitraria dentro de otro proceso
2021-09-07 00:15:14 +00:00
1. Localiza el proceso en el que se va a inyectar la DLL maliciosa: CreateToolhelp32Snapshot, Process32First, Process32Next
2. Abre el proceso: GetModuleHandle, GetProcAddress, OpenProcess
3. Escribe la ruta de la DLL dentro del proceso: VirtualAllocEx, WriteProcessMemory
4. Crea un hilo en el proceso que cargará la DLL maliciosa: CreateRemoteThread, LoadLibrary
2021-09-07 00:15:14 +00:00
2023-06-03 01:46:23 +00:00
Otras funciones a utilizar: NTCreateThreadEx, RtlCreateUserThread
2021-09-07 00:15:14 +00:00
2023-06-03 01:46:23 +00:00
## Inyección de DLL Reflectante
2021-09-07 00:15:14 +00:00
Carga una DLL maliciosa sin llamar a las llamadas normales de la API de Windows.\
2023-06-03 01:46:23 +00:00
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
2021-09-07 00:15:14 +00:00
Encuentra un hilo de un proceso y haz que cargue una DLL maliciosa
2021-09-07 00:15:14 +00:00
1. Encuentra el hilo objetivo: CreateToolhelp32Snapshot, Thread32First, Thread32Next
2. Abre el hilo: OpenThread
3. Suspende el hilo: SuspendThread
4. Escribe la ruta de la DLL maliciosa dentro del proceso víctima: VirtualAllocEx, WriteProcessMemory
5. Reanuda el hilo cargando la biblioteca: ResumeThread
2021-09-07 00:15:14 +00:00
## Inyección PE
2021-09-07 00:15:14 +00:00
2023-06-03 01:46:23 +00:00
Inyección de Ejecución Portátil: El ejecutable se escribirá en la memoria del proceso víctima y se ejecutará desde allí.
2021-09-07 00:15:14 +00:00
## Hollowing de procesos
2021-09-07 00:15:14 +00:00
2023-06-03 01:46:23 +00:00
El malware desmapeará el código legítimo de la memoria del proceso y cargará un binario malicioso
2021-09-07 00:15:14 +00:00
1. Crea un nuevo proceso: CreateProcess
2. Desmapea la memoria: ZwUnmapViewOfSection, NtUnmapViewOfSection
3. Escribe el binario malicioso en la memoria del proceso: VirtualAllocEx, WriteProcessMemory
4. Establece el punto de entrada y ejecuta: SetThreadContext, ResumeThread
2021-09-07 00:15:14 +00:00
2022-05-01 16:32:23 +00:00
# Hooking
2021-09-07 00:15:14 +00:00
* La **SSDT** (**System Service Descriptor Table**) 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 él controla.
* **IRP** (**I/O Request Packets**) transmite fragmentos 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 se pueden enganchar: DKOM (Direct Kernel Object Manipulation).
* La **IAT** (**Import Address Table**) es útil para resolver dependencias. Es posible enganchar esta tabla para secuestrar el código que se llamará.
* Hooks de **EAT** (**Export Address Table**). Estos hooks se pueden hacer desde el **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 propias funciones. Tal vez colocando un salto al principio de esto.
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Encuentra las vulnerabilidades que más importan para que puedas solucionarlas más rápido. Intruder rastrea tu superficie de ataque, realiza escaneos de amenazas proactivas, encuentra problemas en toda tu pila tecnológica, desde APIs hasta aplicaciones web y sistemas en la nube. [**Pruébalo gratis**](https://www.intruder.io/?utm_source=referral&utm_campaign=hacktricks) hoy.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
- Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Comparte tus trucos de hacking enviando PRs al repositorio [hacktricks](https://github.com/carlospolop/hacktricks) y [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>