Bu yazıda size OceanLotus siber grubunun (APT32 ve APT-C-00) yakın zamanda halka açık güvenlik açıklarından birini nasıl kullandığını anlatacağız. , Microsoft Office'teki bellek bozulması güvenlik açıkları ve grubun kötü amaçlı yazılımlarının güvenliği ihlal edilmiş sistemlerde iz bırakmadan nasıl kalıcılığa ulaştığı. Daha sonra, 2019'un başından bu yana grubun kodu çalıştırmak için kendi kendine açılan arşivleri nasıl kullandığını açıklayacağız.
OceanLotus siber casusluk konusunda uzmanlaşmıştır ve öncelikli hedefleri Güneydoğu Asya'daki ülkelerdir. Saldırganlar, potansiyel kurbanların dikkatini çekecek, onları arka kapıyı çalıştırmaya ikna edecek sahte belgeler hazırlıyor ve aynı zamanda araçlar geliştirmeye de çalışıyor. Honeypot oluşturmak için kullanılan yöntemler, "çift uzantılı" dosyalardan, kendi kendine açılan arşivlerden, makrolu belgelerden bilinen istismarlara kadar saldırılara göre değişiklik gösterir.

Microsoft Denklem Düzenleyicisi'nde bir istismar kullanma
2018 yılının ortalarında OceanLotus, CVE-2017-11882 güvenlik açığından yararlanan bir kampanya yürüttü. Siber grubun kötü amaçlı belgelerinden biri, 360 Tehdit İstihbarat Merkezi uzmanları tarafından analiz edildi (), istismarın ayrıntılı bir açıklamasını içeren. Aşağıdaki gönderi bu tür kötü amaçlı bir belgeye genel bir bakış içermektedir.
İlk aşamada
Belge FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) yukarıdaki çalışmada bahsedilene benzer. İlginç çünkü Kamboçya siyasetiyle ilgilenen kullanıcıları hedefliyor (CNRP - Kamboçya Ulusal Kurtarma Partisi, 2017 sonunda feshedildi). .doc uzantısına rağmen belge RTF formatındadır (aşağıdaki resme bakınız), çöp kod içermektedir ve ayrıca bozuktur.

Şekil 1. RTF'deki "Çöp"
Bozuk öğeler olmasına rağmen Word bu RTF dosyasını başarıyla açar. Şekil 2'de görebileceğiniz gibi, 0xC00 uzaklığında bir EQNOLEFILEHDR yapısı, ardından bir MTEF başlığı ve ardından yazı tipi için bir MTEF girişi (Şekil 3) bulunmaktadır.

Şekil 2. FONT giriş değerleri

Şekil 3.
Sahada olası taşma isim, çünkü kopyalamadan önce boyutu kontrol edilmez. Çok uzun bir ad bir güvenlik açığını tetikler. RTF dosyasının içeriğinden görebileceğiniz gibi (Şekil 0'de 26xC2 uzaklığı), arabellek kabuk koduyla ve ardından sahte bir komutla doldurulur (0x90) ve iade adresi 0x402114. Adres bir diyalog öğesidir EQNEDT32.exe, talimatları gösteren RET. Bu, EIP'nin alanın başlangıcını göstermesine neden olur isimkabuk kodunu içerir.

Şekil 4. Açıklardan yararlanma kabuk kodunun başlangıcı
Аdres 0x45BD3C o anda yüklü olan yapıya bir işaretçi ulaşana kadar referansı kaldırılan bir değişkeni saklar MTEFData. Kabuk kodunun geri kalanı burada.
Kabuk kodunun amacı, açık belgeye gömülü olan ikinci kabuk kodunu çalıştırmaktır. Orijinal kabuk kodu ilk önce tüm sistem tanımlayıcılarını yineleyerek açık belgenin dosya tanımlayıcısını bulmaya çalışır (NtQuerySystemInformation bir argümanla SystemExtendedHandleInformation) ve eşleşip eşleşmediklerini kontrol ediyorum PID tanımlayıcı ve PID süreç WinWord ve belgenin erişim maskesiyle açılıp açılmadığı - 0x12019F.
Doğru tanıtıcının bulunduğunu doğrulamak için (başka bir açık belgenin tanıtıcısının değil), dosyanın içeriği şu işlev kullanılarak görüntülenir: CreateFileMappingve kabuk kodu, belgenin son dört baytının eşleşip eşleşmediğini kontrol eder "yyyy"(Yumurta Avı yöntemi). Bir eşleşme bulunduğunda belge geçici bir klasöre kopyalanır (GetTempPath) nasıl ole.dll. Daha sonra belgenin son 12 baytı okunur.
![]()
Şekil 5. Belge işaretleyicilerinin sonu
İşaretçiler arasında 32 bit değer AABBCCDD и yyyy bir sonraki kabuk kodunun uzaklığıdır. Fonksiyon kullanılarak çağrılır CreateThread. Daha önce OceanLotus grubu tarafından kullanılan kabuk kodunun aynısı çıkarıldı. Mart 2018'de yayınladığımız XNUMX. aşama dump için halen çalışmaktadır.
İkinci aşamada
Bileşenleri Kaldırma
Dosya ve dizin adları dinamik olarak seçilir. Kod, yürütülebilir dosyanın veya DLL dosyasının adını rastgele seçer. C:Windowssystem32. Daha sonra kaynaklarına bir istekte bulunur ve alanı alır FileDescription klasör adı olarak kullanmak için. Bu işe yaramazsa kod, dizinlerden rastgele bir klasör adı seçer. %ProgramFiles% veya C:Windows (GetWindowsDirectoryW'den). Mevcut dosyalarla çakışabilecek bir adın kullanılmasını önler ve aşağıdaki kelimeleri içermemesini sağlar: windows, Microsoft, desktop, system, system32 veya syswow64. Dizin zaten mevcutsa ismin sonuna "NLS_{6 karakter}" eklenir.
Kaynak 0x102 analiz edilir ve dosyalar içine dökülür %ProgramFiles% veya %AppData%, rastgele seçilen bir klasöre. Oluşturma zamanı aynı değerlere sahip olacak şekilde değiştirildi kernel32.dll.
Örneğin, yürütülebilir dosya seçilerek oluşturulan klasör ve dosyaların listesi burada C:Windowssystem32TCPSVCS.exe bir veri kaynağı olarak.

Şekil 6. Çeşitli bileşenlerin çıkarılması
Kaynak yapısı 0x102 bir damlalıkta oldukça karmaşıktır. Özetle şunları içerir:
— Dosya adları
— Dosya boyutu ve içeriği
— Sıkıştırma formatı (COMPRESSION_FORMAT_LZNT1, işlev tarafından kullanılır RtlDecompressBuffer)
İlk dosya şu şekilde sıfırlanır: TCPSVCS.exemeşru olan AcroTranscoder.exe (buna göre FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).
Bazı DLL dosyalarının 11 MB'tan büyük olduğunu fark etmiş olabilirsiniz. Bunun nedeni, çalıştırılabilir dosyanın içine büyük bir bitişik rastgele veri arabelleğinin yerleştirilmesidir. Bunun bazı güvenlik ürünleri tarafından tespit edilmesini önlemenin bir yolu olması mümkündür.
Kalıcılığın sağlanması
Kaynak 0x101 Damlalıktaki kalıcılığın nasıl sağlanması gerektiğini belirten iki adet 32 bitlik tamsayı içerir. İlkinin değeri, kötü amaçlı yazılımın yönetici hakları olmadan nasıl devam edeceğini belirtir.

Tablo 1. Yönetici hakları olmadan kalıcılık mekanizması
İkinci tam sayının değeri, kötü amaçlı yazılımın yönetici haklarıyla çalışırken nasıl kalıcılığa ulaşması gerektiğini belirtir.

Tablo 2. Yönetici haklarına sahip kalıcılık mekanizması
Hizmet adı, uzantısı olmayan dosya adıdır; görünen ad klasörün adıdır, ancak zaten mevcutsa " dizesi ona eklenirRevision 1” (kullanılmayan bir ad bulunana kadar sayı artar). Operatörler, hizmet boyunca kalıcılığın sağlam olduğundan emin oldu; arıza durumunda hizmetin 1 saniye sonra yeniden başlatılması gerekiyordu. Daha sonra değer WOW64 Yeni hizmetin kayıt defteri anahtarının 4 olarak ayarlanması, bunun 32 bit bir hizmet olduğunu gösterir.
Zamanlanmış bir görev çeşitli COM arayüzleri aracılığıyla oluşturulur: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. Temel olarak, kötü amaçlı yazılım gizli bir görev oluşturur, hesap bilgilerini mevcut kullanıcı veya yönetici bilgileriyle birlikte ayarlar ve ardından tetikleyiciyi ayarlar.
Bu, 24 saat süren ve 10 dakikalık iki yürütme arasındaki aralıklardan oluşan günlük bir görevdir, yani sürekli çalışacaktır.
Kötü niyetli bit
Örneğimizde yürütülebilir dosya TCPSVCS.exe (AcroTranscoder.exe), kendisiyle birlikte sıfırlanan DLL'leri yükleyen yasal bir yazılımdır. Bu durumda ilgi çekici Flash Video Extension.dll.
İşlevi DLLMain sadece başka bir işlevi çağırır. Bazı bulanık yüklemler mevcuttur:

Şekil 7. Bulanık yüklemler
Bu yanıltıcı kontrollerden sonra kod bir bölüm alır .text dosya TCPSVCS.exe, savunmasını şu şekilde değiştirir: PAGE_EXECUTE_READWRITE ve sahte talimatlar ekleyerek yeniden yazar:

Şekil 8. Talimatların sırası
Fonksiyon adresinin sonunda FLVCore::Uninitialize(void), ihraç edildi Flash Video Extension.dll, talimat eklendi CALL. Bu, kötü amaçlı DLL yüklendikten sonra çalışma zamanı çağrıldığında WinMain в TCPSVCS.exetalimat işaretçisi NOP'u işaret edecek ve bu durum FLVCore::Uninitialize(void), Sonraki etap.
İşlev basitçe şununla başlayan bir muteks oluşturur: {181C8480-A975-411C-AB0A-630DB8B0A221}ve ardından mevcut kullanıcı adı gelir. Daha sonra konumdan bağımsız kod içeren, dökülen *.db3 dosyasını okur ve CreateThread İçeriği yürütmek için.
*.db3 dosyasının içeriği OceanLotus grubunun genellikle kullandığı kabuk kodudur. Yayınladığımız emülatör komut dosyasını kullanarak yükünü yeniden başarıyla paketinden çıkardık .
Senaryo son aşamayı çıkarıyor. Bu bileşen, daha önce analiz ettiğimiz bir arka kapıdır. . Bu GUID tarafından belirlenebilir {A96B020F-0000-466F-A96D-A91BBF8EAC96} ikili dosya. Kötü amaçlı yazılım yapılandırması PE kaynağında hâlâ şifrelenmiştir. Yaklaşık olarak aynı konfigürasyona sahiptir ancak C&C sunucuları öncekilerden farklıdır:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
OceanLotus ekibi, tespit edilmekten kaçınmak için farklı tekniklerin bir kombinasyonunu bir kez daha gösteriyor. Enfeksiyon sürecinin "rafine edilmiş" bir diyagramıyla geri döndüler. Rastgele adlar seçerek ve yürütülebilir dosyaları rastgele verilerle doldurarak güvenilir IoC'lerin (karmalara ve dosya adlarına dayalı olarak) sayısını azaltırlar. Üstelik üçüncü taraf DLL yüklemesinin kullanılması sayesinde saldırganların yalnızca meşru ikili dosyayı kaldırması gerekir. AcroTranscoder.
Kendi kendine açılan arşivler
RTF dosyalarından sonra grup, kullanıcının kafasını daha da karıştırmak için ortak belge simgelerine sahip kendi kendine açılan (SFX) arşivlere geçti. Threatbook bunun hakkında yazdı (). Başlatma sırasında, kendi kendine açılan RAR dosyaları bırakılır ve .ocx uzantılı DLL'ler yürütülür; bunların son yükü daha önce belgelenmiştir. {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. OceanLotus, Ocak 2019'un ortasından bu yana bu tekniği yeniden kullanıyor ancak zaman içinde bazı yapılandırmaları değiştiriyor. Bu bölümde teknikten ve değişikliklerden bahsedeceğiz.
Yem Yaratmak
Belge THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) ilk olarak 2018'de bulundu. Bu SFX dosyası akıllıca oluşturuldu - açıklamada (Sürüm Bilgisi) bunun bir JPEG görüntüsü olduğunu söylüyor. SFX betiği şuna benzer:

Şekil 9. SFX Komutları
Kötü amaçlı yazılım sıfırlanıyor {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC) ve bir resim 2018 thich thong lac.jpg.
Tuzak görüntüsü şuna benzer:

Şekil 10. Tuzak görüntüsü
SFX betiğindeki ilk iki satırın OCX dosyasını iki kez çağırdığını fark etmiş olabilirsiniz ancak bu bir hata değildir.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
OCX dosyasının kontrol akışı diğer OceanLotus bileşenlerine çok benzer; birçok komut dizisi JZ/JNZ и PUSH/RET, çöp koduyla dönüşümlü olarak.

Şekil 11. Karmaşık kod
Önemsiz kodu filtreledikten sonra dışa aktarın DllRegisterServer, isminde regsvr32.exe, şuna benziyor:

Şekil 12. Temel kurulumcu kodu
Temel olarak, ilk aramada DllRegisterServer dışa aktarma kayıt defteri değerini ayarlar HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model DLL'de şifrelenmiş ofset için (0x10001DE0).
Fonksiyon ikinci kez çağrıldığında aynı değeri okur ve o adreste çalışır. Buradan kaynak ve RAM'deki birçok eylem okunur ve yürütülür.
Kabuk kodu, geçmiş OceanLotus kampanyalarında kullanılan PE yükleyicinin aynısıdır. Kullanılarak taklit edilebilir . Sonunda sıfırlanıyor db293b825dcc419ba7dc2c49fa2757ee.dll, belleğe yükler ve çalıştırır DllEntry.
DLL, kaynağının içeriğini çıkarır, şifresini çözer (AES-256-CBC) ve sıkıştırmasını açar (LZMA). Kaynağın, kaynak koda dönüştürülmesi kolay belirli bir formatı vardır.

Şekil 13. Yükleyici yapılandırma yapısı (KaitaiStruct Visualizer)
Yapılandırma açıkça belirtilir; ayrıcalık düzeyine bağlı olarak ikili veriler şuraya yazılır: %appdata%IntellogsBackgroundUploadTask.cpl veya %windir%System32BackgroundUploadTask.cpl (ya SysWOW64 64 bit sistemler için).
Adıyla bir görev oluşturularak daha fazla kalıcılık sağlanır. BackgroundUploadTask[junk].jobNerede [junk] bir bayt kümesini temsil eder 0x9D и 0xA0.
Görev Uygulama Adı %windir%System32control.exeve parametre değeri indirilen ikili dosyanın yoludur. Gizli görev her gün çalışır.
Yapısal olarak, bir CPL dosyası dahili adı olan bir DLL'dir ac8e06de0a6c4483af9837d96504127e.dllbir işlevi dışa aktaran CPlApplet. Bu dosya tek kaynağının şifresini çözüyor {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, ardından bu DLL'yi yükler ve onun tek dışa aktarımını çağırır DllEntry.
Arka kapı yapılandırma dosyası
Arka kapı yapılandırması şifrelenir ve kaynaklarına gömülür. Yapılandırma dosyasının yapısı öncekine çok benzer.

Şekil 14. Arka kapı yapılandırma yapısı (KaitaiStruct Visualizer)
Yapı benzer olmasına rağmen alan değerlerinin çoğu, şekilde gösterilenlerden güncellenmiştir. .
İkili dizinin ilk elemanı bir DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), . Ancak dışa aktarma adı ikili dosyadan kaldırıldığı için karmalar eşleşmiyor.
Ek Araştırma
Örnekleri toplarken bazı özellikleri fark ettik. Az önce açıklanan örnek Temmuz 2018 civarında ortaya çıktı ve buna benzer diğerleri Ocak ortasından Şubat 2019'un başına kadar yakın bir zamanda ortaya çıktı. SFX arşivi, yasal bir sahte belge ve kötü amaçlı bir OSX dosyası bırakarak bir enfeksiyon vektörü olarak kullanıldı.
OceanLotus sahte zaman damgaları kullansa da SFX ve OCX dosyalarının zaman damgalarının her zaman aynı olduğunu fark ettik (0x57B0C36A (08 @ 14:2016 UTC) ve 0x498BE80F (sırasıyla 02/06/2009 @ 7:34am UTC). Bu muhtemelen yazarların aynı şablonları kullanan ve yalnızca bazı özellikleri değiştiren bir tür "tasarımcıya" sahip olduklarını gösteriyor.
2018 yılının başından bu yana incelediğimiz belgeler arasında saldırganların ilgilendiği ülkeleri belirten çeşitli isimler yer alıyor:
— Kamboçya Medyasının Yeni İletişim Bilgileri(Yeni).xls.exe
— 李建香 (个人简历).exe (bir CV'nin sahte pdf belgesi)
— geri bildirim, 28-29 Temmuz 2018'de ABD'de Rally.exe
Arka kapı keşfedildiğinden beri {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll ve analizinin birkaç araştırmacı tarafından yayınlanmasının ardından, kötü amaçlı yazılım yapılandırma verilerinde bazı değişiklikler gözlemledik.
İlk olarak yazarlar yardımcı DLL'lerden adları kaldırmaya başladılar (DNSprov.dll ve iki versiyon HttpProv.dll). Operatörler daha sonra üçüncü DLL'nin (ikinci sürüm) paketlenmesini durdurdu. HttpProv.dll), yalnızca birini yerleştirmeyi seçiyorsunuz.
İkinci olarak, birçok IoC kullanıma sunuldukça muhtemelen tespit edilmekten kaçınmak için birçok arka kapı konfigürasyon alanı değiştirildi. Yazarlar tarafından değiştirilen önemli alanlar şunlardır:
- AppX kayıt defteri anahtarı değiştirildi (bkz. IoC'ler)
- muteks kodlama dizisi ("def", "abc", "ghi")
- Port numarası
Son olarak, analiz edilen tüm yeni sürümlerde IoC'ler bölümünde listelenen yeni C&C'ler bulunur.
Bulgular
OceanLotus gelişmeye devam ediyor. Siber grup, araçları ve yemleri iyileştirmeye ve genişletmeye odaklanıyor. Yazarlar, konusu hedeflenen kurbanlarla ilgili olan dikkat çekici belgeleri kullanarak kötü amaçlı yükleri gizler. Yeni planlar geliştiriyorlar ve ayrıca Denklem Düzenleyicisi'nin istismarı gibi halka açık araçları kullanıyorlar. Dahası, kurbanların makinelerinde kalan artefaktların sayısını azaltacak araçlar geliştiriyorlar, böylece antivirüs yazılımı tarafından tespit edilme şansı da azaltılıyor.
Uzlaşma göstergeleri
Uzlaşma göstergelerinin yanı sıra MITRE ATT&CK özellikleri de mevcuttur и .
Kaynak: habr.com
