Officeファイルの不審なhttpリンクを探すツールの自作 | reverse-eg-mal-memoのブログ

reverse-eg-mal-memoのブログ

サイバーセキュリティに関して、あれこれとメモするという、チラシの裏的存在。
medium(英語):https://sachiel-archangel.medium.com/

またしても悪用されちゃうOfficeの機能

MicrosoftのOfficeファイルのFollina脆弱性(CVE-2022-30190)が発見されて、結構大きな問題になっています。

これは、Officeファイルの中に埋め込まれた(攻撃者が用意した)不正なリンク先に、htmlドキュメントでMSDTを実行するように細工をしているものです。

さらに、MSDTから見つかったリモートコードの脆弱性をこの手口で実行させることで、不正なコマンド実行やマルウェア感染を企むことができる、というものです。

この方法については、「Follina脆弱性」や「CVE-2022-30190」でググれば、解説記事はいっぱいでてきますので、詳しくはそちらを読んだ方がいいでしょう(相変わらず投げやりなセキュリティブログ)。

 

さらに、Bleeping computerの記事では、同様のリンク先に、今度は攻撃者が用意したSMB共有フォルダをサーチ結果として表示する方法が紹介されていました。

 

こちらはリモートコードが実行できるというわけではないので、脆弱性ではなく仕様なんじゃないかとは思います。

ただし、メッセージをうまく偽装すれば、「ユーザを騙して」マルウェアを実行させて感染させるフィッシングに有効な手段なのではないか・・・ということになります。

 

いずれも、ドキュメントの中でユーザに表示されない箇所に不正なリンクを埋めておくと、自動的にアクセスしてしまうことが問題の根本原因です。

そもそも、リンク先を自動で読み込むこと自体は、OfficeのOLEだかの仕様だそうです。

利便性を高めるため、ネットワーク上に新しいものを置くことで機能更新できることを考えたため・・・のようなのですが。

これを悪用する手口は既に知られており、例えば Word の .docx は通常マクロを入れることができないのですが、この機能で .dotm を読み込むことで、結局マクロを含むことと同じことができてしまいます。

 

つまり、これらの手口で共通しているのは、「ファイルを開いたときに、Officeファイルに含まれる、通常の方法では見えないところにあるURLにアクセスするOfficeの機能を利用し、不正なURLにアクセスすることで攻撃をしかける」ということになります。

 

これは仕様であり、今後の攻撃でも、このURLを利用する仕組みが使われるんじゃないかと懸念しています。

 

 

そのURLって見えないの?

では、そのURLを見ることはできないのか?という話になります。

見えれば、不審なURLが無いかをチェックすることができますからね。

 

結論から言うと、通常のOfficeソフトで見ることはできません

 

WordやExcelで新規作成し、1文字も入力していない状態で保存しても、それらのURLは含まれています。

 

では、どのようにすれば見れるか?というと、Offce 2007以降の .docx や .xlsx ファイルは、zipで圧縮されています。

このため、Officeファイルの拡張子を .zip にして展開すると、これらのURLが含まれたファイルを見ることができます

展開されたファイルのうち、テキストエディタでいくつかのファイル(特に.xml)が読めることが確認できます。

 

 

 

さらに、この中の個々のファイルを見ていくと、テキストでURLがいくつか入っていることを確認できます。

 

 

こういったURLのうち、例えばファイルを開いた時にそのURLにアクセスし、その内容を反映したり実行したりするように設定されているものがあります。

この機能を利用し、攻撃者が用意したURLにアクセスさせ、そのアクセス先のファイルに脆弱性のあるプログラムをパラメータ付で実行させる、などといった細工をしているわけです。

 

このため、zipを解凍して見えるファイルの中からテキストのURLを見つけ出してチェックし、不審なURLがあればそれは不正なドキュメントだということが分かります。

 

よし、みんな、今日からOfficeファイルの拡張子をzipにして解凍し、見れるファイルを全部みて不審なURLを探すんだ!

 

できねえよ!!

 

時間はかかるわ、目ぇ疲れるわ、こんだけあれば見落としもするわ、で現実的じゃ無えわ。

 

「これじゃ無理だよ!!助けて!!サキエルもん!!」

 

と、の〇太君的な人に泣きつかれる未来までが見えました(語呂が悪すぎるんですがそれh)

 

 

じゃあ、自動化しちまえ

そこはやはりIT技術者。

サボるために効率的に仕事をするためには、やはりテクニカルに美しく自動化したいわけですよ。

それなら、

 

「Officeファイルをzipファイルとして解凍し、中身からhttpをピックアップし、あまつさえ既知の問題ないURLを除去して残ったものだけ表示するツールを作ればいいんじゃね?」

 

ということになります。

 

そんなアナタのために!!

私が土日を潰して、酒を飲みながら作ったツールをGitに置いておきました!

(映画のガンダム「ククルスドアンの島」を観たいのを我慢してまで作ったんだぞ、少しは感謝しる!)

 

 

 

使用方法は機能が貧弱なのでとても簡単。

Releaseにおいてあるexeファイルをダウンロードし、コマンドプロンプトで実行するだけ。

また、ホワイトリストはとりあえず私が調べたものが置いてあるので、それを使えばOKのはず(足りなければ自分で足してくれwww)。

 

使い方は詳しくはGithubに書いてあるけど、コマンドプロンプトでexeの第1引数に検査したいファイル名(フルパスでも相対パスでも同一フォルダにおいてファイル名だけでも可)を指定。

同一フォルダに「whitelist.txt」があれば、第2引数の指定が無くてもそれをホワイトリストとして使用。

もし別のホワイトリストファイルを使いたければ、それを指定すればOK。

ホワイトリストで弾いた結果、何もデータが残らなければ特に何も出力せず終了、データが残った場合は、拡張子を「.suspicious.txt」としたファイルを出力。

「.suspicious.txt」が出力された場合、この中身のURLをチェックし、不審なものであればマルウェア確定、ということになります。

 

ツールの仕組みとしては、

  1. officeファイルをメモリ内でzip解凍
  2. 「http」の含まれる文字列をピックアップ
  3. ホワイトリストとマッチしたものを弾く
  4. データが残った場合は「.suspicious.txt」ファイルに出力

といった、至って単純なものです。

 

 

ツールのメリット・デメリット

このツールのメリットとしては、

  • このツールでファイルが出力され、そのURLが不審だった場合、確実に黒だということが確認できる。
  • チェックを効率的にできる。
ということになります。
 
デメリットとしては、
  • Officeファイルの仕様やzipの仕様の細部までを確認しているわけではないので、仕様の理解不足に伴うプログラムミスの可能性が残る。
  • 喫緊の課題ということもあり、開発・リリースを急いだため、デバッグが十分ではない(ノリで書いたので、設計書もねーよw)。
  • コードが、本人も呆れるレベルで汚い(開発から暫く離れているとはいえ、このセンスの無さよ・・・)。
ということになります。
ツールも、「バッチ処理で流し込めたりするのでコマンドラインの方がいいんじゃね?」というタテマエのもと、実装が楽なコマンドラインになっています。
 
「GUIにして、ドラッグアンドドロップでチェックできるようにすべきでは?」という意見もありそうですが、
なら、てめえがやれや
なかなか開発に時間も取れず、個人の時間のうちでも土日の2日間の割と多くを割いてもようやく現状のもの、といったところです。
(実力が足りない?うるせー、バーカバーカ!(注:日曜の深夜で酒飲みながら書いているので、テンションが小学生になってまs))
 

このため、「使ってみて、改良を加えればそこそこ便利かもしれない」といったツールの土台くらいにはなるかな、と思っているところです。

 

 

さいごに

最近問題になってる件に関して、自動検知、自動遮断とまではいかないものの、CSIRTなどがチェックに使えるツールが作れないか、という発想で作ってみました。
 
そしてもう一つの理由。
 
俺様の手元に届かないマルウェアなんぞ、早々に滅びてしまえw
 
ということで、八つ当たりに利用できそうなツール作れないかな?というのもありました(圧倒的なマルウェア不足、ただし私限定?)
 
 
自動化する場合、suspiciousで出てきた文字列を自動でドメイン名抽出し、Threat Intelligenceで検索するとか、URLにアクセスしてどのようなデータが落ちてくるかを検証するとか、結構頑張らないといけないんじゃないかと思います。
単純なツールなので、既に類似のものがあるかもしれないし、開発秘話的なものもニーズは無いだろうから、特に書くつもりはないですが。
 
割と土日のプライベート時間をガチで潰したんだし、このツールが役に立ったという人がいたら、おいしいお酒を一杯くらいご馳走してもらいたいなぁ、というダメのんべえの愚痴がツール作成の感想だったりしますw
(Amazonの欲しいものリストにしれっと挙げてみるかなぁ)
 
サイバーセキュリティの達人の域は遠いですね~。

こういう時こそ、ハッカーさんボスケテwww

(私はファインモーション閣下の育成に戻・・・あ、寝なきゃ。明日から仕事じゃん・・・。)