ParrotOSでMetasploitのstdapi拡張をロードできない【ハッキング・ラボ編】
目次
はじめに
いつもブログをご覧いただきありがとうございます。
ミジンコに転生したIPUSIRONです😀
2025年8月時点において、ParrotOS上でMetasploit Framework(開発版 v6.4.71-dev)を使用した際、Meterpreterセッション確立後にstdapi拡張が正常にロードできないという問題が発生するという問い合わせがきました。
背景
ParrotOSはセキュリティ検証向けのLinuxディストリビューションの1つであり、Metasploit Frameworkを標準で利用可能です。『ハッキング・ラボのつくりかた 完全版』ではParrotOSをメインに解説しています。
しかし、ある検証環境において、以下のような症状が発生したという報告を受けました。
- Meterpreterセッションが確立しても、プロンプトが (unknown) のまま。
- ls、pwd、sysinfoなどの基本的なstdapi系コマンドがエラーとなる。
- 明示的にload stdapiを実行しても、拡張がロードされない。
環境情報
- 攻撃側OS:Parrot OS 6.4
- Metasploit:v6.4.71-dev(aptで導入された開発版)
- ペイロード:"linux/x86/meterpreter_reverse_tcp"と"linux/x64/meterpreter_reverse_tcp"
- ターゲット端末:Parrot OS 6.4(別仮想マシン)
- uname -mコマンドの実行結果は「x86_64」
症状の詳細
攻撃側でexploitコマンドを実行し、Meterpreterセッションが確立された直後に、以下ラーメッセージが表示されます。

Meterpreterセッションでlsコマンドやload stdapiコマンドを実行した様子は以下の通りです。

[*] Meterpreter session 1 opened ...
(Meterpreter 1)(unknown) > ls
[-] The "ls" command requires the "stdapi" extension to be loaded
(Meterpreter 1)(unknown) > load stdapi
[-] Failed to load extension: uninitialized constant Rex::Post::Meterpreter::Extensions::Stdapi::Stdapi
また、sysinfoコマンド実行時に、Metasploitのログ(攻撃端末側の"~/.msf4/logs/framework.log"ファイル)には以下のようなエラーが出力されていました。

Error loading sysinfo - NoMethodError undefined method `config' for nil:NilClass
調査結果
ステップ1:セッションそのものは確立されている
・unknownのMeterpreterセッションが確立する。

・lsof -iコマンドやnetstatコマンドにより、TCPレベルでの接続は正常に成立している。

ステップ2:OSおよび実行環境に問題はない
・uname -m → x86_64(64bitアーキテクチャ)
・/proc/self/status → Seccomp: 0(syscall制限なし)

・aa-status → AppArmorは有効だが拒否ログなし
・dmesg | grep DENIED → 関連する制限ログなし
ステップ3:stdapi拡張のロード失敗はRubyコードの例外
・load stdapiコマンドを実行すると、「Rex::Post::Meterpreter::Extensions::Stdapi::Stdapi」が初期化できていないというエラーが発生する。

・configメソッド呼び出し時にnil参照が発生。
以上より、Metasploit Framework本体のコード上の不整合であると判断できます。
原因の特定
Metasploit Framework v6.4.71-dev は、stdapi拡張の初期化にバグを抱えている可能性が高いと判断しました。
“meterpreter.rb"や"stdapi.rb"の初期化処理に問題があり、セッション中のオブジェクトがnilとなっていることで、結果的にstdapi拡張がロードできず、関連コマンドがすべて失敗していたと推察されます。
暫定的な解決策
いずれ解決するはずですが、今すぐMetasploitを使いた場合は、暫定的な解決策を検討してください。
案① Kali Linuxの安定版Metasploitを使用する <簡単>
Kali Linuxでは、標準で提供されているMetasploit Frameworkがv6.3.x系の安定版であり、今回のようなstdapiの不具合は発生しません。
実際に同一のペイロードを用いてDC-1攻略やリバースシェルの検証を行ったところ、すべて正常に動作したという報告を受けました。
案② Docker版のMetasploitを使用する <Dockerを使える人向け>
ParrotOS上にMetasploitをインストールせず、Docker上で公式イメージを使用することで安定版のMSFを利用可能です。
docker pull metasploitframework/metasploit-framework
docker run -it --rm metasploitframework/metasploit-framework
必要に応じてポート公開やVolumeマウントも行えます。
推奨される構成
今後、ParrotOS+Metasploitで同様の問題が発生した場合、安定したMetasploitを使用したい場合は、以下のいずれかの構成を推奨します。
方法 | 利点 | 備考 |
---|---|---|
Kali LinuxでMetasploitを使用 | 標準で安定版が導入済み | 最も簡単かつ確実 |
Docker上でMetasploitを実行 | ParrotOSを汚さず安全 | 開発・教育用途に最適 |
Metasploitをソースから特定バージョンで導入 | バージョンを完全固定できる | 中〜上級者向け |
今後について
Metasploitは開発の活発なプロジェクトであり、開発ブランチでは不安定な変更が取り込まれることがあります。
今後のアップデートで本件の不具合が修正される可能性はありますが、再現性の高い実験や教育用途で使用する場合には、安定版を用いることが強く推奨されます。