# Common API used in Malware {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## 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 | Alokacija memorije (paketari) | | VirtualProtect | Promena dozvola memorije (paketari daju dozvolu za izvršavanje sekciji) | | ReadProcessMemory | Injekcija u spoljne procese | | WriteProcessMemoryA/W | Injekcija u spoljne procese | | NtWriteVirtualMemory | | | CreateRemoteThread | Injekcija DLL/procesa... | | NtUnmapViewOfSection | | | QueueUserAPC | | | CreateProcessInternalA/W | | ### Execution | Function Name | | ---------------- | | CreateProcessA/W | | ShellExecute | | WinExec | | ResumeThread | | NtResumeThread | ### Miscellaneous * GetAsyncKeyState() -- Snimanje tastera * SetWindowsHookEx -- Snimanje tastera * GetForeGroundWindow -- Dobijanje imena aktivnog prozora (ili veb stranice iz pretraživača) * LoadLibrary() -- Uvoz biblioteke * GetProcAddress() -- Uvoz biblioteke * CreateToolhelp32Snapshot() -- Lista aktivnih procesa * GetDC() -- Slikanje ekrana * BitBlt() -- Slikanje ekrana * InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Pristup internetu * FindResource(), LoadResource(), LockResource() -- Pristup resursima izvršnog fajla ## Malware Techniques ### DLL Injection Izvršavanje proizvoljnog DLL-a unutar drugog procesa 1. Pronađite proces u koji ćete injektovati zloćudni DLL: CreateToolhelp32Snapshot, Process32First, Process32Next 2. Otvorite proces: GetModuleHandle, GetProcAddress, OpenProcess 3. Napišite putanju do DLL-a unutar procesa: VirtualAllocEx, WriteProcessMemory 4. Kreirajte nit u procesu koja će učitati zloćudni DLL: CreateRemoteThread, LoadLibrary Ostale funkcije za korišćenje: NTCreateThreadEx, RtlCreateUserThread ### Reflective DLL Injection Učitajte zloćudni DLL bez pozivanja normalnih Windows API poziva.\ DLL se mapira unutar procesa, rešava adrese uvoza, ispravlja relokacije i poziva DllMain funkciju. ### Thread Hijacking Pronađite nit iz procesa i naterajte je da učita zloćudni DLL 1. Pronađite ciljnu nit: CreateToolhelp32Snapshot, Thread32First, Thread32Next 2. Otvorite nit: OpenThread 3. Suspendujte nit: SuspendThread 4. Napišite putanju do zloćudnog DLL-a unutar procesa žrtve: VirtualAllocEx, WriteProcessMemory 5. Nastavite nit koja učitava biblioteku: ResumeThread ### PE Injection Injekcija prenosivog izvršenja: Izvršni fajl će biti napisan u memoriju procesa žrtve i biće izvršen odatle. ### Process Hollowing Zloćudni softver će ukloniti legitimni kod iz memorije procesa i učitati zloćudni binarni fajl 1. Kreirajte novi proces: CreateProcess 2. Uklonite mapiranje memorije: ZwUnmapViewOfSection, NtUnmapViewOfSection 3. Napišite zloćudni binarni fajl u memoriju procesa: VirtualAllocEc, WriteProcessMemory 4. Postavite ulaznu tačku i izvršite: SetThreadContext, ResumeThread ## Hooking * **SSDT** (**Tabela deskriptora sistemskih usluga**) pokazuje na kernel funkcije (ntoskrnl.exe) ili GUI drajver (win32k.sys) kako bi korisnički procesi mogli da pozivaju te funkcije. * Rootkit može modifikovati ove pokazivače na adrese koje kontroliše * **IRP** (**Paketi zahteva za ulaz/izlaz**) prenose delove podataka od jednog komponente do druge. Gotovo sve u kernelu koristi IRP-ove i svaki objekat uređaja ima svoju funkcijsku tabelu koja može biti "hook-ovana": DKOM (Direktna manipulacija kernel objektima) * **IAT** (**Tabela adresa uvoza**) je korisna za rešavanje zavisnosti. Moguće je "hook-ovati" ovu tabelu kako bi se preuzela kontrola nad kodom koji će biti pozvan. * **EAT** (**Tabela adresa izvoza**) Hook-ovi. Ovi hook-ovi mogu biti napravljeni iz **userland**. Cilj je "hook-ovati" izvođene funkcije od strane DLL-ova. * **Inline Hooks**: Ova vrsta je teška za postizanje. Ovo uključuje modifikaciju koda samih funkcija. Možda stavljanjem skoka na početak ovih. {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}