9.3 KiB
Common API used in Malware
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Try Hard Security Group
![](/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg)
{% embed url="https://discord.gg/tryhardsecurity" %}
Generic
Networking
Raw Sockets | WinAPI Sockets |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Persistence
Registry | File | Service |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Encryption
Name |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Anti-Analysis/VM
Function Name | Assembly Instructions |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Check if a process is running] | |
CreateFileW/A [Check if a file exist] |
Stealth
Name | |
---|---|
VirtualAlloc | Speicher zuweisen (Packers) |
VirtualProtect | Ändern der Speicherberechtigung (Packer gibt Ausführungsberechtigung für einen Abschnitt) |
ReadProcessMemory | In externe Prozesse injizieren |
WriteProcessMemoryA/W | In externe Prozesse injizieren |
NtWriteVirtualMemory | |
CreateRemoteThread | DLL/Prozessinjektion... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Execution
Function Name |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Miscellaneous
- GetAsyncKeyState() -- Tastenerfassung
- SetWindowsHookEx -- Tastenerfassung
- GetForeGroundWindow -- Den Namen des aktiven Fensters abrufen (oder die Website aus einem Browser)
- LoadLibrary() -- Bibliothek importieren
- GetProcAddress() -- Bibliothek importieren
- CreateToolhelp32Snapshot() -- Laufende Prozesse auflisten
- GetDC() -- Screenshot
- BitBlt() -- Screenshot
- InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Zugriff auf das Internet
- FindResource(), LoadResource(), LockResource() -- Zugriff auf Ressourcen der ausführbaren Datei
Malware Techniques
DLL Injection
Führen Sie eine beliebige DLL in einem anderen Prozess aus
- Lokalisieren Sie den Prozess, um die bösartige DLL zu injizieren: CreateToolhelp32Snapshot, Process32First, Process32Next
- Öffnen Sie den Prozess: GetModuleHandle, GetProcAddress, OpenProcess
- Schreiben Sie den Pfad zur DLL in den Prozess: VirtualAllocEx, WriteProcessMemory
- Erstellen Sie einen Thread im Prozess, der die bösartige DLL lädt: CreateRemoteThread, LoadLibrary
Weitere Funktionen zur Verwendung: NTCreateThreadEx, RtlCreateUserThread
Reflective DLL Injection
Laden Sie eine bösartige DLL, ohne normale Windows-API-Aufrufe zu tätigen.
Die DLL wird innerhalb eines Prozesses abgebildet, sie wird die Importadressen auflösen, die Relokationen beheben und die DllMain-Funktion aufrufen.
Thread Hijacking
Finden Sie einen Thread aus einem Prozess und lassen Sie ihn eine bösartige DLL laden
- Finden Sie einen Ziel-Thread: CreateToolhelp32Snapshot, Thread32First, Thread32Next
- Öffnen Sie den Thread: OpenThread
- Pausieren Sie den Thread: SuspendThread
- Schreiben Sie den Pfad zur bösartigen DLL in den Opferprozess: VirtualAllocEx, WriteProcessMemory
- Setzen Sie den Thread fort, der die Bibliothek lädt: ResumeThread
PE Injection
Portable Execution Injection: Die ausführbare Datei wird im Speicher des Opferprozesses geschrieben und von dort ausgeführt.
Process Hollowing
Die Malware wird den legitimen Code aus dem Speicher des Prozesses entfernen und eine bösartige Binärdatei laden
- Erstellen Sie einen neuen Prozess: CreateProcess
- Entfernen Sie die Abbildung des Speichers: ZwUnmapViewOfSection, NtUnmapViewOfSection
- Schreiben Sie die bösartige Binärdatei in den Prozessspeicher: VirtualAllocEc, WriteProcessMemory
- Setzen Sie den Einstiegspunkt und führen Sie aus: SetThreadContext, ResumeThread
Hooking
- Die SSDT (System Service Descriptor Table) verweist auf Kernel-Funktionen (ntoskrnl.exe) oder GUI-Treiber (win32k.sys), damit Benutzerprozesse diese Funktionen aufrufen können.
- Ein Rootkit kann diese Zeiger auf Adressen ändern, die es kontrolliert.
- IRP (I/O Request Packets) übertragen Datenstücke von einer Komponente zur anderen. Fast alles im Kernel verwendet IRPs, und jedes Geräteobjekt hat seine eigene Funktionstabelle, die gehookt werden kann: DKOM (Direct Kernel Object Manipulation)
- Die IAT (Import Address Table) ist nützlich, um Abhängigkeiten aufzulösen. Es ist möglich, diese Tabelle zu hooken, um den Code zu übernehmen, der aufgerufen wird.
- EAT (Export Address Table) Hooks. Diese Hooks können aus userland durchgeführt werden. Das Ziel ist es, exportierte Funktionen von DLLs zu hooken.
- Inline Hooks: Diese Art ist schwierig zu erreichen. Dies beinhaltet die Modifikation des Codes der Funktionen selbst. Vielleicht durch das Setzen eines Sprungs am Anfang davon.
Try Hard Security Group
![](/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg)
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.