
このリポジトリには、悪名高いStuxnetワームの厳密に教育目的・研究目的の再構築コードが含まれています。これは、2010年に発見されたオリジナルのバイナリサンプルに対して、世界中のセキュリティ研究コミュニティが実施した数え切れないほどのリバースエンジニアリング作業の成果です。
免責事項: このコードは、学術研究、マルウェア解析トレーニング、および防御研究のためにのみ提供されています。悪意のある目的での使用を意図したものではなく、展開可能なマルウェアでもありません。著者および貢献者は、違法または非倫理的な活動を容認しません。
目次
概要
主要コンポーネント
技術アーキテクチャ
ビルド手順
使用方法
法的情報とライセンス
謝辞
Stuxnetは、産業用制御システム(ICS)に物理的破壊をもたらすように設計された、最初の既知のサイバー兵器として広く認識されています。これは特にSiemens Step 7ソフトウェアとS7-300/400 PLCを標的とし、最終的に周波数変換器ドライブを操作して遠心分離機のローターを破壊しました。
このリポジトリは、逆コンパイルされたバイナリから派生した再構築ソースコードです。元のロジックと攻撃ベクトルを保持しながら、読みやすさと解析のためにコードベースを構造化しています。
主な特徴
標的: Siemens SIMATIC WinCC、Step 7、およびS7 PLC。
伝播: USBドライブ(LNKエクスプロイト)、ネットワーク共有(Print Spooler)、ピアツーピア(P2P)。
ペイロード: モーター周波数を変更するためのPLCブロックロジック(OB1/OB35)の改変。
ステルス性: ファイル、プロセス、レジストリを隠蔽する高度なルートキット機能(MRxCls.sys、MRxNet.sys)。
このリポジトリは、オリジナルのマルウェア解析中に特定された主要モジュールごとに整理されています。
モジュール: ローダー/ドロッパー ファイル名: winsta.exe、~WTR4141.tmp 説明: 初期感染、権限昇格、および他のコンポーネントの展開を担当するエントリポイント。
モジュール: 権限昇格 ファイル名: ~WTR4132.tmp 説明: Win32k.sysの脆弱性を悪用してシステムレベルの権限を取得します。
モジュール: S7フックライブラリ ファイル名: s7otbxdx.dll 説明: オリジナルのs7otbxsx.dllの悪意のある置き換え。Step 7とPLC間の通信を傍受します。
モジュール: Step7フックライブラリ ファイル名: s7aaapix.dll 説明: Step 7エンジニアリング環境内のAUT(Automation Tool)API呼び出しを傍受します。
モジュール: ルートキット(ファイルシステム) ファイル名: mrxcls.sys 説明: SSDTフッキングを介してStuxnetファイル、プロセス、レジストリキーを隠蔽するために使用されるカーネルモードドライバ。
モジュール: ルートキット(ネットワーク) ファイル名: mrxnet.sys 説明: 悪意のあるファイルを隠蔽するためにファイルシステム要求をフィルタリングし、P2P伝播を可能にします。
モジュール: ペイロード(攻撃) ファイル名: s7plcmain 説明: 遠心分離機を破壊する「周波数改ざん」攻撃を担当する中核ロジック。
以下は、Stuxnetフレームワークの高レベルの実行フローを示しています。
ステージ 1: 初期感染ベクトル(USB/ネットワーク) ステージ 2: ドロッパーと権限昇格 ステージ 3: 環境チェック ステージ 4a: 標的発見(Siemensソフトウェア)-> S7フックのインストール ステージ 4b: 非標的 -> 自己破壊/アイドル状態 ステージ 5: PLC書き込みの監視 ステージ 6: OB1/OB35書き込みの検出 -> ペイロードの注入 ステージ 7: 周波数出力の変更 ステージ 8: 遠心分離機への物理的損傷 ステージ 9: ルートキットのインストール(MRxCls) ステージ 10: ファイルとレジストリの隠蔽 ステージ 11: ネットワークモジュールのロード(MRxNet) ステージ 12: P2P伝播
実行フロー
環境偵察: ワームは特定のSiemensソフトウェア(WinCC、Step 7)と特定の標的PLC(S7-315、S7-417)の存在をチェックします。
DLLインジェクション: s7blk_write関数呼び出しを傍受します。
コードインジェクション: ユーザーがプロジェクトをPLCにダウンロードすると、悪意のあるコードがOB1/OB35ブロックに追加されます。
物理的影響: PLCが操作されたコードを実行し、接続された可変周波数ドライブ(VFD)が異常な周波数(高/低)で回転し、機械的損傷が発生します。
ビルド手順
重要: このコードベースは、管理された仮想環境での静的解析とデバッグ用に設計されています。重要なインフラストラクチャへのライブ展開を意図したものではありません。
要件
ビルド環境: Microsoft Visual Studio 2019/2022(Windows)またはmingw-w64。
対象OS: Windows XP / Windows 7(ドライバ互換性のため)。
ドライバキット: Windows Driver Kit(WDK)7600(カーネルドライバをコンパイルする場合)。
ユーザーモードモジュールのビルド
リポジトリのクローン
git clone https://github.com/Sadpainy/Stuxnet.git cd stuxnet-analysis
メインのドロッパーをビルド
cd winsta nmake /f Makefile.win
S7フックライブラリをビルド
cd ../s7otbxdx cl /LD s7otbxdx.c user32.lib ws2_32.lib
このコードは以下を目的としています:
マルウェア解析: 高度な持続的脅威(APT)で使用される特定のコードロジックの理解。
防御研究: ICSセキュリティツール用の検出シグネチャの開発(例: YARAルール、Snortシグネチャ)。
学術研究: サイバーセキュリティと重要インフラ保護の交差点の調査。
解析セットアップ
環境の隔離: Host-Onlyネットワーキングを有効にした仮想マシン(VMWare/VirtualBox)を使用します。インターネット接続を無効にします。
モジュールのロード: IDA Pro、Ghidra、またはx64dbgなどのツールを使用して.dllおよび.sysファイルを解析します。
アクティビティの監視: Process Monitor(ProcMon)、Process Hacker、Wiresharkを使用して動作を観察します。
法的情報とライセンス
このプロジェクトはGNU General Public License v3.0の下でライセンスされています。詳細についてはLICENSEファイルを参照してください。
このリポジトリ内のコードは、教育目的のみのリバースエンジニアリングの成果物です。Stuxnetワームの元の作者は匿名ですが、ここに含まれる再構築は独立したセキュリティ研究者の作業です。
著者はオリジナルのマルウェアの所有権を主張しません。
このコードは、いかなる種類の保証もなく「現状のまま」提供されます。
著者は、このコードによって引き起こされた誤用または損害について責任を負いません。
このリポジトリを使用することにより、適用されるすべての法律および規制への準拠を確保する責任が単独で自分にあることを承認したことになります。
この研究と再構築は、世界中のサイバーセキュリティベンダーによる広範な解析と脅威インテリジェンスなしには実現できませんでした。
Symantec(W32.Stuxnet資料)
Kaspersky Lab(Stuxnetの経緯)
ESET(顕微鏡下のStuxnet)
Amr Thabet氏とChristian Roggia氏(research-virus/stuxnet)
これは学術的な再構築です。害を引き起こすためではなく、より強固な防御を構築するために使用してください。