Zararlı Kod İçeren Office Dosyalarının Analizi

“Zararlı Kod İçeren PDF Dosyalarının Analizi (http://blog.bga.com.tr/2014/07/zararl-kod-iceren-pdf-dosyalarnn-analizi.html)” yazısının devamı niteliğinde olan bu yazıda aynı derecede önemli zararlı kod içeren office dokümanlarının analizi konusu ele alınmıştır.


Kullanılan Araçlar:

  • OfficeMalScanner
  • OfficeCat

Örnek zararlının SHA256 özeti: 22fa701cac3aeab6d62d99ac9e9c8ee68ffd5b990ac66f35a489946bc823379a

İlk olarak OfficeMalScanner aracı “info” parametresi ile çalıştırılarak dosya hakkında genel bilgi edinilir.

OfficeMalScanner z.xls info

[*] INFO mode selected
[*] Opening file z.xls
[*] Filesize is 112640 (0x1b800) Bytes
[*] Ms Office OLE2 Compound Format document detected
[*] Format type Excel

——————————–
[Scanning for VB-code in Z.XLS]
——————————–
Sheet1
Sheet2
Sheet3
ToDOLE
ThisWorkbook
—————————————————————————–
                VB-MACRO CODE WAS FOUND INSIDE THIS FILE!
               The decompressed Macro code was stored here:

——> Z:homeremnuxDesktopZ.XLS-Macros

Çıktıda görüldüğü üzere dosyanın içerisinde macrolar bulunmuş ve bunlar ayrıştırılıp bir dizine yazılmıştır. Bu macroları analize başlamadan önce doküman üzerinden daha fazla bilgi toplamak işleri kolaylaştıracaktır. Bunun için OfficeMalScanner “scan brute debug” parametreleri ile tekrar çalıştırılır.

scan: Doküman içerisindeki shellcodeları veya PE dosyalarını arar.
brute: XOR, ADD ve ROL encoding yöntemleri için tek anahtarla kaba kuvvet saldırısı yapar.
debug: Bulguları detaylı olarak ekrana yazar.

OfficeMalScanner z.xls scan brute debug

[*] SCAN mode selected
[*] Opening file z.xls
[*] Filesize is 112640 (0x1b800) Bytes
[*] Ms Office OLE2 Compound Format document detected
[*] Format type Excel
[*] Scanning now…

API-Name CreateFile string found at offset: 0x18433

[ PE-File – 256 bytes ]
43 72 65 61 74 65 46 69  6c 65 14 f4 60 00 0c 04  | CreateFile..`…
73 65 61 72 63 68 5f 69  6e 5f 4f 4c 65 07 60 00  | search_in_OLe.`.
0f 04 69 66 5f 6f 75 74  6c 6f 6f 6b 5f 6f 70 65  | ..if_outlook_ope
6e 69 f3 60 00 07 00 44  61 74 65 41 64 64 2f 36  | ni.`…DateAdd/6
60 00 09 04 74 69 6d 65  45 72 72 6f 72 d3 8b 60  | `…timeError..`
00 11 04 43 72 65 61 74  43 61 62 5f 53 65 6e 64  | …CreatCab_Send
4d 61 69 6c 54 40 60 00  01 04 69 60 10 60 00 07  | MailT@`…i`.`..
04 41 74 74 4e 61 6d 65  9a 12 60 00 0a 04 41 64  | .AttName..`…Ad
64 56 62 73 46 69 6c 65  56 67 60 00 0b 04 41 64  | dVbsFileVg`…Ad
64 4c 69 73 74 46 69 6c  65 f8 9b 60 00 02 04 66  | dListFile..`…f
73 46 5d 60 00 0c 00 46  6f 6c 64 65 72 65 78 69  | sF]`…Folderexi
73 74 73 a6 0a 60 00 0c  00 43 72 65 61 74 65 46  | sts..`…CreateF
6f 6c 64 65 72 ec ad 60  00 07 00 52 65 70 6c 61  | older..`…Repla
63 65 66 0e 60 00 10 00  41 64 64 56 62 73 46 69  | cef.`…AddVbsFi
6c 65 5f 63 6c 65 61 72  cd b8 60 00 11 00 41 64  | le_clear..`…Ad
64 56 62 73 46 69 6c 65  5f 73 65 61 72 63 68 f0  | dVbsFile_search.

————————————————————————–

API-Name CreateFile string found at offset: 0x1a928

[ PE-File – 256 bytes ]
43 72 65 61 74 65 46 69  6c 65 05 00 00 02 11 00  | CreateFile……
00 00 52 65 73 74 6f 72  65 42 65 66 6f 72 65 53  | ..RestoreBeforeS
65 6e 64 05 00 00 02 10  00 00 00 52 65 73 74 6f  | end……..Resto
72 65 41 66 74 65 72 4f  70 65 6e 03 00 00 0d 0c  | reAfterOpen…..
00 0c 00 08 00 00 00 00  00 00 00 00 00 02 00 00  | …………….
7f 04 00 00 03 12 08 02  00 00 00 00 00 c0 00 00  | …………….
00 00 00 00 46 04 00 00  03 d9 08 02 00 00 00 00  | ….F………..
00 c0 00 00 00 00 00 00  46 04 00 00 05 02 00 09  | ……..F…….
0c 00 00 00 00 00 00 31  0c 00 00 00 00 00 00 ff  | …….1……..
ff ff ff 02 00 00 06 09  0c 00 00 00 00 00 00 c8  | …………….
00 00 00 00 00 00 00 03  00 00 01 08 00 00 00 4e  | ……………N
00 61 00 6d 00 65 00 05  00 00 0b 0c 00 00 00 4d  | .a.m.e………M
00 61 00 63 00 72 00 6f  00 31 00 04 00 00 01 0e  | .a.c.r.o.1……
00 00 00 56 00 69 00 73  00 69 00 62 00 6c 00 65  | …V.i.s.i.b.l.e
00 05 00 00 0b 0c 00 00  00 41 00 31 00 3a 00 46  | ………A.1.:.F
00 31 00 35 00 04 00 00  03 d7 08 02 00 00 00 00  | .1.5…………

————————————————————————–

Brute-forcing for encrypted PE- and embedded OLE-files now…
Bruting XOR Key: 0xff
Bruting ADD Key: 0xff
Bruting ROL Key: 0x08

Analysis finished!

————————————————–
z.xls seems to be malicious! Malicious Index = 04

OfficeMalScanner doküman içinde CreateFile WinAPI fonksiyonunu çağıran bir kod bloku tespit etmiştir. Kaba kuvvet saldırısından bir sonuç çıkmaması ya encode edilmiş bir içeriğin olmadığı ya da farklı bir yöntemle encode edilmiş bir içerik olabileceği anlamına gelir.

Daha sonra Windows’ta çalışan OfficeCat aracı ile zararlı kodun bilinen bir zafiyeti istismar etmeye çalışıp çalışmadığı kontrol edilir. OfficeCat’in Windows komut satırından çalıştırılması gerekir.

officecate.exe z.xls

Sourcefire OFFICE CAT v2
* Microsoft Office File Checker *

Processing z.xls
VULNERABLE
        OCID: 51
        CVE-2008-3005
        MS08-043
        Type: Excel
        Malformed FORMAT record

Dokümanın 2008’de bildirilmiş ve çıktıda gözüken CVE, OCID ve MS numaralarıyla tanımlanmış bir zafiyeti istismar etmeye çalışan kodlar içerdiği anlaşılmaktadır.

Eldeki verilerle doküman hakkında kesin kanıya varmadan önce içerdiği macrolara da bir göz atmakta fayda olabilir. Bunun için “OfficeMalScanner z.xls info” komutunun çıktısında belirtilen Macro dizinine gidip içerdiği dosyalar herhangi bir metin düzenleyici ile açılır ve incelenir. Örnek zararlının “ToDOLE” isimli macrosu incelendiğinde Outlook adres listesini çekip toplu mail göndermeye çalıştığı görülmektedir. Diğer macroların incelenmesi de okuyucuya bırakılmıştır.