8.2 KiB
Häufig verwendete APIs in Malware
Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories einreichen.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
Generisch
Netzwerk
Raw Sockets | WinAPI Sockets |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
Persistenz
Registry | Datei | Dienst |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
Verschlüsselung
Name |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
Anti-Analyse/VM
Funktionsname | Assemblerbefehle |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [Überprüfen, ob ein Prozess läuft] | |
CreateFileW/A [Überprüfen, ob eine Datei existiert] |
Tarnung
Name | |
---|---|
VirtualAlloc | Speicher zuweisen (Packer) |
VirtualProtect | Ändern der Speicherberechtigung (Packer, der einer Sektion Ausführungsberechtigung gibt) |
ReadProcessMemory | Injektion in externe Prozesse |
WriteProcessMemoryA/W | Injektion in externe Prozesse |
NtWriteVirtualMemory | |
CreateRemoteThread | DLL-/Prozessinjektion... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
Ausführung
Funktionsname |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
Sonstiges
- GetAsyncKeyState() -- Tastenprotokollierung
- SetWindowsHookEx -- Tastenprotokollierung
- GetForeGroundWindow -- Name des aktiven Fensters abrufen (oder die Website aus einem Browser)
- LoadLibrary() -- Bibliothek importieren
- GetProcAddress() -- Bibliothek importieren
- CreateToolhelp32Snapshot() -- Liste der laufenden Prozesse
- GetDC() -- Bildschirmfoto
- BitBlt() -- Bildschirmfoto
- InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Zugriff auf das Internet
- FindResource(), LoadResource(), LockResource() -- Ressourcen der ausführbaren Datei abrufen
Malware-Techniken
DLL-Injektion
Führen Sie eine beliebige DLL in einem anderen Prozess aus
- Den Prozess lokalisieren, um die bösartige DLL einzuspritzen: CreateToolhelp32Snapshot, Process32First, Process32Next
- Den Prozess öffnen: GetModuleHandle, GetProcAddress, OpenProcess
- Den Pfad zur DLL im Prozess schreiben: VirtualAllocEx, WriteProcessMemory
- Einen Thread im Prozess erstellen, der die bösartige DLL lädt: CreateRemoteThread, LoadLibrary
Andere zu verwendende Funktionen: NTCreateThreadEx, RtlCreateUserThread
Reflektierende DLL-Injektion
Laden Sie eine bösartige DLL, ohne normale Windows-API-Aufrufe zu tätigen.
Die DLL wird in einem Prozess abgebildet, sie wird die Importadressen auflösen, die Relokationen beheben und die DllMain-Funktion aufrufen.
Thread-Hijacking
Finden Sie einen Thread eines Prozesses und lassen Sie ihn eine bösartige DLL laden
- Einen Zielthread finden: CreateToolhelp32Snapshot, Thread32First, Thread32Next
- Den Thread öffnen: OpenThread
- Den Thread anhalten: SuspendThread
- Den Pfad zur bösartigen DLL im Opferprozess schreiben: VirtualAllocEx, WriteProcessMemory
- Den Thread fortsetzen, um die Bibliothek zu laden: ResumeThread
PE-Injektion
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
- Einen neuen Prozess erstellen: CreateProcess
- Den Speicher entladen: ZwUnmapViewOfSection, NtUnmapViewOfSection
- Die bösartige Binärdatei im Prozessspeicher schreiben: VirtualAllocEc, WriteProcessMemory
- Den Einstiegspunkt festlegen und ausführen: SetThreadContext, ResumeThread
Hooking
- Die SSDT (System Service Descriptor Table) zeigt 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 er kontrolliert
- IRP (I/O Request Packets) übertragen Datenstücke von einem Komponenten zum 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 zur Auflösung von Abhängigkeiten. Es ist möglich, diese Tabelle zu hooken, um den Code zu kapern, der aufgerufen wird.
- EAT (Export Address Table) Hooks. Diese Hooks können aus dem Userland heraus gemacht werden. Das Ziel ist es, von DLLs exportierte Funktionen zu hooken.
- Inline Hooks: Dieser Typ ist schwer zu erreichen. Dies beinhaltet die Modifizierung des Codes der Funktionen selbst, möglicherweise durch das Einfügen eines Sprungs am Anfang davon.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositorys senden.