Remco SprootenRuben Groenewoud

Outlaw Linuxマルウェア:永続的で洗練されておらず、驚くほど効果的

Outlawは、単純なブルートフォース攻撃とマイニング戦術を利用して、ボットネットを長期間維持する永続的なLinuxマルウェアです。

Outlaw Linuxマルウェア:永続的で洗練されておらず、驚くほど効果的

前書き

OUTLAWは、過去数年間に複数のバージョンで観察された、永続的でありながら洗練されていない自動伝播コインマイナーパッケージです[1]、[2]、[3]、[4]。ステルス性や高度な回避技術はありませんが、SSHブルートフォース、SSHキーとcronベースの永続性、手動で変更されたコモディティマイナーやIRCチャネルなど、シンプルでありながら影響力のある戦術を活用することで、アクティブで効果的なままです。この永続性は、ボットネットのオペレーターが高度な技術に頼ることなく、どのように広範な影響を与えることができるかを浮き彫りにしています。

OUTLAW の行動と運用パターンについてより深い洞察を得るために、攻撃者の行動を引き付けて観察するように設計されたハニーポットをデプロイしました。脆弱なシステムを模倣した環境を慎重に作成することで、敵対者をおびき寄せてサーバーと対話させることができました。このインタラクションにより、オペレーターが直接コマンドを入力したり、その場で変更を加えたり、さらにはコマンドを誤って入力したりするなど、人間の関与を明確に示す自動アクションと手動アクションが明らかになりました。キャプチャされたGIFは、これらの瞬間を紹介し、リアルタイムの意思決定プロセスを垣間見ることができます。

OUTLAWを分析することで、オペレーターが使用するツールと、時間の経過とともに進化する戦略について新たな洞察を得ることができます。このマルウェアは、その攻撃チェーンがMITRE ATT&CKフレームワークのほぼ全体に及ぶため、検出エンジニアリングの原則を適用する貴重な機会を提供します。その感染プロセスを調べることで、予測可能で反復的な行動を利用した効果的な検出戦略を開発することができます。

このレポートは、詳細な検出ルールやハンティング クエリなど、完全な攻撃チェーン分析を提供します。OUTLAWのコンポーネントを分解することで、初歩的なマルウェアでも現代の環境で寿命を延ばす方法と、防御者がそのシンプルさを活用して検出と対応を強化する方法を示します。

この記事のポイント

  • 永続的だが洗練されていない:OUTLAWは、SSHブルートフォース、SSHキー操作、cronベースの永続性などの基本的な手法を使用しているにもかかわらず、アクティブなままです。
  • コモディティツール:このマルウェアは、変更された XMRig マイナーを展開し、C2にIRCを活用し、永続化と防御回避のための公開スクリプトを含んでいます。
  • 広範な攻撃対象領域:OUTLAWの感染チェーンは、MITRE ATT&CKフレームワークのほぼ全体に広がっており、多くの検出とハンティングの機会を提供しています。
  • ワームのような伝播:OUTLAWは、侵害されたホストを使用して、ローカルサブネットに対してさらにSSHブルートフォース攻撃を仕掛け、ボットネットを急速に拡大します。

OUTLAW 概要

OUTLAWは、ペイロードのダウンロードと実行、永続性の確立、SSHブルートフォース攻撃によるボットネットの拡大から始まる多段階の感染プロセスに従います。実行チェーンは以下に表示されます。

1. 初期感染と展開

  • 攻撃は、 tddwrt7s.sh がC2サーバーから dota3.tar.gz パッケージをダウンロードしたときに開始されます。
  • 抽出された initall.sh スクリプトが実行され、感染チェーンが開始されます。

2. コントロールの獲得と粘り強さ

  • このマルウェアは、競合するブルートフォースとマイナーを殺すことにより、優位性を確保します。
  • その後、次のものをデプロイします。
    • 暗号マイニング(マイニングプールへの接続)用にXMRIGを変更しました。
    • IRC C2によるリモートコントロール用のSTEALTH SHELLBOT。
    • SSHブルートフォース攻撃を実行するBLITZ。

3. 伝播と拡大

  • ブルートフォースモジュールは、SSH C2サーバーからターゲットリストを取得し、新しいマシンに対してSSHブルートフォース攻撃を試みます。
  • 侵害に成功したシステムは感染し、このサイクルが繰り返されます。

この自動化された感染ループにより、OUTLAWは攻撃者の労力を最小限に抑えながら、活動的で収益性の高い状態を維持することができます。攻撃チェーン全体を詳しく見てみましょう。

OUTLAW エグゼキューションチェーン

OUTLAWは、MITRE ATT&CKフレームワークの幅広い戦術とテクニックを効果的にカバーしています。このセクションでは、その動作をマッピングして、感染チェーンと方法の概要を示します。

初期アクセス:電撃戦

OUTLAWは、日和見的なSSHブルートフォースを通じて初期アクセスを取得し、脆弱なまたはデフォルトの資格情報を持つシステムを標的にします。このマルウェアは、kthreadaddなどの他の名前でも知られるblitzコンポーネントを使用して、大量のスキャンとパスワード推測の試行を実行します。C2サーバーから取得したターゲットIPと資格情報のリストを活用します。

また、OUTLAWはワームのように動作し、侵害に成功したすべてのシステムに自動的にインストールされます。この自己増殖メカニズムにより、ネットワーク全体に急速に広がり、新たに感染した各デバイスを別のノードに変えて、さらなるブルートフォース攻撃や感染の試みを行うことができます。

OUTLAWがこれらの攻撃をどのように実行し、それ自体を伝播するかについては、記事の後半で詳しく説明します。

実行: tddwrt7s.sh

OUTLAWの最初の感染は、単純なスポイトスクリプトである tddwrt7s.shから発生しているようです。このシェル・スクリプトは、既存のインストールを確認します。マルウェアがすでに存在し、解凍されている場合は、initallスクリプトが実行され、感染チェーンが開始されます。それ以外の場合は、提供されているステージング サーバーの一覧からパッケージのダウンロードを試みます。説明のために、スポイトの短縮スニペットを以下に示します。

抽出された dota3.tar.gz パッケージは、その内容を .rsyncという隠しフォルダーに抽出し、次のエントリを含みます。

 ├── a
 │   ├── a
 │   ├── init0
 │   ├── kswapd0
 │   ├── kswapd01
 │   ├── run
 │   ├── socat
 │   └── stop
 ├── b
 │   ├── a
 │   ├── run
 │   └── stop
 ├── c
 │   ├── blitz
 │   ├── blitz32
 │   ├── blitz64
 │   ├── go
 │   ├── run
 │   ├── start
 │   ├── stop
 │   └── v
 ├── init
 ├── init2
 └── initall

実行チェーンを1つずつ分解してみましょう。

メイン初期化スクリプト: initall

3つの init スクリプトは、マルウェアの全体的な実行フローとデプロイを制御します。initallスクリプトから始めて、メイン初期化子がどの実行パスを取るかを決定します。システム環境をチェックし、ファイルのアクセス許可と使用可能なディレクトリに基づいて、 init を使用するか init2 を使用するかを決定します。

これらの init スクリプトはすべて、変数ベースの文字列連結難読化を使用しており、コマンドが小さな変数フラグメントに分割され、動的に連結されて実行されるため、静的解析がより困難になります。たとえば、 initall スクリプトは次のようになります。

ただし、 evalechoに変更することで、手間をかけずに出力を取得できます。

このスクリプトは、デフォルトでは、一貫して init.これは、マルウェアを隠しディレクトリ ~/.configrc6にインストールする主要な実行パスです。フォールバック実行パスは init2で、 ~/.configrc6 にアクセスできない場合に使用されます。主な違いは、このパスではすべてのコンポーネントが現在の作業ディレクトリに保持されることです。前回と同じ難読化解除の原則を適用すると、次の 2 つのスクリプトが作成されます。

最初のスクリプト(init)は、隠しディレクトリ ~/.configrc6にコンポーネントを非表示にし、2 番目のスクリプト(init2)は作業ディレクトリから直接実行します。この違いにもかかわらず、実行フローは同じままで、a/ ディレクトリと b/ ディレクトリの a という名前のバイナリをバックグラウンド プロセスとして開始し、永続性を確立します。どちらのスクリプトでも、マルウェアは、定期的に、およびシステムの再起動時にバイナリを実行するcronジョブをインストールします。

5 6 * * 0   ~/.configrc6/a/upd
@reboot     ~/.configrc6/a/upd
5 8 * * 0   ~/.configrc6/b/sync
@reboot     ~/.configrc6/b/sync
0 0 */3 * * ~/.configrc6/c/aptitude

スクリプトは a/ ディレクトリと b/ ディレクトリで a バイナリをほぼ同時に実行しますが、最初に a/ ディレクトリの実行フローに従います。

サブルーチン a/ ディレクトリの実行: XMRIG

最初に実行されるスクリプトは aで、 crontab -r を使用して既存の cron ジョブをすべて削除し、現在の作業ディレクトリを変数に格納します。次に、プロセス (bash.pidに格納されている) がまだ実行されているかどうかを確認する upd というシェルスクリプトを作成します。プロセスが実行されていない場合は、バックグラウンドプロセスとして ./run 実行され、マルウェアが終了した場合に継続的に再起動されます。

さらに、このマルウェアの他のバージョンが rsyncgokswapd0blitz,redtailなどの名前で存在する可能性があることを示す、コメント付きのコマンドがいくつか表示されます。

スクリプトのさらに下には、 /sys/module/msr/parameters/allow_writes が存在するかどうかをチェックし、それを "on" に設定してモデル固有レジスタ (MSR) への書き込みを有効にする関数が作成されます。ファイルが存在しない場合は、 modprobe msr allow_writes=on コマンドによる MSR 書き込みが有効になります。

次に、関数は /proc/cpuinfo をチェックしてアクティブな CPU を識別し、特定の MSR レジスタ値を適用してパフォーマンスを最適化します。

最後に、この関数は、すべての CPU コアに対して hugepages を有効にすることでメモリ使用量を最適化し、メモリ アクセス効率を向上させます。使用可能なプロセッサ (nproc) に基づいて必要なhugepagesの数を計算し、それらを /sys/devices/system/node/node*/hugepages/ ディレクトリに設定します。

optimize_func()機能は、脅威アクターによって作成されたものではありません。脅威アクターは、 XMRig リポジトリのオープンソーススクリプト、特に randomx_boost.sh スクリプトを使用して、感染チェーンを支援しました。

ユーザーの権限に応じて、最適化機能全体を実行するか、 hugepages 数から sysctlを設定しようとします。

このチェーンで実行されるすべてのステップは、暗号通貨マイニングシステムの最適化の明らかな兆候を示しています。最後に、スクリプトは upd ファイルに実行アクセス許可を付与し、そのフォルダ内のすべてのファイルに "777" アクセス許可を付与し、 upd.

チェーンの前半で見たように、 upd ファイルは、 bash.pid に保存されているプロセスがまだ実行されているかどうかを確認し、実行されていない場合は、 run スクリプトを実行します。

run スクリプトは、既知のマイナー構成、既知のマイナー構成の防御をダウンさせ、名前/プロセス ID またはネットワーク トラフィックに基づいて既知のマイナー プロセスを強制終了する一般的なスクリプトである stop スクリプトを開始します。このスクリプトの短縮版を以下に示します。

興味深いことに、 init0 と呼ばれる2つ目のプロセスを強制終了するスクリプトが存在し、これはLinux環境で暗号通貨マイナーを強制終了するための オープンソースのスクリプト です。このスクリプトの実行フローは a スクリプトでコメント アウトされているため、このスクリプトは実行されていません。

stop スクリプトが正常に実行されると、run スクリプトは kswapd01 バイナリと kswapd0 バイナリをバックグラウンドで nohupで開始します。

kswapd01

kswap01バイナリは、マルウェアのインフラストラクチャ内での永続的な通信を確保する上で重要な役割を果たします。その主なタスクは、攻撃者のC2サーバーとの通信に不可欠な継続的な socat プロセスを監視および維持することです。

実行すると、 kswap01 は感染したマシンで実行されている既存の socat プロセスを確認します。アクティブな接続が見つからない場合は、実行中の socat プロセスを強制終了し、事前定義されたリストから別の IP アドレスを選択します。次に、バイナリは、新しい socat プロセスを起動してローカル コンピューターでリッスンし、トラフィックをリモート サーバー (通常はポート 4444) に転送することで、新しい接続を確立します。これにより、マルウェアは感染したシステムの制御を維持し、攻撃者からコマンドを引き続き受信できるようになります。

ただし、観察されたOUTLAWマルウェアパッケージのすべてのバージョンに socat バイナリが含まれているわけではないことに注意することが重要です。このような場合、 socat によって提供される機能は、他の手段でレプリケートされるか、永続性と通信を維持するための別の方法に依存して単に省略されます。

これらのチェックと変更を行うことで、 kswap01 C2接続の永続性を維持し、防御側が攻撃者と侵害されたシステムとの間の通信チャネルを中断するのを困難にします。

kswapd0

kswapd0という名前のファイルは、正規のXMRig暗号通貨マイナー(具体的にはバージョン6.22.1)の悪意を持って変更されたコピーです。

マルウェアの動作を定義する2つの主要な変更点があります。

1. スタートアップシェルコマンド

  • このマルウェアは、被害者の ~/.ssh フォルダを削除して再作成し、攻撃者が制御するSSH公開鍵を挿入し、制限的な権限(chattr +ia)を再適用して変更を防ぎます。これにより、永続的なSSHアクセスが許可されます。
  • また、既存の XMRig 設定ファイル( ~/.xmrig.json~/.config/xmrig.jsonなど)を削除またはロックして、攻撃者の埋め込みマイナー設定がそのまま維持されるようにします。

2. 組み込みマイナー構成

  • バイナリは内部マイニング構成でコンパイルされるため、XMRIGは外部構成ファイルなしで実行できます。
  • マイニングトラフィックは、プレーンテキストポート(:80:4444)、SSL(:442)、場合によってはTORアドレスを介して複数のMoneroプールにルーティングされます。ここで 442 ポートはタイプミスではないことに注意してください。
  • この構成では、次の方法でパフォーマンスが最適化されます。
    • バックグラウンドでのマイナーの実行
    • ラージ・ページの有効化 RandomX
    • 寄付レベルをゼロに設定する
    • CPU スレッド使用率の最大化

kswapd0は、管理者をロックアウトし、設定の変更を防止し、攻撃者が制御するSSHキーを挿入することで、ステルスな永続性メカニズムとして機能し、継続的なMoneroマイニングと不正なリモートアクセスを可能にしながら、正当なシステムプロセスを装います。

b/ディレクトリのサブルーチン実行:STEALTH SHELLBOT

前に説明したように、b/ディレクトリの a バイナリも init スクリプトを介して実行されました。

このスクリプトは、前に説明したのと同じ目的、つまり既知の不適切なプロセスを強制終了する別の stop スクリプトを開始します。その後、runスクリプトを実行することを唯一の目的として、syncというスクリプトを作成します。このスクリプトは、前に説明したcronjobで参照されます。run スクリプトには、base64 でエンコードされた 3 つのブロブが含まれており、これらは perl.短縮されたスクリプトの例を次に示します。

base64 デコード時に、難読化された perl スクリプトが識別されます。これらのスクリプトは 、公開されているPerl Obfuscator ユーティリティを利用して内容を難読化し、分析を困難にします。

さいわい、著者は難読化されたスクリプトに標準のコメントを残しました。公開されている難読化解除ツールを使用すると、次のコマンドでスクリプトの難読化を解除できます。

perl decode-stunnix-5.17.1.pl < obfuscated_run.pl > deobfuscated_run.pl

その後、難読化解除されたコンテンツを表示できます。

これは、説明のために、スクリプトの最初の数行にすぎません。この難読化解除手法は、OUTLAW が使用する他の難読化された Perl スクリプトにも使用できます。これらのスクリプトについては、すぐに詳しく見ていきます。

このスクリプトは、永続的なアクセスのために独自のSSH公開鍵をインストールし、制限的な権限を設定し、ディレクトリを不変にして chattrによる変更を防ぐことで終了します。

STEALTH SHELLBOTスクリプト

OUTLAWで使用されているSTEALTH SHELLBOTスクリプトは、カスタムビルドではなく、公開されているIRCボットスクリプトであり、多くの場合、古いGitHubリポジトリやアンダーグラウンドフォーラムから提供されています。これらのスクリプトは 10 年以上前から存在しており、もともとはリモート管理、自動化、ボットネット管理用に設計されていました。しかし、その後、マルウェアの作成者によって悪意のある活動に再利用されています。

SHELLBOTスクリプトはIRCベースのバックドアとして機能し、攻撃者はIRCチャネルを介して送信される事前定義されたコマンドを使用して、感染したマシンをリモートで制御できます。攻撃者のIRCサーバーに接続すると、これらのボットは次のことが可能になります。

  • 任意のシェルコマンドを実行する
  • 追加のペイロードをダウンロードして実行する
  • DDoS攻撃の開始(古い亜種)
  • 資格情報を盗む、またはシステム情報を盗み出す
  • クリプトマイナーまたはその他のマルウェアコンポーネントを管理する

OUTLAWは、これらのレガシーSHELLBOTスクリプトをセカンダリな永続化メカニズムとして統合し、ブルートフォースモジュールが中断されても、攻撃者がリモートの足場を保持できるようにします。このボットは、攻撃者が制御するIRC C2に接続し、そこでさらなるコマンドをリッスンし、悪意のあるアクションをオンデマンドで実行できるようにします。

これらのスクリプトは目新しいものではありませんが、攻撃者が新しいマルウェアをゼロから開発するのではなく、公開されているツールに依存していることを浮き彫りにしています。

c/ ディレクトリのサブルーチン実行: Customer Bruteforcer

3 番目と最後のサブルーチンの一部として、カスタム ブルートフォース ツールがデプロイされます。このチェーンは、前のサブルーチンと同様に、 init スクリプトと init2 スクリプトから開始されます。これらのスクリプトは両方とも、次の内容を含む start スクリプトを呼び出します。

このスクリプトは、現在の作業ディレクトリを格納し、現在のディレクトリ内のすべてのファイルにすべてのアクセス許可 (777) を付与し、run スクリプトを実行するための aptitude という名前のスクリプト (以前に設定した cron ジョブでも呼び出されます) を作成します。aptitudeを作成すると、実行権限が付与されて実行されます。

run スクリプトは、次に示すように、CPU アーキテクチャ情報を収集し、CPU コアをカウントして実行動作を決定するために使用されます。

システムがx86_64の場合、CPU のコア数が 7 未満かどうかを確認し、バックグラウンドで ./go を実行する前にランダムな遅延を導入します。 7 個以上のコアが検出された場合、実行はスキップまたは変更されます (以前に使用されていたバイナリ golanはコメント アウトされます)。脅威アクターは、システムに存在するコアの数を最大限に活用できるGolangバイナリをテストまたは使用していた可能性がありますが、それは単なる推測です。

ほとんどのシナリオでは、実行フローは goという bash スクリプトに移動します。

このスクリプトは、CPU アーキテクチャを決定し、それに応じてスレッド数を割り当てます。

  • ARM ベースのシステム → 75 スレッド
  • i686 (32 ビット x86) → 325 スレッド
  • その他すべて (デフォルト) → 475 スレッド

その後、無限ループに入り、次のアクションを実行します。

  1. 一時ファイル(vpipxtr*a.*b.*)を作成およびクリーンアップします。
  2. ハードコードされた値 (257.287.563.234sdaferthqhr34312asdfa) をファイル cdに書き込みます。
  3. ランダムな遅延 (1 秒から 30 秒) を待ってから、 blitzを起動します。
  4. 指定したパラメータで blitz を 3 時間実行します (-t $threads はマルチスレッド処理を推奨します)。
  5. 実行後のクリーンアップを実行し、サイクルを繰り返す前に一時ファイルとログファイルを削除します。

電撃

OUTLAWは、カスタムビルドのブルートフォースツールであるBLITZを使用したSSHブルートフォース攻撃を通じて横方向に広がる自己増殖型ワームです。BLITZは、自動化された攻撃を攻撃するために設計されたもので、脆弱なSSH認証情報またはデフォルトのSSH認証情報を持つシステムを体系的にスキャンして侵害し、攻撃者の介入を最小限に抑えながらマルウェアの足場を広げることができます。

BLITZ実行プロセス

実行後、BLITZは構造化された攻撃シーケンスに従います。

  1. IPターゲットと資格情報の取得
    • BLITZはSSH C2サーバーに接続して、ターゲットIPと資格情報のペアのリストを取得します。
  2. ブルートフォース認証とシステムプロファイリング
    • BLITZは、マルチスレッドSSHブルートフォースを使用して、盗んだ資格情報で認証を試みます。
    • アクセス権を取得すると、次のことが行われます。
      • 永続的なアクセスのためにユーザーのパスワードを変更します。
      • システム偵察コマンドを実行し、以下を収集します。
        • ユーザー権限
        • CPUの詳細
        • SSHバナー情報
        • OSのバージョン
      • 収集したデータをC2サーバーに流出させます。
  3. サブネットのスキャンと横移動
    • このマルウェアは、新たに侵害されたシステムのローカルサブネットをスキャンし、攻撃する追加のSSHアクセス可能なマシンを特定します。
  4. 自己複製とマルウェアの展開
    • BLITZは、外部のC2からダウンロードする代わりに、感染したホストから新しい被害者にdota3.tar.gzマルウェアパッケージを直接転送することで、永続性を強化し、外部インフラストラクチャへの依存を最小限に抑えます。

BLITZは、自動化されたブルートフォース攻撃、システムプロファイリング、サブネットスキャン、およびマルウェアの直接転送を組み合わせることで、感染効率を最大化しながら、ネットワークの継続的な拡大を確保します。

バイナリ解析とC2通信

ブルートフォースオペレーションを超えて、分析により、BLITZはシステムシェルコマンドと組み込みSSHライブラリと対話してタスクを実行することが明らかになりました。侵害されたシステムに接続すると、C2サーバーに更新されたターゲットを照会し、認証データを中継します。

さらに、OUTLAWにはC2認証用のハードコードされたSSHキーが組み込まれており、パスワード「pegasus」を使用してロックを解除する必要があります。認証が成功すると、Blitz は攻撃の詳細を次のように構造化された「v」ファイルに記録します。

このログには、次のものが含まれます。

  • 攻撃で使用された元のユーザー名とパスワード。
  • 被害者のIPアドレスとマルウェアによって設定された新しいパスワード。
  • SSH ポートと OS の詳細 (CPU の仕様を含む)。

BLITZがスキャンサイクルを完了すると、「v」ファイルはSSH C2サーバーに流出し、攻撃者に感染したシステムのリストが継続的に更新されます。

侵害後

攻撃者の侵害後の行動を分析するために、私たちは意図的にハニーポットを設定し、攻撃者が使用したのと同じSSH C2サーバーにその資格情報をプロアクティブにアップロードしました。これにより、攻撃者は事実上、当社の制御された環境に招き入れられ、その後の行動を綿密に監視することができました。

BLITZがブルートフォース攻撃に成功し、ハニーポットシステムに新しいパスワードを設定してから数日後、これらの資格情報を使用したリモートログインが観測されました。ログインは212.234.225[.]29.攻撃者はすぐに、wコマンドを実行してログインしているユーザーを確認し、次にpsを実行して実行中のプロセスを確認するという基本的な偵察を行いました。コマンドを入力する過程で、彼らは小さなタイプミスをし、クイックCtrl+Cでプロンプトを強制終了し、この段階では自動スクリプトではなく手動操作を示しました。次に、攻撃者は一連のコマンドを貼り付けて、 wget経由でdota3.tar.gzの新しいコピーをダウンロードし、解凍して、新しくフェッチしたスクリプトを実行しました。

この一連のアクティビティー全体は、セッション ・ビューという調査ツールで、Linux の論理イベント・モデルに従ってツリー状に整理された Linux プロセス・データを調べ、親子関係と実行時間ごとにプロセスを整理して表示することができます。ターミナルに触発された非常に読みやすい形式でイベントを表示します。これにより、Linuxインフラストラクチャ上のセッションアクティビティを監視および調査し、ユーザーとサービスの動作を理解するための強力なツールになります。

上に示した攻撃チェーンは、元の感染方法を反映しており、攻撃者がコンポーネントを更新したか、永続性を維持するためにホストを再感染させていたことを示唆しています。更新されたペイロードが実行されていることを確認した直後、攻撃者はホストから切断し、SSHブルートフォース、暗号通貨マイニング、IRCによるリモートコントロールが続く環境を残しました。

この短いログインは、洗練されていないキャンペーンでさえ、インタラクティブな攻撃者の活動(一種の手動の「品質チェック」)が含まれている可能性があることを思い出させるものであり、タイムリーな検出と迅速な封じ込めの重要性を強調しています。

MITRE ATT&CKによるOUTLAWの検出

OUTLAWは、SSHブルートフォース攻撃、暗号通貨マイニング、およびワームのような伝播に依存して、システムに感染し、制御を維持するLinuxマルウェアです。それほど洗練されているわけではありませんが、MITRE ATT&CKの技術を幅広くカバーしているため、検出エンジニアリングの効果的なケースとなっています。

このセクションでは、OUTLAWの攻撃チェーンをMITRE ATT&CKにマッピングし、Elastic SIEMとエンドポイントルール、およびさまざまな段階でそのアクティビティを特定できる脅威ハンティングクエリに焦点を当てます。

OUTLAWは、構造化された感染フローに従います。

  • 初期アクセス – 脆弱な資格情報に対するSSHブルートフォース。
  • 実行 – 悪意のあるスクリプトを実行して、マルウェア感染のいくつかの段階を開始します。
  • 永続性 – cron ジョブをインストールし、SSH キーを変更します。
  • 防御回避 – 隠しディレクトリに隠れ、ファイルのアクセス許可を変更し、パッキング手法、コマンドエンコーディングを使用し、スクリプトを難読化します。
  • 資格情報アクセス – 資格情報を変更し、公開 SSH キーを挿入します。
  • 検出 – ユーザー、システム、およびハードウェアの詳細を列挙します。
  • ラテラルムーブメント – 内部のSSHブルートフォースとマルウェアの転送を介して広がります。
  • Collection & Exfiltration – システムデータを収集し、C2に流出させます。
  • コマンド&コントロール – C2通信にsocatとSTEALTH SHELLBOTを使用します。
  • 影響 – XMRIGを起動して暗号通貨をマイニングし、感染したホストをブルートフォースノードとして活用します。

次のセクションでは、各手法の検出戦略を詳しく説明し、防御者がOUTLAWの感染を効果的に特定して軽減するのに役立ちます。

TA001: 初期アクセス

OUTLAWは、日和見的なSSHブルートフォースを通じて初期アクセスを取得し、脆弱なまたはデフォルトの資格情報を持つシステムを標的にします。Elastic の事前構築済み 検出ルール では、この初期アクセス方法を正常に検出できます。これには、次のものが含まれます。

さらに、認証ログに基づいて、疑わしいSSH認証を検出するためのいくつかのルールがあります。

検出に頼るだけでなく、脅威ハンティングをワークフローに組み込むことが重要です。Elasticセキュリティは、 ES|QLOSQuery は、 検出ルール リポジトリ、特に Linux ハンティング サブディレクトリで公開されています。たとえば、次の 2 つのハンティングは、攻撃のさまざまな段階を特定するのに役立ちます。

TA002: 実行

最初のアクセス権を取得した後、OUTLAW は一連のスクリプトとバイナリを実行して制御を確立します。ダウンロードして解凍すると、次のものが検出されます。

STEALTH SHELLBOTスクリプトは、次の方法で検出されます。

さらに、このマルウェアは複数の疑わしいシステムコマンドを実行し、以下をトリガーします。

TA003: 永続性

このcronベースの実行とSSHキー操作の組み合わせにより、OUTLAWは侵害されたシステムに対して永続的な足場を維持できます。これらの永続化手法はどちらも、当社の出版物「Linux Detection Engineering - A primer on persistence mechanisms」で広く研究されています。これらの手法は、次の SIEM ルールとエンドポイント ルールを使用して検出できます。

さらに、これらの手法は、次のES|QL および OSQuery ハント:

TA005:防御回避

OUTLAWは、検出を回避するために複数の防御回避技術を採用しています。その主な方法の 1 つは Base64 デコードで、これは次の事前構築済みルールによって検出されます。

さらに、マルウェアのバイナリにはUPXが詰め込まれているため、サイズが縮小され、従来のマルウェア検出を回避するために署名が変更されています。マルウェアがメモリ内で解凍されると、これは一般的なマルウェア検出によって検出されます。

実行チェーンをたどっていくと、マルウェアはいくつかの隠しファイルやディレクトリを作成し、次のものを使用してそれらを変更しますchattr

次のハンティング クエリを使用して、検出をさらに強化できます。

TA006: 資格情報へのアクセス

OUTLAWは、認証情報を操作することにより、侵害されたシステムへの永続的なアクセスを維持します。SSHブルートフォース認証が成功した後、マルウェアは既存のSSH authorized_keysファイルを悪意のあるSSH公開鍵を含む新しいバージョンに置き換え、それによって永続的なアクセスを許可します。これは、次のシグナルによって検出されます。

次に、マルウェアは、 passwd ユーティリティを使用して新しいパスワードを入力することにより、認証されたアカウントのユーザー資格情報を変更します。

TA007:ディスカバリー

OUTLAWは、感染が成功するとシステム情報を収集し、侵害された環境をプロファイリングします。このマルウェアは、さまざまなコマンドを実行して、システムのCPU、ユーザー権限、オペレーティングシステム、メモリ使用量、および使用可能なバイナリに関する詳細を収集します。この偵察ステップは、攻撃者がシステムの機能を評価し、侵害されたマシンを最適に活用する方法を決定するのに役立ちます。これらはすべて、 rules_building_blockディレクトリ にリストされているいくつかの ビルディングブロックルール によって検出されます。以下は、OUTLAWによって引き起こされた最も重要なものの短いリストです。

デフォルトのインターフェース設定には、ノイズ・レベルが比較的高いため、ビルディング・ブロック・ルールは含まれていません。ただし、これらのルールを有効にすると、潜在的な脅威の特定に役立ちます。

TA008: 横方向の動き

OUTLAWマルウェアは、内部SSHブルートフォース攻撃を実行することにより、侵害されたネットワークを介して拡散します。この動作は、次のES|QL ルール:

システムがブルートフォース攻撃に成功すると、マルウェアパッケージ dota3.tar.gzが感染したホストから新しいターゲットにデプロイされます。その後、ローカルサブネットで追加のターゲットがスキャンされ、マルウェアの継続的な伝播が確保されます。

Elasticの事前構築済み検出ルールでは、次の横移動の試みを特定できます。

さらに、OUTLAWマルウェアをリモートホストにコピーすると、マルウェア防止アラートが作動します。

TA009:収集 & TA010:流出

OUTLAWは、主に感染したホストを追跡し、さらなる攻撃を容易にするために、侵害されたマシンから基本的なシステム情報、資格情報、およびSSHの詳細を収集します。このデータは、C2サーバーにアップロードされる前に、単純なテキストファイルに保存されます。この収集アクティビティは、システムの詳細を収集してファイルに書き込むことに限定されているため、それ自体は疑わしいものではありません。

流出は、OUTLAWがsftp-serverを介してアウトバウンドSSH接続を開始し、収集した情報を事前定義されたC2サーバーに転送するときに発生します。これは通常のSSHアクティビティに似ているかもしれませんが、ES|QLです。

TA011:コマンド&コントロール

OUTLAWは、複数のチャネルを通じてC2インフラストラクチャとの通信を維持しているため、攻撃者はコマンドの発行、データの流出、感染したシステムの管理を行うことができます。マルウェアが使用するいくつかのユーティリティは、次のルールで検出できます。

マルウェアの初期アクセス試行の検出に関連したのと同じハンティングクエリを使用して、このC2アクティビティをハンティングすることもできます。さらに、次のハンティング クエリを使用できます。

TA040:インパクト

OUTLAWは、暗号通貨マイニングのためにCPUリソースを消費し、SSHブルートフォース攻撃を実行して伝播することにより、感染したシステムに影響を与えます。変更されたXMRIGマイニングソフトウェアを起動する前に、MSR書き込みアクセスの有効化やhugepagesなどのカーネルパラメータの設定など、いくつかのCPUとメモリの最適化が試みられます。これらの変更は、次のルールによって検出できます。

OUTLAW が modprobe を介して MSR 書き込みアクセスを有効にしようとしますが、必要なアクセス許可がないため、カーネル ドライバー関連のルールがトリガーされます。

これらのルールは、Auditd を通じて、init_module() および finit_module() システムコールを直接監視します。ドライバー イベントをキャプチャするための Auditd Manager 統合 の設定方法などの詳細については、 Linux Detection Engineering with Auditd の資料を参照してください。

同時に、感染したホストからSSHブルートフォース攻撃が開始され、次のトリガーが発生します。

OUTLAWは、その実行中にkillスクリプトを実行して、競合するマルウェアや以前の感染から残ったプロセスを終了します。この動作により、次のことがトリガーされます。

侵害の痕跡 (IOC)

インジケーターの完全なセットは、 Githubでバンドルとして見つけることができます。

ヤラシグネチャー

rule Linux_Hacktool_Outlaw_cf069e73 {
    meta:
        author = "Elastic Security"
        description = "OUTLAW SSH bruteforce component fom the Dota3 package"
        reference_sample = "c3efbd6b5e512e36123f7b24da9d83f11fffaf3023d5677d37731ebaa959dd27"
      
    strings:
        $ssh_key_1 = "MIIJrTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQI8vKBZRGKsHoCAggA"
        $ssh_key_2 = "MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBBC3juWsJ7DsDd2wH2XI+vUBIIJ"
        $ssh_key_3 = "UCQ2viiVV8pk3QSUOiwionAoe4j4cBP3Ly4TQmpbLge9zRfYEUVe4LmlytlidI7H"
        $ssh_key_4 = "O+bWbjqkvRXT9g/SELQofRrjw/W2ZqXuWUjhuI9Ruq0qYKxCgG2DR3AcqlmOv54g"
        $path_1 = "/home/eax/up"
        $path_2 = "/var/tmp/dota"
        $path_3 = "/dev/shm/ip"
        $path_4 = "/dev/shm/p"
        $path_5 = "/var/tmp/.systemcache"
        $cmd_1 = "cat /proc/cpuinfo | grep name | head -n 1 | awk '{print $4,$5,$6,$7,$8,$9;}'"
        $cmd_2 = "cd ~; chattr -ia .ssh; lockr -ia .ssh"
        $cmd_3 = "sort -R b | awk '{ if ( NF == 2 ) print } '> p || cat b | awk '{ if ( NF == 2 ) print } '> p; sort -R a"
        $cmd_4 = "rm -rf /var/tmp/dota*"
        $cmd_5 = "rm -rf a b c d p ip ab.tar.gz"
    condition:
        (all of ($ssh_key*)) or (3 of ($path*) and 3 of ($cmd*))
}

SIEM とエンドポイント ルールの概要 (MITRE ATT&CK TACTIC)

テクニック ID説明
TA001: 初期アクセス潜在的な内部Linux SSHブルートフォース攻撃の検出
潜在的なSSHブルートフォース攻撃の成功
通常とは異なる SSH 公開鍵からの成功した SSH 認証
通常とは異なるユーザーからの成功した SSH 認証
通常とは異なる IP アドレスからの成功した SSH 認証
TA002: 実行File Downloaded from Suspicious Source by Web Server
Linux.トロイの木馬.ポルノアセット
通常とは異なる親プロセスを通じて実行されたスクリプト
これまで知られていなかった実行ファイルによって実行された不審なシステムコマンド
TA003: 永続性Cron Job Created or Modified
SSH 認証キー ファイルの変更
ファイル変更による潜在的な永続性
TA005:防御回避Base64 デコードされたペイロードをインタープリターにパイプ
異常な Base64 エンコード/デコード アクティビティ
TA006: 資格情報へのアクセスSSH 認証キー ファイルの変更
SSH 認証キー ファイルの削除
Linux ユーザ アカウント資格情報の変更
TA007:ディスカバリーLinuxシステム情報の検出
TA008: 横方向の動き侵害されたホストからの潜在的なポート スキャン アクティビティ
TA009 & TA010: 収集と流出通常とは異なるファイル転送ユーティリティの起動
TA011:コマンド&コントロールSocat リバースシェルまたはリスナーアクティビティ
TA040:インパクトカーネル機能の疑わしいアクティビティ

まとめ

OUTLAWは、洗練されていないマルウェアでも、現代の環境で効果的に持続し、拡張できることを例示しています。高度な回避技術が不足しているにもかかわらず、SSHブルートフォース攻撃、自己複製、およびモジュラーコンポーネントの組み合わせにより、長時間実行されるボットネットを維持することができます。OUTLAWは、侵害されたホストを活用して感染をさらに伝播させることにより、攻撃者の介入を最小限に抑えながら継続的な拡張を保証します。

私たちのハニーポット実験では、攻撃者の現実世界での行動を垣間見ることはめったになく、OUTLAWの操作の多くが自動化されている一方で、人間が直接介入する瞬間があることが確認されました。手動コマンド、偵察の試み、さらには単純な誤字脱字までも観察できる能力は、ボットネットのメンテナンスで見落とされがちな側面、つまりオペレーター主導の品質管理を浮き彫りにしています。これらのインサイトは、自動化された攻撃だけでなく、侵害後の手動のアクティビティも考慮した検出戦略の必要性を強めています。

OUTLAWがどのように運用、拡散、収益化しているかを理解することで、防御者はその影響を軽減するための堅牢な検出戦略を開発できます。このレポートは、実用的なSIEMルール、脅威ハンティングクエリ、フォレンジックインサイトを提供し、セキュリティチームが同様の進化する脅威に先手を打つことを可能にします。

参照資料

[1] CounterCraft、 DOTA3マルウェアを何度も何度も

[2] ジュニパーネットワークス、 DOTA3:モノのインターネットデバイスは月光を浴びていますか?

[3] SANS ISC、衛生衛生衛生

[4] Darktrace、 Outlaw Returns:復活した機能と新しい戦術の発見

この記事を共有する