Common API used in Malware

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Try Hard Security Group


Ogólne

Sieciowe

Surowe GniazdkaWinAPI Gniazdka

socket()

WSAStratup()

bind()

bind()

listen()

listen()

accept()

accept()

connect()

connect()

read()/recv()

recv()

write()

send()

shutdown()

WSACleanup()

Trwałość

RejestrPlikUsługa

RegCreateKeyEx()

GetTempPath()

OpenSCManager

RegOpenKeyEx()

CopyFile()

CreateService()

RegSetValueEx()

CreateFile()

StartServiceCtrlDispatcher()

RegDeleteKeyEx()

WriteFile()

RegGetValue()

ReadFile()

Szyfrowanie

Nazwa

WinCrypt

CryptAcquireContext()

CryptGenKey()

CryptDeriveKey()

CryptDecrypt()

CryptReleaseContext()

Anty-Analiza/VM

Nazwa FunkcjiInstrukcje Assembly

IsDebuggerPresent()

CPUID()

GetSystemInfo()

IN()

GlobalMemoryStatusEx()

GetVersion()

CreateToolhelp32Snapshot [Sprawdź, czy proces jest uruchomiony]

CreateFileW/A [Sprawdź, czy plik istnieje]

Ukrywanie

Nazwa

VirtualAlloc

Alokuje pamięć (pakowacze)

VirtualProtect

Zmienia uprawnienia pamięci (pakowacz nadaje uprawnienia do wykonania sekcji)

ReadProcessMemory

Wstrzyknięcie do zewnętrznych procesów

WriteProcessMemoryA/W

Wstrzyknięcie do zewnętrznych procesów

NtWriteVirtualMemory

CreateRemoteThread

Wstrzyknięcie DLL/procesu...

NtUnmapViewOfSection

QueueUserAPC

CreateProcessInternalA/W

Wykonanie

Nazwa Funkcji

CreateProcessA/W

ShellExecute

WinExec

ResumeThread

NtResumeThread

Różne

  • GetAsyncKeyState() -- Rejestracja klawiszy

  • SetWindowsHookEx -- Rejestracja klawiszy

  • GetForeGroundWindow -- Pobierz nazwę uruchomionego okna (lub witrynę z przeglądarki)

  • LoadLibrary() -- Importuj bibliotekę

  • GetProcAddress() -- Importuj bibliotekę

  • CreateToolhelp32Snapshot() -- Lista uruchomionych procesów

  • GetDC() -- Zrzut ekranu

  • BitBlt() -- Zrzut ekranu

  • InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Dostęp do Internetu

  • FindResource(), LoadResource(), LockResource() -- Dostęp do zasobów wykonywalnych

Techniki Malware

Wstrzykiwanie DLL

Wykonaj dowolną DLL w innym procesie

  1. Zlokalizuj proces do wstrzyknięcia złośliwej DLL: CreateToolhelp32Snapshot, Process32First, Process32Next

  2. Otwórz proces: GetModuleHandle, GetProcAddress, OpenProcess

  3. Zapisz ścieżkę do DLL wewnątrz procesu: VirtualAllocEx, WriteProcessMemory

  4. Utwórz wątek w procesie, który załaduje złośliwą DLL: CreateRemoteThread, LoadLibrary

Inne funkcje do użycia: NTCreateThreadEx, RtlCreateUserThread

Wstrzykiwanie Refleksyjne DLL

Załaduj złośliwą DLL bez wywoływania normalnych wywołań API systemu Windows. DLL jest mapowana wewnątrz procesu, rozwiąże adresy importu, naprawi relokacje i wywoła funkcję DllMain.

Przechwytywanie Wątków

Znajdź wątek w procesie i spraw, aby załadował złośliwą DLL

  1. Znajdź docelowy wątek: CreateToolhelp32Snapshot, Thread32First, Thread32Next

  2. Otwórz wątek: OpenThread

  3. Wstrzymaj wątek: SuspendThread

  4. Zapisz ścieżkę do złośliwej DLL wewnątrz procesu ofiary: VirtualAllocEx, WriteProcessMemory

  5. Wznów wątek ładowania biblioteki: ResumeThread

Wstrzykiwanie PE

Wstrzyknięcie Wykonywalne: Wykonywalny plik zostanie zapisany w pamięci procesu ofiary i zostanie wykonany stamtąd.

Wstrzykiwanie Procesów

Złośliwe oprogramowanie odmapuje legalny kod z pamięci procesu i załaduje złośliwy plik binarny

  1. Utwórz nowy proces: CreateProcess

  2. Odmapuj pamięć: ZwUnmapViewOfSection, NtUnmapViewOfSection

  3. Zapisz złośliwy plik binarny w pamięci procesu: VirtualAllocEc, WriteProcessMemory

  4. Ustaw punkt wejścia i wykonaj: SetThreadContext, ResumeThread

Hooking

  • SSDT (System Service Descriptor Table) wskazuje na funkcje jądra (ntoskrnl.exe) lub sterownik GUI (win32k.sys), dzięki czemu procesy użytkownika mogą wywoływać te funkcje.

  • Rootkit może zmodyfikować te wskaźniki na adresy, które kontroluje

  • IRP (I/O Request Packets) przesyłają fragmenty danych z jednego komponentu do drugiego. Prawie wszystko w jądrze używa IRP, a każdy obiekt urządzenia ma własną tabelę funkcji, którą można przechwycić: DKOM (Bezpośrednie Modyfikacje Obiektów Jądra)

  • IAT (Import Address Table) jest przydatna do rozwiązywania zależności. Można przechwycić tę tabelę, aby przejąć kod, który zostanie wywołany.

  • EAT (Export Address Table) Hooks. Te haki można wykonać z userland. Celem jest przechwycenie funkcji eksportowanych przez biblioteki DLL.

  • Inline Hooks: Ten typ jest trudny do osiągnięcia. Polega to na modyfikowaniu kodu funkcji. Być może poprzez umieszczenie skoku na początku tego.

  • Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do HackTricks i HackTricks Cloud na githubie.

Last updated