### Common ```bash sudo nmap -sS <IP> -Pn -n --open -p- -oN tcpAll sudo nmap <IP> --min-rate 4000 -Pn -n -p- -N tcpAll sudo nmap -sC -sV <IP> -p <open ports> -oN tcpDetailed sudo nmap -sU --min-rate 4000 -p- udpAll ``` ```bash nmap -sT <IP> # Connect scan, full TCP connection sudo nmap -sS <IP> # SYN scan, faster, requires elevated privilege sudo nmap -sU <IP> # UDP scan, with sudo required to access raw sockets sudo nmap -sU -sS <IP> # UDP + SYN ``` ### Network Sweep example ```bash nmap -v -sn 192.168.50.1-253 -oN ping-sweep.txt Host: 192.168.50.10 () Status: Up Host: 192.168.50.15 () Status: Down ... grep Up ping-sweep.txt | cut -d " " -f 2 192.168.50.10 192.168.50.20 ``` ### NSE (Nmap Scripting Engine) located in `/usr/share/nmap/scripts` directory ### Port scanning flow in a network ```bash nmap -sn 192.168.123.0/24 -oN pingscan # ping scan to identify live hosts grep 192 pingscan | cut -d " " -f 5 > pingscanIPs # Extract IPs of live hosts sudo nmap -iL pingscanIPs -Pn -n --open -p- # port scanning on live hosts ``` | 옵션 | 설명 | | ----------- | ----------------------------------------------------- | | `-sS` | **TCP SYN 스캔 (Stealth Scan)** – 빠르고 탐지 어려움 | | `-sT` | **TCP Connect 스캔** – 일반적인 TCP 연결 (권한 없이도 사용 가능) | | `-sU` | **UDP 스캔** – 느리지만 UDP 서비스 식별에 필요 | | `-sV` | **서비스 버전 식별** – 실행 중인 서비스의 상세 버전 확인 | | `-sC` | **기본 스크립트 실행** – NSE(스크립트 엔진)의 기본 스크립트 사용 | | `-A` | `-sV -sC -O -traceroute` 조합 (종합적인 탐지) | | `-O` | **OS 추측** – 대상 운영체제 감지 시도 | | `-Pn` | **핑 스킵** – 호스트가 응답하지 않아도 무조건 스캔 | | `-sn` | **핑 스캔만 수행** – 포트 스캔 없이 호스트 살아있는지만 확인 | | `-p` | **포트 지정** – 스캔할 포트 범위 설정 (`-p 22,80,443`, `-p-` 전체 등) | | `-T0`~`-T5` | **속도 조절** – `T4`는 빠른 스캔, `T0`은 가장 느리게 (스텔스용) | | `-n` | **DNS 조회 생략** – 빠른 스캔 (IP만 사용) | | `-v`, `-vv` | **Verbose 모드** – 스캔 진행 상황 자세히 표시 | | `-oN` | **일반 텍스트 출력** – `nmap.txt`처럼 저장 | | `-oG` | **grep 가능한 출력 형식** – 자동화/스크립트에 적합 | | `-oX` | **XML 출력** – 툴 연동용, 예: Metasploit | | `--script` | **NSE 스크립트 지정 실행** – `--script=ftp-anon,http-title` 등 |