콘텐츠로 이동

서비스 열거 & NSE

MITRE ATT&CK: T1046 Network Service Discovery · T1595.002 Vulnerability Scanning · 전술: Reconnaissance / Discovery · 최종 업데이트: 2026-10-13

요약

열린 포트는 숫자일 뿐입니다. -sV가 그것을 제품과 버전으로 바꾸고, NSE 스크립트가 서비스에 더 물어봅니다. 그 버전이 CVE를 찾는 단서가 됩니다.

버전 탐지

sudo nmap 10.129.2.28 -p- -sV --stats-every=5s -v
플래그 의미
-sV 열린 포트를 프로빙해 서비스와 버전 식별
-v 열린 포트를 찾는 즉시 출력
--stats-every=5s 5초마다 진행 상황 출력
--version-trace -sV가 쓴 프로브와 매칭 결과 표시

Nmap은 먼저 핸드셰이크 뒤 서버가 스스로 보내는 배너를 읽고, 안 되면 시그니처 프로브를 보냅니다 (더 느림). 출력에는 배너 중 파싱된 부분만 나오므로 쓸모 있는 정보가 가려질 수 있습니다. 비교해 보세요.

sudo nmap 10.129.2.28 -p 25 -sV -Pn -n --disable-arp-ping --packet-trace
nc -nv 10.129.2.28 25

Nmap은 Postfix smtpd만 보여 줬지만 nc는 220 inlane ESMTP Postfix (Ubuntu)를 돌려줬습니다. OS 계열이 원문 배너에 있었던 것입니다. Nmap 안에서는 --packet-trace/--version-trace로, 원문 대화를 보고 싶으면 nc로 확인합니다. 둘 다 됩니다. 배너는 관리자가 지우거나 위조할 수 있으니 힌트로만 보세요.

NSE 카테고리

스크립트는 Lua로 작성합니다. 카테고리는 14개: auth, broadcast, brute, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, vuln.

sudo nmap <ip> -sC                                  # default category
sudo nmap <ip> --script vuln                        # a category
sudo nmap <ip> -p 25 --script banner,smtp-commands  # named scripts
sudo nmap <ip> -p 80 -A                             # -sV -O --traceroute -sC
sudo nmap <ip> -p 80 -sV --script vuln              # vuln needs -sV for useful matches

읽는 법: http-enum이 /wp-login.php와 WordPress 버전을 보여 주면 CMS와 정확한 버전을 찾아볼 수 있고, smtp-commands에 VRFY가 있으면 사용자 열거가 가능하며, vulners는 탐지된 CPE에 대한 CVE ID와 CVSS 점수를 출력합니다.

vulners/vuln 결과는 버전 매칭일 뿐 실제 익스플로잇 가능 여부가 아닙니다. 보고서에 쓰기 전에 직접 검증하세요.

펜테스터 관점

  • 발견한 포트에 -sC -sV가 표준 2차 스캔입니다.
  • intrusive, dos, brute, exploit, fuzzer는 계정 잠금이나 서비스 중단을 일으킬 수 있습니다. 범위가 허용하지 않으면 운영 환경에서 돌리지 마세요.
  • -A는 OS 탐지와 traceroute까지 하므로 랩에서는 괜찮지만, 약한 망에서는 한 번 더 생각하세요.

방어자 관점

  • NSE HTTP 스크립트는 바꾸지 않으면 식별 가능한 User-Agent를 보냅니다 (http.log/프록시 로그의 Nmap Scripting Engine).
  • -sV는 이상한 프로브 문자열의 짧은 연결을 많이 만들어 서비스 쪽에 잘못된 요청이 쌓입니다. 웹 서버는 400/404 폭증, SMTP는 알 수 없는 명령을 기록합니다.
  • 배너를 줄이는 것(ServerTokens Prod, 리버스 프록시)은 버전 기반 CVE 조회를 늦출 뿐 그 자체로 해결책은 아닙니다.

CPTS 시험 메모

CTF식 플래그는 배너나 NSE 출력(banner, http-title, smtp-commands)에 있는 경우가 많습니다. -sV에 없으면 --script banner로 다시 돌리거나 직접 접속하세요.