Apache HTTPサーバーログを分析し、Webスキャン活動、ディレクトリ列挙、パストラバーサル試行を検出することに焦点を当てたBlue Teamラボ。
隔離されたラボ環境でApache Webサーバーをインストールして公開し、業界標準ツールを使用して自動Webスキャンをシミュレートし、Blue Teamの視点から生成されたログを分析し、攻撃パターン、ツールシグネチャ、悪意のある偵察活動の兆候を特定します。
| コンポーネント | 詳細 |
|---|---|
| 攻撃者VM | Kali Linux |
| ターゲットVM | Debian 13 |
| ネットワーク | NAT Network (VirtualBox) |
| 攻撃者IP | 10.0.2.5 |
| ターゲットIP | 10.0.2.15 |
| Webサーバー | Apache 2.4.67 |
| ログソース | /var/log/apache2/access.log, /var/log/apache2/error.log |
| HTTPポート | 80 |
ターゲットマシン上でApache HTTPサーバーがアクティブで実行中であることを確認しました。```bash sudo systemctl status apache2 --no-pager
結果: `active (running)` since Wed 2026-05-06 21:09:17. Apache 2.4.67 (Debian), Main PID 3164, 55 tasks active.
---
### 2. ターゲットIPの特定
DebianターゲットマシンのIPアドレスを特定しました。```bash
ip a
ターゲットIP: 10.0.2.15/24 — interface enp0s3
Kali攻撃機とDebianターゲット間のネットワーク接続を確認しました。```bash ping -c 4 10.0.2.15
**Result:** 4 packets transmitted, 4 received, 0% packet loss. RTT min/avg/max: 0.495/1.288/2.139ms.
---
### 4. Apache ブラウザテスト
KaliブラウザからApacheサーバにアクセスし、HTTPサービスの可用性を確認しました。```
http://10.0.2.15
結果: Apache2 Debian デフォルトページが正常に読み込まれました — Webサーバーが到達可能でHTTPリクエストに応答していることを確認しました。
ターゲットサーバー上にテスト用のディレクトリとページを作成し、現実的なWebアプリケーション構造をシミュレートしました。```bash sudo mkdir -p /var/www/html/admin sudo mkdir -p /var/www/html/backup sudo mkdir -p /var/www/html/login echo "
ディレクトリ作成: `/admin`、`/backup`、`/login`
---
### 6. Nikto スキャン
指定されたWebサーバーに対してNiktoを実行し、自動化された脆弱性スキャンをシミュレートしました。```bash
nikto -h http://10.0.2.15
Nikto v2.5.0 — 開始時刻: 2026-05-06 20:16:56 — 終了時刻: 20:17:13 (17秒)
Niktoによる発見結果:
X-Frame-Options — クリックジャッキング保護なしX-Content-Type-Options — MIMEスニッフィング保護なし/admin/, /backup/, /login//admin/index.html — 管理ログインページにアクセス可能Dirbを実行して、対象Webサーバーに対してディレクトリブルートフォースを実施しました。```bash dirb http://10.0.2.15
**DIRB v2.22 — 開始: Wed May 6 20:19:50 2026 — 終了: 20:19:59 2026(9秒)**
使用したワードリスト: `/usr/share/dirb/wordlists/common.txt` — 4612 単語テスト済み
見つかったディレクトリとファイル:
| URL | コード | サイズ |
| --------------------------------- | ---- | ----- |
| http://10.0.2.15/index.html | 200 | 10703 |
| http://10.0.2.15/server-status | 403 | 314 |
| http://10.0.2.15/admin/ | 200 | — |
| http://10.0.2.15/admin/index.html | 200 | 21 |
| http://10.0.2.15/backup/ | 200 | — |
| http://10.0.2.15/login/ | 200 | — |
| http://10.0.2.15/login/index.html | 200 | 20 |
**警告:** `/backup/` のディレクトリリストが有効です — インデックスファイルが存在しないため、ディレクトリ内容は直接参照可能です。
**合計ダウンロード:** 13836 バイト — **検出:** 4 リソース
---
### 8. アクセスログ解析
攻撃パターンを特定するために、生のアクセスログエントリを調査しました。```bash
sudo cat /var/log/apache2/access.log
Niktoスキャンフェーズからのサンプルエントリ(21:18:32):``` 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.tar.bz2 HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10_0_2_15.gz HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.sql HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.zip HTTP/1.1" 404 527
Dirbスキャンフェーズのサンプルエントリ (21:21:34):```
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/xsql HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/xxx HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/zimbra HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/zoom HTTP/1.1" 404 472
観測されたパターン: 同じ秒間に何百もの連続したリクエストが存在しないパスを標的としており、自動スキャン動作と一致しています。
攻撃元のIPからのすべてのアクセスログエントリをフィルタリングしました。```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | head -30
観察された追加のパターン:
- NiktoはサーバーIPをファイル名として使用してバックアップファイルにアクセスしようとしました(例:`10.0.2.15.tar.bz2`、`10.0.2.15.sql`、`10.0.2.15.zip`)
- Dirbは発見された各ディレクトリを対象に、アルファベット順のワードリストを繰り返し処理しました
- 両方のツールはマシンスピードでリクエストを生成しました — 同一の送信元ポート範囲から毎秒複数のエントリ
---
### 10. HTTPステータスコード分布
攻撃対象範囲を定量化するために、HTTP応答コードごとにリクエストを集計しました。```bash
sudo grep " 200 " /var/log/apache2/access.log | wc -l
sudo grep " 403 " /var/log/apache2/access.log | wc -l
sudo grep " 404 " /var/log/apache2/access.log | wc -l
| HTTPコード | 意味 | 数 |
|---|---|---|
| 200 | OK — リソースが見つかり提供されました | 177 |
| 403 | 禁止 — リソースは存在するがアクセス拒否 | 26 |
| 404 | 未検出 — リソースが存在しません | 21740 |
合計404エラー: 21,740 — 大多数のリクエストは存在しないパスを対象としており、これは自動化されたディレクトリブルートフォースの特徴です。
攻撃者からのすべてのアクセスログエントリをカウントしました。```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | wc -l
**10.0.2.5 からの総リクエスト数: 21,962**
---
### 12. ツール署名の識別
アクセスログ内のスキャナ固有の署名を検索しました。
#### Nikto の署名```bash
sudo grep "nikto" /var/log/apache2/access.log | head -5
結果:``` 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "PUT /nikto-test-pk9VPSjF.html HTTP/1.1" 405 590 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
NiktoはPUTリクエストを用いて、テストファイル(`nikto-test-pk9VPSjF.html`)を作成し、サーバーへの書き込み権限を確認しました。
#### Dirb シグネチャ```bash
sudo grep "DirBuster\|dirb" /var/log/apache2/access.log | head -5
結果:``` 10.0.2.5 - - [06/May/2026:21:21:26 -0300] "GET /dirb HTTP/1.1" 404 472 10.0.2.5 - - [06/May/2026:21:21:26 -0300] "GET /dirbmark HTTP/1.1" 404 472 10.0.2.5 - - [06/May/2026:21:21:29 -0300] "GET /admin/dirb HTTP/1.1" 404 472 10.0.2.5 - - [06/May/2026:21:21:29 -0300] "GET /admin/dirbmark HTTP/1.1" 404 472 10.0.2.5 - - [06/May/2026:21:21:32 -0300] "GET /login/dirb HTTP/1.1" 404 472
Dirb自体の名前が使用するワードリストに含まれており、ログに明確な痕跡を残します。
---
### 13. エラーログ分析
スキャンによって引き起こされたサーバー側のセキュリティイベントについて、Apacheエラーログを調査しました。```bash
sudo cat /var/log/apache2/error.log
重大なイベントが見つかりました:
Nikto は、ディレクトリ境界を横断して機密システムファイルにアクセスしようとしました。``` [client 10.0.2.5] AH10244: invalid URI path (/../../../../../../../../../../../../etc/shadow) [client 10.0.2.5] AH10244: invalid URI path (/../../../../../../../../../../etc/passwd) [client 10.0.2.5] AH10244: invalid URI path (/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini) [client 10.0.2.5] AH10244: invalid URI path (/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd) [client 10.0.2.5] AH10244: invalid URI path (/../../../../../../../../../boot.ini) [client 10.0.2.5] AH10244: invalid URI path (/../../../../winnt/repair/sam._)
Targets included: `/etc/passwd`, `/etc/shadow`, `boot.ini`, `win.ini`, Windows SAM database — all classic path traversal targets.
#### 無効なHTTPメソッド
Niktoは、非標準のHTTPメソッドをテストして設定ミスを特定しました:```
[client 10.0.2.5] AH00135: Invalid method in request DIWHWPJH / HTTP/1.1
[client 10.0.2.5] AH00135: Invalid method in request DEBUG / HTTP/1.1
[client 10.0.2.5] AH00135: Invalid method in request TRACK / HTTP/1.0
[client 10.0.2.5] AH00135: Invalid method in request SEARCH / HTTP/1.1
[client 10.0.2.5] AH00135: Invalid method in request INDEX / HTTP/1.1
両方のツールがApacheで保護された設定ファイルへのアクセスを試みました:``` [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/.htpasswd [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/.htaccess [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/server-status [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/admin/.htpasswd [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/login/.htpasswd
#### VMware固有のパストラバーサル
NiktoはVMwareインフラストラクチャの露出も検査しました:```
[client 10.0.2.5] AH10244: invalid URI path (/sdk/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/etc/vmware/hostd/vmInventory.xml)
アクセスログとエラーログから、単一のIPアドレス(10.0.2.5)からApache Webサーバ(ポート80)を標的とした2段階の自動攻撃パターンが明らかになった。
Niktoは17秒間に8,102リクエストを実行し、既知のWeb脆弱性、欠落しているセキュリティヘッダー、危険なHTTPメソッド、パストラバーサルベクターをテストした。エラーログには/etc/passwd、/etc/shadow、boot.ini、Windows SAMファイルへの複数のアクセス試行が記録されており、いずれもApacheのURIバリデーションによってブロックされた。Niktoはまた、PUTリクエストでテストファイルを作成しようと試みており、書き込み権限をテストしていたことが確認された。
Dirbは共通のワードリストから4,612の単語をルートおよび発見された各サブディレクトリに対してテストした。これにより、観測された21,740件の404エラーの大部分が生成された。Dirbは/admin/、/backup/、/login/を有効なディレクトリとして正常に特定した。/backup/ディレクトリではディレクトリリスティングが有効になっていることが判明した。これは重大な設定ミスであり、攻撃者がその内容を直接閲覧できる状態であった。
単一の送信元IPから約7分間に21,962件のHTTPリクエストが集中し、パストラバーサル試行、無効なHTTPメソッド、アクセスログとエラーログの両方におけるツール固有のシグネチャが組み合わさっていることから、これは自動化されたWeb偵察活動の明確な証拠となる。
悪用の成功は確認されなかった。すべてのパストラバーサル試行はApacheのURIバリデーションエンジンによって拒否された。保護されたファイル(.htpasswd、.htaccess、server-status)へのアクセスはサーバー設定によって拒否された。
調査結果に基づき、以下の制御策を推奨する。
X-Frame-Options、X-Content-Type-Options、Content-Security-Policy/backup/を含むすべてのディレクトリでディレクトリリスティングを無効にする/server-statusへのアクセスをlocalhostのみに制限するerror.log内のAH10244(無効なURIパス)イベントを継続的に監視する/admin/、/backup/)への公開アクセスを削除または制限するServerTokens Prod、ServerSignature Off)このラボでは、自動化されたWebスキャンツールがApacheのアクセスログとエラーログの両方に明確で識別可能なパターンを残すことを実証した。404エラーの量、error.log内のパストラバーサル試行の存在、無効なHTTPメソッドリクエスト、リクエストパスとユーザーエージェント文字列内のツール固有の署名を関連付けることで、攻撃者の行動を事前に知らなくても、完全な攻撃タイムラインを再構築し、使用されたツールを特定することができた。
この演習は、Web向けインフラストラクチャの基本的なBlue Teamの実践として、Webサーバーログ監視、セキュリティヘッダー設定、ディレクトリアクセス制御の重要性を再確認させるものである。
ラボラトリオ Blue Team - Apacheサーバーのログを分析し、Webスキャン、ディレクトリ列挙、パストラバーサル試行を検出することに焦点を当てています。
隔離されたラボ環境でApache Webサーバーをインストールして公開し、セキュリティテストで広く使用されているツールを使用して自動スキャンをシミュレートし、生成されたログをBlue Teamの視点から分析し、攻撃パターン、ツールの署名、悪意のある偵察活動の兆候を特定します。
対象マシンでApacheサーバーがアクティブで実行中であることが確認されました。```bash sudo systemctl status apache2 --no-pager
結果: `active (running)` 2026-05-06 Wed 21:09:17 から。Apache 2.4.67 (Debian)、メインPID 3164、アクティブなタスク55。
---
### 2. ターゲットIPアドレスの特定
ターゲットのDebianマシンのIPアドレスが特定されました。```bash
ip a
ターゲットIP: 10.0.2.15/24 — インターフェース enp0s3
KaliとDebian間のネットワーク接続を確認しました。```bash ping -c 4 10.0.2.15
**結果:** 4 パケット送信、4 受信、0% 損失。RTT min/avg/max: 0.495/1.288/2.139ms。
---
### 4. ブラウザでのApacheテスト
KaliのブラウザからApacheサーバーにアクセスし、HTTPサービスの可用性を確認しました。```
http://10.0.2.15
結果: Apache2 Debianのデフォルトページが正常に読み込まれました — Webサーバーがアクセス可能で、HTTPリクエストに応答していることが確認されました。
実際のWebアプリケーション構造をシミュレートするため、ターゲットサーバー上にテスト用のディレクトリとページを作成しました。```bash sudo mkdir -p /var/www/html/admin sudo mkdir -p /var/www/html/backup sudo mkdir -p /var/www/html/login echo "
Diretórios criados: `/admin`, `/backup`, `/login`
---
### 6. Niktoによるスキャン
対象のWebサーバーに対してNiktoを実行し、自動化された脆弱性スキャンをシミュレートしました。```bash
nikto -h http://10.0.2.15
Nikto v2.5.0 — 開始: 2026-05-06 20:16:56 — 終了: 20:17:13 (17秒)
Nikto によって報告された発見事項:
X-Frame-Options — クリックジャッキング対策が欠落X-Content-Type-Options — MIMEスニッフィング対策が欠落/admin/, /backup/, /login//admin/index.html — 管理者ページが公開アクセス可能Dirbを実行して、対象Webサーバーに対してディレクトリブルートフォースを実施しました。```bash dirb http://10.0.2.15
**DIRB v2.22 — 開始: 2026年5月6日 20:19:50 — 終了: 20:19:59 2026 (9秒)**
使用したワードリスト: `/usr/share/dirb/wordlists/common.txt` — 4612語テスト済み
見つかったディレクトリとファイル:
| URL | コード | サイズ |
| --------------------------------- | ------ | ------- |
| http://10.0.2.15/index.html | 200 | 10703 |
| http://10.0.2.15/server-status | 403 | 314 |
| http://10.0.2.15/admin/ | 200 | — |
| http://10.0.2.15/admin/index.html | 200 | 21 |
| http://10.0.2.15/backup/ | 200 | — |
| http://10.0.2.15/login/ | 200 | — |
| http://10.0.2.15/login/index.html | 200 | 20 |
**注意:** ディレクトリ `/backup/` はリスト表示が有効になっています — インデックスファイルがないため、ディレクトリの内容を直接ブラウズできます。
**合計ダウンロード:** 13836バイト — **見つかったリソース:** 4
---
### 8. アクセスログの分析
攻撃パターンを特定するために、アクセスログの生エントリを調査しました。```bash
sudo cat /var/log/apache2/access.log
Niktoのスキャンフェーズのエントリ (21:18:32):``` 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.tar.bz2 HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10_0_2_15.gz HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.sql HTTP/1.1" 404 527 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "GET /10.0.2.15.zip HTTP/1.1" 404 527
Dirb スキャンフェーズのエントリ (21:21:34):```
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/xsql HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/xxx HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/zimbra HTTP/1.1" 404 472
10.0.2.5 - - [06/May/2026:21:21:34 -0300] "GET /login/zoom HTTP/1.1" 404 472
観察されたパターン: 同一秒内に数百の連続したリクエストがあり、すべて存在しないパスを対象としている — 自動スキャンと一致する挙動。
攻撃者のIPから発生したアクセスログの全エントリをフィルタリング。```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | head -30
追加で観察されたパターン:
- NiktoはサーバーのIPをファイル名として使用してバックアップファイルにアクセスしようとしました(例: `10.0.2.15.tar.bz2`, `10.0.2.15.sql`, `10.0.2.15.zip`)
- Dirbは発見した各ディレクトリを対象に、wordlistをアルファベット順に反復処理しました
- 両方のツールはマシンスピードでリクエストを生成しました—同じ送信元ポート範囲で毎秒複数のエントリ
---
### 10. HTTPステータスコードの分布
攻撃対象領域を定量化するために、HTTP応答コードごとのリクエストを集計しました。```bash
sudo grep " 200 " /var/log/apache2/access.log | wc -l
sudo grep " 403 " /var/log/apache2/access.log | wc -l
sudo grep " 404 " /var/log/apache2/access.log | wc -l
| HTTPコード | 意味 | 数量 |
|---|---|---|
| 200 | OK — リソースが見つかり、配信された | 177 |
| 403 | 禁止 — リソースは存在するがアクセス拒否 | 26 |
| 404 | 未検出 — リソースは存在しない | 21.740 |
404エラーの総数: 21.740 — リクエストの大半が存在しないパスに向けられており、これは自動化されたディレクトリブルートフォースの特徴です。
攻撃者由来のアクセスログエントリをすべてカウントしました。```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | wc -l
**10.0.2.5 からの総リクエスト数: 21.962**
---
### 12. ツールの署名識別
アクセスログ内でスキャナの特定の署名を検索しました。
#### Nikto の署名```bash
sudo grep "nikto" /var/log/apache2/access.log | head -5
結果:``` 10.0.2.5 - - [06/May/2026:21:18:32 -0300] "PUT /nikto-test-pk9VPSjF.html HTTP/1.1" 405 590 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
Niktoは、サーバーへの書き込み権限を確認するために、PUTリクエストを介してテストファイル(`nikto-test-pk9VPSjF.html`)を作成しました。
#### Dirbの署名```bash
sudo grep "DirBuster\|dirb" /var/log/apache2/access.log | head -5
結果:``` 10.0.2.5 - - [06/May/2026:21:21:26 -0300] "GET /dirb HTTP/1.1" 404 472 10.0.2.5 - - [06/May/2026:21:21:26 -0300] "GET /dirbmark HTTP/1.1" 404 472 10.0.2.5 - - [06/May/2026:21:21:29 -0300] "GET /admin/dirb HTTP/1.1" 404 472 10.0.2.5 - - [06/May/2026:21:21:29 -0300] "GET /admin/dirbmark HTTP/1.1" 404 472 10.0.2.5 - - [06/May/2026:21:21:32 -0300] "GET /login/dirb HTTP/1.1" 404 472
Dirb自身の名前が使用するwordlistに現れ、ログに明確な痕跡を残します。
---
### 13. エラーログの分析
Apacheのエラーログを検査し、スキャンによって生成されたセキュリティイベントを特定します。```bash
sudo cat /var/log/apache2/error.log
重要なイベントが見つかりました:
Niktoは、ディレクトリ境界を越えてシステムの機密ファイルへのアクセスを試みました:``` [client 10.0.2.5] AH10244: invalid URI path (/../../../../../../../../../../../../etc/shadow) [client 10.0.2.5] AH10244: invalid URI path (/../../../../../../../../../../etc/passwd) [client 10.0.2.5] AH10244: invalid URI path (/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini) [client 10.0.2.5] AH10244: invalid URI path (/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd) [client 10.0.2.5] AH10244: invalid URI path (/../../../../../../../../../boot.ini) [client 10.0.2.5] AH10244: invalid URI path (/../../../../winnt/repair/sam._)
対象には、`/etc/passwd`、`/etc/shadow`、`boot.ini`、`win.ini`、WindowsのSAMデータベースなど、パストラバーサルの典型的なターゲットが含まれていました。
#### 無効なHTTPメソッド
Niktoは、不適切な設定を特定するために、非標準のHTTPメソッドをテストしました。```
[client 10.0.2.5] AH00135: Invalid method in request DIWHWPJH / HTTP/1.1
[client 10.0.2.5] AH00135: Invalid method in request DEBUG / HTTP/1.1
[client 10.0.2.5] AH00135: Invalid method in request TRACK / HTTP/1.0
[client 10.0.2.5] AH00135: Invalid method in request SEARCH / HTTP/1.1
[client 10.0.2.5] AH00135: Invalid method in request INDEX / HTTP/1.1
両方のツールは、Apacheによって保護された設定ファイルへのアクセスを試みました:``` [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/.htpasswd [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/.htaccess [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/server-status [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/admin/.htpasswd [client 10.0.2.5] AH01630: client denied by server configuration: /var/www/html/login/.htpasswd
#### VMware固有のPath Traversal
Niktoはまた、VMwareインフラストラクチャの露出をテストしました:```
[client 10.0.2.5] AH10244: invalid URI path (/sdk/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/etc/vmware/hostd/vmInventory.xml)
アクセスログとエラーログから、単一のIPアドレス(10.0.2.5)からApacheサーバのポート80を標的とした、2段階の自動化された攻撃パターンが明らかになりました。
Niktoは17秒間に8,102件のリクエストを実行し、既知のWeb脆弱性、不足しているセキュリティヘッダー、危険なHTTPメソッド、パストラバーサルのベクターをテストしました。エラーログには/etc/passwd、/etc/shadow、boot.ini、WindowsのSAMデータベースへのアクセス試行が複数記録されましたが、すべてApacheのURI検証によってブロックされました。Niktoはまた、サーバー上にテストファイルを作成するためのPUTリクエストを試行し、書き込み権限の確認を行っていたことを確認しました。
Dirbは、一般的なワードリストから4,612語をルートディレクトリと発見された各サブディレクトリに対してテストしました。これにより、観測された21,740件の404エラーの大部分が発生しました。Dirbは/admin/、/backup/、/login/を有効なディレクトリとして正常に識別しました。/backup/ディレクトリはディレクトリリスティングが有効な状態で見つかりました。これは重大な設定ミスであり、攻撃者が直接その内容を閲覧できることを意味します。
約7分間に単一の送信元IPから21,962件のHTTPリクエストが集中し、パストラバーサルの試行、無効なHTTPメソッドのリクエスト、アクセスログとエラーログの両方におけるツール固有のシグネチャが組み合わさったことは、自動化されたWeb偵察活動の明確な証拠となります。
悪用の成功は観測されませんでした。すべてのパストラバーサルの試行はApacheのURI検証メカニズムによって拒否されました。保護されたファイル(.htpasswd、.htaccess、server-status)へのアクセスはサーバー設定によって拒否されました。
調査結果に基づき、以下の対策が推奨されます。
X-Frame-Options、X-Content-Type-Options、Content-Security-Policy/backup/でディレクトリリスティングを無効化/server-statusへのアクセスをlocalhostのみに制限error.logを継続的に監視し、AH10244(無効なURIパス)イベントを確認/admin/、/backup/)への公開アクセスを削除または制限ServerTokens Prod、ServerSignature Off)このラボでは、自動化されたWebスキャンツールがApacheのアクセスログとエラーログにどのように明確で識別可能なパターンを残すかを示しました。404エラーの量、error.logにおけるパストラバーサルの試行の存在、無効なHTTPメソッドのリクエスト、リクエストパスとユーザーエージェント文字列におけるツール固有のシグネチャを相関させることで、攻撃の完全なタイムラインを再構築し、使用されたツールを特定することができました。これは攻撃者の行動に関する事前知識なしで実現されました。
この演習は、Webに公開されたインフラストラクチャに対するブルーチームの基本的な実践として、Webサーバーログの監視、セキュリティヘッダーの設定、ディレクトリアクセス制御の重要性を強調しています。
| 指標 | 値 |
|---|
| 攻撃者IP | 10.0.2.5 |
| 対象IP | 10.0.2.15 |
| 対象ポート | 80 (HTTP) |
| Webサーバ | Apache 2.4.67 (Debian) |
| 特定されたツール | Nikto v2.5.0, Dirb v2.22 |
| 攻撃者からの総リクエスト数 | 21,962 |
| HTTP 200 レスポンス | 177 |
| HTTP 403 レスポンス | 26 |
| HTTP 404 レスポンス | 21,740 |
| 発見されたディレクトリ | /admin/, /backup/, /login/ |
| パストラバーサル試行 | 複数(すべてブロック) |
| テストされた無効なHTTPメソッド | TRACK, DEBUG, SEARCH, INDEX |
| 標的とされた機密ファイル | /etc/passwd, /etc/shadow, .htpasswd, .htaccess |
| 悪用の成功 | なし |
| 時間枠 | 21:14~21:21 (2026-05-06) |
| コンポーネント | 詳細 |
|---|
| 攻撃VM | Kali Linux |
| 対象VM | Debian 13 |
| ネットワーク | NAT Network (VirtualBox) |
| 攻撃者IP | 10.0.2.5 |
| 対象IP | 10.0.2.15 |
| Webサーバ | Apache 2.4.67 |
| ログソース | /var/log/apache2/access.log, /var/log/apache2/error.log |
| HTTPポート | 80 |
| 指標 | 値 |
|---|
| 攻撃元IP | 10.0.2.5 |
| 標的IP | 10.0.2.15 |
| 標的ポート | 80 (HTTP) |
| Webサーバ | Apache 2.4.67 (Debian) |
| 特定されたツール | Nikto v2.5.0、Dirb v2.22 |
| 攻撃元の総リクエスト数 | 21.962 |
| HTTP 200 応答 | 177 |
| HTTP 403 応答 | 26 |
| HTTP 404 応答 | 21.740 |
| 発見されたディレクトリ | /admin/、/backup/、/login/ |
| パストラバーサルの試行 | 複数(すべてブロック) |
| テストされた無効なHTTPメソッド | TRACK、DEBUG、SEARCH、INDEX |
| 標的となった機密ファイル | /etc/passwd、/etc/shadow、.htpasswd、.htaccess |
| 悪用の成功 | なし |
| 時間枠 | 21:14〜21:21 (2026-05-06) |