Digital Arts Security Reports

2023/11/14    i-FILTER,サイバー攻撃,フィッシング,改ざんサイト

SocGholish - 偽アップデートでWeb経由のマルウェア感染

偽アップデート(Fake Update)とは、偽のアップデートページを表示してアクセスしたユーザーを騙してマルウェアをダウンロードさせる(実行させる)、という攻撃を指します。

【図1】偽アップデートページ例
【図1】偽アップデートページ例

ひとくちに偽アップデートといってもいくつか異なるパターンがあり、今年になって観測されているものだと下記のような種類があります。

  • SocGholish
  • ClearFake
  • SmartApeSG(ZPHP)
  • FakeSG(RogueRaticate)
  • FakeUpdateRU

米国では2022年に250以上のニュースサイトが改ざんされ、偽アップデートページを表示させるようになっていたとのことで話題になりました。特に今年2023年は "偽アップデート業界" に新規参入が続々と現れ、日本でも偽アップデートがこれまで以上に観測されています。下図はデジタルアーツが観測した偽アップデートの URL 件数です。

【図2】偽アップデート URL 件数
【図2】偽アップデート URL 件数

SocGholish とは

主要な偽アップデートといえば 「SocGholish」 が代表的です。少なくとも2017年末頃から観測されています。上述した米国のニュースサイト改ざんも SocGholish でした。SocGholish は 別名 FAKEUPDATES と呼ばれることからも偽アップデート業界で確固たる地位を築いていることがうかがえます。

SocGholish は、Web からマルウェアを配信するための JavaScript フレームワークです。様々なマルウェアを配信するために使用されています。例えば「NetSupportRAT(遠隔操作型のマルウェア)」や「Wasted Locker(ランサムウェア)」に感染したという事例が報告されているほか、多くのマルウェアに利用されています。

SocGholish による Web 経由マルウェア感染チェーン

今回行った調査では、SocGholish は JavaScript を駆使して様々な解析回避を行い、改ざんサイトの html を置き換えることによってリダイレクトすることなく偽アップデートを表示し、マルウェアをダウンロードさせていることが判明しました。また、条件によっては SocGholish ではない別のルートへと誘導されるパターンも確認しました。

【図3】感染チェーン
【図3】感染チェーン

※以後 JavaScript を JS と表記させていただきます。

Stage.0 改ざんサイト

あらかじめ攻撃者は正規の Web サイトを改ざんし、html 内または JS ファイル内に不審な JS を挿入します。あとは改ざんサイトに誰かがアクセスすることによって開始されます。なお、改ざんサイトは多数あり、JS のパターンも複数あります。

【図4】改ざんサイトの JS 挿入例(赤枠部分)
【図4】改ざんサイトの 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 がレスポンスとして返されます。なお、条件に合致しない場合は別ルートに進みます(後述します)。

【図5】挿入された JS と、条件合致した場合のURLレスポンス
【図5】挿入された JS と、条件合致した場合のURLレスポンス

Stage.2 SocGholish 解析チェック

レスポンスされた JS が実行され、ふたたびブラウザー上では改ざんサイトの head の script の最初に JS が生成・挿入されます。

挿入された JS は 「hxxps://creativity[.]kinchcorp[.]com/xFEl0b9zRrigcx/j8mIJ87ZzH/O+Iwes」 を読み込みます。URL のドメインは、正規のドメインに不正に作成されたサブドメイン(ドメインシャドウイング)です。TDS チェックを抜けたにもかかわらず、404エラーが返される場合がありましたので別のチェックが入っているかもしれません。チェックに問題がなければ難読化された JS がレスポンスとして返され、実行されます。

【図6】挿入された JS と、条件合致した場合のURLレスポンスの難読化解除
【図6】挿入された JS と、条件合致した場合のURLレスポンスの難読化解除

ここでの 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 がレスポンスとして返され、実行されます。

【図7】挿入された JS と、条件合致した場合のURLレスポンス
【図7】挿入された JS と、条件合致した場合のURLレスポンス

レスポンスされた JS が実行されると改ざんサイトの html の head と body は削除され、最終的に偽アップデート用の html にごっそり置き換えられます。その結果、偽アップデートページが表示されます。