# Malware'da Kullanılan Yaygın API'ler
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
{% endhint %}
## Genel
### Ağ
| Ham Soketler | WinAPI Soketleri |
| -------------- | ----------------- |
| socket() | WSAStratup() |
| bind() | bind() |
| listen() | listen() |
| accept() | accept() |
| connect() | connect() |
| read()/recv() | recv() |
| write() | send() |
| shutdown() | WSACleanup() |
### Süreklilik
| Kayıt | Dosya | Servis |
| --------------- | ------------- | --------------------------- |
| RegCreateKeyEx()| GetTempPath() | OpenSCManager |
| RegOpenKeyEx() | CopyFile() | CreateService() |
| RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher()|
| RegDeleteKeyEx()| WriteFile() | |
| RegGetValue() | ReadFile() | |
### Şifreleme
| İsim |
| --------------------- |
| WinCrypt |
| CryptAcquireContext() |
| CryptGenKey() |
| CryptDeriveKey() |
| CryptDecrypt() |
| CryptReleaseContext() |
### Analiz/VM'ye Karşı
| Fonksiyon Adı | Assembly Talimatları |
| --------------------------------------------------------- | --------------------- |
| IsDebuggerPresent() | CPUID() |
| GetSystemInfo() | IN() |
| GlobalMemoryStatusEx() | |
| GetVersion() | |
| CreateToolhelp32Snapshot \[Bir sürecin çalışıp çalışmadığını kontrol et] | |
| CreateFileW/A \[Bir dosyanın var olup olmadığını kontrol et] | |
### Gizlilik
| İsim | |
| ------------------------ | -------------------------------------------------------------------------- |
| VirtualAlloc | Bellek ayırma (paketleyiciler) |
| VirtualProtect | Bellek izni değiştirme (paketleyici bir bölüme yürütme izni verme) |
| ReadProcessMemory | Dış süreçlere enjekte etme |
| WriteProcessMemoryA/W | Dış süreçlere enjekte etme |
| NtWriteVirtualMemory | |
| CreateRemoteThread | DLL/Süreç enjekte etme... |
| NtUnmapViewOfSection | |
| QueueUserAPC | |
| CreateProcessInternalA/W | |
### Yürütme
| Fonksiyon Adı |
| ---------------- |
| CreateProcessA/W |
| ShellExecute |
| WinExec |
| ResumeThread |
| NtResumeThread |
### Çeşitli
* GetAsyncKeyState() -- Tuş kaydı
* SetWindowsHookEx -- Tuş kaydı
* GetForeGroundWindow -- Çalışan pencere adını al (veya bir tarayıcıdan web sitesini)
* LoadLibrary() -- Kütüphane içe aktarma
* GetProcAddress() -- Kütüphane içe aktarma
* CreateToolhelp32Snapshot() -- Çalışan süreçleri listele
* GetDC() -- Ekran görüntüsü
* BitBlt() -- Ekran görüntüsü
* InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- İnternete erişim
* FindResource(), LoadResource(), LockResource() -- Yürütülebilir dosyanın kaynaklarına erişim
## Malware Teknikleri
### DLL Enjeksiyonu
Başka bir süreç içinde rastgele bir DLL yürütün
1. Kötü amaçlı DLL'yi enjekte etmek için süreci bulun: CreateToolhelp32Snapshot, Process32First, Process32Next
2. Süreci açın: GetModuleHandle, GetProcAddress, OpenProcess
3. Süreç içinde DLL'nin yolunu yazın: VirtualAllocEx, WriteProcessMemory
4. Kötü amaçlı DLL'yi yükleyecek bir iş parçacığı oluşturun: CreateRemoteThread, LoadLibrary
Kullanılacak diğer fonksiyonlar: NTCreateThreadEx, RtlCreateUserThread
### Yansıtıcı DLL Enjeksiyonu
Normal Windows API çağrılarını yapmadan kötü amaçlı bir DLL yükleyin.\
DLL, bir süreç içinde haritalanır, ithalat adreslerini çözer, yeniden konumlandırmaları düzeltir ve DllMain fonksiyonunu çağırır.
### İş Parçacığı Ele Geçirme
Bir süreçten bir iş parçacığı bulun ve onu kötü amaçlı bir DLL yüklemesi yapın
1. Hedef iş parçacığını bulun: CreateToolhelp32Snapshot, Thread32First, Thread32Next
2. İş parçacığını açın: OpenThread
3. İş parçacığını askıya alın: SuspendThread
4. Kurban sürecinin içine kötü amaçlı DLL'nin yolunu yazın: VirtualAllocEx, WriteProcessMemory
5. Kütüphaneyi yükleyen iş parçacığını devam ettirin: ResumeThread
### PE Enjeksiyonu
Taşınabilir Yürütme Enjeksiyonu: Yürütülebilir dosya, kurban sürecinin belleğine yazılacak ve oradan yürütülecektir.
### Süreç Boşaltma
Kötü amaçlı yazılım, sürecin belleğinden meşru kodu kaldıracak ve kötü amaçlı bir ikili dosya yükleyecektir.
1. Yeni bir süreç oluşturun: CreateProcess
2. Belleği boşaltın: ZwUnmapViewOfSection, NtUnmapViewOfSection
3. Süreç belleğine kötü amaçlı ikili dosyayı yazın: VirtualAllocEc, WriteProcessMemory
4. Giriş noktasını ayarlayın ve yürütün: SetThreadContext, ResumeThread
## Hooking
* **SSDT** (**Sistem Servis Tanımlayıcı Tablosu**), kullanıcı süreçlerinin bu fonksiyonları çağırabilmesi için çekirdek fonksiyonlarına (ntoskrnl.exe) veya GUI sürücüsüne (win32k.sys) işaret eder.
* Bir rootkit, bu işaretçileri kontrol ettiği adreslere değiştirebilir.
* **IRP** (**G/Ç İstek Paketleri**), bir bileşenden diğerine veri parçaları iletir. Çekirdek içinde hemen hemen her şey IRP'leri kullanır ve her cihaz nesnesinin kendi işlev tablosu vardır ve bu tabloya hook yapılabilir: DKOM (Doğrudan Çekirdek Nesne Manipülasyonu)
* **IAT** (**İthalat Adres Tablosu**), bağımlılıkları çözmek için yararlıdır. Bu tabloyu hooklamak, çağrılacak kodu ele geçirmek için mümkündür.
* **EAT** (**İhracat Adres Tablosu**) Hook'ları. Bu hook'lar **kullanıcı alanından** yapılabilir. Amaç, DLL'ler tarafından ihraç edilen fonksiyonları hooklamaktır.
* **Inline Hook'lar**: Bu türler elde edilmesi zor. Bu, fonksiyonların kendisinin kodunu değiştirmeyi içerir. Belki de bunun başına bir atlama koyarak.
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
{% endhint %}