PyRATコード: PythonベースのRATの内部
Detection stack
- AIDR
- Alert
- ETL
- Query
概要
この記事は、PyInstallerでELFバイナリとしてパッケージ化されたPythonベースのリモートアクセス型トロイの木馬(RAT)であるPyRATを紹介しています。PyRATはLinuxとWindowsの両方で動作し、暗号化されていないHTTP経由でC2サーバーと通信し、コマンド実行、ファイル搾取、スクリーンショットキャプチャ、自爆ルーチンをサポートします。持続性はLinuxではXDGオートスタート、Windowsではレジストリの「Run」キーを使用して実装されます。レポートでは、このツールが非常に軽量で、サイバー犯罪者によって簡単に再利用できる方法が強調されています。
調査
研究者たちは、pyinstxtractorで埋め込みPythonバイトコードを抽出し、モジュールを逆コンパイルして、ホストのフィンガープリンティング、UIDの生成、スレッド管理、C2コーディネーションを行う主要なAgentクラスを特定しました。静的解析では、重要なインポート、ファイル名、レジストリの操作、ビーコンニングに使用されるHTTP POSTエンドポイントが浮かび上がりました。動作テストでは、持続性の作成、コマンド実行、ファイル列挙、アップロード/ダウンロード操作、ZIPアーカイブの作成、スクリーンショットのキャプチャ、オプションとしてのアーティファクトのクリーンアップが示されました。
緩和策
ユーザーのプロファイルに作成された疑わしい.autostart .desktopファイルや、HKCURunレジストリキーへの見慣れない実行可能な名前の追加を監視してください。ネットワーク層では、未知のホストを対象とした/api/{uid}/helloエンドポイントへのHTTP POST送信を監視してください。エンドポイントでは、Pythonコンテンツを埋め込んだ未知のELFバイナリや頻繁なサブプロセス実行などの異常なプロセス動作をフラグします。
対応策
検出された場合は、システムを隔離し、ELFサンプルと関連する.desktopファイルを収集し、関連するレジストリの状態を保存してください。フォレンジクスの一環として、UID、C2アドレス、および実行中に転送されたファイルを抽出します。特定されたC2インフラをブロックし、持続性を除去し、完全なクリーンアップを完了します。露出している可能性のあるアカウントの資格情報をローテーションします。
アタックフロー
検知
潜在的なマルウェアの自己削除またはStderr隠蔽操作(cmdline経由)
表示
LinuxのTmpフォルダ内にアーカイブが作成されました(file_event経由)
表示
可能性のある持続性ポイント [ASEPs – ソフトウェア/NTUSERハイブ](cmdline経由)
表示
可能性のあるレジストリキーの削除試行(process_creation経由)
表示
Linux XDGオートスタート ファイルの変更試行の可能性(cmdline経由)
表示
バイナリ/スクリプト/フォルダに危険な権限が設定されました(cmdline経由)
表示
検出するためのIOC (HashMd5): PyRATコード: PythonベースのRATとその内部
表示
Windowsの現在のユーザーのRunキーを使用した持続性 [Windowsレジストリエベント]
表示
LinuxでのPyRAT持続性の検出 [Linuxプロセス作成]
表示
シミュレーション実行
事前条件: テレメトリーとベースライン事前チェックをパスする必要があります。
合理性: このセクションは、検知ルールをトリガーするように設計された対敵技術(TTP)の正確な実行を詳細に述べています。 コマンドや物語はTTPに直接反映され、検出ロジックによって期待される正確なテレメトリーを生成することを目指します。
-
攻撃の物語とコマンド:
攻撃者は、一般ユーザーのSSH資格情報を取得しました。ログイン後、 Living-off-the-land スクリプトを実行し、そのスクリプトは:
- 悪意のあるELFペイロードを書き込み、 (
agent-svc.pycをユーザーのホームディレクトリに保存し、Pythonバイトコードファイルとして偽装しながら、実際にはELFバイナリです。 - Debianパッケージツールを偽装してコピーし named
dpkgnを/usr/local/binにコピーし、実行権限を与えます。このツールは単にELFペイロードを起動する薄いラッパーです。オートスタートのデスクトップエントリをインストールし - を~/.config/autostartに (
を~/.config/autostartに設定し、ペイロードをグラフィカルセッションの開始時に実行します。適切な権限を設定してすぐに疑われないようにします。 - 結合されたファイルイベント( )がルールの最初の条件を満たし、
.desktop
agent-svc.pycanddpkgnファイルが2番目の条件を満たします。.desktopfile satisfies the second condition. - 悪意のあるELFペイロードを書き込み、 (
-
回帰テストスクリプト:
#!/usr/bin/env bash set -euo pipefail # 1. 偽装されたELFを.pcyとしてデプロイ MALWARE_PATH="$HOME/agent-svc.pyc" echo "偽装されたELFペイロード(ダミーバイナリ)を作成中..." dd if=/dev/zero bs=1 count=1024 of="$MALWARE_PATH" status=none chmod +x "$MALWARE_PATH" # 2. dpkgnという名前の偽のDebianツールをデプロイ FAKE_TOOL="/usr/local/bin/dpkgn" echo "#!/usr/bin/env bash" | sudo tee "$FAKE_TOOL" > /dev/null echo "exec "$MALWARE_PATH" "$@"" | sudo tee -a "$FAKE_TOOL" > /dev/null sudo chmod +x "$FAKE_TOOL" # 3. オートスタートのデスクトップエントリを作成 AUTOSTART_DIR="$HOME/.config/autostart" mkdir -p "$AUTOSTART_DIR" DESKTOP_FILE="$AUTOSTART_DIR/dpkgn.desktop" cat > "$DESKTOP_FILE" <<EOF [Desktop Entry] Type=Application Exec=$FAKE_TOOL Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name=Package Manager Comment=System Update Service EOF echo "PyRAT持続性アーティファクトがデプロイされました。" -
クリーンアップコマンド:
#!/usr/bin/env bash set -euo pipefail # 悪意のあるELFを削除 rm -f "$HOME/agent-svc.pyc" # 偽のツールを削除 sudo rm -f /usr/local/bin/dpkgn # オートスタートエントリを削除 rm -f "$HOME/.config/autostart/dpkgn.desktop" echo "クリーンアップ完了。"