Mitre Caldera ile Tehdit Simülasyonu

Temeli bir ATT&CK  projesine dayanan Caldera; bir saldırganın teknik, taktik ve saldırı modellerini kullanarak operasyon sırasında planlar üretir. Bu özellikler, Caldera’nın değişken davranışları kullanarak bir dizi sistem üzerinde çalışmasına izin verir. Bu da saldırganların işlemleri nasıl gerçekleştirdiğini daha önceden “tanımlanmış bir dizi olayları takip eden sistemlerden” daha iyi temsil eder.

Caldera’nın çalışma mantığı, Caldera’nın yüklü olduğu sunucudan, ilgili agent’a atak senaryoları gönderilmesi ve senaryolar kapsamında yapılan atakların başarılı olup olmadıklarına dair raporların oluşturulması üzerine kurulu.

caldera mitre

 

Server:

  • Planlayıcı (Planner): Caldera’nın eylemleri seçmesini sağlayan ana engine(motor)
  • Saldırgan Modeli (Attacker Model): ATT & CK dayalı mevcut eylemler
  • Dünya Modeli (World Model): Çevrenin Modeli
  • Execution Engine (Çalıştırma Motoru): Tekniklerin uygulanması ve veritabanının güncellenmesini sağlar.
  • Veritabanı (Database): Çevreyi öğrendikçe verileri buraya kaydeder.
  • HTTP Sunucusu

 

(Client) Uç noktalar:

  • Agent (Ajan): İletişim için kullanılan uç nokta sistemlerinde istemci
  • RAT: Operasyon sırasında saldırgan davranışlarını taklit etmek için kullanılan uzaktan erişim aracı

 

Mitre Caldera Kurulumu Nasıl Yapılır?

Caldera’nın kurulumu oldukça basittir, https://github.com/mitre/caldera adresinden indirilerek sırasıyla:

git clone https://github.com/mitre/caldera.git --recursive --branch x.x.x
pip install -r requirements.txt
python server.py --insecure

Komutları kullanılarak kurulumu yapılabilir. Burada x.x.x ile gösterilen yere versiyon/release numarası yazılmalıdır. Python server.py başlatma komutundan sonra “All system ready” çıktısını aldıysak98 eğer her şey yolunda demektir ve artık caldera’ya ulaşabiliriz.

caldera kurulumu

http://localhost:8888 adresine gidersek giriş ekranımız bizi burada karşılayacaktır. Kullancı adı olarak red-blue, password olarak ise admin ile giriş yapabiliriz

 

Mitre Caldera Server Ayarları

  • Konfigürasyon dosyasının yolu: conf/default.yml 

YAML yapılandırma dosyası, CALDERA’nın önyükleme için gerekli tüm yapılandırmasını içerir. Örnek bir yapılandırma dosyası aşağıdadır:

caldera ayarları

 

  • Port: CALDERA’nın hizmet verdiği port numarası.
  • Plugins: Plugins yüklü tüm eklentilerin listesi. CALDERA çalışırken kullanılabilir olması için bir eklentinin bu listede olması gerekir. Bu listeye bir eklenti eklemek, CALDERA açıldığında eklentinin hook.py dosyasının çağrılmasına neden olur.
  • Users: CALDERA’ya erişmek istediğiniz tüm hesapların kullanıcı adı / şifre bilgileri. Kullancılar red/blue gruplarında olabilir.
  • Reports_dir: Sunucu kapatıldığında tüm raporların kaydedileceği dizin.
  • app.contact.http: HTTP aracılarının (Sandcat gibi) bağlanmasını istediğiniz http konumu.
  • app.contact.tcp: reverse-shell aracıların (Manx gibi) bağlanmasını istediğiniz TCP soketi.
  • app.contact.udp: UDP aracılarının (Manx gibi) bağlanmasını istediğiniz UDP soketi.
  • app.contact.websocket: websocket bağlantı noktası aracıları.

 

Plugin Library

Sandcat (54ndc47): Bir başka deyişle54ndc47 olarak bilinen Sandcat eklentisi, CALDERA’nın birlikte gönderdiği varsayılan ajandır. 54ndc47, platformlar arası uyumluluk için GoLang’da yazılmıştır. 54ndc47 aracıları, 8888 numaralı bağlantı noktasında CALDERA’ya ağ bağlantısı ister.

  1. Deploy: 54ndc47’yi dağıtmak için, ajan  herhangi bir işletim sisteminde çalıştırmanıza olanak tanıyan yerleşik dağıtım komutlarından birini kullanın. Bu komutların her biri derlenmiş 54ndc47 çalıştırılabilir dosyasını CALDERA’dan indirir ve hemen çalıştırır. Sandcat eklentisi sekmesinde komutları bulabilirsiniz.
  2. Seçenekler: Bir 54ndc47 ajan dağıtırken, yürütülebilir dosyayı başlattığınızda kullanabileceğiniz isteğe bağlı parametreler vardır:
  3. Sunucu: Bu, CALDERA’nın bulunduğu yerdir. ajan bu ana bilgisayara/bağlantı noktasına bağlantısı olmalıdır. 
  4. Grup: Bu, aracı başlatıldığında katılmasını istediğiniz grup adıdır. Grubun var olması gerekmez. Hiçbir grup geçirilmezse, varsayılan my_group grubu kullanılır.
  5. v: Sandcat’in ayrıntılı çıktısını görmek için -v kullanın. Aksi takdirde, sandcat sessizce çalışır.

 

Mock: Mock eklentisi, CALDERA’ya bir dizi taklit aracı ekler ve sunucunuza başka hiçbir bilgisayarı takmadan tam işlemleri gerçekleştirmenizi sağlar. Bu ajanlar conf/agents.yml dosyasının içinde oluşturulur. Düzenlenebilirler ve istediğiniz kadar oluşturabilirsiniz. Örnek bir ajan şöyle görünür:

mock

 

Terminal: Terminal eklentisi, CALDERA’ya Manx adı verilen TCP tabanlı bir ajanla birlikte reverse-shell ekler. Bu eklenti yüklendiğinde, hedef ana makinelere reverse-shell bırakmanıza ve ana makinelerle manuel olarak etkileşime girmenize olanak tanıyan yeni bir GUI sayfasına erişirsiniz.

Compass: TTPs’leri keşfetmek için görselleştirmeler oluşturun. 

Caltack: Eklentisi herkese açık MITRE ATT&CK™ framework web sitesini CALDERA’ya ekler. Bu, bir operatörün MITRE ATT&CK™ framework matrisine başvurmak için İnternet’e erişemediği CALDERA dağıtımları için kullanışlıdır.

SSL: Caldera’ya HTTPS ekler

Human: İnsan eklentisi, Caldera’nın red-team eylemlerini gizlemenin bir yolu olarak bir hedef sistem üzerinde kullanıcı eylemleri gerçekleştirecek “İnsanlar” oluşturmanıza izin verir.

Training: Bu eklenti, kullanıcının CALDERA kullanma yeteneğini ölçen bir “Kullanıcı Sertifikası” kazanmasına olanak tanır.

Access: Bu eklenti, veritabanından herhangi bir yeteneğe sahip herhangi bir ajana  görev vermenizi sağlar. Ayrıca, ilk erişim saldırıları gerçekleştirmenizi sağlar.

Atomic: Atomic Red Team, Mitre ATT&CK Framework’e uygun olarak geliştirilmiş saldırı testleri yapmanıza olanak sağlayan, açık kaynak geliştirilen bir yazılımdır. Her bir test, belirli bir taktiği uygulamak için tasarlanmıştır. Atomic Red Team bu sayede mavi takım üyelerinin savunmalarını, geniş bir yelpazeye yayılan saldırılara karşı derhal test etmeye başlaması için oldukça uygun bir ortam sağlamaktadır.

 

Caldera Ajanları Nasıl Oluşturulur?

caldera ajan

Sisteme girdikten sonra bizi karşılayan ekran burası. İlk olarak burada bir sisteme ajan eklemek için sol üst tarafta bulunan campaigns kısmı altında agent seçiyoruz.

Burada eklediğimiz aktif ajanların bir listesi bulunmakta. Yeni bir ajan eklemek için “Click here to deploy an agent” butonuna tıklamamız gerekiyor. Burada bize 3 tane seçenek sunulmakta. İlki bunlardan sandcat eklentisidir. Bir diğeri reverse-shell bağlantısı kullanarak agent ile haberleşilmesi. Tercihen daha stabil çalışacağını düşündüğümüz sandcat ile devam ediyoruz.agent secimi

Burada eklediğimiz aktif ajanların bir listesi bulunmakta. Yeni bir ajan eklemek için “Click here to deploy an agent” butonuna tıklamamız gerekiyor. Burada bize 3 tane seçenek sunulmakta. İlki bunlardan sandcat eklentisidir. Bir diğeri reverse-shell bağlantısı kullanarak agent ile haberleşilmesi. Tercihen daha stabil çalışacağını düşündüğümüz sandcat ile devam ediyoruz.

caldera ajan tanımlama

Sandcat seçildikten sonra agent kurulumu yapmak istediğimiz client veya server da hangi işletim sistemi çalışıyorsa burada ona uygun bir komut satırı kodu’nu alıp, karşı bilgisayar üzerinde çalıştırmamız yeterli olacaktır.

mitre

Bir Windows işletim sistemine agent kurulu yapmak için aşağıdaki ekran görüntüsünde görülen kodu alıp Windows sistemde powershell üzerinde çalıştırmamız yeterli olacaktır.

caldera windows

windows mitre caldera

 

Plugins

Bu kısımda yukarıda anlatılan eklentilerin pratikte nasıl çalıştıklarına göz atacağız.

Access

access plugin

Burada Access de bahsettiğimiz ajanlar sayesinde sistem üzerinde direkt olarak kullanabileceğimiz araçlar bulunmakta. İlk olarak sol tarafta hangi sistem de araçları çalıştırmak istiyorsak onu seçiyoruz. Onun altında taktik, teknik ve en son olarak da abilities’i seçip çalıştırabiliyoruz. Örnek olarak bir araç çalıştırmış sistemin çıktıları aşağıdadır. Tabi ki buradan çıkan sonuçlar sizin ajanınızın sisteme hangi yetkilerle bağlanmış olduğu da önemlidir.

mitre access

Ajanlar sayesinde çalıştırmış olduğumuz komutların çıktıları success/fail olarak ayrılıyor. Başarılı bir şekilde çalışan komutların çıktısını ilgili işlemin altında bulunan *’a tıklayarak görebiliriz. Örnek birkaç çıktı aşağıdaki gibidir.

agents

wmic

 

Gameboard

GameBoard eklentisi hem kırmızı hem de mavi takım işlemlerini izlemenizi sağlar. Oyun her iki taraf için puanları takip eder ve hangisinin “kazanacağını” belirler. Yani kısaca red team aktivitelerinin ne kadarı blue team ekipleri yakalayabiliyor ve ona göre aksiyon alabiliyorlar bunları gösteren bir eklenti.

gameboard

mitre caldera plugins

Sol taraftan daha sonra değineceğimiz operations üzerinden gerçekleştireceğiniz operasyonları ekleyerek burada hem red hem de blue ekipleri için bir puanlama çıkartabiliyorsunuz.

 

Manx

Manx aracı GoLang ile yazılmış, TCP iletişim noktası üzerinden sunuya bağlanır. Bu raw TCP soket bağlantısı, Manx’in ana bilgisayar ve sunucu arasında kalıcı bir bağlantı kurmasını sağlar. Manx ile birlikte, bir ajan üzerinden local Shell oluşturmanıza izin veren, terminal olarak adlandırılan bir reverse-shell yönetim aracıdır. Burayı kullanabilmek için ajan’ı ilgili sisteme manx kullanarak kurmanız gerekiyor.

manx plugin

 

Compass: TTPs’leri keşfetmek için görselleştirmeler oluşturun.  Oluşturmuş olduğunuz görselleştirmeyi kaydedebilir veya başka bir dosya buraya yükleyebilirsiniz.

compass

 

Training

Burası Caldera becerilerinizi ölçebileceğiniz bir alan. Aşağıdaki resimde sağ tarafta sorular bulunmaktadır. CTF benzeri bir yapıda bütün soruları çözmeye çalışıyorsunuz. En son bittiğinde size bunu bildiriyor.

caldera training

 

Advanced

Gelişmiş ayarlara ilk girdiğimizde bizi karşılayan ilk şey konfigürasyon oluyor. Yukarı kurulumdan sonra yine konfigürasyon dosyasından bahsetmiştim, o dosyayı değil de bir ayar yapmanız gerektiği zaman caldera üzerinden de bunları gerçekleştirebilirsiniz.

advanced

Onun altında yer alan kısım ise Plugin’ler. Konfigürasyon dosyasında yine istediğimiz pluginleri oraya yazmamız gerekiyordu burada ona gerek yok sağ tarafların da yer alan enable butonuna tıklayarak bu plugin’leri aktif hale getirebilir ve kullanabilirsiniz.

plugin

Daha sonra pluginlerin altında yer alan kısım Obfuscators kısmı bulunmakta. Burada kullandığınız komutları ajan aracılığı ile hangi obfuscate işlemlerine tabi tutabilirsiniz onların yer aldığı bölüm.

Obfuscators

Bir sonraki ayar olan Contacts kısmı bulunmakta. Burada kurmuş olduğunuz ajanlar nerden bağlantı kuruyorsa sunucu ile (http,udp,tcp, vb.) bu trafiğin bir kaydı tutulur. Yani siz bir makinede neler çalıştırdınız ne zaman çalıştırdınız, komut satırı çıktılarına kadar burada yer alır. Sağ tarafta rapor indir diyerek bağlantıları inceleyebilirsiniz. Örnek bir raporda aşağıdaki gibidir.

Contacts

 

Operations 

Bu kısım kendinize red/blue ekipleri için basit bir operasyon yapmak olarak düşünebiliriz.  Add/View olmak üzere iki kısımdan oluşuyor, add kısımın da yeni bir operasyon ekleyebilir, view da ise bu eklediğiniz ve çalıştırdığınız işlerim daha sonra sonuçlarını görebilirsiniz. Burada yapılan işlemlerİ Gameboard içerisinde ne kadarının engellendiğini veya blue ekibin kaç tane işleme çözüm bulduğunu skorlar ile görebilirsiniz.

operations

Yukarıda bulunan ekran görüntüsün de ilk olarak bir isim vermemiz gerekiyor bu işleme. Daha sonra hangi kullanıcılar üzerinde biz bu testleri gerçekleştirmek istiyoruz onu seçiyoruz. Adversaries kısmında profiller bulunmakta, tehdit aktörleri için kendi profillerimizi oluşturabiliriz. Profil kısmından istersek her hangi birini seçebiliriz.Daha sonra belirli bir süre çalışıp kapansın mı yoksa biz müdahale edene kadar çalışsın mı onu belirtiyoruz. Stealth kısmında yukarı da gördüğümüz obfuscations metotlarından birini seçebiliriz Schedule kısmı ise işlemin ileri bir tarihe programlanması kısmıdır.

Gerekli ayarlamaları yapıp start dedikten sonra bizi aşağıdaki ekran karşılıyor. Bura da üst tarafta bulunan bir start/stop gibi işlerin yer aldığı butonlar bulunmakta altında bir progress bar bulunmakta, onu altında farklı renklerde uyarı yazıları yer alıyor. Bunlar verilen işlemlerin sonuçlarını simgeliyor.

Sağ alt tarafta “+potential links” kısmı bulunmakta. Yapmak istediğimiz işlemleri buradan seçeceğiz.

potential links

Burayı açtıktan sonra üst tarafta 3 tane alan bulunmakta, bunlar ilki hangi ajanın kurulu olduğu sistemde biz bu testleri gerçekleştirmek istiyoruz onu seçiyoruz daha sonra taktik ve teknikleri belirtiyoruz ona göre karşımıza bir liste çıkmakta.  Yine Mitre Att&ck framework içerisinde bulunan teknikler ve taktikler burada yer almaktadır detaylı açıklamaları ile. Hangilerini kullanmak istiyorsanız sağ taraflarında yeşil buton bulunur add diyerek onları test listesine ekleyebilirsiniz.

Gerekli teknik,taktikleri ekledikten sonra bunlar otomatik oarak karşı sistem üzerinde çalışmaya başlayacaklardır ve sonuç olarak başarılı bir şekilde görevlerini yerine getirdiklerine her satırın başında yeşil bir halka belirecektir. Sonuç başarılı olmasaydı fail olsaydı eğer kırmızı olacaktı. İşte burada sizin yaptığınız otomatik işlemleri blue team ekipleri savunmada ne kadar başarılılar bunları da görebilirsiniz.

İşlemler bittiğinde ise en son artık yaptıklarınızı size rapor olarak sunması güzel bir özellik. Download report dediğinizde json formatında size bir rapor sunmaktadır. Bir örneği aşağıdadır.

 

Adversaries

Son olarak bu kısım da artık tehdit aktörlerine yönelik kendi özel profillerimizi oluşturabiliriz. ATT&CK TTPs ‘nin yer aldığı bu kısım da kendimize göre özelleştirme yapabiliriz.

adversaries

Sol tarafta yine add/view olarak seçebileceğimiz bir buton mevcut view dediğimiz kısım hali hazırda default olarak gelen profiller bulunmaktadır.  Profile listeni açıp her hangi bir profili seçtiğimiz zaman burada yer alan TTPs’ler bizi karşılayacaktır. Kendi profil dosyamızı oluşturmak için add kısmını seçiyoruz. Bizden bir profil adı ek bilgi girmemiz iniyor öncelik. Bu işlemden sonra sağ tarafta yer alan “+add ability” kısmını açıyoruz ve şöyle bir ekran bizi karşılıyor.

ability

Burada profile eklemek istediğimiz teknik,taktik ne ise onları belirliyoruz. Örnek:

Gerekli seçimleri yaptıktan sonra, bize kısa bir özet veriyor burada, name, ne iş yaptığını, hangi taktik ve tekniğin kullanıldığını gösteren kısa bir özet bulunmakta. Hemen altında hangi işletim sistemi üzerinde çalıştığını ve çalıştıran uygulamanın ne olduğu bilgisi bulunmakta.

Biraz aşağıda ise komut satırı üzerinde nasıl bir yapıda olduğunu gösteriyor ve en son olarak da yaptığımız değişikleri kaydedip, bu işlemi profile ekleme yapacağımız buton yer almakta.

Eğer seçtiğiniz tekniğin çalışması için bir script dosyası veya PE bir dosya gerekiyorsa, bunları eklerken kendisi Payloads kısmına ekliyor. Yine komut satırı üzerinde nasıl göründüğünü gösteriyor en son çalıştıktan sonra da bunun sistem üzerinden nasıl silineceğini de gösteren bir komut satırı kodu yer almakta.

Artık böyle böyle profilimiz oluşturmaya başlıyor biz ekledikçe görüntü şöyle bir hal almaya başlıyor, en son yapacağım eklemeler bittikten sonra ise sol taraftan profili kaydettiğimiz zaman istediğimiz zaman bu profili kullanabiliriz artık.