Saldırı yapmak için öncelikle ilk adımlardan bir tanesi kendi altyapımızı oluşturmaktır.Cobalt Strike’ın altyapı (infrastructure) durumu bir yada daha fazla team server,redirectorler (yönlendiriciler bunlar belirttiğimiz CDN yada başka serverların bir portuna gelen isteği bizim team server’a yönlendirir.İlerde değineceğiz APT grup stili.) ve bizim redirectorlerimize yada team serverlarımıza point eden DNS kayıtlarıdır.

Öncelikle biz bir team server ayağa kaldırıp çalıştırdığımızda , yaptığımız ilk şey team servera bağlanıp hacklediğimiz sistemlerden gelen bağlantıları almaktır.İşte bunu sağlayan mekanizma Cobalt Strike’ın Listeners (Dinleyicileridir) . Kısaca zararlıyı hedefe atarız sonucu dinleriz.


Listener Management

Cobalt Strike da Listeners (Dinleyicileri) yönetmek için Cobalt Strike -> Listeners bölümüne gidilir


Önümüze çıkan tabloda listenerlar listenelecek.



Yeni bir listener eklemek için hemen aşağıda bulunan “Add” butonuna tıklanır ve önümüze “New Listener” isimli bir panel açılır ve burada biz yeni bir listener oluştururuz.



Görüldüğü üzere bu panelde istediğimiz payload/listener türlerini seçebiliriz ve unutulmamalıdır ki her bir payload farklı parametrelere sahiptir.Şuan ki görülen Beacon HTTP payload’ı için gösterilen parametrelerdir fakat siz TCP beaconunu kullanırsanız farklı parameterelerle karşılaşırsınız.


Şimdi biz ekledikten sonra eğer ki bu listeneri silmek istersek, kendi listenerimize tıkladıktan sonra “Remove” butonuna basarız ve sonucunda listenerimiz silinmiş olur yada editlemek istersek “Edit” butonuna basmamız yeterli olacaktır.Restart ile de listeneri tekrardan başlatmış oluruz.



Cobalt Strike Beacon Payload

Beacon, Cobalt Strike’ın payloadlarıdır.

Isimlendirme olarak Cobalt Strike’ın payloadlarına , Beacon deniyor.

Biz ise çoğunlukla listenerleri Beacon payloadları için configure edeceğiz.

Tabi siz bir hacker olarak , Beaconu network üzerinden çıkması için HTTP,HTTPS veya DNS üzerinden networkden çıkarabilirsiniz.

Ayrıca , Windows named piped yada TCP socketleri üzerinden peer-to-peer Beaconları kontrol ederek hangi bilgisayarların network’den çıkmasını izin vereceğinize de limit bırakabilirsiniz.



Beacon payloadı asynchronous ve interactive iletişim sağlar.Asynchronous olması düşük ve yavaş olduğu anlamına gelir.Yani şöyle düşünebiliriz , beacon team server’a gelecek ve hangi görevleri verdiysek onları alıp gerçekleştirecek ve çıktıyı bize dönecek örneğin bu;

  1. dosyaları indir
  2. keylogger çalıştır
  3. screenshot al gibi

sonra kendisi uyumaya gidecek , bu işleme sleep diyoruz yani uyuması diyoruz. 60 saniye versek 1 dk uyuyacak ve sonra internete çıkıp gelip bizden görevlerini alıp gerçekleştirecektir.

Interactive communication ise gerçek zamanlı (real-time) olarak gerçekleşir, sleep süresi 0 ‘dır.Beaconun güzel yanlarından bir tanesi diğer malware türlerinden farklı olarak sizlerin bu iletişimin yönünü malleable c2 language ile değiştirebilmenizdir.

Payload Güvenlik Özellikleri

Cobalt strike’ın güzel özelliklerinden bir tanesi de oluşturduğu beaconun sadece kendisinin üyesi olduğu yani oluşturulduğu team server’dan taskleri alıp onları işleyip geri kendi team serverina outputu dönmesidir.Tabi bunun için bazı önemli güvenlik adımları alınmıştır , bunlar nelerdir ?

Siz bir Beacon payload’ı oluşturduğunuz an, Cobalt strike team serverınıza özel public/private key çifti oluşturur.Team server’ın public keyi Beacon’un payload stage’ine embed edilir.Beacon , team server’a session metadata (random oluşturulmuş session key) göndermek için team server’ın public keyini kullanarak encrypt eder ve team server’a gönderir.

Beacon her zaman team server’dan task almadan önce “session metadata”yı göndermek zorundadır.Team server, taskları encrypt etmek ve beacondan gelen outputu decrypt etmek için her bir Beacon’un session key’ini kullanır.


Payload Staging

Hep payloaddan filan bahsediyoruz , bu payload karşı tarafa gidince ne tarz olaylar oluyor ve içeriği nasıl bu payload’ın ?

Payloadlar genellikle 2’ye bölünür , payload stage kısmı ve payload stager alanı.Peki bunlar nedir ?

Stager denen şey küçük bir program olarak bilinir ve targeta gittiğinde hackerla sadece bağlantı kurmaya yarayan kodlardır , stages ise bu bağlantı kurulduktan sonra stager tarafından indirilen asıl bağlantıyı sağlayan yani bize asıl sahneyi açan kodlardır ve bunları belleğe inject ederek çalıştırmaya başlar (Reflective DLL Injection) sonucunda bizde istediğimiz shell’i yada targete erişimi elde etmişiz diyebiliriz.Işte bu güzel olaya staging denir.

Peki bizim gördüğümüz bu beaconlarda olaylar nasıl oluyor örnek verecek olursak, tabi detayına hemen aşağıdaki konuda hepsine tek tek değiniyoruz.Ör : HTTP Beacon , HTTP Stager’a sahiptir.DNS Beacon ise DNS TXT record (kayıt) stager’ına sahiptir.Tabi bazı payloadlar stager’a sahip değildir.Stager’a sahip olmayan örnekleri olarka da : SMB Beacon , TCP Beacon gibi örnekler verebiliriz.Şimdi hepsine detaylı girelim aklımızda sorular kalmasın.