24 Ocak 2019 Perşembe

H-worm by Houdini VBS RAT Threat Analysis




Güvenlik olayları analizi, müdahalesi ve proaktif güvenliğin önem kazandığı bugünlerde özellikle gelişmiş hedef odaklı saldırılara, farklı güvenlik üreticileri tarafından yayımlanan okuduğumuz; çeşitli tehdit raporlarında ve blog yazılarında yer verilmektedir. Finansal kuruluşların, saldırganların hedef ve motivasyonlarının para olmasından dolayı; siber güvenlik farklındalığının yüksek olması ve gereken önlemleri alması gerekmektedir. Zira bu noktada son zamanlarda siber güvenlik olay müdahalesi ve ekiplerinin yaptıkları işler önem kazanmaktadır. Parasal kayıp yaşayan finansal kuruluşlara yapılan atakların genelinde spear phishing kampanyaları ile silahlandırılmış(weaponized) dosya ekleri ile birlikte gelen zararlı dosyaların; gereken önlemlerin alınmadığı, alınsa bile yeni attack methodları ile yetersiz kaldığı, güvenlik olay ve analizlerinin süreçlerinin yeteri kadar oturmadığı, e-mail ve endpoint  tarafında gerçekleşen her güvenlik olayı için uçtan uça görünürlüğün sağlanamaması gibi nedenlerle hacklenen ve finansal kayba uğrayan kurumların haber, raporlarını sıklıkla okumaktayız.

Bu yazımda 2013 yılında fireeye ve çeşitli güvenlik üreticilerinin tehdit araştırmalarına, blog postlarına konu olan, Visual Basic Script diliyle yazılmış H-Worm Rat' analizi üzerine yapmış olduğum analiz çalışmasına ve kurumsal ağlarda alınması gereken güvenlik önlemlerine değineceğim.

Saldırganlar göndermiş oldukları maillerde inandırıcılığı yüksek kılmak ve özellikle ekli dosya eklerine kurbanlarına tıklatıp açtırmak amacıyla; Dünya çapında bilinen swift, western union gibi kuruluşları da oltalama amaçlı hazırladıkları maillerine dahil etmektedir.

Güvenlik analisti rolüyle çalışan kurumsal SOME çalışanımız; aşağıdaki gibi bir mail güvenlik sistemleri tarafından blocklanmış olsa bile bu mailin ekinde bulunan dosyanın gönderilme amacını merak ettiği için kolları sıvar ve işe koyulur. : )

Ben de bu noktada aşağıdaki gibi gelen bir spear phishing mailini analiz etmeye başladım. Mailin Western Union'da çalışan birisinden geliyormuş gibi görünmesi, from adresi ile western union'un bağdaşmaması, kimliği açıklanmayan kullanıcıların to' da olması, dosya uzantı eklerini hidden ettiğinizde ekteki dosyanın isminin pdf olarak verilmesi, western uniondan alacağı komisyondan bahsediyor olması aslında tam da yeteri kadar farkındalılığa sahip olmayan ya ben bir kere tıklamış bulundum diyen son kullanıcı; saldırganların iştahını kabartıyordu. : ) E-mail header bilgilerini kontrol ettiğimde de sender domain ile return path'i farklılık gösteriyordu.





































Daha sonra dosyayı masaüstüne alıp kaydedip özelliklerini kontrol ettiğim zaman dosya ismi pdf verilmesine rağmen aşağıdaki ekran görüntüsündeki gibi aslında bunun bir pdf dosyası olmadığını zip dosyası olduğunu görmüş oldum.





Yine farklı türde zararlı analizleri yaparken dosyanın türünden emin olmak için bir hex editor ile açtım. Magic numberlardan da görüleceği üzere dosyanın zip türünde olduğundan emin olmuş oldum. Aynı zamanda hex editorde görünen veriler incelendiğinde zip dosyasının içerisinde bir vbs dosyası olduğu, bazı verilerin karmaşıklaştırılmış olduğu belli oluyordu.


7-zip ile dosyayı bir klasöre çıkardığım zaman saldırganın farkındalığı olmayan son kullanıcının komisyonu almak üzere tıklamaya çalıştığı ve saldırganların ağızlarının sularının aktığı, ellerini ovuşturduğunu masumca bekleyen vbs dosyasını görmüş oldum. : )










Yazıyı yazarken farklı güvenlik üreticilerinin virus total üzerinde dosyayı tarama sonuçlarıda dosyanın zararlı olduğuna dair ipuçları veriyordu.
























       Wu Commission.pdf.vbs dosyasını notepad++ ile açıp kaynak kodlarını incelemeye karar verdim. Genel olarak saldırganlar geliştirmiş oldukları zararlıların analizini zorlaştırmak için kodları karmaşıklaştırmaktadır. Ekran görüntüsünde görüldüğü üzere, kullanmış oldukları fonksiyonların kaynak kodlarını karmaşıklatırmışlar. Fakat fonksiyonlardada kullanılan create object, create element, open, write, bin.base64, tmp ve fonksiyonlara bu değerlerin gönderilmesi az da olsa dosya create etme, http requestleri yapmak, base64 ile encode edilen veriler olduğu üzerine zararlı davranışları ile ilgili az çok fikir sahibi olmamızı sağlıyordu.



Karmaşıklaştırılmış kodları deobfuscate etmek amacıyla hemen tekrardan işe koyulup esas çalışan koda ulaşmak amacıyla nasıl hareket edebileceğim üzerine yola koyuldum. Vbs deobfuscation araçlarına ve genel olarak vbs dosya türünde çalışan zararlılar ile ilgili bilgi toplamaya başladım. Bir kaç farklı online deobfuscation aracına bakıp kodları güzelleştirmek amacıyla baktıysamda çok iyi bir sonuca ulaşamadım. Farklı türde analiz edilen vbs script zararlı analizlerinde vbs script editorleri ve debugging edilerek zararlı analizi yapıldığı ile ilgili araçları gözlemlemiş oldum. Hemen kısa bir araştırmadan sonra VbsEdit aracını denemeye karar verdim. 




Zararlı olarak gelen dosyayı VbsEdit aracına yükleyip çalıştırdıktan sonra kodun başarılı bir şekilde çalıştığını, VbsEdit aracı ile zararlının esas kaynak kodlarına ulaşabilmiş oldum. Sanırım burda şanslıydım çünkü saldırganların kodları düzgün çalışıyordu ve aynı zamanda VbsEdit aracı sayesinde esas kaynak kodların deobfuscate edilmiş haline kolayca ulaşabilmiş oldum. Daha sonra VbsEdit aracının çıktısını değerlendirmek üzere notepad++ a kopyaladım. Artık elimde 456 satırlık VBS kodu vardı. 

Zararlının H-worm olduğunu kodlarda geçen bazı terimleri google'da aratıp bununla ilgili çıkan yazıları okuyarak anlamış oldum; buna yazının ileriki kısımlarında tekrar değineceğim. H-Worm'un vbs script ile yazılmış olan popüler Rat olması ve tehdit aktörleri tarafından Ortadoğuda sıklıkla kullanılması üzerine farklı blog yazıları bulunmakta. Yukarıdaki kodda görüldüğü üzere dynamic dns  host kategorisinde domainlere farklı post request istekleri gönderiyor olması yine kaynak kodlardan anlaşılmaktadır.



Burada kullanılan parametreler dynamic dns host C&C adresine post request ve parametre olarak gönderilmektedir. H-worm yerleştikten sonra case döngüsündeki komutlar çalıştırılarak; ajanı kaldırma, sleeping, process enumeration, kill, dosya upload, sistem sürücüsü ile ilgili bilgi gönderme, cmd-shell açma...farklı komutlara sahiptir. Post ettiği bilgileri user-agent field'ına basarken vbs kodu içerisinde aşağıdaki gibi komutların çalıştırarak sistemden almaktadır. O zaman size bir soru? EDR çözümleri aşağıdaki komut başarılı bir şekilde yakalayabilir mi? Yakalarsa false positive durumları ayırıp response edebilir mi? Bu tarz event analizlerinde güvenlik analisti ne yapmalı? Bunlar ayrı bir araştırma konusu ve blog yazısı konusu. : )

Bu aşamadan sonra zararlının trafik analizini yapmak için izole bir sanal makinada çalıştırıp wireshark çıktılarında kod tarafında C&C domaine yapılan istekleri gözlemlemek üzere yola koyuldum. İlk olarak wireshark'a  dns isteklerini filtrelemek için dns yazdığımda zararlının dns isteği olarak deobfuscate edilmiş; kodun ilk başında bulunan adrese dns isteklerini gözlemledim. 


Daha sonra zararlı yazılım analizlerinde sıklıkla kullanılan get ve post parametreleri ile ilgili herhangi bir istek olup olmadığını gözlemlemek üzere filtreledim. Get isteği ile ilgili herhangi bir isteğe rastlamadım. Ancak post istekleri ile ilgili istekler ardı ardına gidiyordu.




Tcp Streami Follow ettikten sonra kaynak kodda olduğu gibi C&C sunucusu ile haberleşirken user agent string alanına unique bot identifier bilgisi, bilgisayar ismi, kullanıcı ismi, işletim sistemi bilgisi, antivirus bilgisi, usb spreading true/false olduğu bilgilerini basıyordu. 


User-Agent bilgisine başmış olduğu bilgileri yine zararlının kaynak kodları incelendiği zaman anlaşılabiliyordu. Genel olarak yazılan zararlı yazılımlarda aslında bir yazılım olduğu için kullanmış olduğu özellikleri incelediğimiz zaman bu ve benzer kodları kullanmış olduklarını gözlemleyebiliriz. Yazının sonunda github hesabımdan zararlının full kaynak kodlarını paylaşacağım.


Bu aşamaya geldikten sonra kurumsal bir yapıda bazı güvenlik olaylarının daha gerçekleşmeden engellenmesi ve first response için aksiyon alınması gerektiğinin önemli olduğunu düşünüyorum. Eğer hızlı aksiyon alınması sağlanacaksa Sandbox sistemlerinden sıklıkla faydanılanılmaktadır. Çeşitli zaman aralıklarında farklı türde Sandbox çözümlerini ve public ortamları kullanıyoruz. Bu yazıda yer vermek istediğim çözümlerden birisi any.run; istediğiniz dosyayı submit edip cloud üzerinde interactive 5 dk'lık süreye kadar zararlıyı analiz edebiliyor olmanız ancak güzel özelliklerinden biriside generate edilen trafiği signature based tespit edip bunuda sunmuş olduğu raporda sizi bilgilendiriyor olması. İmza isimlerine bakarak zararlıların türünü anlamak için belki karar kılma üzerine size fayda sağlayabilir. 



Fakat elinizin altında snort, suricata kurulmuş imza seti hazır olan promiscuous modda çalışan bir makina ya da security onion gibi customize edilmiş bir dağıtım varsa tcpreplay aracı ile almış olduğunuz pcap trafiğini ilgili interface'de oynatarak tetiklenen alarmların sonucunu değerlendirerek eğer imzalara match eden bir zararlı türü var ise imza tabanlı sistemlerden faydalanıyor olup çıkarımlarda bulunabilirsiniz.


Proaktif Önlemler

  • Dns Firewall üzerinde Dynamic Dns Host Kategorisinin Engellenmesi,

  • Web Content Gateway, Proxy Cihazları üzerinde Dynamic Dns Host Kategorisinin Engellenmesi,

  • Eğer farklı güvenlik sistemlerine yeteri kadar yatırım sağlayamayan kurumlar ise ve NGFW özelliklerini kullanarak url-filtering çözümlerini kullanıyorsa sinkhole ve kategori bazlı engelleme yapılıp yine dynamic dns host kategorisinin engellenmesi, 

  • Zip,Vbs türünde dosya eki olan dosyaların özellikle mail tarafındaki Sandbox'ing yapan sistemlere  mutkala sandboxing  yapması için custom politikalar tanımlanması ve diğer analiz profillerinin uygulanarak dosyaların analizi sağlanması,

  • Zararlı yazılımlar tarafından sıklıkla kullanılan jar, ace, arj, vbs, ps, exe, iso, r00 vb. gibi zararlı dosya uzantılarının mail gw sistemleri üzerinde doğrudan engellenmesi, 

  • Tehdit İstihbaratından gelen verilerin geniş api desteğine sahip güvenlik cihazlar ile ilgili gereken entegrasyonların yapılarak blocklama yapacak şekilde proaktif aksiyonların alınması,

  • Bilinen Zararlılar, apt ve spear phishing kampanyaları ile ilgili güncel open repository'lerden, CTI üzerinden gelen yara kuralları ile ilgili kuralların güncel tutulması ve güvenlik cihazlarına eklenmesi,

  • Tehdit istihbaratı rolüne sahip güvenlik personelleri varsa bu roldeki kişilerin güvenlik üreticileri tarafından yayımlanan blog postları, underground forumları, real time free open intelligence kaynaklarını ,tweetleri, twitterdaki aktif kişileri takip ederek güncel tehditlerden haberdar olarak; kendi altyapılarında bu güvenlik olaylarının gerçekleşip gerçekleşmediğini analiz ederek, gereken önlemlerin alınması,

  • Zararlıların sizin kurumunuzu hedef almasa da ilgili zararlıların altyapınızda kullanmış olduğunuz güvenlik ürünlerinde test ederek sonuçlarını değerlendirip çıkarımlarda bulunup iyileştirmelerin yapılması ya da (attack and breach simulation araçlarının(picus security) aktif olarak kullanılarak çıkarımlarda bulunması),

  • Bilinen zararlılar ile ilgili ips, ids imzalarının güncel tutularak bu sistemlerden gelen logların analiz edilmesi(Bu zararlının https://rules.emergingthreats.net/ içerisinde public kuralları bulunmaktadır.) 

  • Ssl inspection cihazlarında WAN'e giden ve gelen trafiğin açılarak content'in analiz edilmesi, ssl açılan trafik eğer NGFW ise file blocking, antivirus, anti-spyware, url-filtering, ids, vulnerability protection... vb. gibi özelliklerin prevention moda alınıp logların SIEM sistemlerine gönderilerek analiz edilmesi,

  • EDR, AV, NGAV gibi çözümlerde eğer ürünlerin yetenekleri varsa normal altyapı içerisinde genel olarak anlamdırılan process eventlarından sonra, wscript.exe -> WU Commission.pdf.vbs, .*(.vbs) processing eventların analiz edilmesi, uygun querylerin yazılması, EDR sistemlerinde ürünlerin yeteneği varsa bu tür eventlarda loglama yapılması custom kural tanımlanması ve tanımlanan kuralların incident sonucu SIEM'e gonderilmesi ve daha fazla incelenmesi için güvenlik analistlerine alarmların düşürülmesi.

  • Saldırganlar tarafından sıklıkla kullanılan no-ip, dynamic dns servislerinin ekstra engellenmesi(.hopto.org, .zapto.org, .sytes.net, .ddns.net, no-ip.org, dyndns.org, changeip.com, duiadns.net, dynamicdns.org..)


SIEM Rules

Not:(Altyapınızda kullanmış olduğunuz güvenlik çözümleri ile ilgili bu zararlının tespiti için alarm kuralları yazılabilir; fakat kullanmış olduğunuz çözümlerin bu logları çıkması gerekir. Ben aklıma gelen SIEM senaryolarının tümünü yazmak istedim.)

  • Web Content Gw, Proxy trafiği içerisinde dynamic dns host kategorisine erişim isteği olursa alarm,
  • Dns Firewall loglarından dynamic dns host kategorisine erişim isteği olduysa alarm,
  • EDR'dan -> SIEM'e gönderilen loglar içerisinde incident olarak gelen bir event varsa ve wcscript.exe -> .*(.vbs) çalıştırılmaya çalışılmışsa alarm(false/positive durumları exclude edildikten sonra yapılabilir.)
  • Anvirus sistemlerinden gelen loglar içerisinde vbs.downlander.trojan vb. olarak kategorize edilmiş bir log SIEM'e geldiyse alarm,
  • Mail protection sistemlerinden gelen loglar içerisinde .*(.vbs) uzantılı bir dosya gelmişse alarm, 
  • Sandboxing sistemlerinden gelen loglar içerisinde .*(.vbs) uzantılı bir dosya analizi yapılmışsa alarm çalsın,
  • Sonu popüler zararlı dağıtan ve destination Url adresi gibi biten adreslere erişim isteği olursa alarm.(.hopto.org, .zapto.org, .sytes.net, .ddns.net, no-ip.org, dyndns.org, changeip.com, duiadns.net, dynamicdns.org...)
  • 5 dk içersinde AV sisteminden gelen loglarda vbs.downlander.trojan kategorisinde ve uzantısı .*(.vbs) olan bir log geldiyse ve aynı client PC'si üzerinden destination adresi dynamic dns host adresine erişim isteği olmuşsa ve blocklanmışsa alarm çalsın.
  • Firewall, proxy ve diğer network güvenlik cihazlarında destination adresi 194.5.99.53 olan ip adresine erişim trafiği-isteği olursa alarm.
  • Snort, Suricata ya da commercial IDS, IPS logları alınan bir ortamda ya da NGFW uygulanan IDS/IPS loglarında Houdini Rat imzasına match eden bir log gelirse alarm calsın. 
  • Proxy loglarından gelen loglar içerisinde userAgentField bilgisinde ‘<|>’ içeriyorsa alarm çalsın.
  • 5 dk içerisinde AV Endpoint ajanından gelen loglarda .*(.vbs) uzantılı bir dosya deviceAction bilgisinde "left alone" gibi bir ifade geçiyorsa ve tarama sonucu silinmediyse, aynı PC yine bu 5 dk içerisinde dynamic_dns_host kategorisinde bir domain adresine başarılı bir şekilde erişmişse alarm çalsın.

Ilgili Snort Rules

ET TROJAN Worm.VBS Dunihi/Houdini/H-Worm Checkin 1 


ET TROJAN Worm.VBS Dunihi/Houdini/H-Worm Checkin UA

Yara Rules

rule vbs_agent_hworm_houdini
{
 
    meta:

description = "VBS Agent from H-worm by Houdini - file WU Commission.pdf.vbs"
        author = "Ahmet Han"
reference="https://any.run/report/b52559280bd043bae24414ac1348694752026714dbdc8e42d2e9c5e81b30be53/6248de5f-7620-4daf-981c-02eaf5258189"
        date = "2019-01-21"
        hash = "b52559280bd043bae24414ac1348694752026714dbdc8e42d2e9c5e81b30be53"
 
    strings:
 
$s1 = "DIM"
  $s2 = "End sub"
$s3 = "Function"
$s4 = "CreateObject" fullword ascii
$s5 = "Microsoft.XMLDOM" fullword ascii
$s6 = "ADODB.Stream"  fullword ascii
$s7 = "iiIIIiii.createElement" fullword ascii

    condition:
        filesize < 24KB and 4 of them
}

*Yara kurallarını yazıp test ederken Adlice yara rule editorunden ve hybrid-analysis yara hunting search özelliğinden faydalandım.


Indicators of Compromise

File System Changes and Modification Events































          Network

Domains

  • freshguys.ddnsking.com


URI Patterns

  • /is-ready - > observed with analysis time!
  • /is-sending
  • /is-recving

C&C IP adress and port

  • 194.5.99.53:5674
Hash 

SHA256 -b52559280bd043bae24414ac1348694752026714dbdc8e42d2e9c5e81b30be53

Mitre ATT&CK

  • T1193 : Spearphishing Attachment
  • T1064 : Scripting
  • T1082 : System Information Discovery
  • T1333 : Dynamic Dns
  • T1132 : Data Encoding
  • T1057 : Process Discovery
  • T1001 : Data Obfuscation

Public Submissions and Analysis

Hybrid Analysis
Virus Total

Dynamic dns domains












Sonuç:

Perimeter security tarafında alınması gereken tüm önlemlerin alınmasını sağlamak artık tüm kurumların boynunun borcu. Bir NGFW deploy edilip mutlaka ng özellikleri açılmalı, web tarafı için waf ve ips profilleri uygulanmalı, bir endpoint protection, mail gw, sandbox...diğer çözümleri olmalı! Fakat güvenlik olay yönetimi ve müdahalesi süreçleri için mail tarafında alınacak ek önlemler, endpoint'te dönen olaylardan uçtan uca haberdar olmak spear phishing ve APT saldırıları için daha önemli. Farklı açılardan değerlendirecek olursak güvenliğin devam eden gelen, sürekli iyileştirilen ve gelişen süreçler bütünü olduğu. : ) Güvenli günler dilerim.

"If you know your network and your systems, you need not fear the result of a hundred cyber battles."

Sun Tzu, The Art of Cyber War

References:



3 yorum :

  1. Eline sağlık. Okuması bile uzun :) Yazmasını artık sen düşün.

    5 dk içersinde AV sisteminden gelen loglarda vbs.downlander.trojan kategorisinde ve uzantısı .*(.vbs) olan bir log geldiyse ve aynı client PC'si üzerinden destination adresi dynamic dns host adresine erişim isteği olmuşsa ve blocklanmışsa alarm çalsın.

    Kısmında eğer blocklanmamışsa daha tehlikeli olmaz mıydı?

    YanıtlaSil
  2. Bu kuralı yazarken AV loglarından tespit edildiği ve sonrası dynamic_dns_domaine istek olduğunu düşünerekten yazdım. Çünkü kategori bazlı kurumlar bunu blocklamayabilir. Blocklanmamışsa olayın olduğunu göstereceği için onunda yazılması faydalıdır. Teşekkürler,

    YanıtlaSil

Blog Arşivi