19 Nisan 2020 Pazar

Hunting Cobalt Strike Beacons with Memory Forensics


Cobalt strike aracı sızma testi, kırmızı takım uzmanları ve saldırganlar tarafından sıklıkla kullanılan bir post exploitation aracıdır. Bu yazımda Cobalt strike tarafından oluşturulmuş bir beacon ile sızılmış bir makinada Volatility ile memory forensic nasıl yapılır ondan bahsediyor olacağım. Cobalt strike, Volatility ve pluginlerinin kurulumları ile ilgili internette bir çok kaynakta yeteri kadar dokuman olduğundan bazı kısımları daha özet bilgi vererek geçiyor olacağım. Ancak bazı kısımları ilk defa deneyenler için bir hayli uğraştırıyor olacağından eğer zorlandığınız kısım olursa yardım etmekten memnuniyet duyarım; bana her türlü ulaşabilirsiniz.




Cobalt strike şimdiye kadar APT19, DarkHydrus,CopyKittens, APT32, Cobalt Group, APT29, Leviathan, FIN6, APT41 gibi finansal kuruluşlara saldırılar gerçekleştiren farklı organize hacking  grupları tarafından sıklıkla kullanılmış. Saldırganlar hedef odaklı saldırılarda Cobalt strike ile oluşturdukları farklı payload'ları office dokumanlarına open source araçlarla gömerek; oltalama kampanyaları ile başta finansal kuruluşlar olmak üzere farklı kurumları hedef almaktadır.

Daha önce analizini yapmış olduğum zararlı yazılımlarda bulunduğum çıkarımlarla ilgili güvenlik bakış açımı geliştirmek ve tehdit odaklı tespit yeteneklerimi geliştirmek için çok fazla rapor, blog postu, araç ve ttp okuyorum. Bir kaç yıl öncesine göre güvenliğe olan bakış açım bir hayli değişti diyebilirim. Kafamda düşündüğüm saldırı senaryolarını saldırgan bakış açısı ile düşünerek ya en kötüsü başımıza gelseydi(assume breach) yaklaşımıyla hareket ederek; uçtan uça tüm güvenlik sistemlerimizle bu tür ölçekte bir saldırıya maruz kalsaydık ne yapardık da bunu tespit edip olay daha olmadan engelleyebilirdik gibi sorular sorarak belirli bir mindset kazanmayı hedefliyorum. Aslında bunu zararlı yazılımların memory forensic ya da compromise analysis konusu konusunda kendimi geliştirmeyi düşünmeye başladıktan sonra kafamda daha da netleşti diyebilirim. 2020 hedeflerimden birisi malware memory forensics konusunda bu tür çalışmalar yaparak malware memory forensic konusunda da yeteneklerimi geliştirme olacak. : ) Bir sonraki yazım muhtemelen zararlı yazılımların memory forensic'i ile ilgili olacak umarım. : )
Sözü daha fazla uzatmadan esas konuya geçmek istiyorum. Bildiğiniz üzere saldırganların hedef ve motivasyonlarının para olmalarından dolayı güvenlik olayları olay niteliği taşıyan bir olaya gidene kadar belirli aşamaların gerçekleşmesi gerekiyor. Saldırgan weaponize(silahlandırılmış) edilmiş dokumanı kurum çalışanlarınıza gönderdikten sonra eğer perimeter security önlemleriniz bir şekilde atlatılmış ise ve içeriden saldırganın sunucusuna tüm perimiter security önlemleriniz atlatılarak başarılı bir sekilde iletişim sağlanabilmişse saldırganlar cyber kill chain'de bulunan aşamaları uygulayarak kritik önem derecesine sahip dataları çalmayı, sistemleri hacklemeyi hedefliyorlar. Bu noktada ele geçirilen endpoint makinasından; kritik önem derecesine sahip database, debit kart, PII, kredi.., verilerinin bulunduğu sunucuları hedef alırken lateral movement, privilege escalation yöntemleri ile hem endpointte nt authority\system hem de debugprivilege yetkilerine sahip olmak istiyorlar. Bunu kazandıktan sonra saldırı eğer gerçekten bir finansal kuruluşu hedeflemekse içeride beklemeye başlıyorlar. Farklı güvenlik üreticileri tarafından yayımlanana ortalama incident dwell time sürelerini düşünecek olursak saldırganların zaman ve sabırlarının olduğunu söyleyebiliriz. Endpoint'i ele geçirdikten sonra bir sonraki yöneleceği nokta active directory attackları oluyor. Çünkü krbtgt userının ntlm hashi ya da domain admin seviyelerine yetkin bir kullanıcını şifresini alabilirlerse ondan sonraki aşamada işleri daha da kolaylaşıyor. Tüm bunları artan güvenlik yatırımlarımızı düşünecek olursak perimeter security tarafında sahip olduğumuz cihazları iyi işletmek defansı sağlamamız açısından büyük önem arz ediyor. Diğer taraftan endpoint visibility, network visibility, e-mail security ve active directory security de bu tür saldırıların tespiti ve önlemlenmesi için olmazsa olmaz diyebilirim. Kişisel olarak görüşüm güvenlik altyapınızı daha olgun bir hale getirdikten sonra assume breach yaklaşımı ile hareket ederek, daha bu saldırılar olmadan Cobalt Strike, Powershell empire, crackmapexec, lolbas gibi araçlar ile altyapınızı daha olaylar olmadan önce içeride bulunan güvenlik ürünlerinizin yetenekleri doğrultusunda farklı türde senaryolar düşünerek, MITRE attack frameworkune uygun test etmek ve SIEM kuralları yazmanız olacaktır. Yani saldırı olmadan yaparak herhangi bir T anında en kötüsü başınıza geldiğinde bu saldırıları yakalayabilmek olacaktır.  Aşağıda Groub-ıb tarafından hazırlanmış güzel bir görsel var.


Yazımda Cobalt Strike güncel versiyonlarından birisini kullanıyor olacağım. Test ortamı için hali hazırda kurulu bir kali linux makinası ve windows2012R2x64 sunucu yada powershell çalıştırabileceğiniz bir client makinası olması yeterli olacaktır.





Bu aşamaya kadar Cobalt strike başarılı bir şekilde çalıştırılmıştır. Bu aşamadan sonra bir listener oluşturulacaktır. Bu adımlar için bu yazıdan faydalanabilirsiniz.

Daha sonra bir payload oluşturmak için aşağıdaki şekilde ilerleyebilirsiniz. Ben işlerin kolaylık olması açısından ve uzun zaman sonra Cobalt Strike aracını test ediyor olmam dolayısıyla bu şekilde ilerlemeyi tercih ettim.




Bu aşamaya kadar olan kısımlardan sonra payload.ps1 dosyası oluşturulmuş olacaktır. Daha sonra payload.ps1 dosyasını test amaclı forensic yapacağımız sunucuda çalıştıracağız. Çalıştırdıktan sonra
aşağıdaki gibi makinaların gelmiş olacağını göreceğiz. Listener olşuturma kısmında ben listener portu 445 smb olarak verdim; kolaylık olması açısından. Payload çalıştıktan sonra aşağıda pid'si 1992 ile çalışan compromise olmuş sunucumuzu görebilirsiniz.



Bu aşamadan sonraki kısımda memory dump almak için dumpıt adlı araçtan faydalanmak üzere yola koyuldum. DumpIt aracı one click raw memory dump alabilmenizi olanak sağlamaktadır.


Dump'nı almış olduğum dosyayı kali linux sunucusuna kopyaladım ve Volatility'deki profile karar vermek amacıyla aşağıdaki komutu çalıştırdım. Volatility memory forensic açısından çok iyi bir araç olup sürekli eklenen yeni pluginler sayesinde güvenlik araştırmacıları ve olay müdahalesi uzmanlarının işlerini kolaylaştırmaktadır. Sizde kurum içerisinde anlamsız bir trafik üreten hacklendiğini düşündüğünüz bir windows makina varsa bu ve benzeri pluginler sayesinde memory seviyesinde bir şey olup olmadığını gözlemleyebilirsiniz.


Bu aşamadan sonra Volatility ile yapabileceğiniz farklı şeylere bakmak isterseniz volatility -h komutundan faydalanarak hangi tür bilgileri öğrenmek istediğinizi görüntüleyebilirsiniz. Burada desteklenen plugin komutlarını görebileceksiniz.


Şimdiye kadar olan aşamalardan sonra memory forensic ile cobalt strike beaconlarını tespit edebilmek için JpCert tarafından oluşturulmuş pluginlerinden faydalanarak compromise olduğunu düşündüğümüz makinayı analiz edeceğiz. Eklediğim pluginlerin geldiğini aşağıdaki şekilde görebiliriz. volatility -h 



Burada belirtmek istediğim önemli bir nokta volatility'e plugin kurarken uğraştırıyor olması. Bunun için hali hazırda kurulu olan plugin dosyasına yeni kaynak kodları ekleyerek talimatları uygulamak yeterli olacaktır.

cobaltstrikeconfig - cobaltstrike konfigürasyonunu için,
cobaltstrikescan - cobaltstrike ile enfekte olmus processleri tespiti için kullanılmaktadır.




cmdline - komutu ile komut satırında çalışan process ile ilgili command - line argumanını görebiliriz.



Mesela aşağıdaki komutla süphelendiğimiz process'in almış olduğumuz memory dump'ında hangi privileges ile çalıştığını gözlemleyebiliriz. Cobalt tarafından enfekte olan processin privilige yetkilerini gözlemleyebiliriz. Bizim powershell payloadı içeren process'in debugprivilege yetkisine sahip olduğunu buradan anlayabiliriz. Credential dump yapabilme yetkisi olduğunu buradan anlayabiliriz sanırım; yine de yetkileri sınırlandırılmış bir makinada bu yetkinin olması o process'ten süphelenebileceğimiz sonucunu çıkartabiliriz. Düşünün dummy user yetkilerine sahip olduğunu düşündüğünüz bir makinada bu yetkilere sahip anlamsız bir process'in olduğunu.

volatility privs -f /home/kali/Desktop/WIN-OJJPK4IIGHV-20200419-230930.raw --profile=Win2012R2x64 | more



Memoryde code/dll injection uğramış process bilgilerini tespit edebilmek için malfind pluginini kullanarabiliriz.

volatility malfind -f WIN-OJJPK4IIGHV-20200419-230930.raw --profile=Win2012R2x64 | more


Bu aşamadan sonra malfind fonksiyonu için gizli ve dll/code injection'a uğramış; process dump almak için mkdir evidence komutu ile yeni directory oluşturdum. Aşağıdaki komutla pid'si 1992 olan süpheli process'in dump çıktılarını oluşturması için bu komutu uyguladım.

volatility malfind -f WIN-OJJPK4IIGHV-20200419-230930.raw -p 1992 --profile=Win2012R2x64 --dump-dir evidence/


Bunlardan ikisini virustotal'e magic numberı MZ ile baslayan ve boyutu yüksek olanlardan ikisini virus totala upload ettim. Bazı güvenlik üreticileri zararlı olduğunu tespit edebildi. Doğrudan Cobaltstrike olarak tespit edebilenlerde oldu doğrudan edemeyenlerde oldu. Ama burada yazının başında bahsetmiş olduğum kısımları tekrardan hatırlamak gerekirse iyi bir EDR ya da EPP çözümüne sahipseniz sık kullanılan post exploit araçları ile bunun gibi farklı senoryaları EDR, EPP ürünlerinizde test edip SIEM'e kurallar yazmanız  ve güvenlik analistlerine alarm olarak bunları düşürüyor olmanız savunulabilir bir altyapınız olmasını sağlayacaktır.



Bu aşamadan sonra dmp alınmış dosyaları kontrol etmek için strings komutu ile her dump'i teker teker inceledim. C&C ip adresi, user agent bilgisi gibi bazı bilgileri görebilmiş oldum.


Memory'de yuklu olan per process'e bağlı olan dll dosyalarını listelemek için aşağıdaki komutu kullanabiliriz.

volatility dlllist -f WIN-OJJPK4IIGHV-20200419-230930.raw --profile=Win2012R2x64


Göreceğiniz üzere payload.ps1 dosyasının çalıştığı sunucu üzerinde pid'si 1992 ile çalışan Cobalt Strike beacon'nı dump aldıktan sonra Volatility'e JPCERT tarafından yazılmış; cobaltstrikescan ve cobaltstrikeconfig pluginleri ile memory dump'inden bulabilmiş olduk. Esasen hacklendiğini düşündüğünüz ya da zararlı yazılım bulaştığını düşündüğünüz sistemler için Volatility, pluginleri ile birlikte İsviçre çakısı gibi bir araç. : )



Ülke olarak zor günler geçirdiğimiz bu günlerde corana virüs nedeniyle hayatını kaybeden vatandaşlarımızın yakınlarına baş sağlığı diliyorum. Tedavi altında olan vatandaşlarımıza da Allah'tan sağlık diliyor ve bir an önce iyileşmelerini temenni ederek sağlıklarına kavuşmalarını diliyorum. Sağlıklı ve güvenli günler diliyorum. Umarım corana günlerinde evde burnout olmadan vaktinizi güzel geçirirsiniz. : )

diagram showing different attack stages and techniques in each stage that various ransomware groups use

 #stayathome #coranavirus $covid19 #evdekalTurkiyem #staystrong #evdekal



You can't defend. You can't prevent. The only thing you can do is detect and respond.

Referanslar:
https://attack.mitre.org/software/S0154/
https://www.mertsarica.com/onum-arkam-sagim-solum-cobalt-strike/
https://blog.fox-it.com/2019/02/26/identifying-cobalt-strike-team-servers-in-the-wild/
https://malpedia.caad.fkie.fraunhofer.de/details/win.cobalt_strike
https://1337red.wordpress.com/getting-started-with-cobalt-strike/
https://www.ptsecurity.com/ww-en/analytics/advanced-persistent-threat-apt-attack-cost-report/
https://www.group-ib.com/blog/cobalt
https://www.pentestpartners.com/security-blog/cobalt-strike-walkthrough-for-red-teamers/
https://blogs.jpcert.or.jp/en/2018/08/volatility-plugin-for-detecting-cobalt-strike-beacon.html
https://www.howtoforge.com/tutorial/how-to-install-and-use-volatility-memory-forensic-tool/
http://halilozturkci.com/adli-bilisim-dumpit-ile-windows-sistemlerde-hafiza-imaji-alma/
https://www.lac.co.jp/lacwatch/people/20180521_001638.html
https://www.fireeye.com/blog/threat-research/2017/06/phished-at-the-request-of-counsel.html
https://github.com/JPCERTCC/aa-tools/blob/master/cobaltstrikescan.py
https://medium.com/@zemelusa/first-steps-to-volatile-memory-analysis-dcbd4d2d56a1
https://github.com/thimbleweed/All-In-USB/tree/master/utilities/DumpIt
https://github.com/volatilityfoundation/volatility/wiki/Command-Reference
https://resources.infosecinstitute.com/memory-forensics-and-analysis-using-volatility/#gref
https://ethicalhackingguru.com/how-to-use-cobalt-strike/
https://paste.ubuntu.com/p/y9hYfgQ2nS/
https://www.cobaltstrike.com/training
http://www.behindthefirewalls.com/2013/07/zeus-trojan-memory-forensics-with.html
https://unit42.paloaltonetworks.com/unit42-new-techniques-uncover-attribute-cobalt-gang-commodity-builders-infrastructure-revealed/
https://attack.mitre.org/groups/G0080/
https://meltx0r.github.io/tech/2019/10/15/cobalt-gang-apt.html
https://github.com/Neo23x0/signature-base/blob/master/yara/apt_cobaltstrike.yar
https://github.com/AhmetHan
https://infosecarsenal.blogspot.com/2020/04/hunting-cobalt-strike-beacons-with.html
https://www.fireeye.com/blog/threat-research/2020/03/apt41-initiates-global-intrusion-campaign-using-multiple-exploits.html
https://imgflip.com/i/3xc98d
https://www.fireeye.com/blog/threat-research/2020/05/tactics-techniques-procedures-associated-with-maze-ransomware-incidents.html
https://www.researchgate.net/figure/Lockheed-Martin-Cyber-Kill-Chain-CKC-22-seven-steps-The-part-that-is-specified-with_fig1_335024682
https://github.com/volatilityfoundation/volatility/wiki/Command-Reference-Mal#malfind
https://www.virustotal.com/gui/file/243238de25f261f6de5af5ba225cfe9a634240467688c8c3b3dd0279f04c326e/detection
https://www.microsoft.com/security/blog/2020/04/28/ransomware-groups-continue-to-target-healthcare-critical-services-heres-how-to-reduce-risk/
https://github.com/AhmetHan/cobalt_strike_hunting

Hiç yorum yok :

Yorum Gönder

Blog Arşivi