8-9 yıl önce yazdığım blog yazılarında (Anti Analiz, Anti Anti-VMWare) zararlı yazılım geliştiren art niyetli kişilerin, zararlı yazılımlarının sanal sistemlerde güvenlik araştırmacıları veya güvenlik sistemleri tarafından analiz edilmesini zorlaştırma, engelleme adına çeşitli yöntemlerden faydalandıklarından bahsetmiştim.

Tabii günümüzde Virtual Desktop Infrastructure (VDI) teknolojilerinin kurumsal ortamlarda son kullanıcılar tarafından yaygın olarak kullanılmaya başlanmasıyla sanal sistemlerin çoğunlukla sunucular veya zararlı yazılım analistleri, güvenlik araştırmacıları tarafından kullanıldığı günler geride kalmaya başladı. Durum böyle olunca da zararlı yazılım geliştiricilerinden kırmızı takım (red team) çalışması gerçekleştiren etik hackerlara kadar hedef sistemleri kendi araçları ile uzaktan yönetmek ancak yakalanmak istemeyenlerin ortak kaygısı, sanal sistemlerde çalışabilen fakat analiz sisteminde çalışmayan araçlar tasarlamak ve geliştirmek olmaya başladı. Gerçekçi bir yaklaşımla analiz sisteminde çalışmayan bir aracın geliştirilmesinin mümkün olamayacağını bilen zararlı yazılım geliştiricileri, yakalandıklarını anlamak ve operasyonlarını durdurmak için VirusTotal üzerinde belli zaman aralıklarında geliştirdikleri zararlı yazılımlarının hash değerlerini aratmaktadırlar. Benzer şekilde mavi takım tarafından yakalanabileceği ihtimalini göz ardı etmeyen kırmızı takım çalışanları ise operasyonlarının sürdürülebilirliğini sağlama adına RedELK gibi projelerden faydalanmaktadırlar.

Zararlı olduğundan şüphe edilen dosyaların son kullanıcılar, güvenlik uzmanları tarafından VirusTotal, Any.Run, Hybrid Analysis, Lastline Analyst, VMRay Analyzer vb. kum havuzu sistemlerine yüklendiğini bildiğim için çok güvendiğimiz bu kum havuzu sistemlerini tespit etmenin pratikte ne kadar kolay veya zor olduğunu araştırmaya ve sizlerle paylaşmaya karar verdim.

Bunun için ilk olarak kum havuzu sistemleri ile ilgili bilgi toplamam (keşif) gerekiyordu. Kum havuza sistemine yüklenen bir yazılım, dinamik analiz esnasında hedef bir sistem (c&c) ile haberleşmeye geçtiğinde kum havuzu sistemi tarafından izlenmekte ve kayıt altına alınmakta kısaca bu sistemler üzerinde internetteki bağlantısına izin verilmektedir. Ben de bu fırsattan istifade ederek hedef işletim sistemi ile ilgili bilgi toplayan bir Microsoft Office makrosu hazırlamaya karar verdim. Makro ile bu işi yapmanın en kolay yolu özellikle hedeflenmiş saldırılarda (APT) yanal hareket (lateral movement) amacıyla kullanılan Windows Management Instrumentation (WMI)‘dan faydalanmaktı. WMI ile ilgili olarak Microsoft’un sitesinde ufak bir araştırma yaptığınızda (Win32 Provider) hedef işletim sistemi ile ilgili çok ama çok sayıda bilgi toplayabildiğinizi görebilirsiniz.

Dünyayı yeniden keşfetmeme adına Google’da ufak bir arama yaptığımda VBA ile WMI üzerinden bilgi toplamaya yarayan basit bir betik ile karşılaştım. Bu betik dosyasına Microsoft’un sayfasında işletim sistemine yönelik olan 25 adet sınıfı ekledikten sonra bu bilgileri https://www.mertsarica.com/macro.php adresine göndermesini sağladım. Antivirüs yazılımları tarafından kolayca tespit edilememesi adına da macro_pack aracı ile makroyu gizledim. (obfuscation)

Sandbox Detection
Sandbox Detection
Sandbox Detection
Sandbox Detection

Mert-Obfuscated25.xlsm dosyasını Any.Run ve VirusTotal’a yükledikten kısa bir süre sonra https://www.mertsarica.com/macro.php dosyasına istekler geldiğini gördüm. Gelen isteklere baktığımda kum havuzu analizi yapan sistemlerle ilgili önümde incelenmesi gereken epey bir bilgi olduğunu gördüm. :)

Bu bilgilere bakarken ilk olarak dikkatimi Select * From Win32_OperatingSystem WMI isteğinin çıktısında yer alan LastBootUpTime değeri çekti. Bu değer, işletim sisteminin en son hangi tarih ve saatte başlatıldığını belirtiyordu. Kum havuzu analizi yapan sistemler zararlı yazılımları analiz etmeden önce işletim sistemini sıfırdan, temiz hali ile başlatmaktadırlar dolayısıyla analizin gerçekleştirildiği işletim sisteminin yeniden başlatılma tarihi (LastBootUpTime) ile analiz tarihi (LocalDateTime) arasında maksimum 30 dakika gibi bir zaman farkı oluşmaktadır. Bu bilgiden de yola çıkarak yazılımın kum havuzunda analiz edildiğini varsaymak mümkümkün olabilmektedir.

Sandbox Detection
Sandbox Detection

Topladığım bilgilere göz atmaya devam ettiğimde LastBootUpTime ile LocalDateTime arasında 4 ay fark olduğunu fark ettiğim bir çıktı ile karşılaştım. 4 ay boyunca yeniden başlatılmayan bir son kullanıcı sistemi (Windows 7) oldukça şüphe çektiği için bu bilgileri yakından incelemeye başladım. Bilindiği üzere çoğu güvenlik araştırmacısının, zararlı yazılım analistinin hali hazırda izole, sanal bir analiz sistemi bulunmaktadır. Bu analiz sistemi zaman kaybetmeme adına her defasında yeniden başlatılmak yerine anlık görüntüden (snapshot) döndürülmektedir. Anlık görüntüden döndürülen bir işletim sisteminin de LastBootUpTime günler geçtikçe geride kalmakta ve bir zararlı yazılım analiz edildiğinde LocalDateTime ile arasındaki zaman farkı kimi zaman ayları bulabilmektedir. Bu bilginin ışığında bir de şüphelendiğim bu çıktının Windows işletim sistemindeki program gruplarına Win32_LogicalProgramGroup dair bilgileri topladığı WMI bölümüne baktığımda bu defa güvenlik araştırmacıları, zararlı yazılım analistleri tarafından sıklıkla kullanılan Immunity Debugger, Process Hacker gibi araçların sistem üzerinde yüklü olduğunu gördüm. Bu da bana Office dosyamın bir tehdit avcısı tarafından analiz edildiği bilgisini sağlamış oldu. :)

Sandbox Detection
Sandbox Detection

Son olarak bir de dikkatimi Select * from Win32_SystemBIOS WMI isteğinin çıktısı çekti. Kum havuzlarından gelen bilgilere baktığımda bir tanesinin BOCHS öykünücüsü (emulator) üzerinde bir diğerinin ise QEMU öykünücüsü üzerinde çalıştığını dolayısıyla bu iki sistemin de kum havuzu sistemine ait olduğunu anlamış oldum.

Sandbox Detection
Sandbox Detection

Ekim ayına kadar geçen zaman zarfında macro.php dosyasına istekte bulunan ip adreslerine baktığımda bunların da kuvvetle muhtemel VMRay, Lastline, Any.RUN, VirusTotal‘a ait kum havuzu sistemlerine ve bir tehdit avcısına ait olduğunu söyleyebilirim.

Sandbox Detection

Sonuca gelecek olursam, geliştirilen bir yazılımın, kodun WMI üzerinden elde ettiği bilgiler sayesinde kum havuzu sistemi üzerinde çalıştığını anlaması pratikte zor görünmüyor dolayısıyla hem bu bilgilerden hem de kum havuzu sistemlerine ait olan ip adreslerinden, ip bloklarından faydalanan art niyetli bir kişinin veya bir kırmızı takım üyesinin kum havuzu analizini atlatmasının mümkün olabileceği asla unutulmamalıdır.

Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim.

Not: 22 Kasım tarihinde düzenlenen NOPcon Uluslararası Hacker Konferansı’nda bu konuyu değindiğim Kum Havuzu Tespiti başlıklı sunum dosyamı dileyenleriniz buradan indirebilirler.