hacktricks/reversing-and-exploiting/common-api-used-in-malware.md
2024-04-06 18:30:57 +00:00

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:

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

  1. Den Prozess lokalisieren, um die bösartige DLL einzuspritzen: CreateToolhelp32Snapshot, Process32First, Process32Next
  2. Den Prozess öffnen: GetModuleHandle, GetProcAddress, OpenProcess
  3. Den Pfad zur DLL im Prozess schreiben: VirtualAllocEx, WriteProcessMemory
  4. 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

  1. Einen Zielthread finden: CreateToolhelp32Snapshot, Thread32First, Thread32Next
  2. Den Thread öffnen: OpenThread
  3. Den Thread anhalten: SuspendThread
  4. Den Pfad zur bösartigen DLL im Opferprozess schreiben: VirtualAllocEx, WriteProcessMemory
  5. 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

  1. Einen neuen Prozess erstellen: CreateProcess
  2. Den Speicher entladen: ZwUnmapViewOfSection, NtUnmapViewOfSection
  3. Die bösartige Binärdatei im Prozessspeicher schreiben: VirtualAllocEc, WriteProcessMemory
  4. 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.