Bu yazıda sizə OceanLotus kiberqrupunun (APT32 və APT-C-00) bu yaxınlarda ictimaiyyətə açıq olan istismarlardan birini necə istifadə etdiyini izah edəcəyik.
OceanLotus kibercasusluq üzrə ixtisaslaşıb, prioritet hədəfləri Cənub-Şərqi Asiya ölkələridir. Təcavüzkarlar potensial qurbanların diqqətini cəlb edən sənədləri saxtalaşdıraraq onları arxa qapını yerinə yetirməyə inandırır və həmçinin alətlər hazırlamaq üzərində işləyirlər. Bal küpləri yaratmaq üçün istifadə edilən üsullar "ikiqat genişləndirmə" fayllarından, öz-özünə açılan arxivlərdən, makroları olan sənədlərdən, məlum istismarlara qədər müxtəlif hücumlara görə dəyişir.
Microsoft Equation Editor-da istismardan istifadə
2018-ci ilin ortalarında OceanLotus CVE-2017-11882 zəifliyindən istifadə edən kampaniya keçirdi. Kiberqrupun zərərli sənədlərindən biri 360 Təhdid Kəşfiyyat Mərkəzinin mütəxəssisləri tərəfindən təhlil edilib (
Birinci mərhələ
Sənəd FW Report on demonstration of former CNRP in Republic of Korea.doc
(SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3
) yuxarıdakı tədqiqatda qeyd olunanlara bənzəyir. Maraqlıdır, çünki Kamboca siyasəti ilə maraqlanan istifadəçilərə yönəlmişdir (CNRP - Kamboca Milli Xilasetmə Partiyası, 2017-ci ilin sonunda ləğv edilmişdir). .doc genişlənməsinə baxmayaraq, sənəd RTF formatındadır (aşağıdakı şəklə baxın), zibil kodunu ehtiva edir və həmçinin təhrif edilmişdir.
Şəkil 1. RTF-də “Zibil”
Bozuk elementlər olsa da, Word bu RTF faylını uğurla açır. Şəkil 2-də gördüyünüz kimi, 0xC00 ofsetində EQNOLEFILEHDR strukturu, ardınca MTEF başlığı, sonra isə şrift üçün MTEF girişi (Şəkil 3) mövcuddur.
Şəkil 2. FONT giriş qiymətləri
Şəkil 3.
Sahədə mümkün daşqın ad, çünki kopyalamadan əvvəl onun ölçüsü yoxlanılmır. Çox uzun ad zəifliyə səbəb olur. RTF faylının məzmunundan göründüyü kimi (Şəkil 0-də 26xC2 ofset), bufer shellcode ilə doldurulur və ardınca dummy komanda (0x90
) və qayıdış ünvanı 0x402114
. Ünvan dialoq elementidir EQNEDT32.exe
, təlimatları göstərən RET
. Bu, EIP-nin sahənin başlanğıcını göstərməsinə səbəb olur adqabıq kodunu ehtiva edir.
Şəkil 4. Exploit shellcode-un başlanğıcı
ünvan 0x45BD3C
hal-hazırda yüklənmiş strukturun göstəricisinə çatana qədər referensiyadan çıxarılan dəyişəni saxlayır MTEFData
. Qabıq kodunun qalan hissəsi buradadır.
Shellcode-un məqsədi açıq sənədə daxil edilmiş ikinci shellcode parçasını icra etməkdir. Orijinal qabıq kodu əvvəlcə bütün sistem deskriptorları üzərində təkrarlamaqla açıq sənədin fayl deskriptorunu tapmağa çalışır (NtQuerySystemInformation
arqumentlə SystemExtendedHandleInformation
) və uyğun olub olmadığını yoxlayın PID təsviri və PID proses WinWord
və sənədin giriş maskası ilə açılıb-açılmaması - 0x12019F
.
Düzgün tutacaq tapıldığını təsdiqləmək üçün (başqa açıq sənədin tutacağı deyil) funksiyadan istifadə edərək faylın məzmunu göstərilir. CreateFileMapping
, və shellcode sənədin son dörd baytının uyğun olub olmadığını yoxlayır "yyyy
"(Yumurta ovlama üsulu). Uyğunluq tapıldıqdan sonra sənəd müvəqqəti qovluğa kopyalanır (GetTempPath
) Necə ole.dll
. Sonra sənədin son 12 baytı oxunur.
Şəkil 5. Sənəd markerlərinin sonu
Markerlər arasında 32 bit dəyər AABBCCDD
и yyyy
növbəti qabıq kodunun ofsetidir. Funksiyadan istifadə etməklə deyilir CreateThread
. Əvvəllər OceanLotus qrupu tərəfindən istifadə edilən eyni qabıq kodu çıxarıldı.
İkinci mərhələ
Komponentlərin çıxarılması
Fayl və kataloq adları dinamik olaraq seçilir. Kod təsadüfi olaraq icra olunan və ya DLL faylının adını seçir C:Windowssystem32
. Daha sonra öz resurslarına sorğu göndərir və sahəni götürür FileDescription
qovluq adı kimi istifadə etmək. Bu işləmirsə, kod təsadüfi olaraq qovluqlardan qovluq adını seçir %ProgramFiles%
və ya C:Windows
(GetWindowsDirectoryW-dən). O, mövcud fayllarla ziddiyyət təşkil edə biləcək addan istifadə etməkdən çəkinir və tərkibində aşağıdakı sözlərin olmamasına zəmanət verir: windows
, Microsoft
, desktop
, system
, system32
və ya syswow64
. Əgər kataloq artıq mövcuddursa, adına "NLS_{6 simvol}" əlavə olunur.
vəsait 0x102
təhlil edilir və fayllar içəriyə atılır %ProgramFiles%
və ya %AppData%
, təsadüfi seçilmiş qovluğa. Eyni dəyərlərə sahib olmaq üçün yaradılış vaxtı dəyişdirildi kernel32.dll
.
Məsələn, burada icra olunanı seçməklə yaradılan qovluq və faylların siyahısı var C:Windowssystem32TCPSVCS.exe
məlumat mənbəyi kimi.
Şəkil 6. Müxtəlif komponentlərin çıxarılması
Resurs strukturu 0x102
bir damcı olduqca mürəkkəbdir. Bir sözlə, tərkibində:
- Fayl adları
- Fayl ölçüsü və məzmunu
— Sıxılma formatı (COMPRESSION_FORMAT_LZNT1
, funksiyası tərəfindən istifadə olunur RtlDecompressBuffer
)
Birinci fayl olaraq sıfırlanır TCPSVCS.exe
, bu qanunauyğundur AcroTranscoder.exe
(görə) FileDescription
, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3
).
Bəzi DLL fayllarının 11 MB-dən böyük olduğunu görmüsünüz. Bunun səbəbi, icra edilə bilən faylın içərisində təsadüfi məlumatların böyük bir bitişik buferinin yerləşdirilməsidir. Mümkündür ki, bu, bəzi təhlükəsizlik məhsulları tərəfindən aşkarlanmamaq üçün bir yoldur.
Davamlılığın təmin edilməsi
vəsait 0x101
damcıda əzmkarlığın necə təmin edilməli olduğunu göstərən iki 32 bitlik tam ədəd var. Birincinin dəyəri zərərli proqramın administrator hüquqları olmadan necə davam edəcəyini müəyyənləşdirir.
Cədvəl 1. Administrator hüquqları olmadan davamlılıq mexanizmi
İkinci tam ədədin dəyəri zərərli proqramın administrator hüquqları ilə işləyərkən davamlılığa necə nail olacağını müəyyənləşdirir.
Cədvəl 2. Administrator hüquqları ilə davamlılıq mexanizmi
Xidmət adı uzantısız fayl adıdır; ekran adı qovluğun adıdır, lakin artıq mövcuddursa, ona “ sətri əlavə olunurRevision 1
” (istifadə olunmamış ad tapılana qədər rəqəm artır). Operatorlar xidmət vasitəsilə davamlılığın möhkəm olduğuna əmin oldular - uğursuzluq halında xidmət 1 saniyədən sonra yenidən işə salınmalıdır. Sonra dəyər WOW64
Yeni xidmət reyestrinin açarı 4-ə təyin edilib ki, bu da onun 32 bitlik xidmət olduğunu göstərir.
Planlaşdırılmış tapşırıq bir neçə COM interfeysi vasitəsilə yaradılır: ITaskScheduler
, ITask
, ITaskTrigger
, IPersistFile
и ITaskScheduler
. Əslində, zərərli proqram gizli tapşırıq yaradır, cari istifadəçi və ya administrator məlumatı ilə birlikdə hesab məlumatlarını təyin edir və sonra tətiyi təyin edir.
Bu, 24 saat davam edən və 10 dəqiqəlik iki icra arasındakı fasilələrlə gündəlik işdir, yəni davamlı işləyəcək.
Zərərli bit
Bizim nümunəmizdə icra olunan fayl TCPSVCS.exe
(AcroTranscoder.exe
) onunla birlikdə sıfırlanmış DLL-ləri yükləyən qanuni proqramdır. Bu halda maraq doğurur Flash Video Extension.dll
.
Onun funksiyası DLLMain
sadəcə başqa funksiyanı çağırır. Bəzi qeyri-səlis predikatlar mövcuddur:
Şəkil 7. Qeyri-səlis predikatlar
Bu yanlış yoxlamalardan sonra kod bir bölmə alır .text
fayl TCPSVCS.exe
, müdafiəsini dəyişdirir PAGE_EXECUTE_READWRITE
və dummy təlimatlar əlavə edərək onu yenidən yazır:
Şəkil 8. Təlimatların ardıcıllığı
Funksiya ünvanının sonunda FLVCore::Uninitialize(void)
, ixrac edilir Flash Video Extension.dll
, təlimat əlavə olunur CALL
. Bu o deməkdir ki, zərərli DLL yükləndikdən sonra iş vaxtı çağırıldıqda WinMain
в TCPSVCS.exe
, göstəriş göstəricisi səbəb olan NOP-a işarə edəcək FLVCore::Uninitialize(void)
, növbəti mərhələ.
Funksiya sadəcə olaraq ilə başlayan mutex yaradır {181C8480-A975-411C-AB0A-630DB8B0A221}
ardınca cari istifadəçi adı. Daha sonra mövqedən asılı olmayan kodu ehtiva edən boşaltılmış *.db3 faylını oxuyur və istifadə edir CreateThread
məzmunu yerinə yetirmək üçün.
*.db3 faylının məzmunu OceanLotus qrupunun adətən istifadə etdiyi qabıq kodudur. Biz dərc etdiyimiz emulator skriptindən istifadə edərək onun faydalı yükünü yenidən uğurla açdıq
Ssenari son mərhələni çıxarır. Bu komponent artıq təhlil etdiyimiz arxa qapıdır {A96B020F-0000-466F-A96D-A91BBF8EAC96}
ikili fayl. Zərərli proqram konfiqurasiyası hələ də PE resursunda şifrələnir. Təxminən eyni konfiqurasiyaya malikdir, lakin C&C serverləri əvvəlkilərdən fərqlidir:
- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz
OceanLotus komandası aşkarlanmamaq üçün yenidən müxtəlif texnikaların birləşməsini nümayiş etdirir. Onlar yoluxma prosesinin “zərif” diaqramı ilə qayıtdılar. Təsadüfi adlar seçmək və icra olunanları təsadüfi məlumatlarla doldurmaqla, onlar etibarlı IoC-lərin sayını azaldırlar (heşlər və fayl adları əsasında). Üstəlik, üçüncü tərəfin DLL yüklənməsinin istifadəsi sayəsində təcavüzkarlar yalnız qanuni ikili faylı silməlidirlər. AcroTranscoder
.
Öz-özünə açılan arxivlər
RTF fayllarından sonra qrup istifadəçini daha da çaşdırmaq üçün ümumi sənəd nişanları olan öz-özünə açılan (SFX) arxivlərə keçdi. Bu barədə Threbook yazıb ({A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
. 2019-cu ilin yanvar ayının ortalarından etibarən OceanLotus bu texnikadan təkrar istifadə edir, lakin zamanla bəzi konfiqurasiyaları dəyişir. Bu bölmədə texnika və dəyişikliklər haqqında danışacağıq.
Cazibədarlığın yaradılması
Sənəd THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE
(SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB
) ilk dəfə 2018-ci ildə tapılıb. Bu SFX faylı ağıllı şəkildə yaradılmışdır - təsvirdə (Versiya haqqında məlumat) bunun JPEG şəkli olduğunu deyir. SFX skripti belə görünür:
Şəkil 9. SFX Əmrləri
Zərərli proqram sıfırlanır {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx
(SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC
), həmçinin şəkil 2018 thich thong lac.jpg.
Aldatma şəkli belə görünür:
Şəkil 10. Aldatma şəkli
SFX skriptindəki ilk iki sətirin OCX faylını iki dəfə çağırdığını fərq etmiş ola bilərsiniz, lakin bu, xəta deyil.
{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)
OCX faylının idarəetmə axını digər OceanLotus komponentlərinə çox oxşardır - bir çox əmr ardıcıllığı JZ/JNZ
и PUSH/RET
, zibil kodu ilə növbə ilə.
Şəkil 11. Qarışıq kod
Lazımsız kodu süzdükdən sonra ixrac edin DllRegisterServer
, çağırdı regsvr32.exe
, göstərildiyi kimi:
Şəkil 12. Əsas quraşdırıcı kodu
Əsasən, ilk zəngdə DllRegisterServer
ixrac reyestr dəyərini təyin edir HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model
DLL-də şifrələnmiş ofset üçün (0x10001DE0
).
Funksiya ikinci dəfə çağırılanda eyni dəyəri oxuyur və həmin ünvanda yerinə yetirilir. Buradan resurs və RAM-da bir çox hərəkətlər oxunur və yerinə yetirilir.
Shellcode keçmiş OceanLotus kampaniyalarında istifadə edilən eyni PE yükləyicisidir. Istifadə edərək təqlid edilə bilər db293b825dcc419ba7dc2c49fa2757ee.dll
, onu yaddaşa yükləyir və icra edir DllEntry
.
DLL öz resursunun məzmununu çıxarır, şifrəsini açır (AES-256-CBC) və onu açar (LZMA). Resursun dekompilyasiyası asan olan xüsusi formatı var.
Şəkil 13. Quraşdırıcının konfiqurasiya strukturu (KaitaiStruct Visualizer)
Konfiqurasiya açıq şəkildə göstərilmişdir - imtiyaz səviyyəsindən asılı olaraq, binar məlumatlar yazılacaqdır %appdata%IntellogsBackgroundUploadTask.cpl
və ya %windir%System32BackgroundUploadTask.cpl
(Və ya SysWOW64
64 bit sistemlər üçün).
Daha davamlılıq adı ilə bir tapşırıq yaratmaqla təmin edilir BackgroundUploadTask[junk].job
Hara [junk]
bayt dəstini təmsil edir 0x9D
и 0xA0
.
Tapşırıq Tətbiqinin Adı %windir%System32control.exe
, və parametr dəyəri yüklənmiş ikili faylın yoludur. Gizli tapşırıq hər gün işləyir.
Struktur olaraq, CPL faylı daxili adı olan DLL-dir ac8e06de0a6c4483af9837d96504127e.dll
funksiyanı ixrac edən CPlApplet
. Bu fayl yeganə resursunun şifrəsini açır {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
, sonra bu DLL-ni yükləyir və onun yeganə ixracını çağırır DllEntry
.
Arxa qapı konfiqurasiya faylı
Arxa qapı konfiqurasiyası şifrələnir və onun resurslarına daxil edilir. Konfiqurasiya faylının strukturu əvvəlki ilə çox oxşardır.
Şəkil 14. Arxa qapı konfiqurasiya strukturu (KaitaiStruct Visualizer)
Struktur oxşar olsa da, bir çox sahə dəyərləri göstərilənlərdən yeniləndi
İkili massivin ilk elementi DLL-dən ibarətdir (HttpProv.dll
MD5: 2559738D1BD4A999126F900C7357B759
),
Əlavə tədqiqat
Nümunələri toplayarkən bəzi xüsusiyyətlərə diqqət yetirdik. İndicə təsvir edilən nümunə 2018-ci ilin iyulunda, digərləri isə 2019-cu ilin yanvar ayının ortalarından fevralın əvvəlinə kimi ortaya çıxdı. SFX arxivi qanuni saxtakarlıq sənədini və zərərli OSX faylını ataraq infeksiya vektoru kimi istifadə edilmişdir.
OceanLotus saxta vaxt ştamplarından istifadə etsə də, SFX və OCX fayllarının vaxt damğalarının həmişə eyni olduğunu gördük (0x57B0C36A
(08/14/2016 @ 7:15 UTC) və 0x498BE80F
(02/06/2009 @ 7:34 UTC) müvafiq olaraq). Bu, yəqin ki, müəlliflərin eyni şablonlardan istifadə edən və sadəcə bəzi xüsusiyyətləri dəyişdirən bir növ "dizayner" olduğunu göstərir.
2018-ci ilin əvvəlindən tədqiq etdiyimiz sənədlər arasında təcavüzkarları maraqlandıran ölkələri göstərən müxtəlif adlar var:
— Kamboca Mediasının Yeni Əlaqə Məlumatı(Yeni).xls.exe
— 李建香 (个人简历).exe (CV-nin saxta pdf sənədi)
— rəy, 28-29 iyul 2018-ci il tarixlərində ABŞ-da Rally.exe
Arxa qapı aşkar edildikdən bəri {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll
və onun təhlilinin bir neçə tədqiqatçı tərəfindən dərc edilməsi, biz zərərli proqram konfiqurasiya məlumatlarında bəzi dəyişiklikləri müşahidə etdik.
Əvvəlcə müəlliflər köməkçi DLL-lərdən adları silməyə başladılar (DNSprov.dll
və iki versiya HttpProv.dll
). Bundan sonra operatorlar üçüncü DLL-nin (ikinci versiya HttpProv.dll
), yalnız birini yerləşdirməyi seçmək.
İkincisi, bir çox arxa qapı konfiqurasiya sahələri dəyişdirildi, çox güman ki, bir çox IoC əlçatan olduqda aşkarlanmaqdan yayına bilər. Müəlliflər tərəfindən dəyişdirilmiş mühüm sahələrə aşağıdakılar daxildir:
- AppX qeyd açarı dəyişdirildi (bax IoCs)
- mutex kodlaşdırma sətri ("def", "abc", "ghi")
- port nömrəsi
Nəhayət, təhlil edilən bütün yeni versiyalarda IoCs bölməsində sadalanan yeni C&C-lər var.
Tapıntılar
OceanLotus inkişaf etməyə davam edir. Kiberqrup alətləri və hiylələri təkmilləşdirməyə və genişləndirməyə yönəlib. Müəlliflər mövzusu nəzərdə tutulan qurbanlara aid olan diqqəti cəlb edən sənədlərdən istifadə edərək zərərli yükləri gizlədirlər. Onlar yeni sxemlər hazırlayır və eyni zamanda Equation Editor exploit kimi ictimaiyyətə açıq alətlərdən istifadə edirlər. Bundan əlavə, onlar qurbanların maşınlarında qalan artefaktların sayını azaltmaq üçün alətləri təkmilləşdirirlər və bununla da antivirus proqramı tərəfindən aşkarlanma şansını azaldırlar.
Güzəşt göstəriciləri
Kompromis göstəriciləri, eləcə də MITER ATT&CK atributları mövcuddur
Mənbə: www.habr.com