hacktricks/reversing/common-api-used-in-malware.md

175 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Kötü Amaçlı Yazılımlarda Kullanılan Ortak API'lar
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* Şirketinizi **HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* Özel [**NFT'lerin**](https://opensea.io/collection/the-peass-family) yer aldığı [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin
* **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**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR gönderin.
</details>
**Try Hard Güvenlik Grubu**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Genel
### Ağ
| Ham Soketler | WinAPI Soketler |
| ------------- | -------------- |
| 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şlem 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 işlevler: 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 onu kötü niyetli bir DLL yüklemeye zorla
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ü niyetli 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şlevlere (ntoskrnl.exe) 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 cihaz nesnesinin kendi işlev tablosu vardır ve bunlar 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 dışa aktarılan 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**
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
<details>
<summary><strong>Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* Şirketinizi **HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* Özel [**NFT'lerin**](https://opensea.io/collection/the-peass-family) yer aldığı [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin
* **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şturun** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına.