Network 101 について
Network 101は、ペネトレーションテスト用ラボでHTTP、HTTPS、SNMP、SMBを設定・テストするためのスキルです。サービスの列挙やログ分析も扱い、隔離された環境での練習を想定しています。
主な機能
- 01HTTP・HTTPSサービスの設定
- 02SNMP・SMBサービスの構築
- 03サービスと共有の列挙
- 04サービスログの確認
- 05ポートと接続の検証
活用シーン
- 01Webサービスのテスト環境構築
- 02SNMP列挙の練習
- 03SMB共有権限の確認
- 04HTTPアクセスログの分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill network-101インストール後、Claude Code で/network-101を入力して読み込まれたか確認します。
詳細
Network 101
目的
ペネトレーションテストのラボ環境向けに、一般的なネットワークサービス(HTTP、HTTPS、SNMP、SMB)を設定およびテストします。適切に設定されたターゲットシステムに対して、サービスの列挙、ログ分析、セキュリティテストを実践できるようにします。
入力/前提条件
- サービスをホストするWindows ServerまたはLinuxシステム
- テスト用のKali Linuxまたは同等のシステム
- ターゲットシステムへの管理者アクセス
- 基本的なネットワークの知識(IPアドレス、ポート)
- ポート設定のためのファイアウォールへのアクセス
出力/成果物
- 設定済みのHTTP/HTTPSウェブサーバー
- アクセス可能なコミュニティを持つSNMPサービス
- 様々なパーミッションレベルのSMBファイル共有
- 分析用に取得したログ
- 文書化された列挙結果
基本ワークフロー
1. HTTPサーバーの設定(ポート80)
テスト用の基本的なHTTPウェブサーバーを設定します。
Windows IISのセットアップ:
- IISマネージャー(Internet Information Services)を開きます
- サイトを右クリックし、Webサイトの追加を選択します
- サイト名と物理パスを設定します
- IPアドレスとポート80にバインドします
Linux Apacheのセットアップ:
# Install Apache
sudo apt update && sudo apt install apache2
# Start service
sudo systemctl start apache2
sudo systemctl enable apache2
# Create test page
echo "<html><body><h1>Test Page</h1></body></html>" | sudo tee /var/www/html/index.html
# Verify service
curl http://localhost
HTTP用のファイアウォール設定:
# Linux (UFW)
sudo ufw allow 80/tcp
# Windows PowerShell
New-NetFirewallRule -DisplayName "HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
2. HTTPSサーバーの設定(ポート443)
SSL/TLSによる安全なHTTPSを設定します。
自己署名証明書の生成:
# Linux - Generate certificate
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/apache-selfsigned.key \
-out /etc/ssl/certs/apache-selfsigned.crt
# Enable SSL module
sudo a2enmod ssl
sudo systemctl restart apache2
ApacheでのHTTPS設定:
# Edit SSL virtual host
sudo nano /etc/apache2/sites-available/default-ssl.conf
# Enable site
sudo a2ensite default-ssl
sudo systemctl reload apache2
HTTPSセットアップの確認:
# Check port 443 is open
nmap -p 443 192.168.1.1
# Test SSL connection
openssl s_client -connect 192.168.1.1:443
# Check certificate
curl -kv https://192.168.1.1
3. SNMPサービスの設定(ポート161)
列挙の練習用にSNMPを設定します。
Linux SNMPのセットアップ:
# Install SNMP daemon
sudo apt install snmpd snmp
# Configure community strings
sudo nano /etc/snmp/snmpd.conf
# Add these lines:
# rocommunity public
# rwcommunity private
# Restart service
sudo systemctl restart snmpd
Windows SNMPのセットアップ:
- サーバーマネージャーを開き、機能の追加を選択します
- SNMPサービスを選択します
- サービス → SNMPサービス → プロパティでコミュニティ文字列を設定します
SNMP列挙コマンド:
# Basic SNMP walk
snmpwalk -c public -v1 192.168.1.1
# Enumerate system info
snmpwalk -c public -v1 192.168.1.1 1.3.6.1.2.1.1
# Get running processes
snmpwalk -c public -v1 192.168.1.1 1.3.6.1.2.1.25.4.2.1.2
# SNMP check tool
snmp-check 192.168.1.1 -c public
# Brute force community strings
onesixtyone -c /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt 192.168.1.1
4. SMBサービスの設定(ポート445)
列挙用にSMBファイル共有を設定します。
Windows SMB共有:
- 共有するフォルダーを作成します
- フォルダーを右クリックし、プロパティ → 共有 → 詳細な共有を選択します
- 共有を有効にし、アクセス許可を設定します
- NTFSのアクセス許可を設定します
Linux Sambaのセットアップ:
# Install Samba
sudo apt install samba
# Create share directory
sudo mkdir -p /srv/samba/share
sudo chmod 777 /srv/samba/share
# Configure Samba
sudo nano /etc/samba/smb.conf
# Add share:
# [public]
# path = /srv/samba/share
# browsable = yes
# guest ok = yes
# read only = no
# Restart service
sudo systemctl restart smbd
SMB列挙コマンド:
# List shares anonymously
smbclient -L //192.168.1.1 -N
# Connect to share
smbclient //192.168.1.1/share -N
# Enumerate with smbmap
smbmap -H 192.168.1.1
# Full enumeration
enum4linux -a 192.168.1.1
# Check for vulnerabilities
nmap --script smb-vuln* 192.168.1.1
5. サービスログの分析
セキュリティ分析のためにログを確認します。
HTTP/HTTPSログ:
# Apache access log
sudo tail -f /var/log/apache2/access.log
# Apache error log
sudo tail -f /var/log/apache2/error.log
# Windows IIS logs
# Location: C:\inetpub\logs\LogFiles\W3SVC1\
ログから認証情報を抽出:
# Search for POST requests
grep "POST" /var/log/apache2/access.log
# Extract user agents
awk '{print $12}' /var/log/apache2/access.log | sort | uniq -c
クイックリファレンス
主要ポート
| サービス | ポート | プロトコル |
|---|---|---|
| HTTP | 80 | TCP |
| HTTPS | 443 | TCP |
| SNMP | 161 | UDP |
| SMB | 445 | TCP |
| NetBIOS | 137-139 | TCP/UDP |
サービス確認コマンド
# Check HTTP
curl -I http://target
# Check HTTPS
curl -kI https://target
# Check SNMP
snmpwalk -c public -v1 target
# Check SMB
smbclient -L //target -N
一般的な列挙ツール
| ツール | 用途 |
|---|---|
| nmap | ポートスキャンとスクリプト |
| nikto | ウェブの脆弱性スキャン |
| snmpwalk | SNMP列挙 |
| enum4linux | SMB/NetBIOS列挙 |
| smbclient | SMB接続 |
| gobuster | ディレクトリのブルートフォース |
制約事項
- 自己署名証明書はブラウザの警告を引き起こします
- SNMP v1/v2cのコミュニティは平文で送信されます
- 匿名SMBアクセスは既定で無効になっていることが多いです
- ファイアウォールのルールで受信接続を許可する必要があります
- ラボ環境は本番環境から分離する必要があります
例
例1: HTTPラボの完全なセットアップ
# Install and configure
sudo apt install apache2
sudo systemctl start apache2
# Create login page
cat << 'EOF' | sudo tee /var/www/html/login.html
<html>
<body>
<form method="POST" action="login.php">
Username: <input type="text" name="user"><br>
Password: <input type="password" name="pass"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
EOF
# Allow through firewall
sudo ufw allow 80/tcp
例2: SNMPテストのセットアップ
# Quick SNMP configuration
sudo apt install snmpd
echo "rocommunity public" | sudo tee -a /etc/snmp/snmpd.conf
sudo systemctl restart snmpd
# Test enumeration
snmpwalk -c public -v1 localhost
例3: SMB匿名アクセス
# Configure anonymous share
sudo apt install samba
sudo mkdir /srv/samba/anonymous
sudo chmod 777 /srv/samba/anonymous
# Test access
smbclient //localhost/anonymous -N
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| ポートにアクセスできない | ファイアウォールのルールを確認します(ufw、iptables、Windowsファイアウォール) |
| サービスが起動しない | journalctl -u service-name でログを確認します |
| SNMPのタイムアウト | UDP 161が開いていることを確認し、コミュニティ文字列を確認します |
| SMBアクセスが拒否される | 共有のアクセス許可とユーザーの認証情報を確認します |
| HTTPS証明書のエラー | 自己署名証明書を受け入れるか、信頼されたストアに追加します |
| リモートから接続できない | サービスを localhost ではなく 0.0.0.0 にバインドします |
コメント
Markdown 対応