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インフラをブロックし、持続性を除去し、完全なクリーンアップを完了します。露出している可能性のあるアカウントの資格情報をローテーションします。
graph TB %% Class Definitions classDef malware fill:#ff9999 classDef technique fill:#99ccff classDef action fill:#ccffcc classDef persistence fill:#ffcc99 classDef cleanup fill:#dddddd %% Node Definitions malware_pyrat[“<b>マルウェア</b> – <b>名称</b>: PyRAT ELF<br/><b>説明</b>: ELFバイナリとして実行されるLinux/Windows RAT”] class malware_pyrat malware tech_system_info[“<b>技術</b> – <b>T1082 システム情報の探索</b><br/>OSバージョン、ホスト名、ハードウェア情報を収集”] class tech_system_info technique tech_user_discovery[“<b>技術</b> – <b>T1033 システム所有者/ユーザー探索</b><br/>ログイン中のユーザーおよびアカウント情報を列挙”] class tech_user_discovery technique action_establish_c2[“<b>アクション</b> – 非暗号化HTTP POSTによるC2確立”] class action_establish_c2 action tech_web_service[“<b>技術</b> – <b>T1102.003 Webサービス: 一方向通信</b><br/>HTTP POSTを使用してリモートサーバーへデータ送信”] class tech_web_service technique tech_exfil_unenc[“<b>技術</b> – <b>T1048.003 非暗号化・非C2プロトコルによる持ち出し</b><br/>暗号化せずにデータを転送”] class tech_exfil_unenc technique tech_data_encoding[“<b>技術</b> – <b>T1132.002 データエンコード: 非標準エンコード</b><br/>送信前に独自のエンコードを適用”] class tech_data_encoding technique action_execute_cmd[“<b>アクション</b> – コマンド実行”] class action_execute_cmd action tech_windows_shell[“<b>技術</b> – <b>T1059.003 Windowsコマンドシェル</b><br/>cmd.exeを介してコマンドを実行”] class tech_windows_shell technique tech_unix_shell[“<b>技術</b> – <b>T1059.004 Unixシェル</b><br/>/bin/shを介してコマンドを実行”] class tech_unix_shell technique action_collect_files[“<b>アクション</b> – ファイル収集およびファイルシステム列挙”] class action_collect_files action tech_archive[“<b>技術</b> – <b>T1560.002 収集データのアーカイブ: ライブラリ使用</b><br/>ZIPライブラリを使用して圧縮”] class tech_archive technique tech_screenshot[“<b>技術</b> – <b>T1113 画面キャプチャ</b><br/>デスクトップ画像を取得”] class tech_screenshot technique tech_persist_linux[“<b>技術</b> – <b>T1547.013 XDG自動起動</b><br/>ユーザーの自動起動ディレクトリに.desktopを追加”] class tech_persist_linux persistence tech_persist_windows[“<b>技術</b> – <b>T1547.014 レジストリRunキー / スタートアップフォルダ</b><br/>HKCU\\Runに永続化エントリを作成”] class tech_persist_windows persistence tech_cleanup[“<b>技術</b> – <b>T1070.009 指標削除: 永続性のクリア</b><br/>永続化アーティファクトとログを削除”] class tech_cleanup cleanup %% Connections malware_pyrat –>|につながる| tech_system_info malware_pyrat –>|につながる| tech_user_discovery tech_system_info –>|情報を提供| action_establish_c2 tech_user_discovery –>|情報を提供| action_establish_c2 action_establish_c2 –>|使用| tech_web_service action_establish_c2 –>|使用| tech_exfil_unenc action_establish_c2 –>|使用| tech_data_encoding action_establish_c2 –>|有効化| action_execute_cmd action_execute_cmd –>|使用| tech_windows_shell action_execute_cmd –>|使用| tech_unix_shell action_execute_cmd –>|につながる| action_collect_files action_collect_files –>|につながる| tech_archive tech_archive –>|につながる| tech_screenshot tech_screenshot –>|有効化| tech_persist_linux tech_screenshot –>|有効化| tech_persist_windows tech_persist_linux –>|後ににつながる| tech_cleanup tech_persist_windows –>|後ににつながる| tech_cleanup
アタックフロー
検知
潜在的なマルウェアの自己削除または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 "クリーンアップ完了。"