当サイトの一部ページには、アフィリエイト・アドセンス・アソシエイト・プロモーション広告を掲載しています。

Amazonのアソシエイトとして、Security Akademeiaは適格販売により収入を得ています。

広告配信等の詳細については、プライバシーポリシーページに掲載しています。

消費者庁が、2023年10月1日から施行する景品表示法の規制対象(通称:ステマ規制)にならないよう、配慮して記事を作成しています。もし問題の表現がありましたら、問い合わせページよりご連絡ください。

参考:令和5年10月1日からステルスマーケティングは景品表示法違反となります。 | 消費者庁

ParrotOSでMetasploitのstdapi拡張をロードできない【ハッキング・ラボ編】

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は開発の活発なプロジェクトであり、開発ブランチでは不安定な変更が取り込まれることがあります。

今後のアップデートで本件の不具合が修正される可能性はありますが、再現性の高い実験や教育用途で使用する場合には、安定版を用いることが強く推奨されます。