
디렉토리 무차별 대입 및 웹 스캐닝 활동을 탐지하기 위해 Apache 웹 액세스 로그를 분석하는 데 중점을 둔 블루 팀 실습입니다.
웹 스캐닝 활동, 디렉터리 열거 및 경로 탐색 시도를 탐지하기 위해 Apache HTTP 서버 로그를 분석하는 Blue Team 랩입니다.
격리된 실습 환경에서 Apache 웹 서버를 설치 및 노출하고, 업계 표준 도구를 사용하여 자동화된 웹 스캐닝을 시뮬레이션한 후, Blue Team 관점에서 생성된 로그를 분석하여 공격 패턴, 도구 서명 및 악성 정찰 활동의 지표를 식별합니다.
| 구성 요소 | 세부 정보 |
|---|---|
| 공격자 VM | Kali Linux |
| 대상 VM | Debian 13 |
| 네트워크 | NAT 네트워크 (VirtualBox) |
| 공격자 IP | 10.0.2.5 |
| 대상 IP | 10.0.2.15 |
| 웹 서버 | 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 식별
데비안 대상 시스템의 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 최소/평균/최대: 0.495/1.288/2.139ms.
---
### 4. Apache 브라우저 테스트
Kali 브라우저에서 Apache 서버에 접속하여 HTTP 서비스 가용성을 확인했습니다.```
http://10.0.2.15
Result: Apache2 Debian Default Page loaded successfully — confirming the web server was reachable and responding to HTTP requests.
대상 서버에 테스트 디렉토리와 페이지를 생성하여 실제 웹 애플리케이션 구조를 시뮬레이션했습니다.```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 스캔
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를 실행했습니다.```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는 발견된 각 디렉토리를 대상으로 알파벳순 정렬된 단어리스트를 반복적으로 사용
- 두 도구 모두 머신 속도로 요청을 생성 — 동일한 소스 포트 범위에서 초당 여러 항목
---
### 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 Code | Meaning | Count |
|---|---|---|
| 200 | 성공 — 리소스 발견 및 제공됨 | 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._)
포함된 대상: `/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 특정 경로 탐색
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)에서 시작된 2단계 자동 공격 패턴이 포트 80의 Apache 웹 서버를 대상으로 했음을 보여줍니다.
Nikto는 17초 동안 8,102개의 요청을 수행하여 알려진 웹 취약점, 누락된 보안 헤더, 위험한 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 메서드, 접근 및 오류 로그 모두에서 도구 특정 시그니처가 존재한다는 것은 자동화된 웹 정찰 활동의 명확한 증거입니다.
성공적인 익스플로잇은 관찰되지 않았습니다. 모든 경로 탐색 시도는 Apache의 URI 유효성 검사 엔진에 의해 거부되었습니다. 보호된 파일(.htpasswd, .htaccess, server-status)에 대한 접근은 서버 구성에 의해 거부되었습니다.
조사 결과를 바탕으로 다음과 같은 통제 조치가 권장됩니다.
X-Frame-Options, X-Content-Type-Options, Content-Security-Policy/backup/에 대한 디렉터리 목록 비활성화/server-status에 대한 액세스를 localhost로만 제한AH10244(잘못된 URI 경로) 이벤트에 대해 error.log 지속적 모니터링/admin/, /backup/)를 공개 노출에서 제거 또는 액세스 제한ServerTokens Prod, ServerSignature Off)이 실습은 자동화된 웹 스캐닝 도구가 Apache 액세스 및 오류 로그 모두에 뚜렷하고 식별 가능한 패턴을 남기는 방식을 보여주었습니다. 404 오류의 양, error.log의 경로 탐색 시도 존재, 잘못된 HTTP 메서드 요청, 그리고 요청 경로 및 사용자 에이전트 문자열의 도구별 시그니처를 상호 연관시킴으로써 공격자의 행동에 대한 사전 지식 없이도 전체 공격 타임라인을 재구성하고 사용된 도구를 식별할 수 있었습니다.
이 연습은 웹 서버 로그 모니터링, 보안 헤더 구성 및 디렉터리 액세스 제어가 웹 노출 인프라에 대한 블루팀의 기본 관행으로서의 중요성을 강조합니다.
Apache 서버 로그를 분석하여 웹 스캔, 디렉터리 열거 및 경로 탐색 시도를 탐지하는 블루팀 실습입니다.
격리된 실습 환경에서 Apache 웹 서버를 설치 및 노출하고, 보안 테스트에 널리 사용되는 도구를 사용하여 자동화된 스캔을 시뮬레이션한 후 생성된 로그를 블루팀 관점에서 분석하여 공격 패턴, 도구 시그니처 및 악성 정찰 활동 지표를 식별합니다.
대상 머신에서 Apache 서버가 활성 상태이고 실행 중인지 확인했습니다.```bash sudo systemctl status apache2 --no-pager
결과: `active (running)` desde Wed 2026-05-06 21:09:17. Apache 2.4.67 (Debian), 주요 PID 3164, 55개의 활성 작업.
---
### 2. 대상 IP 식별
대상 Debian 머신의 IP 주소가 식별되었습니다.```bash
ip a
IP do alvo: 10.0.2.15/24 — interface enp0s3
Kali와 Debian 간의 네트워크 연결성을 확인했습니다.```bash ping -c 4 10.0.2.15
**결과:** 4개 패킷 전송, 4개 수신, 손실 0%. RTT 최소/평균/최대: 0.495/1.288/2.139ms.
---
### 4. 브라우저에서 Apache 테스트
Kali 브라우저에서 Apache 서버에 접속하여 HTTP 서비스 가용성을 확인함.```
http://10.0.2.15
결과: Apache2 Debian 기본 페이지가 성공적으로 로드되었습니다 — 웹 서버에 접근 가능하고 HTTP 요청에 응답함을 확인했습니다.
실제 웹 애플리케이션 구조를 시뮬레이션하기 위해 대상 서버에 테스트 디렉터리와 페이지를 생성했습니다.```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 스캔
대상 웹 서버에 대해 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를 실행했습니다.```bash dirb http://10.0.2.15
**DIRB v2.22 — 시작: 2026년 5월 6일 수요일 20:19:50 — 종료: 20:19:59 (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
| Código HTTP | Significado | Quantidade |
|---|---|---|
| 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"
O Nikto criou um arquivo de teste (`nikto-test-pk9VPSjF.html`) via requisição PUT para verificar permissões de escrita no servidor.
#### 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. 오류 로그 분석```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개의 요청을 수행하며 알려진 웹 취약점, 누락된 보안 헤더, 위험한 HTTP 메서드, 경로 탐색(path traversal) 벡터를 테스트했습니다. 오류 로그에는 /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 메서드 요청, 액세스 로그 및 오류 로그 내 도구별 시그니처가 함께 나타난 것은 자동화된 웹 정찰 활동의 명확한 증거입니다.
성공적인 익스플로잇은 관찰되지 않았습니다. 모든 경로 탐색 시도는 Apache의 URI 검증 메커니즘에 의해 거부되었습니다. 보호된 파일(.htpasswd, .htaccess, server-status)에 대한 접근은 서버 설정에 의해 거부되었습니다.
발견 사항을 바탕으로 다음 제어 조치를 권장합니다.
X-Frame-Options, X-Content-Type-Options, Content-Security-Policy/backup//server-status 접근을 로컬호스트로만 제한AH10244(잘못된 URI 경로) 이벤트를 지속적으로 모니터링하기 위해 error.log 실시간 감시/admin/, /backup/)에 대한 공개 접근 제거 또는 제한ServerTokens Prod, ServerSignature Off)이 실습은 자동화된 웹 스캐닝 도구가 Apache 액세스 로그와 오류 로그에 어떻게 뚜렷하고 식별 가능한 패턴을 남기는지 보여주었습니다. 404 오류 볼륨, error.log 내 경로 탐색 시도의 존재, 잘못된 HTTP 메서드 요청, 요청 경로와 사용자 에이전트 문자열 내 도구별 시그니처를 상호 연관시킴으로써 공격자의 사전 지식 없이도 전체 공격 타임라인을 재구성하고 사용된 도구를 식별할 수 있었습니다.
이 연습은 웹 서버 로그 모니터링, 보안 헤더 구성, 디렉터리 접근 제어가 웹에 노출된 인프라에 대한 Blue Team의 핵심 관행이라는 중요성을 강조합니다.
| 지표 | 값 |
|---|
| 공격자 IP | 10.0.2.5 |
| 대상 IP | 10.0.2.15 |
| 대상 포트 | 80 (HTTP) |
| 웹 서버 | 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 |
| 웹 서버 | 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) |
| 웹 서버 | 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) |