본문 바로가기
보안프로젝트

[보안프로젝트] Nmap NSE를 이용한 취약점 테스트

by L3m0n S0ju 2021. 5. 16.

보안프로젝트

윤창규

1. NSE 개념

1.1     NSE 개념

 

그림 1-1

NSE(Nmap Scripting Engine)이란 Nmap을 이용한 강력하고 유용한 도구이다. NSE 사용자는 루아 프로그래밍 언어로 작성된 간단한 스크립트를 통해 다양한 네트워크 실험을 자동화할 수 있다. 작성된 스크립트는 Nmap과 동일한 성능을 가진다. 그리고 Nmap에서 제공하는 NSE를 사용하거나 사용자 기호에 맞춰서 스크립트에 적용할 수 있다. 따라서 개인 기호에 맞춰 네트워크 스캔, 더 정교한 버전 탐지, 취약점 탐지 등에 이용할 수 있다.

 

NSE 스크립트 카테고리에는 auth, broadcast, brute, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, vuln 등이 있고 자세한 내용은 https://nmap.org/book/nse-usage.html#nse-categories 에서 확인할 수 있다. Nmap에서 제공하는 스크립트가 아닌 출처가 부정확한 스크립트는 시스템에 영향을 끼치거나 악성코드가 심어져 있을 수 있으므로 함부로 실행하면 안된다.

 

 

 

 

 

 

 

1.2     http-enum.nse 이용한 Bee-box 서비스 목록화

 

 

필자가 사용할 NSE 스크립트는 Nmap에서 기본적으로 제공하는 http-enum.nse이다. 스크립트의 기능은 사전 파일을 통해 외부에서 접근할 수 있는 디렉터리 또는 파일을 목록화한다. 이름에서 확인할 수 있듯이 http를 사용하는 포트에서 접근 가능한 디렉토리 또는 파일을 enumeration(목록화) 한다.

 

 

 

 

 

그림 1-2

Bee-box 웹 서비스를 실행하고 공격자 PC에서 http-enum.nse를 실행하겠다.

 

 

 

 

그림 1-3

그림 1-3처럼 nmap –sV (서버ip) –script=/usr/share/nmap/scripts/http-enum.nse -80 명령어를 터미널에 입력한다. 7.70초 만에 결과가 도출되는데 7개의 페이지가 출력된다.

 

 

 

 

그림 1-4

그림 1-3결과에서 /phpmyadmin으로 접속하겠다. 브라우저 주소창에 (서버ip)/phpmyadmin을 입력하면 그림 1-4처럼 phpMyAdmin 페이지가 나온다. PhpMyAdmin 페이지는 PHP로 작성된 오픈 소스로 웹에서 MySQL을 관리하기 위해서 만든 소프트웨어이다. 하지만 phpMyAdmin은 구글에 검색하면 많은 취약점들이 나온다. CVE-2009-1151 취약점을 예로 들 수 있는데 현재 Bee-box 웹 서버는 그림 1-4와 같이 2.11.3버전으로 /scripts/setup.php 를 통해 공격자가 설정 파일 내에 웹쉘을 생성할 수 있다고 한다.

 

 

 

 

 

그림 1-5

실제로 setup.php에 접근하면  그림 1-5처럼 setup.php 파일이 존재한다는 것을 알 수 있다. 조치 방법은 setup.php를 삭제하면 된다.

 

 

 

 

2. 와이어샤크 http-enum.nse 패킷 분석

2.1     와이어샤크 http-enum.nse 패킷 분석

 

그림 2-1

와이어샤크를 실행한 후 캡쳐 버튼을 누른 뒤 그림1-3 과정을 반복한다. 그리고 캡쳐 버튼 옆의 정지버튼을 눌러서 정지한다.

 

 

 

 

그림 2-2

그림 2-2와 같이 대략 2천개의 패킷이 잡힌다.

 

 

 

 

 

그림 2-3

1번 패킷부터 살펴보겠다. 1번 패킷은 ARP 프로토콜로 192.168.169.0 대역에 브로드캐스트로 192.168.169.143(Bee-box ip주소)이라는 ip를 가진 장치를 찾는다. 2번 패킷은 방금 방송한 ip의 위치 정보를 수신한다. 8,9,10번 패킷은 TCP 프로토콜로 TCP 3way handshake로 처음 통신을 시작할 때 주고 받는 패킷이다. 이후에 패킷은 대부분 페이지 내의 디렉토리들을 사전 공격을 통해 알아내는 요청, 응답 패킷이다.

 

 

 

 

 

그림 2-4

다음으로 그림 24와 같이 와이어샤크의 Statistics – Http – Requests에 들어가면 내 PC에서 보낸 접근요청페이지들을 볼 수 있다. 사전 파일에 들어있는 URL들을 확인할 수 있다.

 

 

 

 

 

지금까지 내용을 요약하면 Nmap Nse에서 제공하는 http-enum.nse 도구를 이용해 웹 스캔을 진행하였고 phpMyAdmin과 같은 취약한 페이지를 찾을 수 있었다. 그리고 웹 스캔 통신 과정을 WireShark로 캡쳐하여 해당 도구가 어떤 식으로 디렉토리를 찾아내서 목록화하는지 조금 더 자세하게 확인하였다.

 

 

댓글