Slide 1

Slide 1 text

Free Tools vs. Follina

Slide 2

Slide 2 text

はじめに ・本資料はあるコミュニティでのライトニングトークで使用したものを、 公開版として調整したものです ・技術的に不正確な箇所もあると思われます。ご了承ください ・本資料では本物のマルウェアを扱っています。 本資料を参考にしたことにより何らかの不都合が発生しても、 筆者は責任を取れません。ご了承ください

Slide 3

Slide 3 text

Follina is 何

Slide 4

Slide 4 text

Follina とは ・CVE-2022-30190 ・Microsoft サポート診断ツール (MSDT) の任意コード実行の脆弱性 ・修正前に実際の攻撃に使われていた、 いわゆるゼロデイ脆弱性 ・呼び出し元のアプリケーション (主に MS Office) と同じ特権で任意のコードを 実行可能 ・報告したのは日本の nao_sec (右図)※ ※ https://twitter.com/nao_sec/status/1530196847679401984

Slide 5

Slide 5 text

(参考) 名前の由来 ・Follina とはイタリア・ヴェネト州の自治体 ・最初の検体が参照していた (ファイル名?) 数字「0438」を市街局番に持つ ・修道院が有名らしい ※ https://doublepulsar.com/follina-a-microsoft-office-code-execution-vulnerability-1a47fce5629e 場所 (Gllgle Map) 公式ロゴ※

Slide 6

Slide 6 text

深刻度 ・NVD の評価は Base Score 7.8 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H ・AV: L と UI: R がスコアを下げており、一見さほどでもなさそう ・しかし、攻撃者はメールなどを通じてユーザの 手元に悪意のある ファイルを送り込めるし、請求書など正規の文書を装ってユーザに 開かせることも可能 ・よって CVSS Base Score での評価以上に実態は危険

Slide 7

Slide 7 text

悪 用 ・Recorded Future によれば、2022年上半期に2番目に悪用された脆弱性 (1番目は Log4Shell) ※ https://www.recordedfuture.com/h1-2022-malware-and-vulnerability-trends-report

Slide 8

Slide 8 text

maldoc ・攻撃者は MSDT を呼び出す悪意のある文書ファイル (maldoc) を ユーザに配送し、開かせる ・Follina を悪用して実行する「任意のコード」はインターネットから 取得する (直接 maldoc に埋め込むこともできるかもしれないが) ・その取得先がわかれば、対応・調査の助けになる ・ここでは、 maldoc からコードを取得する URL を得ることを目的に 調査する

Slide 9

Slide 9 text

実験台 #1

Slide 10

Slide 10 text

実験台 #1 の概要 ・SHA-256: 4a24048f81afbe9fb62e7a6a49adbd1faf41f266b5f9feecdceb567aec096784 ・ファイル形式は DOCX (Word 2007+) ・nao_sec が最初に報告した検体

Slide 11

Slide 11 text

OOXML の基礎知識 ・Office Open XML ・MS Word/Excel/PowerPoint などの標準ファイル形式 ・MS Office 2007 以降で採用 (2003 までの標準形式は OLE で、まったく異なる) ・XML で記述された文書やデータを ZIP 形式で圧縮して1つにしたもの つまり、ZIP ファイルとして解凍することで分解できる ・VBA コードは普通に解凍しただけでは判読不可なので別途ツールが必要 (ただし本スライドでは扱わない)

Slide 12

Slide 12 text

oletools ・Office ファイルや RTF ファイルを分析するために作られたツール群 ・実態は Python スクリプト そのため対応する Python さえ動けば OS を問わない ・FLARE VM、REMnux などマルウェア解析用のディストリビューションには 標準搭載されている ・oleid、olevba、oleobj など ・どれも使い方はシンプルで、「(コマンド) (ファイル名)」で大抵動作する ・公式サイト: https://www.decalage.info/python/oletools GitHub: https://github.com/decalage2/oletools

Slide 13

Slide 13 text

oleid ・基礎情報を表示。その後の調査の方向性を探るのに最適 ・リスクごとにを色分けして表示してくれる ・外部の何かを参照していることがわかる 詳細な調査には oleobj を使えと言っている

Slide 14

Slide 14 text

oleobj ・埋め込みオブジェクトを表示 ・URL を特定できた これはファイルフォーマット由来のものではなく、不審な接続先の 疑いが強い

Slide 15

Slide 15 text

CyberChef ・CyberChef でも不審な URL を検出できる場合がある ・OOXML ファイルは ZIP ファイルなので、「Unzip」で分解できる ・その状態で「Extract URL」を使うと URL を抽出できる

Slide 16

Slide 16 text

CyberChef ・大量の URL が出てくるが、この中には OOXML のファイルフォーマットに 起因する、あって当たり前の URL も含まれている ・それらを目視で無視して不審な URL を探すのは大変 「Filter」で消去すれば簡単になる ・「Invert Condition」にチェックを入れ、「Regex」に次を指定 (¥ はバックスラッシュ。実際には改行は不要) purl¥.org| schemas¥.microsoft¥.com| schemas¥.openxmlformats¥.org| www¥.w3¥.org|

Slide 17

Slide 17 text

CyberChef ・oleobj と同じ URL が得られた ・毎回入力するのは面倒なので、この Recipe を保存しておくとよい ・このように、CyberChef は簡易的なスキャナーとして使える

Slide 18

Slide 18 text

実験台 #2

Slide 19

Slide 19 text

実験台 #2 の概要 ・SHA-256: ca7e9c65fd2cec62110b50581529198c43b7982820a38c912baa81d0294b8126 ・ファイル形式は RTF

Slide 20

Slide 20 text

RTF の基礎知識 ・リッチテキストファイル ・プレーンテキストの拡張形式で、フォントを変更したり レイアウトを整えたりできる ・ファイル中に可読文字が多い (全部とは限らない) ・なぜかマルウェアとして配布される際には拡張子が「.doc」のことが多い

Slide 21

Slide 21 text

oleid ・RTF であることを確認 ・RTF は OLE・OOXML ファイルとはフォーマットが違うので同じツールでは 分析できない 専用ツールを使う必要がある

Slide 22

Slide 22 text

rtfobj ・oleobj の RTF 版のようなツール ・不審なオブジェクトと、それに含まれている URL を抽出できた

Slide 23

Slide 23 text

rtfdump ・RTF ファイルを分析する多機能な Python スクリプト ・同作者の「oledump」の rtf 版のようなもの ・いろいろ使い方があるが、ここでは次のオプションを使う -O: 含まれているオブジェクトの概要を表示 -s: 続けて数字を指定すると、その数字で表されるものをダンプする 通常はストリーム番号だが、-O オプションと組み合わせると、 表示されたオブジェクトの番号で指定できるようだ ・GitHub https://github.com/DidierStevens/DidierStevensSuite

Slide 24

Slide 24 text

rtfdump ・-O オプションを付けて実行すると、 OLE オブジェクトが 2個含まれていることがわかる ・-s オプションを付けてオブジェクトの内容を調べる

Slide 25

Slide 25 text

rtfdump ・-O –s 1 として、オブジェクト 1 をダンプする ・先頭 4バイト※の「D0CF11E0 (DOCFILE0)」は OLE であることを示す ※ 実際のマジックナンバーは8バイト分。4バイトというのはあくまで人間が DOCFILE と読める分の長さ

Slide 26

Slide 26 text

rtfdump ・末尾付近に不審な URL を発見 ・rtfobj で得られたのと同じもの

Slide 27

Slide 27 text

まとめ

Slide 28

Slide 28 text

まとめ ・文書ファイルにはいくつかの形式がある (OOXML、OLE、RTF...) ・悪用のしかたも一通りではない - VBA マクロ - ペイロードの直接埋め込み - 接続先が直接書いてある <- 今回のはこれ ・これらのバリエーションが、文書型マルウェア解析への理解を 難しくしている ・適切なツールの使用によりすぐ解ける場合もある ひとつの方針にこだわらず試行錯誤してみることが大切