Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Free Tools vs. Follina

am7cinnamon
September 10, 2022

Free Tools vs. Follina

フリーツールを使って、Follina (CVE-2022-30190) の悪用を狙う文書型マルウェアから URL を抽出します。

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

am7cinnamon

September 10, 2022
Tweet

More Decks by am7cinnamon

Other Decks in Technology

Transcript

  1. Follina とは ・CVE-2022-30190 ・Microsoft サポート診断ツール (MSDT) の任意コード実行の脆弱性 ・修正前に実際の攻撃に使われていた、 いわゆるゼロデイ脆弱性 ・呼び出し元のアプリケーション

    (主に MS Office) と同じ特権で任意のコードを 実行可能 ・報告したのは日本の nao_sec (右図)※ ※ https://twitter.com/nao_sec/status/1530196847679401984
  2. 深刻度 ・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 での評価以上に実態は危険
  3. maldoc ・攻撃者は MSDT を呼び出す悪意のある文書ファイル (maldoc) を ユーザに配送し、開かせる ・Follina を悪用して実行する「任意のコード」はインターネットから 取得する

    (直接 maldoc に埋め込むこともできるかもしれないが) ・その取得先がわかれば、対応・調査の助けになる ・ここでは、 maldoc からコードを取得する URL を得ることを目的に 調査する
  4. OOXML の基礎知識 ・Office Open XML ・MS Word/Excel/PowerPoint などの標準ファイル形式 ・MS Office

    2007 以降で採用 (2003 までの標準形式は OLE で、まったく異なる) ・XML で記述された文書やデータを ZIP 形式で圧縮して1つにしたもの つまり、ZIP ファイルとして解凍することで分解できる ・VBA コードは普通に解凍しただけでは判読不可なので別途ツールが必要 (ただし本スライドでは扱わない)
  5. oletools ・Office ファイルや RTF ファイルを分析するために作られたツール群 ・実態は Python スクリプト そのため対応する Python

    さえ動けば OS を問わない ・FLARE VM、REMnux などマルウェア解析用のディストリビューションには 標準搭載されている ・oleid、olevba、oleobj など ・どれも使い方はシンプルで、「(コマンド) (ファイル名)」で大抵動作する ・公式サイト: https://www.decalage.info/python/oletools GitHub: https://github.com/decalage2/oletools
  6. CyberChef ・大量の URL が出てくるが、この中には OOXML のファイルフォーマットに 起因する、あって当たり前の URL も含まれている ・それらを目視で無視して不審な

    URL を探すのは大変 「Filter」で消去すれば簡単になる ・「Invert Condition」にチェックを入れ、「Regex」に次を指定 (¥ はバックスラッシュ。実際には改行は不要) purl¥.org| schemas¥.microsoft¥.com| schemas¥.openxmlformats¥.org| www¥.w3¥.org|
  7. rtfdump ・RTF ファイルを分析する多機能な Python スクリプト ・同作者の「oledump」の rtf 版のようなもの ・いろいろ使い方があるが、ここでは次のオプションを使う -O:

    含まれているオブジェクトの概要を表示 -s: 続けて数字を指定すると、その数字で表されるものをダンプする 通常はストリーム番号だが、-O オプションと組み合わせると、 表示されたオブジェクトの番号で指定できるようだ ・GitHub https://github.com/DidierStevens/DidierStevensSuite
  8. rtfdump ・-O –s 1 として、オブジェクト 1 をダンプする ・先頭 4バイト※の「D0CF11E0 (DOCFILE0)」は

    OLE であることを示す ※ 実際のマジックナンバーは8バイト分。4バイトというのはあくまで人間が DOCFILE と読める分の長さ
  9. まとめ ・文書ファイルにはいくつかの形式がある (OOXML、OLE、RTF...) ・悪用のしかたも一通りではない - VBA マクロ - ペイロードの直接埋め込み -

    接続先が直接書いてある <- 今回のはこれ ・これらのバリエーションが、文書型マルウェア解析への理解を 難しくしている ・適切なツールの使用によりすぐ解ける場合もある ひとつの方針にこだわらず試行錯誤してみることが大切