Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/pedrofbrm/apache-web-log-analysis-lab
Web SecurityLearning & EducationLog AnalysisLabs & Practice
GitHubpedrofbrm/apache-web-log-analysis-lab

apache-web-log-analysis-lab

디렉토리 무차별 대입 및 웹 스캐닝 활동을 탐지하기 위해 Apache 웹 액세스 로그를 분석하는 데 중점을 둔 블루 팀 실습입니다.

저장소 보기

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
3개월 전아직 검토되지 않음

Apache 웹 로그 분석 랩

웹 스캐닝 활동, 디렉터리 열거 및 경로 탐색 시도를 탐지하기 위해 Apache HTTP 서버 로그를 분석하는 Blue Team 랩입니다.


목적

격리된 실습 환경에서 Apache 웹 서버를 설치 및 노출하고, 업계 표준 도구를 사용하여 자동화된 웹 스캐닝을 시뮬레이션한 후, Blue Team 관점에서 생성된 로그를 분석하여 공격 패턴, 도구 서명 및 악성 정찰 활동의 지표를 식별합니다.


환경

구성 요소세부 정보
공격자 VMKali Linux
대상 VMDebian 13
네트워크NAT 네트워크 (VirtualBox)
공격자 IP10.0.2.5
대상 IP10.0.2.15
웹 서버Apache 2.4.67
로그 소스/var/log/apache2/access.log, /var/log/apache2/error.log
HTTP 포트80

수행 단계

1. 아파치 서비스 확인

대상 머신에서 Apache HTTP 서버가 활성화되어 실행 중임을 확인했습니다.```bash sudo systemctl status apache2 --no-pager

root@kitploit:~
결과: `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


3. 연결 테스트

Kali 공격자 머신과 Debian 대상 간의 네트워크 연결을 확인했습니다.```bash ping -c 4 10.0.2.15

root@kitploit:~
**결과:** 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.


5. 웹 콘텐츠 설정

대상 서버에 테스트 디렉토리와 페이지를 생성하여 실제 웹 애플리케이션 구조를 시뮬레이션했습니다.```bash sudo mkdir -p /var/www/html/admin sudo mkdir -p /var/www/html/backup sudo mkdir -p /var/www/html/login echo "

Admin Panel

" | sudo tee /var/www/html/admin/index.html echo "

Login Page

" | sudo tee /var/www/html/login/index.html

root@kitploit:~
생성된 디렉토리: `/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가 보고한 발견 사항:

  • 서버: Apache/2.4.67 (Debian)
  • 누락된 헤더: X-Frame-Options — 클릭재킹 보호 없음
  • 누락된 헤더: X-Content-Type-Options — MIME 스니핑 보호 없음
  • ETag 누출: 서버가 ETags를 통해 inode 번호를 유출할 수 있음 (CVE-2003-1418)
  • 허용된 메소드: GET, POST, OPTIONS, HEAD
  • 발견된 흥미로운 디렉토리: /admin/, /backup/, /login/
  • 확인됨: /admin/index.html — 관리자 로그인 페이지에 접근 가능
  • 총 요청: 17초 동안 8102개

7. Dirb 스캔

대상 웹 서버에 대해 디렉토리 무차별 대입을 수행하기 위해 Dirb를 실행했습니다.```bash dirb http://10.0.2.15

root@kitploit:~
**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

root@kitploit:~
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

관찰된 패턴: 동일한 초 내에 수백 개의 순차적 요청이 모두 존재하지 않는 경로를 대상으로 함 — 자동화된 스캐닝 동작과 일치합니다.


9. 출발지 IP별 스캔 패턴

공격자 IP에서 발생한 모든 액세스 로그 항목을 필터링했습니다.```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | head -30

root@kitploit:~
추가로 관찰된 패턴:

- 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 CodeMeaningCount
200성공 — 리소스 발견 및 제공됨177
403금지됨 — 리소스는 존재하지만 접근 거부됨26
404찾을 수 없음 — 리소스가 존재하지 않음21740

총 404 오류: 21,740 — 요청의 대다수가 존재하지 않는 경로를 대상으로 했으며, 이는 자동화된 디렉터리 무차별 대입 공격의 정의적 특성입니다.


11. 공격자 IP별 총 요청 수

공격자로부터 발생한 모든 접근 로그 항목을 집계했습니다.```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | wc -l

root@kitploit:~
**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"

root@kitploit:~
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

root@kitploit:~
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._)

root@kitploit:~
포함된 대상: `/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

root@kitploit:~
#### 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 웹 서버를 대상으로 했음을 보여줍니다.

1단계 — 취약점 스캐닝 (Nikto, 21:14 ~ 21:18)

Nikto는 17초 동안 8,102개의 요청을 수행하여 알려진 웹 취약점, 누락된 보안 헤더, 위험한 HTTP 메서드 및 경로 탐색 벡터를 테스트했습니다. 오류 로그는 /etc/passwd, /etc/shadow, boot.ini, Windows SAM 파일에 대한 여러 시도를 기록했으며, 모두 Apache의 URI 유효성 검사에 의해 차단되었습니다. Nikto는 또한 서버에 테스트 파일을 생성하기 위해 PUT 요청을 시도하여 쓰기 권한을 테스트했음을 확인했습니다.

2단계 — 디렉터리 열거 (Dirb, 21:19 ~ 21:21)

Dirb는 공통 단어 목록에서 4,612개의 단어를 루트 및 발견된 각 하위 디렉터리에 대해 테스트했습니다. 이로 인해 관찰된 21,740개의 404 오류 대부분이 생성되었습니다. Dirb는 /admin/, /backup/, /login/을 유효한 디렉터리로 성공적으로 식별했습니다. /backup/ 디렉터리에는 디렉터리 목록이 활성화되어 있었으며, 이는 공격자가 해당 콘텐츠를 직접 탐색할 수 있게 하는 심각한 잘못된 구성입니다.

종합 평가

약 7분 이내에 단일 소스 IP에서 집중된 21,962개의 HTTP 요청과 경로 탐색 시도, 잘못된 HTTP 메서드, 접근 및 오류 로그 모두에서 도구 특정 시그니처가 존재한다는 것은 자동화된 웹 정찰 활동의 명확한 증거입니다.

성공적인 익스플로잇은 관찰되지 않았습니다. 모든 경로 탐색 시도는 Apache의 URI 유효성 검사 엔진에 의해 거부되었습니다. 보호된 파일(.htpasswd, .htaccess, server-status)에 대한 접근은 서버 구성에 의해 거부되었습니다.


주요 지표


방어 권장 사항

조사 결과를 바탕으로 다음과 같은 통제 조치가 권장됩니다.

  • Apache 구성에 보안 헤더 추가: X-Frame-Options, X-Content-Type-Options, Content-Security-Policy
  • ETag 헤더 비활성화로 inode 정보 유출 방지
  • 허용된 HTTP 메서드를 GET, POST, HEAD로만 제한
  • 모든 디렉터리, 특히 /backup/에 대한 디렉터리 목록 비활성화
  • /server-status에 대한 액세스를 localhost로만 제한
  • 초당 과도한 요청을 생성하는 IP를 차단하기 위한 속도 제한 구현
  • WAF(웹 애플리케이션 방화벽) 배포로 경로 탐색 패턴 탐지 및 차단
  • AH10244(잘못된 URI 경로) 이벤트에 대해 error.log 지속적 모니터링
  • 민감한 디렉터리(/admin/, /backup/)를 공개 노출에서 제거 또는 액세스 제한
  • HTTP 응답 헤더에서 Apache 버전 숨기기 (ServerTokens Prod, ServerSignature Off)

결론

이 실습은 자동화된 웹 스캐닝 도구가 Apache 액세스 및 오류 로그 모두에 뚜렷하고 식별 가능한 패턴을 남기는 방식을 보여주었습니다. 404 오류의 양, error.log의 경로 탐색 시도 존재, 잘못된 HTTP 메서드 요청, 그리고 요청 경로 및 사용자 에이전트 문자열의 도구별 시그니처를 상호 연관시킴으로써 공격자의 행동에 대한 사전 지식 없이도 전체 공격 타임라인을 재구성하고 사용된 도구를 식별할 수 있었습니다.

이 연습은 웹 서버 로그 모니터링, 보안 헤더 구성 및 디렉터리 액세스 제어가 웹 노출 인프라에 대한 블루팀의 기본 관행으로서의 중요성을 강조합니다.


사용된 도구

  • Kali Linux
  • Debian 13
  • Apache 2.4.67
  • Nikto v2.5.0
  • Dirb v2.22
  • grep, wc, cat


Apache 웹 로그 분석 실습

Apache 서버 로그를 분석하여 웹 스캔, 디렉터리 열거 및 경로 탐색 시도를 탐지하는 블루팀 실습입니다.


목표

격리된 실습 환경에서 Apache 웹 서버를 설치 및 노출하고, 보안 테스트에 널리 사용되는 도구를 사용하여 자동화된 스캔을 시뮬레이션한 후 생성된 로그를 블루팀 관점에서 분석하여 공격 패턴, 도구 시그니처 및 악성 정찰 활동 지표를 식별합니다.


환경


수행 단계

1. Apache 서비스 확인

대상 머신에서 Apache 서버가 활성 상태이고 실행 중인지 확인했습니다.```bash sudo systemctl status apache2 --no-pager

root@kitploit:~
결과: `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


3. 연결성 테스트

Kali와 Debian 간의 네트워크 연결성을 확인했습니다.```bash ping -c 4 10.0.2.15

root@kitploit:~
**결과:** 4개 패킷 전송, 4개 수신, 손실 0%. RTT 최소/평균/최대: 0.495/1.288/2.139ms.

---

### 4. 브라우저에서 Apache 테스트

Kali 브라우저에서 Apache 서버에 접속하여 HTTP 서비스 가용성을 확인함.```
http://10.0.2.15

결과: Apache2 Debian 기본 페이지가 성공적으로 로드되었습니다 — 웹 서버에 접근 가능하고 HTTP 요청에 응답함을 확인했습니다.


5. 테스트 콘텐츠 생성

실제 웹 애플리케이션 구조를 시뮬레이션하기 위해 대상 서버에 테스트 디렉터리와 페이지를 생성했습니다.```bash sudo mkdir -p /var/www/html/admin sudo mkdir -p /var/www/html/backup sudo mkdir -p /var/www/html/login echo "

Admin Panel

" | sudo tee /var/www/html/admin/index.html echo "

Login Page

" | sudo tee /var/www/html/login/index.html

root@kitploit:~
생성된 디렉토리: `/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가 보고한 발견 사항:

  • 서버: Apache/2.4.67 (Debian)
  • 누락된 헤더: X-Frame-Options — 클릭재킹 방지 누락
  • 누락된 헤더: X-Content-Type-Options — MIME 스니핑 방지 누락
  • ETag 누출: 서버가 ETags를 통해 inode 번호를 누출할 수 있음 (CVE-2003-1418)
  • 허용된 메서드: GET, POST, OPTIONS, HEAD
  • 발견된 흥미로운 디렉토리: /admin/, /backup/, /login/
  • 확인됨: /admin/index.html — 공개적으로 접근 가능한 관리자 페이지
  • 총 요청 수: 17초 동안 8102개

7. Dirb 스캔

대상 웹 서버에 대해 디렉토리 무차별 대입을 수행하기 위해 Dirb를 실행했습니다.```bash dirb http://10.0.2.15

root@kitploit:~
**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

root@kitploit:~
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

관찰된 패턴: 동일한 초 내에 수백 개의 순차적 요청이 모두 존재하지 않는 경로로 향함 — 이는 자동화된 스캔과 일치하는 행동입니다.


9. 출발 IP별 스캔 패턴

공격자의 IP에서 발생한 액세스 로그의 모든 항목이 필터링되었습니다.```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | head -30

root@kitploit:~
추가로 관찰된 패턴:

- 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 HTTPSignificadoQuantidade
200OK — 리소스 발견 및 제공됨177
403금지됨 — 리소스는 존재하지만 접근 거부됨26
404찾을 수 없음 — 리소스가 존재하지 않음21.740

총 404 오류: 21.740 — 요청의 대부분이 존재하지 않는 경로로 향했으며, 이는 자동화된 디렉토리 무차별 대입 공격의 결정적 특징입니다.


11. 공격자 IP별 총 요청 수

공격자로부터 발생한 액세스 로그의 모든 항목이 집계되었습니다.```bash sudo grep "10.0.2.5" /var/log/apache2/access.log | wc -l

root@kitploit:~
**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"

root@kitploit:~
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

root@kitploit:~
Dirb 자체 이름이 사용하는 wordlist에 나타나 로그에 명확한 서명을 남깁니다.

---

### 13. 오류 로그 분석```bash
sudo cat /var/log/apache2/error.log

Path Traversal (Directory Traversal) 시도

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._)

root@kitploit:~
대상에는 다음이 포함되었습니다: `/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

root@kitploit:~
#### 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단계 공격 패턴을 드러냈습니다.

1단계 — 취약점 스캔 (Nikto, 21:14~21:18)

Nikto는 17초 동안 8,102개의 요청을 수행하며 알려진 웹 취약점, 누락된 보안 헤더, 위험한 HTTP 메서드, 경로 탐색(path traversal) 벡터를 테스트했습니다. 오류 로그에는 /etc/passwd, /etc/shadow, boot.ini, Windows SAM 데이터베이스에 대한 여러 접근 시도가 기록되었으나 Apache의 URI 검증으로 모두 차단되었습니다. Nikto는 또한 서버에 테스트 파일을 생성하기 위해 PUT 요청을 시도하여 쓰기 권한을 확인했습니다.

2단계 — 디렉터리 열거 (Dirb, 21:19~21:21)

Dirb는 일반적인 단어 목록에서 4,612개의 단어를 루트 디렉터리와 발견된 각 하위 디렉터리에 대해 테스트했습니다. 이로 인해 관찰된 21,740개의 404 오류 중 대부분이 발생했습니다. Dirb는 성공적으로 /admin/, /backup/, /login/을 유효한 디렉터리로 식별했습니다. /backup/ 디렉터리는 목록 보기가 활성화된 상태로 발견되었는데, 이는 공격자가 직접 내용을 탐색할 수 있게 하는 심각한 잘못된 설정입니다.

종합 평가

약 7분 동안 단일 출발지 IP에서 21,962개의 HTTP 요청이 집중되었고, 경로 탐색 시도, 잘못된 HTTP 메서드 요청, 액세스 로그 및 오류 로그 내 도구별 시그니처가 함께 나타난 것은 자동화된 웹 정찰 활동의 명확한 증거입니다.

성공적인 익스플로잇은 관찰되지 않았습니다. 모든 경로 탐색 시도는 Apache의 URI 검증 메커니즘에 의해 거부되었습니다. 보호된 파일(.htpasswd, .htaccess, server-status)에 대한 접근은 서버 설정에 의해 거부되었습니다.


주요 지표


방어 권장 사항

발견 사항을 바탕으로 다음 제어 조치를 권장합니다.

  • Apache 구성에 보안 헤더 추가: X-Frame-Options, X-Content-Type-Options, Content-Security-Policy
  • inode 정보 유출 방지를 위해 ETag 헤더 비활성화
  • 허용된 HTTP 메서드를 GET, POST, HEAD로만 제한
  • 모든 디렉터리에서 디렉터리 목록 보기 비활성화, 특히 /backup/
  • /server-status 접근을 로컬호스트로만 제한
  • 초당 과도한 요청을 생성하는 IP를 차단하는 속도 제한(rate limiting) 구현
  • 경로 탐색 패턴을 탐지 및 차단하는 WAF(웹 애플리케이션 방화벽) 배포
  • AH10244(잘못된 URI 경로) 이벤트를 지속적으로 모니터링하기 위해 error.log 실시간 감시
  • 중요 디렉터리(/admin/, /backup/)에 대한 공개 접근 제거 또는 제한
  • HTTP 응답 헤더에서 Apache 버전 숨기기(ServerTokens Prod, ServerSignature Off)

결론

이 실습은 자동화된 웹 스캐닝 도구가 Apache 액세스 로그와 오류 로그에 어떻게 뚜렷하고 식별 가능한 패턴을 남기는지 보여주었습니다. 404 오류 볼륨, error.log 내 경로 탐색 시도의 존재, 잘못된 HTTP 메서드 요청, 요청 경로와 사용자 에이전트 문자열 내 도구별 시그니처를 상호 연관시킴으로써 공격자의 사전 지식 없이도 전체 공격 타임라인을 재구성하고 사용된 도구를 식별할 수 있었습니다.

이 연습은 웹 서버 로그 모니터링, 보안 헤더 구성, 디렉터리 접근 제어가 웹에 노출된 인프라에 대한 Blue Team의 핵심 관행이라는 중요성을 강조합니다.


사용된 도구

  • Kali Linux
  • Debian 13
  • Apache 2.4.67
  • Nikto v2.5.0
  • Dirb v2.22
  • grep, wc, cat
도구 다운로드
지표값
공격자 IP10.0.2.5
대상 IP10.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)
구성 요소세부 사항
공격자 VMKali Linux
대상 VMDebian 13
네트워크NAT Network (VirtualBox)
공격자 IP10.0.2.5
대상 IP10.0.2.15
웹 서버Apache 2.4.67
로그 소스/var/log/apache2/access.log, /var/log/apache2/error.log
HTTP 포트80
지표값
공격자 IP10.0.2.5
대상 IP10.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)