# Yaygın Kötü Amaçlı Yazılımlarda Kullanılan API'lar
Sıfırdan Kahraman Olmaya AWS hackleme öğreninhtARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar gönderin.
**Try Hard Güvenlik Grubu**
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Genel
### Ağ
| Ham Soketler | WinAPI Soketleri |
| ------------- | -------------- |
| socket() | WSAStratup() |
| bind() | bind() |
| listen() | listen() |
| accept() | accept() |
| connect() | connect() |
| read()/recv() | recv() |
| write() | send() |
| shutdown() | WSACleanup() |
### Kalıcılık
| Kayıt Defteri | Dosya | Servis |
| ---------------- | ------------- | ---------------------------- |
| RegCreateKeyEx() | GetTempPath() | OpenSCManager |
| RegOpenKeyEx() | CopyFile() | CreateService() |
| RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
| RegDeleteKeyEx() | WriteFile() | |
| RegGetValue() | ReadFile() | |
### Şifreleme
| Adı |
| --------------------- |
| WinCrypt |
| CryptAcquireContext() |
| CryptGenKey() |
| CryptDeriveKey() |
| CryptDecrypt() |
| CryptReleaseContext() |
### Anti-Analiz/VM
| Fonksiyon Adı | Montaj Talimatları |
| --------------------------------------------------------- | --------------------- |
| IsDebuggerPresent() | CPUID() |
| GetSystemInfo() | IN() |
| GlobalMemoryStatusEx() | |
| GetVersion() | |
| CreateToolhelp32Snapshot \[Bir işlemin çalışıp çalışmadığını kontrol et] | |
| CreateFileW/A \[Bir dosyanın var olup olmadığını kontrol et] | |
### Gizlilik
| Adı | |
| ------------------------ | -------------------------------------------------------------------------- |
| VirtualAlloc | Bellek tahsisi (sıkıştırıcılar) |
| VirtualProtect | Bellek izni değiştirme (bir bölüme yürütme izni veren sıkıştırıcı) |
| ReadProcessMemory | Harici işlemlere enjeksiyon |
| WriteProcessMemoryA/W | Harici işlemlere enjeksiyon |
| NtWriteVirtualMemory | |
| CreateRemoteThread | DLL/İşlem enjeksiyonu... |
| 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 aktar
* GetProcAddress() -- Kütüphane içe aktar
* CreateToolhelp32Snapshot() -- Çalışan işlemleri 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
## Kötü Amaçlı Yazılım Teknikleri
### DLL Enjeksiyonu
Başka bir işlem içinde keyfi bir DLL'yi yürüt
1. Kötü niyetli DLL'yi enjekte etmek için işlemi bul: CreateToolhelp32Snapshot, Process32First, Process32Next
2. İşlemi aç: GetModuleHandle, GetProcAddress, OpenProcess
3. DLL'nin yolunu işlemin içine yaz: VirtualAllocEx, WriteProcessMemory
4. Kötü niyetli DLL'yi yükleyecek işlemde bir iş parçacığı oluştur: CreateRemoteThread, LoadLibrary
Kullanılacak diğer fonksiyonlar: NTCreateThreadEx, RtlCreateUserThread
### Yansımalı DLL Enjeksiyonu
Normal Windows API çağrılarını yapmadan kötü niyetli bir DLL yükle.\
DLL, bir işlem içine eşlenir, içe aktarma adreslerini çözer, yer değiştirmeleri düzeltir ve DllMain işlevini çağırır.
### İş Parçacığı Kaçırma
Bir işlemde bir iş parçacığını bul ve kötü niyetli bir DLL yüklemesini sağla
1. Hedef iş parçacığını bul: CreateToolhelp32Snapshot, Thread32First, Thread32Next
2. İş parçacığını aç: OpenThread
3. İş parçacığını askıya al: SuspendThread
4. Kötü niyetli DLL'nin yolunu kurban işlem içine yaz: VirtualAllocEx, WriteProcessMemory
5. Kütüphaneyi yükleyen iş parçacığını devam ettir: ResumeThread
### PE Enjeksiyonu
Taşınabilir Yürütme Enjeksiyonu: Yürütülebilir dosya, kurban işlemin belleğine yazılacak ve oradan yürütülecek.
### İşlem Boşaltma
Kötü amaçlı yazılım, işlemin belleğinden meşru kodu kaldırır ve kötü niyetli bir ikili yükler
1. Yeni bir işlem oluştur: CreateProcess
2. Belleği kaldır: ZwUnmapViewOfSection, NtUnmapViewOfSection
3. Kötü niyetli ikiliyi işlem belleğine yaz: VirtualAllocEc, WriteProcessMemory
4. Giriş noktasını ayarla ve yürüt: SetThreadContext, ResumeThread
## Hooking
* **SSDT** (**Sistem Hizmeti Tanım Tablosu**), kullanıcı işlemlerinin bu işlevleri (ntoskrnl.exe) veya GUI sürücüsü (win32k.sys) çağırmasını sağlayan çekirdek işlevlerine işaret eder.
* Bir rootkit, bu işaretçileri kendi kontrol ettiği adreslere değiştirebilir
* **IRP** (**Giriş/Çıkış İsteği Paketleri**), bir bileşenden diğerine veri parçaları iletir. Çekirdekte neredeyse her şey IRP'leri kullanır ve her aygıt nesnesinin kendi işlev tablosu vardır ve bu tablo kancalanabilir: DKOM (Doğrudan Çekirdek Nesne Manipülasyonu)
* **IAT** (**İçe Aktarma Adres Tablosu**), bağımlılıkları çözmek için kullanışlıdır. Bu tabloyu kancalamak, çağrılacak kodu ele geçirmeyi sağlar.
* **EAT** (**Dışa Aktarma Adres Tablosu**) Kancalar. Bu kancalar **kullanıcı alanından** yapılabilir. Amaç, DLL'ler tarafından ihraç edilen işlevleri kancalamaktır.
* **İç Kancalar**: Bu tür, zor bir hedeftir. Bu, işlevlerin kodunu değiştirerek yapılır. Belki de bunu başlangıcına bir sıçrama koyarak yapabilirsiniz.
**Try Hard Güvenlik Grubu**
{% embed url="https://discord.gg/tryhardsecurity" %}
Sıfırdan Kahraman Olmaya AWS hackleme öğreninhtARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini alın**](https://peass.creator-spring.com)
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi göndererek PR'ler oluşturarak paylaşın** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.