IEの脆弱性 (CVE-2020-0674) とFirefoxの脆弱性 (CVE-2019-17026) を悪用する攻撃

Mozillaは2020年1月8日、Firefoxの脆弱性に関する情報を公開しました。その後、1月17日には、マイクロソフト社がInternet Explorer(以降、IEと記載する)の脆弱性を悪用するゼロデイ攻撃が行われていることを公開しました。JPCERT/CCでは、この2つの脆弱性を同時に悪用する攻撃を確認しており、注意喚起を行いました。
今回は、このIEの脆弱性とFirefoxの脆弱性を同時に狙う攻撃の詳細について紹介します。

攻撃の概要

今回の攻撃は、改ざんされたWebサイトから攻撃サイトに誘導することで行われていました。
図1は、改ざんされたWebサイトにアクセスしてからマルウエアが感染するまでの流れです。

マルウエア感染までの流れ
図1: マルウエア感染までの流れ

IEまたはFirefoxで攻撃サイトに誘導されると、アクセスしたブラウザにあわせた攻撃コードが返信されます。
図2は、ブラウザ判定を行うコードの一部です。
今回の攻撃は32bit OSおよび64bit OS両方がターゲットになっていますが、最終的にダウンロードされるマルウエアは64bitであるため、64bit OSでしか攻撃は成功しません。

ブラウザ判定を行うJavaScriptの一部
図2: ブラウザ判定を行うJavaScriptの一部

その後、攻撃が成功するとプロキシ自動設定ファイル(PACファイル)として再度攻撃コードのダウンロードが行われます。ダウンロードした攻撃コードはPACファイルとして実行され、マルウエアのダウンロードおよび実行が行われます。
以降ではIE、Firefoxの攻撃コードおよびマルウエアについて解説します。

IEの脆弱性を悪用する攻撃

図3は、IEを対象とする攻撃コードの一部です。
通常、攻撃コードがダウンロードするマルウエアの通信先は、Shellcode内に埋め込まれていることが多いのですが、今回の攻撃コードは、ファイルの先頭にダウンロードするマルウエアのURLが書かれており、実行時に、そのURLをShellcodeに埋め込んで実行するようになっています。これは、攻撃コードの改変を容易にする意図があると推測されます。

IE ExploitのJavaScriptの一部
図3: IE ExploitのJavaScriptの一部

この攻撃コードによって実行されるShellcodeは、初めに自身の動作しているプロセス名がsvchost.exeかどうかチェックします。
図4は、プロセス名をチェックするコードの一部です。

プロセス名をチェックするコードの一部
図4: プロセス名をチェックするコードの一部

プロセス名がsvchost.exeの場合は、マルウエアをダウンロードおよび実行しますが、攻撃コードはブラウザにロードされており、プロセス名がブラウザ固有(iexplorer.exeなど)のものになるため、マルウエアは実行されません。プロセス名がsvchost.exe以外の場合は、図5のように、WinHttpGetProxyForUrlでPACファイルとして攻撃コードの再ダウンロードが行われます。PACファイルの実行はsvchost.exeで行われるため、このタイミングでマルウエアのダウンロードおよび実行が行われます(図6)。

PACファイルをダウンロードするコードの一部
図5: PACファイルをダウンロードするコードの一部

マルウエアをダウンロードおよび実行するコードの一部
図6: マルウエアをダウンロードおよび実行するコードの一部

マルウエアをダウンロードおよび実行する際、Windows10以外の環境であれば、図6のコードしか実行されませんが、Windows10の場合は、図7のようにJuicy Potato[1]という権限昇格を試みるコードが同時に実行されます。

権限昇格を行うコードの一部
図7: 権限昇格を行うコードの一部

Firefoxの脆弱性を悪用する攻撃

図8に、Firefoxを攻撃するコードの一部を示します。
Shellcodeは、前節で示した図5のコードとほぼ同じでPACファイルとして攻撃コードを再度ダウンロードするようになっていました。この際にダウンロードされるコードは、Firefoxの攻撃コードではなくIEのものです。PACファイルの実行後の挙動は、IEのパターンと同様です。

Firefox ExploitのJavaScriptの一部
図8: Firefox ExploitのJavaScriptの一部

感染するマルウエア

攻撃が成功した際に最終的に感染するマルウエアはGh0st RATです。今回使用されたマルウエアのコードと、リークされたGh0st RATのソースコード[2]を比較する限り、図9のようにほとんどのコードは一致していました。

マルウエアとGh0st RATのソースコードの一部比較
図9: マルウエアとGh0st RATのソースコードの一部比較
(左:マルウエアのコード 右:リークしたGh0st RATのソースコード)

通信には、独自の通信を使用して送信するデータの先頭が、固定値”afxcbyzt”となる特徴があります。また、送信するデータはzlibで圧縮されているのですが、先頭の2バイトが0x88でXORされています。

マルウエアが送信するデータの例
図10: マルウエアが送信するデータの例

おわりに

今回確認したIEに対する攻撃は検証の結果、Window7 x64(2019年12月リリースパッチ適用)およびWindows8.1 x64(2020年1月リリースパッチ適用)でマルウエアの実行まで行われることを確認しましたが、Windows10(2020年1月リリースパッチ適用)の環境ではマルウエア感染は発生しませんでした。今回の攻撃はコードがWindows10に対応していなかった可能性が考えられます。
なお、今回解説した検体のハッシュ値および通信先に関しては、Appendix A、Bに記載していますので、アクセスしている端末がないかご確認ください。

インシデントレスポンスグループ 朝長 秀誠

参考情報

[1] Juicy Potato (abusing the golden privileges)
http://ohpe.it/juicy-potato/

[2] Github - iGh0st / gh0st3.6_src
https://github.com/iGh0st/gh0st3.6_src

Appendix A: 通信先

  • last.tax-lab.net
  • cnnmedia.servepics.com

Appendix B: ハッシュ値

  • c9e7467c88d391cecc0535f0c1576c30033791a94cec676d6bbc9a37931daf20
≪ 前へ
トップに戻る
次へ ≫