Ücretsiz araçlar (ELK+Sysmon) kullanarak siber tehdit avcılığı

Giriş

Her geçen gün karmaşıklaşan siber-tehditler, önleyici (preventive) teknolojiler tarafından her zaman yakalanamamaktır. Bu, ürünlerin doğru konfigüre edilmemiş olmasından kaynaklanabileceği gibi bazen de ürün yeteneklerinin yetersizliğinden kaynaklanabilir.

Kimi zaman ise siber tehditlerin güncel kabiliyetlerini yakından ve güncel olarak izleyemeyen kurumlar geleneksel yöntemlere fazla güvenir ve altyapılarında kimi önlemleri hiç kurgulamaz bile (Örneğin uç noktalara sadece imza tabanlı geleneksel antivirüslerin konumlandırılması, IPS'e fazla güvenilmesi vb. gibi)

Bu noktada tespit edici (detective) kontrollerin önemi ortaya çıkmaktadır.

Tehdit avcılığı kavramı, alınan önleyici önlemlere rağmen bir altyapıya yerleşmiş ve zararlı faaliyetler yürüten siber-tehditlerin bulunup çıkarılmasını ifade eder.

https://sqrrl.com/solutions/cyber-threat-hunting/ Görsel: https://sqrrl.com/

Araçlar

Siber tehdit avcılığının en genel itibariyle 2 perspektiften oluştuğunu söyleyebiliriz. Bunlardan birincisi network tabanlı avcılık ikincisi ise uç-nokta (endpoint) tabanlı avcılıktır. Bu iki nokta arasındaki ilişki analizlerde birbirlerine ne kadar yaklaştırılabilirse o kadar başarılı bir avcılıktan söz edebiliriz.

Network seviyesinde bir avcılık için full-packet capture, flow, güvenilir threat intelligence kaynakları ve IDS alarmları ilk aşamada yeterli olacaktır. (Örnek araç: Security Onion, http://acikdefans.com/security-onion-dagitimi/ )

Uç nokta avcılığı için ise Microsoft Sysinternals ailesinin bir üyesi olan Sysmon isimli araç tercih edilebilir. (https://technet.microsoft.com/en-us/sysinternals/sysmon)

Logları tutmak ve ilişkilendirmek için ise ücretsiz ELK (Elasticsearch + Logstash + Kibana) ürün ailesi kullanılabilir.

Bu yazıda Sysmon ve ELK kullanarak ücretsiz bir uç-nokta (endpoint) tehdit avcılığı altyapısı kurgulanacaktır.

Kurulum

ELK

Yazımızda, entegrasyonu bir miktar emek isteyen ELK kurulumuyla uğraşmamak adına SANS'a ait hazır SOF-ELK isimli bir ELK imajı kullanacağız. (Adres: https://github.com/philhagen/sof-elk/blob/master/VM_README.md)

ELK VM'ini VMware gibi bir sanal makinede kolayca açabilirsiniz. Bundan sonra yapılması gereken ise kurban Windows işletim sistemine ait PC'ye (Windows 7) Sysmon ajanını kurmak ve konfigüre etmek.

Sysmon

Yazı boyunca 5.0.2 versiyonu kullanılacak Sysmon'u şu adresten indirebilirsiniz;

Sysmon, sistem üzerinde gerçekleşen olaylara dair normal şartlarda elde edemeyeceğiniz türden bir loglama yapmaya imkan veren sysinternals ailesi üyesi ücretsiz bir araç. Bu uygulama sayesinde her hangi bir uygulama hangi parametre ile çalışmış, o process'i oluşturan uygulama hangisi, çalışan process'in özet değeri (Virustotal?) nedir vb. gibi pek çok detay bilgi elde edebilirsiniz.

Sysmon (64 bit sistemler için Sysmon64.exe) aşağıdaki 2 komutla kurulabilir;

Sysmon.exe -i -h MD5,IMPHASH -n : Bu komut Sysmon yazılımını yükleyecektir. (Komut Administrator olarak çalıştırılmalıdır. Sysmon'u yüklemek yada kaldırmak reboot gerektirmez)

Sysmon.exe -c sysmon.cfg : Bu komut aslında bir tuning komutu. Sysmon uygulaması uç nokta üzerinde gerçekleşen her faaliyeti detaylı olarak logladığından geçerli/zararsız olabileceğini düşündüğümüz faaliyetleri istisna tutarak gürültü azaltmaya çalışıyoruz (Ortamınıza göre özelleştirebileceğiniz ilgili konfigürasyon dosyası şurada https://github.com/crypsisgroup/Splunkmon/blob/master/sysmon.cfg)

Bu işlemden sonra Sysmon uygulaması çalışmaya başlayacak ve uç-nokta üzerinde gerçekleşen faaliyetleri detaylı olarak C:\Windows\System32\
winevt\Logs\Microsoft-Windows-Sysmon%4Operational.evtx
dosyasına yazmaya başlayacaktır.

(GPO ile yaygınlaştırmak için: http://syspanda.com/index.php/2017/02/28/deploying-sysmon-through-gpo/)

Winlogbeat

Sırada bu dosyayı okumak ve merkezi olarak loglamak kaldı. Bu amaçla ELK ailesinin Winlogbeat isimli Windows log yönlendirme ürününü kullanacağız. (https://www.elastic.co/downloads/beats/winlogbeat)

Winlogbeat'in konfigüre edilmesi

Mevcuttaki log kaynaklarını görüntülemek için Windows 7 makinede Powershell üzerinde admin yetkili olarak şu komut çalıştırılır;

Get-WinEvent -ListLog * | Format-List -Property LogName

Burada, çıktıda da görebildiğimiz şekliyle, ilgilendiğimiz log türü Microsoft-Windows-Sysmon/Operational'dir

winlogbeat.yaml dosyası buna göre düzenlenir. Log yollama çeşidi olarak doğrudan Elasticsearch'e yollamak yerine Logstash'e loglarımızı göndereceğiz. Bu sebeple Elasticsearch'li kısımlar yorum satırı yapılmalıdır.

winlogbeat.event_logs: - name: Microsoft-Windows-Sysmon/Operational ignore_older: 72h .... .... output.logstash: hosts: ["ELK_MAKINE_IPsi:5044"]

Powershell üzerinden .\install-service-winlogbeat.ps1 komutu ile Winlogbeat servisi kurulur.

.\winlogbeat.exe -c .\winlogbeat.yml -configtest -e komutu ile Winlogbeat bu konfigürasyonla test edilir.

Bu işlem neticesinde ELK loglama çözümümüze loglar gelmeye başlayacaktır;

Kibana arayüzüne ELKSUNUCUIPsi:5601 adresiyle erişilebilir

Örneğin aşağıdaki ekran görüntüsünde saldırgan tarafından cmd.exe üzerinden kurban makinede çalıştırılan wmic qfe list full komutunun log'u görüntülenmektedir. Saldırgan bu komutla sisteme en son hangi yamalar kurulmuş, onu görmek istemiştir.

Aşağıda bazı örnek hunting senaryolarına yer verilmiştir.

Örnek korelasyonlar

Örneğin kurbanımız ele geçirilmiş (compromised) bir web sitesini ziyaret etmiş olsun ve bu web sitesinde ransomware'e yönlendiren bir exploit-kit (RIG) barınıyor olsun;

Böyle bir senaryoda, kullanıcı siteye girer girmez kurban bilgisayarında çalışan komutlar Sysmon vasıtasıyla ELK'e aşağıdaki gibi düşecektir. İstenirse ELK'e özel ek modüllerle bu gibi olaylar için alarm da oluşturabilirsiniz.

Benzer diğer senaryolar;

1-) Zararlı svchost.exe korelasyonu: EventCode=1 olan (Process create) ve CommandLine'ında -k geçmeyen veya Image değeri C:\Windows\System32\svchost.exe veya C:\Windows\SysWOW64\svchost.exe olmayan veya ParentImage değeri C:\Windows\System32\services.exe olmayan svchost.exe process'lerini bul. (Normal şartlarda svchost.exe'in services.exe tarafından oluşturulması, bahsedilen path'lerde çalışması ve çalışırken -k parametresi barındırması gerekir)

2-) Office macro malware yakalama korelasyonu: EventCode=1 (Process create), Image değeri explorer.exe veya svchost.exe ile biterken ParentProcess excel.exe yada winword.exe'ise (Office belgesinden explorer.exe yada svchost.exe ismiyle child process oluşması)

Kapanış

Görüldüğü üzere, sistemlerde yeteri kadar loglama yapabilme imkanı bulunduğunda, normal şartlarda elde edilemeyecek kadar detayda bir (geriye dönük) görünürlük elde edilebiliyor. Bu yazı için uç-nokta özelinde anlattığımız bu görünürlük imkanını, ileriki bir yazımızda network özelinde de anlatmak istiyorum.

Unutmayın; zararlı yazılımlar saklanabilir ama görevlerini yapabilmek için bir şekilde çalışmak zorundadırlar. Bu çalışma anına dair detayları ne kadar yakından izleyebilirsek, onu yakalamamız da o kadar kolay olacaktır.

Şimdilik iyi çalışmalar.

Kaynaklar:

Furkan ÇALIŞKAN

Read more posts by this author.