Computer Emergency Response Center

"Təsdiqlənmiş kotirovka" - CVE-2018-0798 boşluğunu istismar edən zərərli sənəd

Azərbaycan Respublikası Gəncə şəhər İcra Hakimiyyəti-nə göndərilən şübhəli məktub SOC komandası tərəfindən Malware Research Lab-a yönləndirildi.

Şübhəli məktub 1 ədəd RTF (Rich Text Format) formatında “Approved Quotation.doc” adında bağlama ilə birlikdə göndərilmişdi.

Şübhəli sənədin analizinə ilk olaraq təhlükəsiz mühitdə icra edərək fayl və şəbəkə aktivliklərinə baxaraq başladıq.

"winword.exe" prosesinə aid fayl aktivliklərində ilkin baxış zamanı diqqətimizi çəkən hər hansı hadisyə rast gəlmədik. Lakin şəbəkə aktivliklərində "winword.exe" -dən əlavə office aid daha bir proses (EQNEDT32.exe) -ə rast gəldik.

Bundan əlavə olaraq "EQNEDT32.exe" (Microsoft Equation Editor) internet üzərindən (analiz zamanı mövcud olmayan) icra edilə bilən fayl endirməyə çalışırdı. Sözü gedən sayt fəaliyyət göstərsədə fayl endirmə keçidi mövcud deyildi.

Proses ağacında sözü gedən proses svchost.exe tərəfindən işə salınmışdı.

Yenidən "winword.exe" fayl aktivliklərində sözü gedən icra edilə bilən fayla müraciətləri gördük.

Artıq analiz etdiyimiz nüsxənin zərərli olduğuna əmin olduqdan sonra sənədi yenidən təhlil etməyə başladıq. Burada sənədin sonlarına doğru yerləşdirilmiş (embedded (objemb)) tipində obfuskasiya edilmiş obyekt ilə qarşılaşdıq.

Bəzi alətlərdən istifadə edib obyekti təhlil etməyə cəhd etsəkdə uğursuz alındı. Sözü gedən obyekti və shellkodu tapmaq üçün məlumatları əl ilə təhlil etdik. Qeyd etdiyimiz kimi obfuskasiya edilmiş obyekt içərisində həddindən artıq \r\n, boşluq kimi xarakterlər var idi.

İlk olaraq bu xarakterleri təmizlədik.

Daha sonra xam məlumatı hexa editor ilə açdıq və lazım olan dəyərli məlumatı əldə edə bildik.

EQUatiOn.3

- "EQNEDT32.exe" (Microsoft Equation Editor) prosesinin içərisində boşluq olduğunu və faydalı yükün məhz bu boşluğu istismar etdiyini anladıq. Son əməliyyat olaraq icra edilən shellkodları aşkarlamaq qaldı. Yuxarıda E9 baytı diqqətimizi çəkdi. Bu bayt eyni zamanda JMP təlimatının opkodudur. Bu bayt qədər olan məlumatları silərək geri qalan hissəni disassembler ilə açdıq və zərərli əməliyyatları icra edən kodları əldə etdik.

Shellkodun tam olaraq hansı əməliyyatlarını görmək üçün kiçik bir alət yazaraq shellkodu real vaxt rejimində analiz etdik.

HANDLE hFile = INVALID_HANDLE_VALUE;
DWORD dwSize = 0;
PBYTE shellcode = NULL;
DWORD dwRead = 0;

hFile = CreateFileW(L"shellcode.bin", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
NULL);

dwSize = GetFileSize(hFile, NULL);
shellcode = VirtualAlloc(shellcode, dwSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
ReadFile(hFile, shellcode, dwSize, &dwRead, NULL);
CallWindowProcA((WNDPROC)shellcode, NULL, 0, NULL, NULL);

İşə salınma zamanı bəzi faydasız əməliyyatlar (junk) icra etdikdən sonra XOR metodu ilə zərərverici yükü sistemə endirib (https://universalmovies.top/pages/parkazx.exe )işə salacaq olan kod blokunu deşifrə edir və bu bloka keçid edərək son əməliyyatları yerinə yetirir.

Deşifrələmə mexanizmini təqlid edən kiçik bir skript yazaraq əsas məlumatları əldə etdik.

fout = open("decoded.bin",'wb')
f = open("encoded.bin",'rb')
data = f.read()
f.close()

key = 0x61EB5FCF

for i in range(0, len(data), 4):
    binar = int.from_bytes(data[i:i + 4], 'little')
    delta = (binar ^ key).to_bytes(4, 'little')
    key = (key * 0x3B81D275)
    key += 0x61EB5FCF
    key = key & 0xFFFFFFFF
    fout.write(delta)
   
fout.close()

Zərərverici bundan sonra PEB (PROCESS_ENVIRONMENT_BLOCK) üzərindən ilk olaraq kernel32.dll kitabxanasının taparaq GetProcAddress ilə LoadLibraryW funksiyasının adresini əldə edir.

  • LoadLibaryW ilə "urlmon.dll" kitabxanasını proses yaddaşına yükləyir.
  • urlmon.dll tərəfindən ixrac edilən "UrlDownLoadToFileW" funksiyasını çağırır. Parametr olaraq zərərverici faydalı yükün olduğu URL "http[x]://universalmovies.top/pages/parkazx.ex", faydalı yükün saxlanılacağı fayl adı olaraq isə (%appdata%\parka28503.exe) təyin edir.
  • Faydalı yükü sistemə endirdikdən sonra "CreateProcessW" funksiyası ilə işə salır.

 

 

IOCs

MD5: D1B2E30FA3A39E439F278603B6E5DD1E
SHA-1: 570D6409AB85430F7329158A5C0F835E7917E01A
SHA-2: FC6D35F4452A755DF065A169CAAECD0BBCFE785DA7F9CF4FB6BC195376AC1768

Domains

http[x]://universalmovies.top

 

Press ESC to close