Nmap, 또는 네트워크 매퍼는 네트워크 전반의 기능과 침투 테스트를 위한 다양한 도구를 제공하는 핵심적인 프로그램입니다. 여기에는 포트 스캐닝과 취약점 감지 등이 포함됩니다.
특히 Nmap 스크립팅 엔진(NSE)은 Nmap의 가장 강력하고 인기 있는 기능 중 하나입니다. 이러한 NSE 스크립트는 침투 테스터나 해커가 일반적으로 알려진 취약점을 탐지하는 데 활용됩니다. 즉, Nmap 취약점 스캔 스크립트는 보안 전문가가 시스템의 약점을 찾는 데 필수적인 도구입니다.
CVE(Common Vulnerabilities and Exposures)는 공개된 보안 문제에 대한 정보 데이터베이스입니다. 이 데이터베이스는 정보 시스템의 보안과 관련된 취약점 및 위협을 식별하는 데 있어서 중요한 참조 모델 역할을 합니다.
본 글에서는 Nmap을 활용하여 취약점을 스캔하는 여러 가지 방법을 자세히 알아보도록 하겠습니다.
지금부터 시작해 보겠습니다!
Nmap 설치
Nmap은 대부분의 리눅스 배포판에 기본적으로 설치되어 있습니다. 만약 설치되어 있지 않다면 다음 명령어를 사용하여 간단하게 설치할 수 있습니다:
sudo apt-get install nmap
또는 공식 Git 저장소에서 복제하여 설치할 수도 있습니다.
git clone https://github.com/nmap/nmap.git
저장소를 복제한 후 해당 디렉토리로 이동하여 다음 명령어를 실행하여 필요한 설정을 완료합니다:
./configure make sudo make install
최신 버전의 Nmap과 Windows, macOS, Linux(RPM)용 설치 프로그램은 여기에서 다운로드할 수 있습니다.
Nmap을 이용한 취약점 스캔
Nmap 검색 엔진에서 가장 널리 사용되는 CVE 탐지 스크립트로는 nmap-vulners, vulscan, vuln 등이 있습니다. 이러한 스크립트들을 활용하면 시스템의 보안 결함에 대한 핵심 정보를 얻을 수 있습니다.
Nmap Vulners
Nmap Vulners는 가장 널리 알려진 취약점 스캐너 중 하나입니다. 이 도구의 설정 방법과 기본적인 CVE 스캔을 실행하는 과정을 살펴보겠습니다. Nmap 스크립트 엔진은 HTTP 응답을 분석하여 특정 스크립트에 대한 CPE를 식별합니다.
설치 방법
nmap-vulners 스크립트를 설치하려면 먼저 Nmap 스크립트 디렉토리로 이동해야 합니다. 다음 명령어를 사용하여 이동할 수 있습니다:
cd /usr/share/nmap/scripts/
다음 단계는 Git 저장소를 복제하는 것입니다:
git clone https://github.com/vulnersCom/nmap-vulners.git
Git 저장소 복제 후에는 별도의 구성 작업이 필요하지 않습니다. 해당 도구는 자동으로 설치됩니다.
ls 명령어를 사용하면 Nmap-vulners 데이터베이스에 있는 NSE 스크립트 목록을 확인할 수 있습니다. 터미널에는 .nse 확장자를 가진 모든 스크립트가 표시됩니다.
사용법
NSE 스크립트의 사용법은 간단합니다. Nmap 명령어에 -script 인수를 추가하여 사용할 NSE 스크립트를 지정하기만 하면 됩니다.
nmap -sV --script vulners [--script-args mincvss=<arg_val>] <target>
NSE 스크립트를 사용할 때 “-sV” 인수를 전달하는 것을 잊지 마십시오. Nmap-vulners는 Nmap에서 버전 정보를 얻지 못하면 Vulners 익스플로잇 데이터베이스에 접근할 수 없습니다. 따라서 -sV 매개변수는 반드시 필요합니다.
예시 명령어
기본적인 명령어 구문은 매우 간단합니다. “-script” 옵션을 사용하여 스크립트를 호출하고 취약점 엔진과 스캔 대상을 지정하면 스캔이 시작됩니다.
nmap -sV --script nmap-vulners/ <target>
특정 포트만 스캔하려면 명령어 끝에 “-p” 옵션을 추가하고 스캔하고자 하는 포트 번호를 지정하면 됩니다.
nmap -sV --script nmap-vulners/ <target> -p80,223
Nmap – 취약점 스크립트
NSE 스크립트는 각 스크립트가 속하는 미리 정의된 범주에 따라 분류됩니다. 인증, 브로드캐스트, 무차별 대입, 침입, 악성코드, 안전, 버전, 그리고 취약점 등이 그 예입니다. 모든 NSE 스크립트 범주 유형과 사용법에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
특히 “취약점” 범주에 속하는 스크립트들은 알려진 특정 취약점을 찾아내고, 만약 대상 시스템에서 해당 취약점이 식별될 경우에만 관련 정보를 보고합니다.
nmap -sV --script vuln <target>
Nmap Vulscan
Vulscan은 Nmap이 서비스 및 버전 감지 결과를 바탕으로 대상 시스템의 취약점을 탐지하는 데 유용한 NSE 스크립트입니다. Vulscan은 Nmap을 취약점 스캐너로 변환하는 일종의 모듈과 같습니다. Nmap 옵션 -sV는 시스템에서 감지된 취약점에 대한 잠재적인 익스플로잇을 식별하는 데 활용되는 서비스별 버전 감지 기능을 제공합니다.
현재 다음의 사전 설치된 데이터베이스를 사용할 수 있습니다:
- exploitdb.csv
- osvdb.csv
- securitytracker.csv
- openvas.csv
- scipvuldb.csv
- xforce.csv
- securityfocus.csv
- cve.csv
설치
Vulscan을 설치하려면 먼저 Nmap 스크립트 디렉토리로 이동해야 합니다. 다음 명령어를 사용하여 이동할 수 있습니다:
cd /usr/share/nmap/scripts/
다음 단계는 Git 저장소를 복제하고 필요한 모든 설정을 완료하는 것입니다.
git clone https://github.com/scipag/vulscan.git ln -s `pwd`/scipag_vulscan /usr/share/nmap/scripts/vulscan
Vulscan은 로컬에 저장된 사전 구성된 데이터베이스를 사용합니다. 데이터베이스를 업데이트하려면 업데이트 프로그램 디렉토리로 이동해야 합니다. 터미널에 다음 명령어를 입력하여 업데이트 프로그램 디렉토리로 이동합니다:
cd vulscan/utilities/updater/
그 다음, 시스템에서 실행할 파일의 권한을 변경합니다:
chmod +x updateFiles.sh
마지막으로, 다음 명령어를 사용하여 익스플로잇 데이터베이스를 업데이트합니다:
./updateFiles.sh
사용법
이제 vulscan을 사용하여 Nmap 취약점 스캔을 실행해 보겠습니다. vulscan NSE 스크립트는 nmap-vulners와 동일한 방식으로 사용할 수 있습니다.
nmap -sV --script vulscan <target>
기본적으로 Vulscan은 모든 데이터베이스를 동시에 검색합니다. 모든 데이터베이스를 사용하여 정보를 조회하는 데는 상당한 시간이 소요될 수 있습니다. vulscandb 매개변수를 사용하면 한 번에 하나의 CVE 데이터베이스만 지정하여 스캔할 수 있습니다.
--script-args vulscandb=database_name
예시 명령어
nmap -sV --script vulscan --script-args vulscandb=exploit.csv <target> -p 80,233
개별 취약점 스캔
개별 취약점 스캔은 각 범주 내의 특정 스크립트를 사용하여 수행할 수도 있습니다. 다음은 600개 이상의 NSE 스크립트와 139개의 NSE 라이브러리 목록입니다.
예시
- http-csrf: 이 스크립트는 CSRF(Cross-Site Request Forgery) 취약점을 탐지합니다.
nmap -sV --script http-csrf <target>
- http-sherlock: 웹 애플리케이션의 “shellshock” 취약점을 악용하려고 시도합니다.
nmap -sV --script http-sherlock <target>
- http-slowloris-attack: 이 스크립트는 실제 DoS 공격을 하지 않고 대상 시스템이나 웹 서버에 Slowloris DoS 공격 취약점이 있는지 확인합니다.
nmap -sV --script http-slowloris-check <target>
- http-vmware-path-vuln: VMWare ESX, ESXi 및 Server 시스템이 경로 순회 취약점에 노출되어 있는지 검사합니다.
nmap -sV --script http-vmware-path-vuln <target>
- http-passwd: 웹 서버가 디렉토리 탐색에 취약한지 확인하기 위해 /etc/passwd 또는 boot.ini 파일을 검색합니다.
nmap -sV --script http-passwd <target>
- http-internal-ip-disclosure: 호스트 헤더 없이 HTTP/1.0 요청을 보낼 때, 이 검사는 웹 서버가 내부 IP 주소를 누출하는지 확인합니다.
nmap -sV --script http-internal-ip-disclosure <target>
- http-vuln-cve2013-0156: DOS 공격 및 명령 삽입에 취약한 Ruby on Rails 서버를 감지합니다.
nmap -sV --script http-vuln-cve2013-0156 <target-address>
마지막으로, 다음은 “취약점” 범주에 속하는 모든 NSE 스크립트 목록입니다: 취약점 관련 스크립트
시스템은 Nmap 스캔을 감지할 수 있습니까?
정찰 단계는 윤리적 해킹과 침투 테스트의 첫 번째 단계입니다. 해커는 이 정찰 단계를 통해 공격할 시스템의 취약점과 약점을 파악합니다. 따라서, 시스템 방어 체계는 이러한 활동을 감지할 수 있어야 합니다.
만약 SIEM(보안 정보 및 이벤트 관리) 도구나 방화벽 등의 방어 수단을 사용하고 있다면, Nmap 스캔 시 경고를 받을 수 있습니다. 다음은 사이버 공격으로부터 기업과 조직을 보호하는 데 유용한 주요 SIEM 도구 목록입니다. 이러한 도구는 Nmap 스캔 기록에도 도움이 될 수 있습니다. 취약점 스캔은 조기 발견을 통해 시스템에 대한 향후 피해를 방지할 수 있다는 점에서 매우 중요합니다.
결론
이 글이 Nmap을 활용한 취약점 스캔 방법을 배우는 데 도움이 되었기를 바랍니다.
만약 오픈 소스 웹 보안 스캐너 목록에도 관심이 있다면, 관련 정보를 찾아보는 것을 추천합니다.