2023/11/14 i-FILTER,サイバー攻撃,フィッシング,改ざんサイト
SocGholish - 偽アップデートでWeb経由のマルウェア感染
偽アップデート(Fake Update)とは、偽のアップデートページを表示してアクセスしたユーザーを騙してマルウェアをダウンロードさせる(実行させる)、という攻撃を指します。
ひとくちに偽アップデートといってもいくつか異なるパターンがあり、今年になって観測されているものだと下記のような種類があります。
- SocGholish
- ClearFake
- SmartApeSG(ZPHP)
- FakeSG(RogueRaticate)
- FakeUpdateRU
米国では2022年に250以上のニュースサイトが改ざんされ、偽アップデートページを表示させるようになっていたとのことで話題になりました。特に今年2023年は "偽アップデート業界" に新規参入が続々と現れ、日本でも偽アップデートがこれまで以上に観測されています。下図はデジタルアーツが観測した偽アップデートの URL 件数です。
SocGholish とは
主要な偽アップデートといえば 「SocGholish」 が代表的です。少なくとも2017年末頃から観測されています。上述した米国のニュースサイト改ざんも SocGholish でした。SocGholish は 別名 FAKEUPDATES と呼ばれることからも偽アップデート業界で確固たる地位を築いていることがうかがえます。
SocGholish は、Web からマルウェアを配信するための JavaScript フレームワークです。様々なマルウェアを配信するために使用されています。例えば「NetSupportRAT(遠隔操作型のマルウェア)」や「Wasted Locker(ランサムウェア)」に感染したという事例が報告されているほか、多くのマルウェアに利用されています。
SocGholish による Web 経由マルウェア感染チェーン
今回行った調査では、SocGholish は JavaScript を駆使して様々な解析回避を行い、改ざんサイトの html を置き換えることによってリダイレクトすることなく偽アップデートを表示し、マルウェアをダウンロードさせていることが判明しました。また、条件によっては SocGholish ではない別のルートへと誘導されるパターンも確認しました。
※以後 JavaScript を JS と表記させていただきます。
Stage.0 改ざんサイト
あらかじめ攻撃者は正規の Web サイトを改ざんし、html 内または JS ファイル内に不審な JS を挿入します。あとは改ざんサイトに誰かがアクセスすることによって開始されます。なお、改ざんサイトは多数あり、JS のパターンも複数あります。
Stage.1 TDS
改ざんサイトにアクセスすると JS が実行され、ブラウザー上では改ざんサイト html の head の script の最初に JS が生成・挿入されます。
挿入された JS は 「hxxps://bluegaslamp[.]org/V4CHvFq8」 を読み込みますが、この部分で IP アドレスやリファラーや User-Agent といった情報をチェックし、それに応じたレスポンスを返します。これは TDS(Traffic Direction System)と呼ばれる、アクセスしたユーザーをチェックするシステムを利用しています。TDS は販売されており、SocGholish では Keitaro TDS や Parrot TDS を利用しているとのことです。ドメインは攻撃者側で準備されたもので、他に何種類もあります。
TDS のチェック条件に合致した場合、JS がレスポンスとして返されます。なお、条件に合致しない場合は別ルートに進みます(後述します)。
Stage.2 SocGholish 解析チェック
レスポンスされた JS が実行され、ふたたびブラウザー上では改ざんサイトの head の script の最初に JS が生成・挿入されます。
挿入された JS は 「hxxps://creativity[.]kinchcorp[.]com/xFEl0b9zRrigcx/j8mIJ87ZzH/O+Iwes」 を読み込みます。URL のドメインは、正規のドメインに不正に作成されたサブドメイン(ドメインシャドウイング)です。TDS チェックを抜けたにもかかわらず、404エラーが返される場合がありましたので別のチェックが入っているかもしれません。チェックに問題がなければ難読化された JS がレスポンスとして返され、実行されます。
ここでの JS は、解析者やサンドボックスなどの機械的なアクセスかどうかをチェックします。いずれかの項目で検知されてしまうと、通信しないまたは無効な通信が発生し、次のステージには進みません。
- Local Storage 確認(想定通りに元の改ざんサイトからアクセスしているか)
- WebDriver 確認(自動化されたブラウザーでアクセスしていないか)
- ウインドウサイズ確認(外枠と内枠のウインドウサイズをチェックし、開発者ツールを開いていないか)
- Cookie 確認(Wordpress にログインしていないか。改ざんサイト管理者に見つからないように?)
- JS 実行環境確認と初回アクセス確認(一般的なブラウザなのか、Node.js などの環境ではないか。また、2回目以降のアクセスでないか)
Stage.3 SocGholish 偽アップデート表示
マウスが動いた場合に、ブラウザー上では改ざんサイト html の head の script の最初に JS が生成・挿入されます。
挿入された JS は「hxxps://creativity[.]kinchcorp[.]com/動的文字列A」を読み込みます。URL からは偽アップデートページ用の html を生成するための JS がレスポンスとして返され、実行されます。
レスポンスされた JS が実行されると改ざんサイトの html の head と body は削除され、最終的に偽アップデート用の html にごっそり置き換えられます。その結果、偽アップデートページが表示されます。