기본 스캔
스캔 대상
nmap 192.168.1.1 # single host nmap 192.168.1.0/24 # entire subnet nmap 192.168.1.1-50 # IP range nmap -iL targets.txt # hosts from file
대상 지정
192.168.1.1단일 IP 주소
192.168.1.0/24CIDR 표기 (256 호스트)
192.168.1.1-254IP 범위
example.com호스트명 (IP로 해석)
-iL file.txt파일에서 대상 읽기
--exclude 192.168.1.1특정 호스트 제외
--excludefile skip.txt파일에서 제외할 호스트 읽기
포트 스캔
스캔 유형
-sSTCP SYN 스캔 (기본, 스텔스, root 필요)
-sTTCP 연결 스캔 (전체 핸드셰이크, root 불필요)
-sUUDP 스캔 (느림, 자주 필터링됨)
-sATCP ACK 스캔 (방화벽 감지)
-sNTCP NULL 스캔 (플래그 없음)
-sFTCP FIN 스캔 (FIN 플래그만)
-sXXmas 스캔 (FIN+PSH+URG 플래그)
포트 선택
nmap -p 80,443 target # specific ports nmap -p 1-1000 target # port range nmap -p- target # all 65535 ports nmap --top-ports 100 target # most common 100 ports
포트 상태
open애플리케이션이 연결 수락 중
closed포트 도달 가능하지만 서비스 없음
filtered방화벽 차단으로 상태 확인 불가
unfiltered포트 접근 가능, open/closed 미확인
open|filteredopen인지 filtered인지 판단 불가
호스트 탐색
탐색 방법
-sn핑 스캔만 수행 (포트 스캔 없음)
-Pn호스트 탐색 건너뜀 (모두 활성으로 처리)
-PS 80,443포트에서 TCP SYN 탐색
-PA 80TCP ACK 탐색
-PU 53UDP 탐색
-PEICMP 에코 요청
-PRARP 탐색 (로컬 네트워크)
네트워크 스윕
nmap -sn 192.168.1.0/24 # ping sweep subnet nmap -sn -n 10.0.0.0/24 # sweep, skip DNS nmap -sn -PR 192.168.1.0/24 # ARP scan (fastest)
서비스 감지
버전 감지
nmap -sV target # detect service versions nmap -sV --version-intensity 5 target # deeper probing nmap -sV --version-all target # try every probe (slow) nmap -A target # OS + version + scripts + traceroute
서비스 플래그
-sV열린 포트에서 서비스/버전 탐색
--version-intensity 0-9탐색 강도 (기본 7)
--version-light가벼운 탐색 (강도 2)
--version-all모든 탐색 시도 (강도 9)
-A공격적: -sV -O --script=default -traceroute
-sC기본 NSE 스크립트 실행
OS 감지
OS 핑거프린팅
nmap -O target # OS detection (needs root) nmap -O --osscan-limit target # only scan promising hosts nmap -O --osscan-guess target # aggressive OS guessing nmap -A target # includes OS detection
OS 감지 플래그
-OOS 감지 활성화
--osscan-limit열린+닫힌 TCP 포트 없는 호스트 건너뜀
--osscan-guess더 적극적으로 OS 추측
--max-os-tries N호스트당 최대 OS 감지 시도 횟수
스크립트 (NSE)
스크립트 사용
nmap --script=default target # default category nmap --script=vuln target # vulnerability scripts nmap --script=http-headers target nmap --script="http-*" target # wildcard match
스크립트 카테고리
default안전하고 유용한 스크립트 (-sC 단축)
vuln알려진 취약점 확인
safe비침투적 스크립트
intrusive대상 충돌 또는 IDS 트리거 가능
discovery네트워크 및 서비스 탐색
auth인증 관련 검사
brute브루트포스 자격증명 테스트
exploit적극적인 취약점 이용 시도
유용한 스크립트
http-title웹 페이지 제목 가져오기
ssl-certSSL 인증서 상세 정보 표시
ssh-hostkeySSH 호스트 키 핑거프린트 표시
dns-bruteDNS 서브도메인 열거
smb-os-discoverySMB를 통해 Windows OS 감지
vuln모든 취약점 검사 실행
출력 형식
출력 옵션
nmap -oN scan.txt target # normal text output nmap -oX scan.xml target # XML output nmap -oG scan.gnmap target # grepable output nmap -oA scan_all target # all formats at once
출력 플래그
-oN file파일에 일반 텍스트 출력
-oX fileXML 출력 (도구/파싱용)
-oG file그레퍼블 출력 (호스트당 한 줄)
-oA basename세 가지 형식 모두 (basename.nmap/xml/gnmap)
-v상세 출력 증가 (-vv로 더 많이)
-d디버그 출력 (-dd로 더 많이)
--open열린 포트만 표시
--reason포트 상태의 이유 표시
타이밍 및 성능
타이밍 템플릿
-T0 (paranoid)매우 느림, IDS 우회 (탐색 간 5분)
-T1 (sneaky)느림, IDS 우회 (탐색 간 15초)
-T2 (polite)속도 감소, 대역폭 절약
-T3 (normal)기본 타이밍
-T4 (aggressive)빠름, 안정적인 네트워크 가정
-T5 (insane)최고속, 결과 누락 가능
세밀한 조정
--min-rate 1000초당 최소 1000 패킷 전송
--max-rate 500초당 최대 500 패킷
--max-retries 2최대 탐색 재전송 횟수
--host-timeout 30m30분 초과 시 호스트 건너뜀
--scan-delay 1s탐색 간 지연
--min-parallelism 10최소 병렬 탐색 그룹 수
방화벽 우회
우회 기법
-f패킷 단편화 (8바이트 청크)
-D RND:5무작위 IP 5개로 디코이 스캔
-S spoof_ip소스 IP 스푸핑 (원시 패킷 필요)
-e eth0특정 네트워크 인터페이스 사용
--source-port 53특정 소스 포트 사용 (예: DNS)
--data-length 25패킷에 임의 데이터 추가
--spoof-mac 0MAC 주소 무작위화
우회 예시
nmap -f -D RND:3 target # fragments + decoys nmap --source-port 53 target # DNS port (often allowed) nmap -T1 --scan-delay 5s target # slow to evade IDS
일반 패턴
빠른 정찰
nmap -T4 -F target # fast common ports nmap -T4 -A -v target # OS + service detection nmap -sV --top-ports 1000 target # top 1000 + versions
종합 스캔
# Full TCP + service + OS + scripts nmap -sS -sV -O -sC -p- -T4 -oA full target # UDP scan on common ports nmap -sU --top-ports 50 target
웹 서버 감사
nmap -p 80,443 --script=http-title,http-headers,\ ssl-cert,http-methods target # Check for open proxies and vulns nmap -p 80,443,8080 --script=http-open-proxy,vuln target
네트워크 인벤토리
# Discover all live hosts with OS info nmap -sn 192.168.1.0/24 -oG - | grep "Up" # Service inventory for subnet nmap -sV -T4 192.168.1.0/24 -oX inventory.xml