ランサムウェア
「LockBit」になりすまし正規ストレージサービスを悪用するランサムウェアを分析
「LockBit」の名を騙って被害者を動揺させ、情報送出に正規ストレージサービスであるAWS S3を悪用するランサムウェアを確認しました。検体から攻撃者のAWSアカウントが特定され、停止措置が取られました。
- ストレージサービス「Amazon S3」を不正利用して情報を流出させるランサムウェアが発見されました。Go言語で作られた本ランサムウェアは、S3の高速伝送機能「Transfer Acceleration」を利用し、被害者のファイルを攻撃者のS3バケットに送信します。
- 検体にハードコーディングされたAWS認証情報より、攻撃者のAWSアカウントIDが特定されました。本IDは、「侵入の痕跡(IoC:Indicators of Compromise)」として、攻撃の検知に利用できるものです。
- 本ランサムウェアは、被害者を動揺させる手段として、悪名高いランサムウェア「LockBit」へのなりすましを図ります。
- トレンドマイクロは、今回の発見事項をAWSセキュリティチームに報告しました。議論の結果、攻撃者の活動は、AWSの利用ポリシー(https://aws.amazon.com/aup/)に反することが確認されました。そのため本件は、AWSサービスの脆弱性に相当するものではありません。問題のAWSアクセスキーやアカウントに対しては、停止の措置が取られました。
AWSを不正利用するランサムウェア
情報窃取ツールの開発から機密情報の流出に至るまで(参考:1、2)、正規のクラウドサービスを不正利用する活動は、増加傾向にあります。今回の調査では、クラウドサービス「AWS(Amazon Web Services)」を不正に利用するランサムウェアが発見されました。AWSがランサムウェアの戦略に取り込まれるのは、かなり稀なケースに相当します。本ランサムウェアはGo言語(別称:Golang)で作られており、WindowsとMacOSの両環境を標的としています。稼働すると、標的環境から情報を窃取した上で、それを攻撃者の「Amazon S3バケット」にアップロードします。S3バケットへのアクセスに必要なAWS認証情報は、ランサムウェアの内部にハードコーディングされています。
本ランサムウェア(トレンドマイクロ製品では「Ransom.Win64.BOCKLIT」などとして検出)による攻撃の最終段階では、被害端末の壁紙が、ランサムウェアファミリ「LockBit」を思わせる画像に変更されます。LockBitはここ数年に渡って活発な動きを見せ、2024年前半には、ファイル検知数が突出して高まりました。こうした背景もあり、LockBitの壁紙を見た被害者は、確かに当該ランサムウェアに感染したと思い込むかも知れません。しかし、実際の攻撃者は、LockBitではありません。これは、悪名高いLockBitになりすますことで、被害者を動揺させる作戦と考えられます。
本ランサムウェアの開発者は、自身のAWSアカウント、または侵害したAWSアカウントを利用していると考えられます。さらに、同一の開発者によるものと思われるランサムウェア検体が、30種以上も発見されました。従って、当該の開発者は、AWSによってアカウントやアクセスキーが停止される前に、開発やテストを急ピッチで進めているものと推測されます。なお、検体内にハードコーディングされたAWSアクセスキーIDなどの認証情報から、紐づくAWSアカウントIDを割り出すことが可能です。防御側では、こうして特定されたAWSアカウント情報はクロスアカウント活動における侵入の痕跡(IoC)となり、攻撃の検知と特定に役立てることができます。
以降、本ランサムウェアの検体が有する機能や、Amazon S3を不正利用する手口について解説します。
技術分析
Go言語では、単一のコードベースをもとに、さまざまなプラットフォーム向けの依存関係を含めてコンパイルすることが可能です。これは、プラットフォーム別にバイナリをそれぞれ作成できる「マルチプラットフォーム・プロジェクト」と呼べるものであり、複雑な依存関係からも解放されます。しかし、こうしたGo言語の強みも、マルウェア開発の手段として不正利用される場合があります。具体例として、ランサムウェア「Agenda」や、最近になって攻撃グループ「Earth Lusca」が利用し始めたバックドア「KTLVdoor」などが挙げられます。
今回調査したランサムウェア検体の大半には、AWSのアクセスキーIDやシークレットアクセスキーがハードコーディングされていました。内部の動きを分析した結果、AWS S3の転送高速化機能「S3 Transfer Acceleration(S3TA)」を不正利用していることも判明しました。
今回は、主に解析したのは下記の2検体です。
14fe0071e76b23673569115042a961136ef057848ad44cf35d9f2ca86bd90d31
0c54e79e8317e73714f6e88df01bda2c569ec84893a7a33bb6e8e4cf96980430
本ランサムウェアが起動すると、まず、下記の初期処理を実行します。
- 標的端末の一意な識別子(UUID:Universal Unique Identifier)を取得する。
- ハードコーディングで定義された公開鍵をインポートする。
公開鍵は、PEM(Privacy Enhanced Mail)形式でエンコードされています。
上図のデータをデコードすると、RSA公開鍵が表出し、モジュラスのサイズが2048ビットであることが判明します。
- ランダムな「マスター鍵」を生成し、それを先述のRSA公開鍵で暗号化する。結果、RSA秘密鍵を所持する攻撃者のみが、マスター鍵を復号できるようになる。
- 暗号化されたマスター鍵をファイル「README.txt」に書き出す。
- ライブラリ「AWS SDK for Go v2」が提供する関数「StaticCredentialsProvider」を使用し、静的な認証情報をロードする。この認証情報には、ハードコーディング定義によるアクセスキーIDやシークレットアクセスキー、AWSリージョン情報などが含まれる。
以上の初期処理が完了した後、本ランサムウェアは、関数「filepath.Walk」を利用し、ルートディレクトリ(macOSバージョンの場合は「/」)配下の全ファイル一覧を取得します。各ファイルについて、「対象外ディレクトリ」に属するかをチェックします。属する場合は、暗号化の対象外とします。
本ランサムウェアには、暗号化対象のファイル拡張子(文書、画像など)が定義されています。
S3バケットの作成後、設定を変更し、S3TAの機能を有効化します。S3TAは、コンテンツ配信ネットワークサービス「Amazon CloudFront」によって世界各地に配備されたエッジを利用し、長距離通信を高速化するサービスです。本機能を利用する際には、バケット上でそれを有効化する必要があります。また、バケット名はDNS(Domain Name System)に準拠する必要があり、ピリオド文字を含めることはできません。S3TAを有効化したS3バケットは、AWS環境の種類に応じて、下記のエンドポイントからアクセスできるようになります。
{バケット名}[.]s3-accelerate.amazonaws.com
{バケット名}[.]s3-accelerate.dualstack.amazonaws.com
続いて、対象ファイルの内容が、被害者の端末から攻撃者のAWSアカウント宛てにアップロードされます。この際、先述の拡張子チェックを通過したファイルのうち、サイズが100MiB(メビバイト)以下のものが、関数「Uploader.Upload」によってAWS側にアップロードされます。ファイルサイズに制限を設けている理由は、極端に大きなファイルがアップロードされてAWSの使用料が増える事態を避けるためと考えられます。
最後のステップは、対象ファイルをAES-CTRアルゴリズムによって暗号化することです。暗号鍵としては、ファイル名にマスター鍵を付加し、それをハッシュ化した値を使用します。例として、ランダムな16バイトのマスター鍵が「63 20 60 A3 EA 54 84 C9 27 57 76 1E CC 1F FC 12」で、暗号化対象ファイルの名前が「text.txt(16進表記:74 65 78 74 2e 74 78 74)」である場合を考えます。
結果、ファイル名にマスター鍵を付加したバイト列は「74 65 78 74 2E 74 78 74 63 20 60 A3 EA 54 84 C9 27 57 76 1E CC 1F FC 12」であり、そのMD5ハッシュ値は「23 a3 ec c5 58 2d 97 41 07 3c 3b dc 31 7d 49 30」となります。この算出過程を、下記のスクリーンショットに示します(図示目的でCyberChefを利用しました)。
こうして得られたMD5ハッシュ値がAES暗号鍵に相当し、関数「crypto.AES.NewCipher」のパラメータとして用いられます。また、AES暗号化の初期ベクトルは16バイトのランダム値であり、関数「crypto.cipher.NewCTR」のパラメータとして用いられます。
暗号化の完了後、本ランサムウェアは、対象ファイルの名前を下記の形式で変更します。
{元のファイル名}.{AES暗号化の初期ベクトル}.abcd
例えばファイル「text.txt」については、下記の名前に変更します。
text.txt.e5c331611dd7462f42a5e9776d2281d3.abcd
今回、確認のため、デバッガを用いてランサムウェアの検体を稼働させ、マスター鍵の内容を取得(ダンプ)しました。次に、このマスター鍵に加え、適切な暗号化アルゴリズムやパラメータを指定することで、暗号化済みファイルを確かに復号できることが判明しました。この様子を、下図に示します(図示目的でCyberChefを利用しました)。
本ランサムウェアが作成するファイル「README.txt」には、Base64でエンコードされた文字列が含まれます(図13)。これをデコードすると、Base64でエンコードされた「別の文字列」が表れ、それにホスト名、OSバージョン、感染端末の識別情報が続きます(図14)。さらに「別の文字列」をデコードすると、RSA公開鍵で暗号化(crypto.rsa.EncryptPKCS1v15)されたマスター鍵が得られます。ただし、その暗号化を解除するには、攻撃者のみが所持するRSA秘密鍵が必要となります。
壁紙の変更方法として、macOS版は、下記のosascriptを用います。
tell application "System Events" to tell every desktop to set picture to "%s"
一方、Windows版は、API「SystemParametersInfoW」を呼び出します。その際のパラメータ「uiAction」として、「SPI_SETDESKWALLPAPER」を指定します。
Windows版の一部検体には、バックアップ(シャドーコピー)の削除機能に相当するコードも組み込まれていました。なお、当該検体の開発者はプロジェクト「ransomware-simulator」のファイル「shadowcopy.go」をコピーして流用したようですが、パラメータ「/for」を変更する必要性には気づかなかったものと見受けられます。
クラウドサービスを不正利用したサイバー攻撃は、依然として増加傾向にあります。本稿で挙げたGo言語によるランサムウェアは、被害者のファイルを攻撃者側のAmazon S3バケットに流出させるために、「S3 Transfer Acceleration」の機能を不正利用しました。こうしたクラウドサービスの機能性は、攻撃者の目から見れば、情報流出を含む不正な活動の武器として映るものです。
一方、防御側にとっては、今回挙げたAWS認証情報のように、不正なアカウント情報を侵入の痕跡(IoC)と見なすことで、攻撃の検知に繋げられる可能性があります。不正なアカウントの追跡は、クラウド環境に潜む脅威の発見や、緩和策の実施に役立つものです。こうした点でも、クラウド・リソースを厳重に監視することが重要です。
本稿の例が示唆するように、ランサムウェアの背後にいる攻撃者は、自身よりも広く認知されているランサムウェアへの偽装を図る可能性があります。その狙いは、悪名高いランサムウェア・グループを騙って被害者を動揺させ、要求を受け入れさせることにあります。
対策として、企業や組織では「Trend Vision One™」などのソリューションを導入することで、システムの全体を通して脅威を効果的に検知し、これを早い段階でブロックすることが可能となります。
AWSからのセキュリティ・フィードバック
本インシデントについてAWSに報告したところ、下記の回答(英語から日本語に翻訳)が得られました。
AWSでは、AWSサービスが意図されている通りに運用されていることを確認できます。今回特定された活動は、AWSの利用ポリシーに反するものです。報告にあったAWSアクセスキーやアカウントは、すでに停止されています。
ランサムウェア活動は特定の計算環境に限ったものではありませんが、AWSでは、マルウェアに絡むセキュリティの状態を把握し、管理することが可能となっています。
AWSのリソースが不審な活動に利用されている、またはその可能性が疑われる場合は、「不正行為報告フォーム」にご記入いただくか、または、下記のメールアドレスにお問い合わせください。
trustandsafety@support.aws.com
AWSのセキュリティにご協力をいただき、ありがとうございます。
トレンドマイクロによる脅威情報の活用
進化する脅威に備え、トレンドマイクロの製品をご利用の方は、Trend Vision One™を通してさまざまなインテリジェンス・レポート(Intelligence Report)や脅威インサイト(Threat Insight)にアクセスできます。脅威インサイトは、サイバー攻撃の脅威が生じる前に対策を確立し、準備体制を整える上で役立ちます。さらに、不正な活動や手口を含めた攻撃者に関する情報を、幅広く網羅しています。こうした脅威情報を活用することで、ご利用の環境を保護し、リスクを軽減し、脅威に的確に対処するための対策を自発的に講じていくことが可能となります。
Trend Vision Oneのアプリ「Intelligence Reports」(IOC Sweeping)
- Fake LockBit, Real Damage: Ransomware Samples Abuse AWS S3 to Steal Data(「LockBit」になりすますランサムウェア:情報流出の手段にストレージサービス「AWS S3」を不正利用)
Trend Vision Oneのアプリ「Threat Insights」
- Emerging Threats: Fake Lockbit Ransomware Abuses AWS S3 For Data Exfiltration(高まる脅威:「LockBit」になりすますランサムウェア:情報流出の手段にストレージサービス「AWS S3」を不正利用)
脅威ハンティングのクエリ
Trend Vision Oneのアプリ「Search」
Vision Oneをご利用のお客様は、アプリ「Search」の機能を用いることで、ご利用中の環境を解析し、本稿で挙げた不正な活動の兆候を検知、照合できます。
マルウェア「BOCKLIT」の検知
malName:*BOCKLIT* AND eventName: MALWARE_DETECTION
Vision Oneをご利用中で、かつ「Threat Insights」(現在プレビュー版)が有効となっている場合、さらに多くのハンティング用クエリをご確認いただけます。
侵入の痕跡(IoC:Indicators of Compromise)
本稿で挙げたランサムウェアとして、さまざまなバージョンが確認されました。そのいずれも暗号化機能を有していますが、アップロード機能や有効なトークンを備えたものは、ごく一部に限られます。こうしたバージョン間での差異を踏まえると、本ランサムウェアは、まだ開発段階にあると推測されます。
IoCの全一覧は、こちらからご確認いただけます。
参考記事:
Fake LockBit, Real Damage: Ransomware Samples Abuse AWS S3 to Steal Data
By: Jaromir Horejsi, Nitesh Surana
翻訳:清水 浩平(Core Technology Marketing, Trend Micro™ Research)