Common API used in Malware
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
socket()
WSAStratup()
bind()
bind()
listen()
listen()
accept()
accept()
connect()
connect()
read()/recv()
recv()
write()
send()
shutdown()
WSACleanup()
RegCreateKeyEx()
GetTempPath()
OpenSCManager
RegOpenKeyEx()
CopyFile()
CreateService()
RegSetValueEx()
CreateFile()
StartServiceCtrlDispatcher()
RegDeleteKeyEx()
WriteFile()
RegGetValue()
ReadFile()
WinCrypt
CryptAcquireContext()
CryptGenKey()
CryptDeriveKey()
CryptDecrypt()
CryptReleaseContext()
IsDebuggerPresent()
CPUID()
GetSystemInfo()
IN()
GlobalMemoryStatusEx()
GetVersion()
CreateToolhelp32Snapshot [Überprüfen, ob ein Prozess läuft]
CreateFileW/A [Überprüfen, ob eine Datei existiert]
VirtualAlloc
Speicher zuweisen (Packers)
VirtualProtect
Ändern der Speicherberechtigungen (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
CreateProcessA/W
ShellExecute
WinExec
ResumeThread
NtResumeThread
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
Führen Sie eine beliebige DLL in einem anderen Prozess aus
Finden Sie den Prozess, in den die bösartige DLL injiziert werden soll: 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
Laden Sie eine bösartige DLL, ohne normale Windows-API-Aufrufe zu tätigen. Die DLL wird innerhalb eines Prozesses gemappt, sie wird die Importadressen auflösen, die Relokationen beheben und die DllMain-Funktion aufrufen.
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
Unterbrechen 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
Portable Execution Injection: Die ausführbare Datei wird im Speicher des Opferprozesses geschrieben und von dort ausgeführt.
Die Malware entfernt den legitimen Code aus dem Speicher des Prozesses und lädt eine bösartige Binärdatei
Erstellen Sie einen neuen Prozess: CreateProcess
Entfernen Sie die Zuordnung 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
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.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)