勉強会はじめに2019年11月3日〜4日にかけて品川のところの高専でMAIR忍者チャレンジが開催されたので参加しました。マルウェアに感染したシステムのエビデンスから、感染源や被害範囲、マルウェアの挙動などを解析して、対策などをレポートにまとめるという感じのコンテストです。本物のマルウェアを使うので面白かったです。私はひたすら全部のファイルの処理を読んでまとめただけでIRやyaraは他の方がやってくれたので、私の調べた限りのマルウェアの挙動をメインに書こうと思います。渡されるファイルのうち私が調べたのは以下の6つです。dl.exeはハッシュ値が同じなので、とりあえずsvchostだけ読みました。私たちの班が解析したところ(他の班もだいたい同じでしたが)こんな感じでした。情報漏洩:コンピュータの情報とか以外には特になし?外部からコマンドが実行できるので流出している可能性はあるが、マルウェアの機能としては無い気がするdrivers\svchost.exeこれは感染して最初に実行されるファイルです。(正確にはC:\installed.exeが実行される。自身のパスをC:\windows\syswow64\drivers\svchost.exe(32ビットならC:\windows\system32\svchost.exe)に変更してサービスや自動起動などに登録します。他にも実行ファイルを生成したり移動したり、ファイアウォールの設定を変更したりと最初の一歩を担います。感染経路によって名前が異なるようですが、とりあえずdl.exeを作っている処理は見つからなかったのでSMB経由でC:\instaled.exeが作られ、それが起動後に移動されたと判断しました。(後から聞いた話ではあのエビデンスは複数のマシンから集めたものらしいので、dl.exeは別のマシンっぽいです。)それからsvchost.mlzなるファイルを復号しているのですが、win32api特有の謎crypt関数を使っておりwindowsを持っていなかったので無事解析できませんでした。解析しながらまとめていたノート:hackmd.iodrivers\taskmgr.exeこれはdrivers\svchost.exeから呼ばれるスレッド内で生成および起動されます。drivers\svchost.exeの別スレッドではmutexを使ってtaskmgrの存在を確認し、死んでいたらフラグを立てて起動用スレッドで復活させます。taskmgr.exeはsvchost.exeの存在を確認し、死亡していたら復活させます。(svchostのスレッド自身もsvchostを監視している。あとファイルマッピングを作っているなどはありましたが、それ以上の重要そうな処理は見つかりませんでした。解析しながらまとめていたノート:hackmd.iodrivers\wmiex.exeいまいち存在意義が分からないプロセスです。WebServersというタスクで自身を自動起動するのですが、コンピュータの情報を送るくらいしかやってなくね?という感じです。svchostにまとめても良かったんじゃないかな?解析しながらまとめていたノート:hackmd.iotemp\svchost.exesvchost.exeから起動されるファイルです。Python製なのでデコンパイルするととても読みやすいです。pyinstxtractorで展開するとiiという名前のpycっぽいものが出てきたのですが、ヘッダが欠けていたので適当に埋めてuncompyleに投げるとpythonコードが生成されました。f.write(buf)これでコードが出てくるのですが、変数名をごちゃごちゃしていたり最初のmimikatzのコードが邪魔なので整形して出力しました。f.write(output)これでただのpythonコードになるので困ることなく読めます。やっていることは、IPアドレスをipconfigやnetstatの結果から集め、またmimikatzでユーザー、パスワードとドメインを取得し、その情報を使って外部のSMBへログイン試行をしたりEternalBlueを回したりしています。くっそ汚いコードだったので書き直したいなぁと思いながら読んでいました。(難読化されたmimikatzの部分はチームメンバーが読んでくれました。exploitも特定のアカウントを作る目的に改造されているものの、基本的にはインターネッツに転がっているPoCの使い回しでした。解析しながらまとめていたノート:hackmd.ioシェルコードEternalBlueのシェルコードが付いているわけですが、これは意味不明でした。だいたいEternalBlueのテンプレ通りなのですが、攻撃者が付加した部分は読む必要があります。知らない構造体がいっぱい出てきて理解不能だったので解析を断念しておやすみなさいしました。シェルコードは文脈を追わないと平気で関数呼び出し前に設定されたレジスタとかを使うから読めない。YqejbPXw.exeこれはtemp\svchost.exeが作っているっぽいのですが、RemComSvcなるサービスを登録します。実際にはパイプを作っておしまいというやる気のないサービスですが、PSEXECか何かで使われているんだと思います。読む時間がなかったのでよく分かってないです。解析しながらまとめていたノート:hackmd.io感染源ディスクダンプすら無いのに感染源特定するの厳しくないですか。SMBでしかinstalled.exeが作られていなかったのでSMBからやってきたと判断しました。被害範囲SMBが入っているやつは全部感染しているでしょう。python製のsvchostにハードコーディングされていたIPやユーザーリストなどは要注意です。この辺はチームメンバーがうまいことまとめてくれました。疲れましたが楽しかったです。頑張って解析したつもりだったのですが、他にも深くまで解析していたチームもいてかなり焦りました。恒久フリーパス的なものを貰ったので今後も開催されたら是非参加したいです。運営やスタッフ、スピーカーのみなさん、ありがとうございました。Writeup月別アーカイブはてなブログをはじめよう!ptr-yudaiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。