TERSİNE MÜHENDİSLİK11 dk okuma02 Ağustos 2026
Ghidra ile Statik Zararlı Yazılım Analizi: Bir Ransomware İncelemesi
BÜ
Büşra A.●
Tersine Mühendislik
// YÖNETİCİ ÖZETİ & TEHLİKE DEĞERLENDİRMESİUPX ile paketlenmiş bir fidye yazılımının açılması, API hashing mekanizmasının çözülmesi ve komuta kontrol (C2) adreslerinin tespiti.
1. İlk Triyaj ve UPX Unpacking
Analizimize aldığımız numune PE32 executable dosyasının entropy analizi 7.85 seviyesindedir. Bu değer dosyanın sıkıştırılmış veya şifrelenmiş olduğunu gösterir. `Detect It Easy (DiE)` ile incelendiğinde `UPX 4.2x` tespit edilmiş ve temiz bir sandbox ortamında `upx -d` parametresi ile orijinal PE yapısı kurtarılmıştır.
2. Ghidra Decompiler ve Dinamik API Çözümleme (API Hashing)
Zararlı yazılım Import Address Table (IAT) gizlemek amacıyla `LoadLibraryA` ve `GetProcAddress` fonksiyonlarını statik olarak çağırmamakta; bunun yerine ROR13 algoritması ile hash'lenmiş API isimlerini çalışma zamanında PEB (Process Environment Block) gezerek eşleştirmektedir.
Ghidra Decompile: ResolveApiHash()c
// Ghidra decompiler çıktısı: ROR13 API Resolver
FARPROC ResolveApiHash(DWORD targetHash) {
PPEB pPeb = NtCurrentTeb()->ProcessEnvironmentBlock;
PLDR_DATA_TABLE_ENTRY pEntry = (PLDR_DATA_TABLE_ENTRY)pPeb->Ldr->InMemoryOrderModuleList.Flink;
// InMemoryOrderList üzerinden ntdll ve kernel32 tespiti
while (pEntry != NULL) {
PIMAGE_EXPORT_DIRECTORY pExport = GetExportDirectory(pEntry->DllBase);
DWORD* pNames = (DWORD*)((LPBYTE)pEntry->DllBase + pExport->AddressOfNames);
for (DWORD i = 0; i < pExport->NumberOfNames; i++) {
char* funcName = (char*)((LPBYTE)pEntry->DllBase + pNames[i]);
if (ComputeRor13(funcName) == targetHash) {
return GetProcAddressByOrdinal(pEntry->DllBase, pExport, i);
}
}
pEntry = (PLDR_DATA_TABLE_ENTRY)pEntry->InMemoryOrderLinks.Flink;
}
return NULL;
}3. IoC (Indicators of Compromise) ve YARA Kuralı
Zararlının C2 adresi ve şifreleme algoritması (AES-256-CBC) netleştikten sonra ağ genelinde tespit için özel YARA kuralı hazırlanmıştır.
rules/ransom_sample.yaryara
rule Ransom_Ulusiber_Sample_Detection {
meta:
author = "Busra A. - Ulusiber Toplulugu"
description = "Detects custom ransomware variant with ROR13 hashing"
date = "2026-08-02"
strings:
$hashing_loop = { c1 cf 0d 03 f8 } // ror edi, 0xd; add edi, eax
$c2_beacon = "https://internal-telemetry-gateway.cc/gate.php"
$mutex_val = "Global\\UluSiber_Threat_Shield_Lock"
condition:
uint16(0) == 0x5A4D and all of them
}Önemli Çıkarımlar ve Savunma Tavsiyeleri
- [1]API Hashing mekanizmaları Ghidra Python / Ghidra headless scriptleri ile otomatik de-obfuscate edilebilir.
- [2]Zararlı yazılım analizlerinde statik analizi doğrulamak için sandbox ve sahte ağ (INetSim) araçlarından yararlanın.
- [3]Tespit edilen C2 ve hash değerlerini YARA ve Sigma kurallarına dönüştürerek toplulukla paylaşın.