Step 81. nmap 완전 정복 — 정찰의 표준 도구

Step 81. nmap 완전 정복 — 정찰의 표준 도구

Level 1 — 프로그래밍과 컴퓨터 내부 | 난이도 ★★★☆☆ | 예상 소요 시간 3시간

전제: Step 79~80을 마쳤다. 포트 스캔의 원리(connect, SYN)를 직접 코드로 만들어 봤다. 리눅스 터미널(WSL 포함)이 준비되어 있다.

  • 준비물: 리눅스 터미널 하나와 nmap. 오늘의 스캔 대상은 철저히 127.0.0.1(내 컴퓨터 자신)뿐입니다.
  • 주의: ⚠️ 이 챕터의 실습은 내 랩·합법 플랫폼 전용입니다. 허가 없는 시스템에 적용하면 범죄입니다. 이 챕터의 모든 실측은 WSL 리눅스(Nmap 7.94SVN)에서 127.0.0.1만을 대상으로 수행했습니다.

Step 79에서 우리는 포트 스캐너를 직접 만들었습니다. 잘 동작했지만, 세상에는 이 일을 25년 넘게 갈고닦아 온 도구가 있습니다. nmap(Network Mapper, 네트워크 지도 제작기)입니다. 침투 테스트 보고서의 첫 페이지에는 거의 항상 nmap의 출력이 붙습니다. 지난 두 챕터에서 원리를 손으로 만들었으니, 오늘은 그 원리가 녹아든 표준 도구를 다룹니다. nmap의 출력은 압축된 정보입니다 — 여러분은 이미 그 압축을 푸는 지식을 갖고 있습니다.


1. 학습 목표

이 챕터를 끝내면 다음을 할 수 있습니다:

  • nmap의 주요 옵션(-sT/-sS/-sV/-O/--script)을 상황에 맞게 고른다
  • nmap 출력을 읽고 "열린 포트, 서비스, 버전, 운영체제"를 정리한다
  • 기본 스캔(1000개 포트)과 전수 스캔(-p-)의 차이를 실험으로 설명한다
  • 스캔 결과를 -oN 파일로 남겨 재현 가능한 기록을 만든다

2. 배경 지식 — 오늘의 도구와 개념

오늘의 도구 한눈에 보기

구분 내용
언어·환경 리눅스 터미널(WSL 또는 랩 VM), nmap 7.94
오늘의 명령 nmap 대상, -sT/-sS(스캔 방식), -sV(버전), -O(운영체제), -sn(핑 스캔), --script(NSE), -p-(전수), -oN(파일 저장)
필요한 개념 포트의 상태(open/closed), 배너, TCP 3-way 핸드셰이크, Step 79~80의 스캔 원리
오늘의 산출물 내 컴퓨터 정찰 리포트 scan_localhost.txt

2-1. 스캔 방식의 지도

nmap은 여러 스캔 방식을 옵션으로 고릅니다. 우리가 아는 원리와 연결해 봅시다.

  • -sT (connect 스캔): Step 79에서 만든 방식 그대로입니다. 연결을 끝까지 완성하므로 정확하지만, 상대 로그에 접속 기록이 남습니다. 권한이 없을 때 쓰는 기본값입니다.
  • -sS (SYN 스캔): Step 80에서 만든 방식입니다. SYN을 보내고 대답(SYN-ACK/RST)만 듣고 연결은 완성하지 않습니다. 빠르고 조용하지만 날 패킷을 만들어야 하므로 관리자 권한(sudo)이 따라옵니다.
  • -sU (UDP 스캔): TCP가 아닌 UDP 포트(DNS 53번 같은)를 검사합니다. 대답이 없는 게 정상인 규약이라 느리고 까다롭습니다.

2-2. 탐지 옵션 — "무엇이 열렸나"에서 "누가 있는가"로

포트 번호만으로는 부족합니다. 같은 80번이라도 어떤 웹서버 프로그램인지가 중요하니까요.

  • -sV (버전 탐지): 열린 포트에 접속해 배너를 읽고, 필요하면 시험 신호를 보내 서비스의 이름과 버전을 알아냅니다. 우리의 배너 그래빙의 진화형입니다.
  • -O (운영체제 추측): 응답 패킷의 미세한 습관(TTL 초깃값, 창 크기 등)으로 운영체제를 추측합니다. 추측이지 확정이 아니라는 점을 기억하세요 — 오늘 실측에서 이 한계가 그대로 드러납니다.
  • -sC / --script (NSE 스크립트): nmap에는 수백 개의 검사 스크립트(NSE, Nmap Scripting Engine)가 내장되어 있습니다. 웹페이지 제목 읽기, 알려진 취약점 확인 등을 자동으로 수행합니다.

2-3. 범위와 출력

  • 기본 스캔: 유명한 포트 1000개만 검사합니다. 빠르지만 놓치는 것이 있습니다.
  • -p-: 포트 전부(1~65535)를 검사합니다.
  • --top-ports N: 가장 흔한 포트 N개만 검사합니다.
  • -oN 파일: 결과를 텍스트 파일로 저장합니다. 정찰의 산출물은 항상 파일로 남깁니다.

3. 따라 하기

3-1. 준비 — 연습용 서비스 하나 열기

텅 빈 컴퓨터를 스캔하면 배울 것이 없으니, 내 컴퓨터 안에 연습용 웹 서버를 하나 엽니다. 파이썬에 기본 포함된 간이 서버입니다.

입력 (터미널 1)

mkdir -p steplab && cd steplab
echo "<h1>hello plain world</h1>" > index.html
python3 -m http.server 8000

읽는 법: "8000번 포트에서 HTTP 서비스 중"이라는 뜻입니다. 이 창은 실습 내내 닫지 마세요.

3-2. 첫 스캔 — 기본 명령

입력 (터미널 2)

nmap 127.0.0.1

출력 (2026-09-09 실측):

Starting Nmap 7.94SVN ( https://nmap.org ) at 2026-09-09 13:33 KST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000020s latency).
Not shown: 999 closed tcp ports (reset)
PORT     STATE SERVICE
8000/tcp open  http-alt

Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

읽는 법: 세 열 — 포트/규약, 상태(STATE), 서비스 이름 — 입니다. 기본 스캔은 유명한 포트 1000개만 검사했고, 그중 999개는 닫혀 있으며 8000번 하나만 열려 있습니다. 여기서 SERVICE 열의 http-alt는 포트 번호에서 온 관례적 추정이지, 실제 확인이 아닙니다. 진짜 확인은 -sV입니다.

: 가장 단순한 형태의 출력 구조를 익히는 단계입니다. 이 표의 모양은 앞으로 수백 번 보게 될 것입니다.

3-3. 버전 탐지 — 진짜 정체 밝히기

입력

nmap -sV -p 8000 127.0.0.1

출력 (2026-09-09 실측):

PORT     STATE SERVICE VERSION
8000/tcp open  http    SimpleHTTPServer 0.6 (Python 3.12.3)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.21 seconds

읽는 법: VERSION 열에 진짜 정체가 드러났습니다. http-alt라는 관례 이름이 아니라 "파이썬 3.12.3의 SimpleHTTPServer 0.6"라는 실체입니다. 그리고 시간을 보세요 — 기본 스캔은 0.07초였는데 버전 탐지는 6.21초 걸렸습니다. nmap이 실제로 접속해서 배너를 읽고 시험 신호를 보낸 대가입니다.

: 침투 테스터의 리포트가 "포트가 열려 있다"가 아니라 "OpenSSH 8.9p1이 돌고 있다"로 쓰이는 이유가 여기 있습니다. 버전은 곧 알려진 취약점의 색인이기 때문입니다.

3-4. 예측해 보기 — -sT와 -sS의 결과는 다를까

예측입니다. 같은 대상을 -sT(connect)와 -sS(SYN)로 각각 스캔하면, 결과 표는 달라질까요?

입력

nmap -sT -p 8000 127.0.0.1
sudo nmap -sS -p 8000 127.0.0.1

출력 (2026-09-09 실측):

# -sT
8000/tcp open  http-alt
Nmap done: 1 IP address (1 host up) scanned in 0.01 seconds

# -sS
8000/tcp open  http-alt
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds

읽는 법: 두 결과의 포트 목록은 같습니다. 판별 근거(연결 완성 vs SYN의 대답)는 달라도 "열린 포트가 어디인가"라는 결론은 같습니다. 다른 것은 과정입니다 — 속도와, 상대 로그에 남는 흔적입니다.

: "방법이 달라도 결론이 같다"는 검증은 도구를 신뢰하는 근거가 됩니다. 반대로 결과가 다르게 나오는 날에는 방화벽이 둘을 다르게 대했다는 뜻이므로, 그 자체가 발견입니다.

3-5. 운영체제 추측 — 추측은 추측이다

입력

sudo nmap -O 127.0.0.1

출력 (2026-09-09 실측, 일부):

PORT     STATE SERVICE
8000/tcp open  http-alt
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.94SVN%E=4%D=9/9%OT=8000%CT=1%CU=34824%PV=N%DS=0%DC=L%G=Y%TM=6AA0E19E ...

Network Distance: 0 hops
Nmap done: 1 IP address (1 host up) scanned in 11.27 seconds

읽는 법: 루프백(자기 자신) 대상이라 응답이 너무 깔끔한 탓인지, nmap은 "정확히 맞는 운영체제를 못 찾겠다(No exact OS matches)"고 솔직하게 답하고 지문(fingerprint)만 출력했습니다. 그리고 11.27초나 걸렸습니다 — 운영체제 탐지는 여러 종류의 시험 패킷을 보내는 무거운 검사입니다.

: 도구의 출력이 도구의 한계를 포함한다는 좋은 예입니다. -O의 답은 진단이 아니라 단서이고, "모르겠다"도 정직한 답입니다.

3-6. 전수 검사 — 기본 스캔이 놓치는 것

입력

nmap -p- 127.0.0.1

출력 (2026-09-09 실측):

Not shown: 65533 closed tcp ports (reset)
PORT      STATE SERVICE
8000/tcp  open  http-alt
33211/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.35 seconds

읽는 법: 65535개 전부를 검사했더니 기본 스캔에 없던 포트가 하나 더 나왔습니다. 33211번, 서비스 이름조차 unknown입니다. 이 컴퓨터에서 조용히 돌고 있던 무언가(실제로는 컨테이너 관리 서비스)가 기본 스캔의 시야 밖에 있던 것입니다. 65535개 검사에 0.35초 — 루프백은 대답이 즉시 오므로 빠릅니다.

: 공격자는 기본 1000개 밖의 포트에 숨는 서비스를 찾습니다. 방어자도 같은 눈으로 "우리 장비에 내가 모르는 열린 문이 있나"를 봐야 합니다. 전수 검사는 그 양쪽의 기본기입니다.

3-7. unknown의 정체 — -sV도 모르는 것이 있다

저 33211번에 버전 탐지를 걸어 봅시다.

입력

nmap -sV --version-intensity 2 -p 33211 127.0.0.1

출력 (2026-09-09 실측, 일부):

PORT      STATE SERVICE VERSION
33211/tcp open  unknown
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint ...
SF:(GetRequest,8F,"HTTP/1\.0\x20404\x20Not\x20Found\r\n ... \r\n404:\x20Pa
SF:ge\x20Not\x20Found") ...

Nmap done: 1 IP address (1 host up) scanned in 6.20 seconds

읽는 법: "데이터를 내놓긴 하는데 무슨 서비스인지 모르겠다(unrecognized despite returning data)"는 답입니다. 지문을 보면 이 서비스가 HTTP 비슷하게 "404 Page Not Found"를 뱉는다는 단서가 보입니다 — nmap이 GET 요청을 시험 삼아 보냈고 404를 받은 것입니다. --version-intensity 2는 시험 신호의 강도를 낮추는 옵션으로, 까다로운 서비스와의 대화를 짧게 끝냅니다.

: -sV는 만능이 아닙니다. 출력에 없다고 서비스가 없는 게 아니고, 이름이 있다고 그게 진짜인 것도 아닙니다. 비판적으로 읽는 눈이 실력입니다.

3-8. NSE 스크립트 — 자동 조사관 붙이기

입력

nmap --script http-title -p 8000 127.0.0.1

출력 (2026-09-09 실측):

PORT     STATE SERVICE
8000/tcp open  http-alt
|_http-title: Site doesn't have a title (text/html).

Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds

읽는 법: |_로 시작하는 들여쓴 줄이 NSE 스크립트가 추가로 캐낸 정보입니다. http-title 스크립트가 웹페이지에 접속해 제목을 읽었고, 우리의 연습 페이지에는 제목이 없다고 보고했습니다. 스크립트가 무엇을 하는지는 물어볼 수 있습니다.

입력

nmap --script-help http-title

출력 (2026-09-09 실측, 일부):

http-title
Categories: default discovery safe
  Shows the title of the default page of a web server.
  The script will follow up to 5 HTTP redirects, using the default rules in the http library.

: nmap의 진짜 힘은 이 스크립트 생태계에 있습니다. 수백 개를 외울 수는 없으니, --script-help로 물어보며 조합하는 능력이 숙련의 본체입니다.

3-9. 핑 스캔과 파일 저장

포트를 보기 전에 "살아 있니?"만 묻는 핑 스캔과, 결과를 파일로 남기는 법입니다.

입력

nmap -sn 127.0.0.1
nmap -sV --version-intensity 2 -p- -oN scan_localhost.txt 127.0.0.1

출력 (2026-09-09 실측):

# -sn
Nmap scan report for localhost (127.0.0.1)
Host is up.
Nmap done: 1 IP address (1 host up) scanned in 0.00 seconds

저장된 파일 scan_localhost.txt의 첫 줄을 보면 (2026-09-09 실측):

# Nmap 7.94SVN scan initiated Wed Sep  9 13:37:10 2026 as: nmap -sV --version-intensity 2 -p- -oN scan_full.txt 127.0.0.1

읽는 법: -oN으로 저장한 파일은 첫 줄에 스캔 일시와 사용한 명령 전문이 자동으로 적힙니다. "재현 가능한 기록"이 공짜로 만들어집니다. 이 파일은 다음 챕터(Step 82)에서 파이썬으로 파싱해 위험도 표로 가공할 재료입니다.

: 초보는 스캔하고 끝내지만, 실무자는 스캔하고 기록합니다. 석 달 뒤의 내가 "그때 이 장비에 뭐가 열려 있었지?"라고 물을 때 대답할 수 있는 사람은, 오늘 -oN으로 파일을 남긴 사람뿐입니다.


4. 미션과 연습문제

미션 — 내 컴퓨터 정찰 리포트

  1. 연습용 서비스를 하나 더 엽니다. 다른 포트(예: python3 -m http.server 8080)로 간이 서버를 추가하세요.
  2. nmap -sV -oN scan_localhost.txt 127.0.0.1으로 기본 스캔 리포트를 만들고, nmap -p- -oN scan_full.txt 127.0.0.1로 전수 스캔 리포트를 만듭니다.
  3. 두 파일을 비교해 "기본 스캔만으로는 놓치는 포트"를 노트에 적습니다.
  4. 전수 스캔에서 발견한 포트 중 내가 모르는 것이 있으면 -sV로 정체를 조사하고, 그 과정과 결론을 리포트 끝에 적습니다.
  5. 리포트 첫머리에 스캔 일시, 대상, 사용한 명령이 있는지 확인합니다(-oN이 자동 기록).

연습문제

문제 1. -sT-sS의 결과 표는 같은데도 왜 두 가지 방식이 존재하나요? "과정"에서 무엇이 다른지 설명해 보세요.

문제 2. 기본 스캔의 SERVICE 열에 http-alt라고 적혀 있고, -sV의 SERVICE 열에는 http라고 적혀 있습니다. 어느 쪽을 믿어야 하며 그 근거는 무엇인가요?

문제 3. 전수 스캔(-p-)에서 기본 스캔에 없던 33211/tcp open unknown이 발견됐습니다. 방어자 입장에서 이 발견의 의미와 다음 행동을 말해 보세요.

문제 4. -sV가 "1 service unrecognized despite returning data"라고 답했습니다. 무슨 뜻이며, 정체를 추리할 수 있는 단서가 출력의 어디에 있나요?


5. 모범 답안과 완료 기준

미션 모범 답안

미션 수행 예 (2026-09-09 실측 환경 기준):

# 1. 두 번째 연습 서비스
cd steplab && python3 -m http.server 8080

# 2. 두 리포트
nmap -sV -oN scan_localhost.txt 127.0.0.1
nmap -p- -oN scan_full.txt 127.0.0.1

기본 스캔 리포트에는 8000번과 8080번만 보이고, 전수 스캔 리포트에는 여기에 33211번 같은 "조용히 돌던 서비스"가 추가로 나타납니다 (실측 환경에서는 33211/tcp open unknown — 2026-09-09). 노트에는 "기본 1000개 밖에도 열린 문이 있을 수 있으므로, 점검은 전수 스캔으로 마무리한다"고 적습니다.

모르는 포트의 정체 조사 예:

nmap -sV --version-intensity 2 -p 33211 127.0.0.1
ss -tlnp | grep 33211    # 어느 프로그램이 열었는지 (관리자 권한 필요)

실측에서는 지문 속 404: Page Not Found 응답으로 "HTTP 비슷한 대답을 하는 서비스"임을 확인했고, ss 명령으로 컨테이너 관리 프로그램이 연 포트임을 최종 확인했습니다. 검증하는 법: ① 두 리포트 파일이 존재하고 첫 줄에 명령 전문이 있는가. ② "놓치는 포트"가 노트에 구체적 번호로 적혔는가. ③ 모르는 포트의 정체 추리 과정(어떤 명령을 썼고 무엇을 보고 판단했는지)이 기록됐는가.

연습문제 해답

문제 1 해답. 결론(열린 포트 목록)은 같지만 과정이 다릅니다. -sT는 연결을 끝까지 완성하므로 상대 서비스의 로그에 접속 기록이 남고, -sS는 악수를 중간에 멈추므로 흔적이 적고 빠릅니다. 권한 요구도 다릅니다 — -sS는 날 패킷을 만들어야 해서 관리자 권한이 필요합니다.

문제 2 해답. -sV 쪽을 믿습니다. 기본 스캔의 이름은 포트 번호에 대한 관례적 추정(번호표 조회)일 뿐 실제 확인이 아닙니다. -sV는 실제로 접속해 배너와 응답을 분석하므로 근거가 있습니다. 실측에서도 같은 8000번이 http-alt(추정)에서 http — SimpleHTTPServer 0.6(확인)으로 바뀌었습니다.

문제 3 해답. "내가 모르는 열린 문이 이 장비에 있다"는 뜻이며, 이것이 바로 공격 표면의 숨은 칸입니다. 다음 행동: -sV로 정체를 조사하고, ss -tlnp 같은 명령으로 어느 프로그램이 열었는지 확인한 뒤, 필요 없는 서비스면 끄거나 막습니다. 모르는 포트를 모른 채로 두는 것이 가장 나쁜 선택입니다.

문제 4 해답. "서비스가 응답은 하는데, nmap의 데이터베이스에 없는 모양"이라는 뜻입니다. 단서는 바로 아래에 인쇄되는 지문(fingerprint)에 있습니다 — 실측 지문에는 GetRequest 시험에 대한 응답으로 HTTP/1.0 404 Not Found가 적혀 있어, 이 서비스가 HTTP 형식으로 대답한다는 것을 읽어낼 수 있습니다.

완료 기준 체크리스트

  • [ ] 기본 스캔과 -sV의 SERVICE 열 차이를 설명할 수 있다
  • [ ] -sT-sS의 차이를 과정(흔적, 권한)으로 설명할 수 있다
  • [ ] -p- 전수 검사로 기본 스캔이 놓치는 포트를 찾아냈다
  • [ ] -O의 답이 "추측"임을 실험(No exact OS matches)으로 확인했다
  • [ ] NSE 스크립트를 하나 이상 사용해 봤다
  • [ ] -oN으로 재현 가능한 리포트 파일을 남겼다
  • [ ] 미션: 내 컴퓨터 정찰 리포트 두 부를 완성했다

6. 흔한 실수와 해결

벽 1. sudo 없이 -sS를 쓰니 오류가 나요

증상 (2026-09-09 실측, 일반 사용자로 실행):

You requested a scan type which requires root privileges.
QUITTING!

원인: SYN 스캔은 날 패킷을 직접 만드는 일이라 운영체제가 관리자에게만 허락합니다 (Step 80 복습).
해결: sudo를 붙이세요. 권한이 없는 환경에서는 -sT(connect 스캔)를 쓰면 됩니다 — 결론은 같습니다 (3-4절 실측 참조).

벽 2. -sV가 이상하게 오래 걸리거나 멈춘 것 같아요

증상 (2026-09-09 실측): 정체 불명 서비스에 기본 강도의 -sV를 걸었더니 한 포트에서 수십 초를 잡아먹고, 전수 스캔과 합치면 시간 제한에 걸려 Skipping host ... due to host timeout이 나오기도 했습니다.

원인: 연결은 잘 붙는데 대답을 얼렁뚱땅하는 서비스가 있으면, nmap이 시험 신호를 기다리며 시간을 씁니다.
해결: --version-intensity 2로 시험 강도를 낮추세요. 포트 하나 조사에 6초 안팎으로 줄어듭니다 (3-7절 실측). 전수+버전 조합은 마지막에, 필요한 포트만 골라서 하세요.

벽 3. 스캔해도 아무것도 안 열려 있다고 나와요

증상 (2026-09-09 실측, 연습 서버를 띄우기 전):

All 1000 scanned ports on localhost (127.0.0.1) are in ignored states.
Not shown: 1000 closed tcp ports (reset)

원인: 말 그대로 유명한 1000개 포트가 전부 닫혀 있는 것입니다. 고장이 아닙니다.
해결: 열린 문이 없다는 것도 유효한 진단 결과입니다. 연습을 위해 3-1의 간이 서버를 열고 다시 스캔하거나, -p-로 시야를 넓혀 보세요 — 실측 환경에서는 전수 검사에서 33211번이 발견됐습니다.

벽 4. Host seems down이라고 나와요

증상 (출력 예시): 분명 켜져 있는 장비인데 "꺼져 있는 것 같다"고 나옵니다.

원인: nmap은 스캔 전에 생사 확인(핑)을 하는데, 방화벽이 그 확인만 막는 경우가 있습니다.
해결: -Pn(생사 확인 생략) 옵션을 추가하세요. 단, 꺼진 대상에는 모든 포트에서 기다리니 시간이 길어집니다.

벽 5. SERVICE 열의 이름을 그대로 믿어요

증상: 9999/tcp open abyss를 보고 "abyss 서비스가 돌고 있구나"라고 리포트에 씁니다.
원인: 기본 스캔의 이름은 번호표의 관례일 뿐입니다. abyss는 9999번의 관례 이름이지 실체가 아닙니다.
해결: -sV로 확인하기 전까지 서비스 이름은 "추정"으로 표기하세요. 실측에서도 http-alt(추정)가 SimpleHTTPServer 0.6(실체)으로 정정됐습니다.


7. 정리

오늘의 개념

개념 한 줄 설명
정찰(reconnaissance) 공격·방어 공통의 첫 단계 — 대상의 열린 문을 파악하는 일
포트 상태 open(서비스 대기 중) / closed(닫힘, RST 응답) / filtered(방화벽)
관례 이름과 실체 SERVICE 열의 이름은 번호표 추정, 실체는 -sV가 확인
NSE nmap 내장 스크립트 엔진 — 제목 읽기, 취약점 점검 등 자동 조사
지문(fingerprint) 정체 불명 서비스의 응답 샘플 — 정체보다 "응답의 모양"을 보여 줌
공격 표면(attack surface) 밖으로 열린 접점의 총합 — 기본 스캔 밖의 포트까지 포함

오늘의 명령어

명령 하는 일
nmap 대상 유명한 1000개 포트 기본 스캔
nmap -sT / sudo nmap -sS connect 스캔 / SYN 스캔 (결론은 같고 흔적이 다름)
nmap -sV 서비스의 실제 이름과 버전 탐지 (느림)
sudo nmap -O 운영체제 추측 (추측일 뿐, 실패도 정직하게 보고)
nmap -sn 대역 포트 검사 없이 생사만 확인 (핑 스캔)
nmap -p- 65535개 전수 검사
nmap --script 이름 NSE 스크립트 실행, --script-help로 설명 조회
nmap -oN 파일 명령 전문이 적힌 재현 가능한 리포트 저장

명령어보다 중요한 감각

nmap 출력 한 장은 공격자에게는 침입 계획서의 목차이고, 방어자에게는 점검표입니다. 정확히 같은 데이터입니다. 그래서 이 도구를 켤 때마다 "내가 이 대상을 검사할 권한이 있는가"를 먼저 물어야 합니다 — 오늘 모든 실측이 127.0.0.1에서 이뤄진 이유입니다.

그리고 세 가지 습관을 몸에 붙이세요. 첫째, 출력의 이름과 실체를 구분합니다 — http-alt가 아니라 SimpleHTTPServer 0.6을 찾는 눈. 둘째, 기본 시야(1000개)의 한계를 압니다 — 오늘 전수 검사에서 33211번이 튀어나온 것처럼요. 셋째, 스캔하고 기록합니다. -oN 파일 첫 줄의 명령 전문이 석 달 뒤의 여러분을 구할 것입니다. 원리를 손으로 먼저 만들어 본 여러분에게, nmap의 흑백 출력은 이제 익숙한 친구의 얼굴입니다.


전부 체크되면 Step 81 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.