Arkadaşlar merhaba, c++ ile herhangi bir windows syscall'a hook atıp kendime yönlendireceğim. Sizce nasıl yapabilirim ?
Follow along with the video below to see how to install our site as a web app on your home screen.
Not: This feature may not be available in some browsers.
Aslında şöyle yapacağım, Görev yöneticisinin çağırdığı apiyi kendime yönlendirip programımın ismini silip geri return ettireceğim. Böylece görev yöneticisinden saklanmış olucak. Biraz karışık işlerAPI çağrısını değiştirmekse kullanıcı modunda user‑mode API hooking ile yapılabiliyor diye biliyorum.
MinHook veya Microsoft Detours ile MessageBoxA, CreateFile gibi çağrıları ele geçirebiliyorsun.
Kısacası user-mode bir rootkit yapacaksın, anladım. Syscall'ları hook'lamana gerek yok bunun için, prosesleri gezen Nt fonksiyonunu MinHook, Detours gibi kitaplıklarla hook'lasan da yeterli olur ama illa syscall'u hook'lamak istiyorsan instrumentation callback'leri kullanabilirsinAslında şöyle yapacağım, Görev yöneticisinin çağırdığı apiyi kendime yönlendirip programımın ismini silip geri return ettireceğim. Böylece görev yöneticisinden saklanmış olucak. Biraz karışık işler![]()
Windows’ta C++ ile bir syscall’ı kendi fonksiyonuna yönlendirmek için iki ana yaklaşım vardır: user‑mode ve kernel‑mode. User‑mode’da genelde ntdll içindeki ilgili fonksiyonu inline‑hook (fonksiyon başına JMP koyma) veya IAT (Import Address Table) değişikliği ile yakalarsın; bu senaryoda MinHook/Detours gibi kütüphaneler en pratik ve güvenli seçeneklerdir. Ayrıca DLL injection + proxy DLL, vtable patching (C++ nesnelerinin vtable’ını değiştirme), hotpatch/trampoline, veya Frida/DynamoRIO/Pin gibi runtime instrumentation araçlarıyla dinamik intercept yapabilirsin. Kernel‑mode ise SSDT veya inline kernel hook gibi yöntemlerle tüm süreçleri etkileyebilir; ancak modern Windows’ta PatchGuard, sürücü imzalama ve stabilite riskleri (BSOD vb.) nedeniyle dikkatli olunmalı ve genellikle tavsiye edilmez. Diğer alternatifler arasında proxy service/wrapper, API set/API redirection, ntdll içindeki syscall stub’larını patchleme, Windows Debug API veya donanımsal breakpoint/single‑step ile müdahale, ETW/Tracing ile pasif gözlem, ve filtreleme amaçlı filter driver/minifilter/WFP bulunur. Her yöntemin erişim gereksinimleri, tespit riski ve kararlılık etkisi farklıdır; prototip ve gözlem için user‑mode araçları (MinHook, Frida vb.) genellikle daha hızlı ve daha az risklidir.Arkadaşlar merhaba, c++ ile herhangi bir windows syscall'a hook atıp kendime yönlendireceğim. Sizce nasıl yapabilirim ?
Detours ve syscallı direkt trampoline hook veya başka bir teknikle hooklamanın arasında fark var mı ? Yani antivirüs kısıtlayabilir mi ?Kısacası user-mode bir rootkit yapacaksın, anladım. Syscall'ları hook'lamana gerek yok bunun için, prosesleri gezen Nt fonksiyonunu MinHook, Detours gibi kitaplıklarla hook'lasan da yeterli olur ama illa syscall'u hook'lamak istiyorsan instrumentation callback'leri kullanabilirsin
Detours ve syscallı direkt trampoline hook veya başka bir teknikle hooklamanın arasında fark var mı ? Yani antivirüs kısıtlayabilir mi ?
Şöyle söyleyeyim, red team ve gerçek saldırı senaryolarını öğreniyorum, kullandığım dil c++, rat oluşturma temellerini çözmeye çalışıyorum, çok fonksiyonlu bir rat tasarlayacağım. Keylogger, ntdll hook temizleme, rdp stealer, dosya indirme/yükleme, dosya gizleme, autorun özelliği, antivirus detection özelliği koyacağım.Sen bana niçin bunu yapmak istediğini söyle. Ben sana bu yapmak istediğinin getirdiği dezavantajlarını ve varsa daha iyi alternatifini önereyim
Şöyle söyleyeyim, red team ve gerçek saldırı senaryolarını öğreniyorum, kullandığım dil c++, rat oluşturma temellerini çözmeye çalışıyorum, çok fonksiyonlu bir rat tasarlayacağım. Keylogger, ntdll hook temizleme, rdp stealer, dosya indirme/yükleme, dosya gizleme, autorun özelliği, antivirus detection özelliği koyacağım.
Teşekkür ederim. Bayağı okudum güzel yazmışsın fakat bu antivirüsleri atlatırken ntdlli fresh olarak yapıştırsak av'nin hook atmasını bi nebze engelleyebiliyor muyuz ? Yoksa bu teknik antivirüsün dediğin gibi bellek alanına mı giriyor ?Şimdi eğer amacın kendi zararlı prosesini hooking suretiyle antivirüslerden gizlemekse bunu yapamazsın çünkü antivirüsler PPL konseptiyle çalışıyor, onların adres alanına kod enjekte edemezsin. Lakin eğer antivirüs atlatma (evasion) tekniklerini implement etmekle ilgileniyorsan forumda böyle bir mesajım var, inceleyebilirsin: crypteri olan varmı ?
Red teaming, blue teaming hakkında bilgim var. Dilersen başka soru da sorabilirsin
Detoursu şimdi kullandım gerçekten çok pratik ve hızlı, iyi kütüphaneymiş.Şimdi eğer amacın kendi zararlı prosesini hooking suretiyle antivirüslerden gizlemekse bunu yapamazsın çünkü antivirüsler PPL konseptiyle çalışıyor, onların adres alanına kod enjekte edemezsin. Lakin eğer antivirüs atlatma (evasion) tekniklerini implement etmekle ilgileniyorsan forumda böyle bir mesajım var, inceleyebilirsin: crypteri olan varmı ?
Red teaming, blue teaming hakkında bilgim var. Dilersen başka soru da sorabilirsin
Teşekkür ederim. Bayağı okudum güzel yazmışsın fakat bu antivirüsleri atlatırken ntdlli fresh olarak yapıştırsak av'nin hook atmasını bi nebze engelleyebiliyor muyuz ? Yoksa bu teknik antivirüsün dediğin gibi bellek alanına mı giriyor ?
Userland yaparken genelde CreateFile(), VirtualAlloc(), CreateThread(), OpenProcess() gibi apileri kullanıyorum C++ da fakat ntdll'den bir yapı çekerken calling convention ile bir api'nin pointerlarını yani template'ni çekip, tek tek yerleştiriyorum. Bir fonksiyonu userland'dan kernel alanına yerleştirmenin detect edilme açısından bir faydası var mı ?Evet, fresh dll'i belleğe haritalayarak user-mode tarafındaki hook'ları kaldırabilirsin çünkü hook'lanan DLL zaten senin kendi sanal adres alanında duruyor, okuma/yazma iznin var
Userland yaparken genelde CreateFile(), VirtualAlloc(), CreateThread(), OpenProcess() gibi apileri kullanıyorum C++ da fakat ntdll'den bir yapı çekerken calling convention ile bir api'nin pointerlarını yani template'ni çekip, tek tek yerleştiriyorum. Bir fonksiyonu userland'dan kernel alanına yerleştirmenin detect edilme açısından bir faydası var mı ?
Yani mesela CreateFile() normal api iken ben wintern.h kütüphanesinden gidipUserland'den kernel alanına yerleştirmekten kasıt nedir
Yani mesela CreateFile() normal api iken ben wintern.h kütüphanesinden gidip
__kernel_entry NTSTATUS NtCreateFile(
[out] PHANDLE FileHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[in, optional] PLARGE_INTEGER AllocationSize,
[in] ULONG FileAttributes,
[in] ULONG ShareAccess,
[in] ULONG CreateDisposition,
[in] ULONG CreateOptions,
[in] PVOID EaBuffer,
[in] ULONG EaLength
);
NtCreateFile yapısını kullanıyorum. Bu iki yapı kullanımı arasında antivirüs açısından detect edilmeyi düşürme gibi birşey olabilir mi ?