GİRİŞ
Siber güvenlik araştırmacıları tarafından Kuzey Kore tabanlı APT37 isimli tehdit grubunun aktiviteleri ile ilişkilendirilen Konni RAT’ın yeni bir varyantının Rusya’da hedefli oltalama saldırılarında kullanıldığı bilgisi paylaşılmıştır. Siber saldırıya ilişkin ilk bulgular Temmuz 2021’in sonlarında tespit edilmiştir. Yapılan değerlendirmelerde saldırının Rusya ve Kore Yarımadası arasındaki ekonomik ilişkilere dayandığı ifade edilmiştir. Bir diğer husus ise Rusya-Moğolistan arasındaki hükumetler arası görüşme olarak ortaya koyulmuştur.
Oltalama saldırısı ile iletilen Rusça ile yazılmış iki doküman tespit edilmiştir. Bu dokümanlar ayrı türde zararlı macro içermektedir.
SİBER SALDIRI DETAYLARI
Aşağıdaki diyagram, saldırının başlangıcından sonuna kadar geçen aşamaları ifade etmektedir.

DOKÜMAN ANALİZİ
Yazının başında belirtildiği üzere dokümanlar 2 farklı başlıkla iletilmektedir. Başlıklar, saldırının temel aldığı noktaları ortaya koymaktadır. İlk dosya 12 sayfalık “Economic relations.doc” isimli, 2010’da yazılmış olarak ifade edilen “The regional economic contacts of Far East Russia with Korean States (2010s)” konuludur. İkinci dosya ise “23th meeting of the intergovernmental Russian-Mongolian commission on Trade, Economic, scientific and technical operation” konuludur.

Dokümanlar basit ama etkili makrolar kullanmaktadır. Tek satırlı bir CMD komutu çalıştırmak için Shell fonksiyonu kullanılmaktadır. Bu komut, geçerli belgeyi girdi olarak kabul etmekte ve findstr kullanarak “^var” string’ini aramaktadır ve bulduğu içeriği “y.js” üzerine yazmaktadır. Makronun etkili olduğu nokta, oluşturulan JS dosyasının anti-virüsler tarafından yakalanmasını engellemek için makronun içeriğinin gizlenmesidir.

“y.js” dosyası aktif olan doküman üstünden argüman olarak çağrılmaktadır. Javascript, aktif olan doküman içinde enkod edilmiş iki tane kalıp (pattern) aramaktadır. En başta her kalıp, içeriğini temp.txt isimli bir dosyaya yazmaktadır, şifrelenmiş içerik dahili base64 çözücü ile şifresi çözülmüş şekilde çıktı olarak ortaya koyulmaktadır. “yy.js”, şifresi çözülmüş içeriğin verilerini tutmak için kullanılmaktadır. “y.ps1” ikinci olarak çözümlemesi yapılan yapının verilerini tutmaktadır. Çıktı dosyalar oluşturulduktan sonra Wscript ve Powershell kullanılarak çalıştırılmaktadır.

Powershell script’i (y.ps1), URLDownloadToFile’ı urlmon.dll’den ve WinExec’i kernel32.dll’den elde etmek için “DLLImport” fonksiyonunu kullanmaktadır. Bu işlemden sonra aşağıda belirtilen değişkenler tanımlanmaktadır:
- Dosyanın indirileceği URL adresi
- İndirilen dosyanın kaydedileceği alan (%APPDATA%/Temp)
- Kaydedilecek dosyanın ismi
Bu aşamada URLDownloadToFile fonksiyonu, “.cab” uzantılı olduğu görülen dosyayı indirerek %APPDATA%/Temp yoluna, GetTempFileName komutu aracılığıyla rastgele bir dosya adı ile yazılmasını sağlamaktadır. Devamında, WinExec kullanılarak ilgili dosyanın içeriğinin çıkarılması için CMD komutu çalıştırılmaktadır. Sürecin bitiminde WinExec kullanılarak y.ps1 dosyası silinmektedir.

Zarftan çıkarılan içerik 5 adet dosya içermektedir.
- check.bat
- install.bat
- xmlprov.dll
- xmlprov.ini
- xwtpui.dll
“yy.js” check.bat isimli dosyanın çalıştırılmasını sağlamakta ve çalıştırdıktan sonra kendini silmektedir.

Check.bat
Bu batch türündeki dosya, net session > nul kullanılarak CMD’nin administrator olarak başlatılıp başlatılmadığını kontrol etmektedir ve eğer bu şekilde başlatıldıysa install.bat dosyasını devreye almaktadır. Eğer bu durum geçerli değilse işletim sistemi kontrolünü yapmakta ve eğer Win 10 ise num isimli bir değişkeni 4, eğer Win 10 değilse değerini 1 olarak atamaktadır. Sonrasında check.bat, xwtpui.dll isimli dosyayı, rundll32.exe ile çalıştırmak için EntryPoint(dll çalıştırmak için kullanılan export fonksiyonu), num (İşletim sistemi versiyon kontrolü için atanan değer) ve install.bat parametrelerini kullanmaktadır.

Install.bat
Kullanılan bu zararlı yazılım, dışarıdan bakıldığında xmlprov Ağ Sağlama Hizmeti (Network Provisioning Service) gibi görünmektedir. Bu servis, domain tabanlı otomatik ağ hizmetlerinin XML konfigürasyonlarının yönetilmesini sağlamaktadır. Install.bat ise xmlprov.dll dosyanın bir servis olarak yüklenmesinden sorumludur. Bunu yaparken aşağıdaki aksiyonları gerçekleştirmektedir:
- Çalışan xmlprov servislerinin durdurur.
- System32’nin altında işlevi durdurulan dosyaları kopyalar ve bulundukları dizinin altından siler.
- xmlProv servisinin yüklenmiş olma durumunu kontrol eder ve yüklü değil ise svchost.exe üzerinden bir servis oluşturur.
- Type ve Binpath gibi xmlProv servis değerlerini değiştirir.
- Svchost’un altına xmlProv servislerini ekler.
- xmlProv registry key altına yeni xmlProv’u ekler.
- Son olarak da xmlProv servisini başlatır.

Xwtpui.dll
Hedef alınan makine yeterli ayrıcalıklara sahip değil ise xwtpui.dll, install.bat dosyasını yüklemek için devreye girmektedir. Bu sayede UAC bypass işlemi gerçekleştirerek install.bat dosyasının yüklenmesini sağlamaktadır.
EntryPoint, bu dll için ana export fonksiyonudur. API çağrılarını çözümleyerek aktivitelerine başlamaktadır.

Resim 9’da görüldüğü üzere Check_Priviledge_Level() fonksiyonu ile yetki kontrolü yapılmaktadır. UAC devre dışı durumda veya kullanıcı yeterli yetki derecesine sahip değil ise aşağıdaki aksiyonlar devreye girmektedir:
RtlQueryElevationFlags çağrılarak PFlags değeri kontrolü yardımıyla yükseltme durumu kontrol edilmektedir. Bu değer sıfıra eşit ise UAC devre dışı durumda demektir.
NtOpenProcessToken kullanılarak geçerli prosesin “Access token” değeri elde edilmektedir. Sonrasında, NtQueryInformationToken çağrılarak TokenElevationType değerinin kontrolü yapılmaktadır. Type değeri 3 değil ise proses yetkisi verilmiş demektir.

Yetki kontrolünün ardından gerekli parametrelerin uygulanmasından sonra UAC Bypass için “Token Impersonation Technique” isimli teknik kullanılmaktadır.
Token Impersonation UAC Bypass (Calvary UAC Bypass)
Calvary, bir token impersonation/theft tekniğidir. Bu teknik, install.bat dosyasının çalıştırılabilmesi için Windows Update Standalone Installer prosesinin (wusa.exe) token değerini kullanarak en yüksek yetki derecesinde cmd.exe çalıştırılmasını amaçlamaktadır.
UAC Bypass işlemi, ShellExecuteExw kullanılarak wusa.exe’nin çalıştırılmasıyla başlamaktadır. NtOpenProcessToken kullanılarak bu prosesin token değeri elde edilmektedir. NtDuplicateToken kullanılarak token değeri kopyalanmaktadır. Fonksiyonun DesiredAccess parametresi, yeni token için istenen yetki derecesini belirtmektedir. DesiredAccess parametresinin TOKEN_ALL_ACCESS olarak belirlenmesi kopyalanan token değerine hakların yeni token için de geçerli olmasını sağlamaktadır. Yeni token, ImpersonateLoggedOnUser() fonksiyonuna iletilir ve bu token, NtSetINformationThread kullanılarak bir thread olarak devre alınmaktadır.

Windows 10 UAC Bypass
Adım 1: “201ef99a-7fa0-444c-9399-19ba84f12a1a” değerine sahip bir interface id isimli string binding handle oluşturulur. Bu değer gerekli erişimde kullanılmak üzere devreye alınır.

Adım 2: RPC_ASYNC_STATE başlatılarak asenkron çağrılar oluşturulur. NdrAsyncClientCall aracılığıyla yeni yükseltilmemiş (non-elevated) proses (winver.exe) oluşturulur.

Adım 3: NtQueryInformationProcess kullanılarak oluşturulan prosesin kontrolünü sağlamak üzere debug objesi oluşturulur. Sonrasında, debugger’ı NtRemoveProcessDebug kullanarak işlemden ayırır ve TerminateProcess kullanarak bu işlemi sonlandırır.

Adım 4: Adım 1 ve Adım 2 tekrarlanarak Taskmgr.exe prosesi oluşturulur.
Adım 5: İlk debug işlemi sayesinde taskmgr.exe proses handle için tam erişim elde edilir. WaitForDebugEvent fonksiyonu kullanılarak ilk proses oluşturma debug olayını elde edilir ve proses handle sürecine ait tüm erişimi kazanmak için NtDuplicateObject kullanılır.

Adım 6: Taskmgr.exe’ye ait tüm yetkinin kazanılmasından sonra install.bat’ın çalıştırılması için CMD üzerinde tam erişim kazanılır. Bunu elde etmek için Parent PID Spoofing tekniği kullanılmaktadır.

Xmlprov.dll (Konni Rat)
Finalde, svchost.exe kullanılarak asıl payload devreye alınır. Bu RAT birçok anti-analiz tekniklerine ve karmaşıklaştırma yapısına sahiptir. Bu işlemleri gerçekleştirmek için “qwdfr0” isimli bir bölüme sahiptir. SeviceMain isimli bir export fonksiyonu kullanarak kendini bir servis olarak kaydetmektedir.

Bu RAT, encrypt edilmiş “xmlprov.ini” isimli bir konfigürasyon dosyasına sahiptir. İşlemin başında decrypt edilerek devreye girmektedir. RAT, aşağıdaki komutla toplanan verilerin sonucunda çalışmaya başlamaktadır.
- cmd /c systeminfo
- cmd /c tasklist
tasklist komutuyla elde edilen temp dosyaları, cab dosyalarına “cmd /c makecab” komutu kullanılarak dönüştürülmektedir. Elde edilen dosyalar, enkript edilerek saldırganın sunucusuna HTTP Post isteği kullanılarak gönderilir (hxxp://taketodjnfnei898.c1[.]biz/up.php?name=%UserName%).

SONUÇ
Yapılan inceleme sonucunda Konni RAT aktivitelerinin APT37 ilişkili olduğu değerlendirmesi yapılmıştır. Hedefler ağırlıklı olarak Güney Kore ve Rusya olarak görülmektedir. Japonya, Vietnam, Nepal ve Moğolistan da hedefler arasındadır. Zararlının yeni/eski özellikleri aşağıdaki gibidir:
Makrolarda farklılık bulunmaktadır. Eski versiyonlarda, veri tutmak için TextBox yapıları kullanılmıştır. Güncel versiyonda base64 şifreleme yapılarak content içerisinde tutulmaktadır.
Güncel atakta Javascript dosyaları, batch ve Powershell dosyaları çalıştırmak için kullanılmaktadır.
Powershell ve URLMON API kullanılarak .cab uzantılı dosyalar indirilmektedir. Eski versiyonda cerutil kullanılmıştır.
Bu kampanyada, hedef alınan makinenin işletim sistemi durumuna göre 2 farklı UAC Bypass tekniği kullanılmaktadır. Eski kampanyalarda sadece Token Impersonation tekniği kullanılmaktadır.
IOC LİSTESİ
Name | Sha256 |
N/A | fccad2fea7371ad24a1256b78165bceffc5d01a850f6e2ff576a2d8801ef94fa |
economics relations.doc | d283a0d5cfed4d212cd76497920cf820472c5f138fd061f25e3cddf65190283f |
y.js | 7f82540a6b3fc81d581450dbdf7dec7ad45d2984d3799084b29150ba91c004fd |
yy.js | 7a8f0690cb0eb7cbe72ddc9715b1527f33cec7497dcd2a1010def69e75c46586 |
y.ps1 | 617f733c05b42048c0399ceea50d6e342a4935344bad85bba2f8215937bc0b83 |
tmpBD2B.tmp | 10109e69d1fb2fe8f801c3588f829e020f1f29c4638fad5394c1033bc298fd3f |
check.bat | a7d5f7a14e36920413e743932f26e624573bbb0f431c594fb71d87a252c8d90d |
install.bat | 4876a41ca8919c4ff58ffb4b4df54202d82804fd85d0010669c7cb4f369c12c3 |
xwtpui.dll | 062aa6a968090cf6fd98e1ac8612dd4985bf9b29e13d60eba8f24e5a706f8311 |
xmlprov.dll | f702dfddbc5b4f1d5a5a9db0a2c013900d30515e69a09420a7c3f6eaac901b12 |
xmlprov.dll | 80641207b659931d5e3cad7ad5e3e653a27162c66b35b9ae9019d5e19e092362 |
xmlprov.ini | 491ed46847e30b9765a7ec5ff08d9acb8601698019002be0b38becce477e12f6 |
Domain Listesi
takemetoyouheart[.]c1[.]biz
taketodjnfnei898[.]ueuo[.]com
taketodjnfnei898[.]c1[.]biz
romanovawillkillyou[.]c1[.]biz
Referanslar