本ブログ記事は、2021年10月14日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文はこちらからご覧頂けます。
STRRat は、Java ベースのリモートアクセス型トロイの木馬(RAT)であり、情報の窃取とバックドア機能を中心に、悪意のある機能を多数備えています。ブラウザーやメールクライアントから認証情報を収集する機能に加え、オンラインとオフラインのキーロガーの機能も備えています。
また、ランサムウェア攻撃を模倣する機能も備えています。ファイルの暗号化は行いませんが、メモ帳で偽の脅迫状を表示している間に「.crimson」というファイル拡張子を追加します。
2020 年中頃の初期感染経路は、通常、ビジネス文書や領収書、注文書を装ったメールの添付ファイルでした。以前は、ターゲットに Java Runtime Environment(JRE)がインストールされている必要がありました。現在では、自分の JRE をデプロイするか、最初に有効な Java バージョンの存在を確認します。
オペレーティングシステム

リスクと影響

感染経路
リモートアクセス型トロイの木馬(RAT)であるSTRRat が被害者のデバイスに感染する方法は複数あります。通常は、大規模なマルスパムを行ったり、組織的なフィッシング攻撃に参加したりして、被害者にトロイの木馬となる添付ファイルを開くように仕向けます。
STRRat が関係する初期ドロッパーはさまざまです。あるものは、マルウェアをダウンロードさせる悪意のある難読化済み JavaScript の添付ファイルです。Microsoft® Excel® や Word ドキュメントのマクロにコードを潜ませるものあります。このマクロが有効になると、次のステージの PowerShell スクリプトを投下します。

図 1:STRRat の Microsoft Excel 向け初期ステージダウンローダーの例
STRRat の変種の一部では、第 2 のダウンローダーステージが追加されています。
被害者が直接メールから JavaScript を実行するのではなく、Microsoft Excel または Microsoft Word の埋め込みマクロを有効にすることが必要です。そうすることで、初期ステージが hxxp://35[.]163[.]204[.]167/oo でホストされている文字列を取得して実行できるようになります。

図 2:ダウンロードされた PowerShell ファイル(oo.ps1)
文字列「oo」がダウンロードされると、Microsoft Excel のマクロで cmd.exe を開き、PowerShell の IEX(Invoke-Expression)コマンドレットを使用します。すると、文字列「oo」の内容が実行され、STRRat の実行チェーンの次に進みます。
「oo」の内容を調べると、そのコードは高度な難読化が施された PowerShell スクリプトであることがわかります。この時点では人間が読めるようなコードに見えないかもしれませんが、図 2 のように、「oo」のコード内の各変数は、中括弧で囲まれた空白の長さの違いに関連しています。各変数は長さの一意性によって解釈できます。たとえば、「${ }」(3 つの空白が中括弧に囲まれている)は、「Char[3]」というように難読化を解除できます。
「oo」は、Microsoft® Office ドキュメントのマクロ内で実行するのではなく、隔離して個別に解析することができます。「oo」を「oo.ps1」という名前に変更すれば、誤ってコードを実行することなく、その内容を調べることができます。PowerShell のコードを個別に実行して、出力を表示させることで、各変数が再構築され、難読化の最初のレイヤーが取り除かれます。

図 3:難読化の最初のレイヤー
難読化解除の最初のステージが終わると、何が起きているかを理解しやすくなります。とはいえ、まだ人間が簡単に読めるものではありません。各変数の空白の長さが計算され、「[CHar]整数」と表示されるようになりました。
最初のレイヤーには、難読化されたコードをもう一度実行する別の IEX PowerShell コマンドレットが含まれています。これにより、難読化解除された最終的なコードが生成されます。

図 4:oo.ps1 の本当の出力
この難読化の第 2 のレイヤーが取り除かれると、「oo」に含まれる PowerShell コードの真の意図と悪意がさらに明確にわかるようになります。このコードは ZIP をダウンロードして、その内容を展開してから、ファイル「Sys.cmd」を実行しようとします。
このファイルは、永続性を持たせるために自身をデバイスのスタートアップフォルダに追加し、再起動後も実行されるようにします。
技術的解析
「oo」スクリプトが成功すると、悪意のある PowerShell スクリプトが ZIP の内容を投下します。その内容のほとんどは無害なものであり、JRE(Java Runtime Environment)のダウンロードで想定されるものです。
初期の STRRat の実行は、被害者のデバイスにある JRE に依存していました。これにより、STRRat のダウンロードは非常に小さくなりました。しかし、最近の STRRat は、被害者のマシンにすでに JRE があることに依存しないようになりました。
最近の STRRat のサンプルでは、悪意のある JavaScript ファイルからデプロイされる前に互換性のあるバージョンの Java の存在を検知しようとするか、それに関係なく投下します。下のように、ダウンロードされた「esfsdghfrzeqsdffgfrtsfd.zip」という ZIP ファイルの内容には、Java バージョン 1.8.0_261 の内容が含まれています。
esfsdghfrzeqsdffgfrtsfd.zip の内容は、「Sys.cmd」と「x.jar」を除いて、このバージョンの Java に関連した正規のファイルです。

図 5:ダウロードされた ZIP ファイル oo.ps1 の内容
このような互換性のある Java バージョンを投下するという戦略を採ることで、STRRat のデプロイに必要なデータダウンロードのサイズが増加します。しかし、ダウンロードされるファイルが無害であるとすれば、ダウンロードサイズを大きくして、より多くのデバイスに対応することを選んでいると言えます。
ダウンロードされた ZIP ファイルで最初に発見された不正なファイルは、スクリプト「Sys.cmd」です。これは小さなスクリプトで、最小化したまま cmd.exe を実行し、マルウェアのコアとなるファイル「x.jar」を実行するためにデプロイした Java バージョンを実行します。

図 6:Sys.cmd の内容
x.jar には、STRRat のコアとそのコンポーネントが含まれています。このファイルは、63 個の「.class」ファイルとともに動作し、リソースファイル「config.txt」を利用します。config.txt には、コールホームに使用する情報が暗号化された状態で収められています。この情報は、感染した被害者のデバイスでの実行に成功したときに、マルウェアによって使用されます。
x.jar を Java の逆コンパイラで開くと、初期の解析、発見、報告を防ぐために高度な難読化が施されているのがわかります。このファイルには「StringBuilder」に関連した参照が多数あります。これは難読化が行われていることを示唆します。この脅威の場合、Java の逆コンパイラでは真のコードが表示されず、実行時に文字列を「構築」します。このことにより、難読化を解除するまで静的解析ができなくなります。クラス名もランダム化され、でたらめなものになっているため、背後にある悪意のある機能を理解するのは困難です。
「.class」ファイルの名前付けは STRRat の変種ごとに異なりますが、コアとなる内容は同じです。

図 7:難読化解除された x.jar と Main.class
STRRat は、最初の実行時に、Java コンポーネントに関連した複数のリンクにアクセスして、悪意のある機能を強化しようとします。最も注目すべきなのは、System-Hook というオープンソースのツールです。SYS hook は低レベルのシステムフッカーであり、キーボードやマウスの動作を盗聴するために使用できます。STRRat ではキーロガーの機能に悪用されています。
サンプルをコマンドラインで実行すると、使用されている難読化について、さらなる情報が得られます。このマルウェアは、下のように Allatori Obfuscator に関連するバナーを表示します。Allatori は、商用で有償の Java 用難読化製品です。STRRat の作者は、デモライセンスを悪用してマルウェアの難読化に利用しています。

図 8:x.jar の実行時に表示される Allatori Obfuscator のバナー
次に、x.jar に Java の難読化解除ツールを適用すると、この変種に、さらなる難読化が存在することが検知されました。

図 9:Superblaubeere と Allatori の両方を検知
図 9 からわかるように、オープンソースの Superblauebeere27 Java Obfuscator でさらなる難読化が行われていました。前述の Allatori Obfuscator v7.3 の難読化の上にさらに行われたものです。
それぞれの難読化手段を検知して取り除いたことで、STRRat の真の特性と悪意のある機能がわかります。

図 10:難読化されたもの(上)と難読化解除されたもの(下)の違い
図 10 により、STRRat の難読化されたコードと難読化解除されたコードの違いが明確になります。この比較は Main.class を引用したもので、このマルウェアが以前に難読化した追加の依存関係やコールホームに使用する追加の URL をダウンロードしているのがわかります。
解析の過程で、このコードで参照されている str-master[.]pw というサイトが、今後この URL を使用してホームを呼び出すことがないように、シンクホール化されていたことがわかりました。
感染後のトラフィック
感染後は、機能追加のために Java 関連のコンポーネントをさらに取得しようとします。
こうした依存関係をダウンロードすると、C2(コマンドアンドコントロール)サーバーに接続して、感染後の成功を通知します。
続けて以下の情報を収集します。
- ユーザー名
- システム OS
- システムアーキテクチャ
- アンチウイルスソフトウェアの存在
- STRRat のバージョン
- 被害者の位置情報
- STRRat がインストール済みかどうか
- デバイスのアイドル時間

図 11:STRRat 感染後の TCP ストリームの例
構成情報の復号
STRRat には、「.class」ファイルに加えて、リソース内に config.txt という名前のテキストファイルが含まれています。このテキストファイルには、C2 インフラストラクチャに関連する文字列が暗号化された状態で収められています。
x.jar が難読化解除されると、config.txt は、内容と STRRat による復号に関連して、STRRat 内の複数の「.class」ファイルから参照されます。
最初に導出される必要がある初期 PBKDF2 鍵(Password-Based Key Derivation Function 2)を使用してから、AES(Advanced Encryption Standard)の復号を行い、得られた鍵を CBC(Cipher-Block Chaining)モードで出力することで、完全に復号された config.txt を生成します。
x.jar の難読化済みのコードを解析する過程で、複数の「.class」ファイルが PBKDF2 を参照していることがわかりました。発見された関数は、暗号技術で鍵の導出に使われるものです。
x.jar のコードのさらなる解析により、PBKDF2 の入力情報へのさまざまな参照が発見されました。PBKDF2 には、パスフレーズ、繰り返し回数、鍵サイズが必要です。パスフレーズには「strigoi」が、繰り返し回数には 65536 が、鍵サイズには 128 ビットが使われていました。x.jar の難読化が解除されると、この情報がコード全体で参照されていることがわかります。
STRRat の複数のサンプルを解析したところ、すべてのサンプルにこのパターンが見られました。
名前: |
Data: |
パスフレーズ: |
strigoi |
繰り返し回数(整数): |
65536 |
鍵サイズ(整数): |
128 |
このように一貫した PBKDF2 入力情報が使われていることが、CyberRaiju による STRRAT Malware(v1.4)Decrypter の開発につながりました。このオープンソースツールは、STRRat の config.txt ファイルを復号することに基づくものです。
シンプルなコマンドラインツールであり、STRRat のサンプルの config.txt を受け取って復号し、各サンプルの悪意のある特性、C2 情報、その他のサンプル間の違いを明らかにします。

図 12:STRRAT Malware Decryptor の出力
以下は難読化解除済みの x.jar から得られた出力です (SHA256: adc7acc8332cd240cc8375f841a023ecbdb7c19ec5bb1d7c0d2a029106c9bc31)
C2: |
idgerowner[.]duckdns[.]org |
相互排除/ファイルロック: |
1990lock.file |
プラグインのダウンロード URL: |
Jbfrost[.]live[/]strigoi[/]server[/]hwid=1&lid=m&ht=5 |
第 2 の C2: |
Hostmicrosoft[.]duckdns[.]org |
第 2 の相互排除/ファイルロック: |
3636 |
スタートアップフォルダの永続性設定: |
True |
第 2 のスタートアップフォルダの永続性設定: |
False |
Skype のスケジュール設定されたタスクの永続性設定: |
True |
ライセンス: |
T1PS-MJKQ-YUIX-ZBMX-CDGU |
Crimson ランサムウェアの模倣
STRRat のもう一つの注目すべき機能として、ランサムウェアを装うというものがあります。このマルウェアは、ファイルの「暗号化」と「復号」の両方のコマンドを受け取りますが、その機能は限定されており、ファイル暗号化機能を開始せず、ファイルの拡張子を「.crimson」に変更するだけです。
さらに、デスクトップに「crimson_info.txt」というファイルを表示して、本物のランサムウェアに感染したかのように恐怖心をあおります。
感染したシステム上のマルウェアが把握されると、脅威アクターがランサムウェアなどの別のマルウェアをさらにデプロイする可能性があります。

図 13:偽のランサムウェアコマンド
能力と機能
難読化された STRRat は、正確に解析することができます。STRRat は JAR(Java Archive)であるため、さまざまな「.class」ファイルが連携して、悪意のある機能を実行します。
通常、STRRat のサンプルには、コアコマンド「.class」ファイルが 1 つあります。他のコンポーネントよりも大きいことが特徴です。このファイルは、脅威アクターから与えられるすべてのコマンドの基盤となります。マルウェアは、これらのコマンドを解釈して、悪意のある機能を実行します。

図 14:STRRat のコア機能の例
リモート機能
名前 |
説明
|
reboot |
デバイスを再起動する |
shutdown |
デバイスをシャットダウンする |
uninstall |
デバイスからマルウェアを削除する |
disconnect |
デバイスと C2 サーバーの接続を解除する |
down-n-exec |
URL からファイルをダウンロードして実行する |
update |
マルウェアをアップデートする |
up-n-exec |
C2 サーバーからファイルを直接デバイスにアップロードする |
remote-cmd |
リモートのコマンドプロンプト |
power-shell |
リモートの PowerShell プロンプト |
file-manager |
デバイス上のファイルを閲覧する |
processes |
デバイスで実行中のプロセスの一覧を取得する |
startup-list |
デバイスで有効にされているスタートアップ項目の一覧を取得する |
remote-screen |
デバイスの画面をリモートで閲覧する |
rev-proxy |
デバイスをリバースプロキシサーバーとして使用する |
hrdp-new |
隠れ RDP を利用してリモートデスクトップクライアントを有効にする |
hrdp-res |
引数を取って隠れ RDP を利用する |
キーロガー機能
名前 |
説明
|
keylogger |
デバイス上でキー入力の記録を開始し、ログを C2 サーバーに送信する |
o-keylogger |
デバイス上でキー入力をオフラインで記録し、ログをディスクに保存する |
権限昇格
名前 |
説明
|
chk-priv |
マルウェアの実行に使用しているユーザーの権限レベルを確認する |
req-priv |
権限昇格をリクエストし、管理者レベルのアクセス権を取得する |
パスワード窃取
名前 |
説明
|
chrome-pass |
デバイスから Chrome のパスワードを抽出して C2 に送信する |
foxmail-pass |
デバイスから Foxmail のパスワードを抽出して C2 に送信する |
outlook-pass |
デバイスから Outlook のパスワードを抽出して C2 に送信する |
fox-pass |
デバイスから Firefox のパスワードを抽出して C2 に送信する |
tb-pass |
デバイスから Thunderbird のパスワードを抽出して C2 に送信する |
ie-pass |
デバイスから Internet Explorer のパスワードを抽出して C2 に送信する |
all-pass |
デバイスからすべてのパスワードを抽出して C2 に送信する |
偽のランサムウェアコマンド
名前 |
説明
|
rw-encrypt |
デバイス上のファイルの名前に「crimson」という拡張子を追加し、ファイルの内容は変更しない |
rw-decrypt |
デバイス上のファイルの名前から、rw-encrypt コマンドで追加した拡張子「crimson」を削除し、ファイルの内容は変更しない |
show-msg |
メモ帳を開いて、C2 サーバーから送信されたメッセージを表示する |
結論
リモートアクセス型トロイの木馬(RAT)であるSTRRat は、他のマルウェア、バックドア、インフォスティーラほど広まってはいないものの、ホームユーザーと企業の両方にとって深刻な脅威であることは変わりません。Java で書かれており、1 つの実行ファイルではなく、さまざまな Java の「.class」ファイルが連携する必要があります。各ファイルには固有の機能や役割があります。
初期ステージは、Microsoft Office のマクロか、JAR ファイルからデプロイされます。どちらの方法でも、PowerShell か JavaScript で書かれ、高度な難読化が施された第 2 のローダーを投下できます。初期ステージのダウンローダースクリプトとマルウェア自体の両方に複数ステージの難読化が行われているため、初期段階では理解も解析も困難です。
被害者のデバイスに展開されると、さまざまな悪意のある機能が使えるようになります。STRRat は情報窃取とバックドア機能に特化しています。
セキュリティ侵害インジケータ(IOC)
Networking: C2: License ID: Mutex: Scheduled Task: Files: SHA256: |
BlackBerry によるサポート
もし STRRatのような脅威にさらされているなら、BlackBerry にお任せください。現在 BlackBerry 製品を利用していなくても問題ありません。
BlackBerry の インシデント対応チーム は、世界的に活躍するコンサルタントから構成され、ランサムウェアや持続的標的型攻撃(APT)など、さまざまなインシデントへの対応と封じ込めのサービスを専門としています。
弊社はグローバルコンサルティングチームを常に待機させており、ご希望があれば、24 時間サポートと現地支援を提供できます。次の URL からご相談ください。 https://www.blackberry.com/ja/jp/forms/enterprise/contact-us
・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us
・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows
・BlackBerry Japan:https://www.blackberry.com/ja/jp