BLOG
Tracefield · 02
Tracefield · 01
블로그 · 14
Vibe Audit · 04
Vibe Audit · 03
Vibe Audit · 02
Vibe Audit · 01
출판편집자 · 01
StudyTree · 01
SecurityOps · 02
SecurityOps · 01
AI챗봇 · 04
AI챗봇 · 03
AI챗봇 · 02
AI챗봇 · 01
퍼플심 · 04
퍼플심 · 03
퍼플심 · 02
퍼플심 · 01
블로그 · 13
rootscan · 07
rootscan · 06
블로그 · 12
블로그 · 11
블로그 · 10
블로그 · 09
블로그 · 08
블로그 · 07
블로그 · 06
블로그 · 05
블로그 · 04
블로그 · 03
블로그 · 02
블로그 · 01
rootscan · 05
rootscan · 04
rootscan · 03
asmspeak · 03
asmspeak · 02
rootscan · 02
asmspeak · 01
rootscan · 01
웹보안도구 · 02
웹보안도구 · 01
루트캠프 · 02
루트캠프 · 01
All notes 167
포트스캐닝
1. 포트 스캐닝의 본질
포트 스캐닝은 단순히 "열린 포트 찾기"에서 끝나지 않는다. 운영체제의 프로세스와 네트워크 인터페이스가 어떻게 연결되는지 확인하는 과정에 더 가깝다.
1.1 서버와 포트의 구조적 이해
먼저 서버와 포트의 관계를 이렇게 보면 이해가 빠르다.
- 프로세스(Process): 서버 내부에서 실행 중인 프로그램이다. Apache, MySQL 같은 서비스가 여기에 해당한다.
- 포트(Port): 내부 프로세스를 외부 네트워크와 연결하기 위해 붙는 논리적 식별 번호다.
- 매핑(Mapping): 예를 들어 "80번 포트로 들어온 트래픽은 Apache로 넘긴다"는 식의 운영체제 규칙이다.
결국 포트 스캐닝은 "지금 어떤 프로세스가 외부와 연결될 준비가 되어 있는가?"를 역으로 확인하는 작업이다.
2. 포트 상태 심층 분석
Nmap이 보여주는 상태 메시지 뒤에는 패킷(Packet) 흐름이 있다. 이걸 이해하면 결과를 더 정확하게 해석할 수 있다.
2.1 열림(Open)
해당 포트에 서비스가 바인딩되어 있고, 실제로 리스닝 중인 상태다.
패킷 흐름은 보통 이렇게 읽는다.
- 스캐너 측에서
SYN을 보낸다. - 서버가
SYN-ACK로 응답한다. - 이후
ACK로 연결을 맺거나,RST로 연결을 닫는다.
의미상으로는 외부에서 접근 가능한 서비스가 있다고 보면 된다.
2.2 닫힘(Closed)
포트 자체는 열려 있지 않고, 해당 서비스를 받고 있지 않은 상태다.
패킷 흐름은 아래처럼 보인다.
- 스캐너 측에서
SYN을 보낸다. - 서버가
RST-ACK로 거절 응답을 돌려준다.
이 경우 서비스는 없지만, 호스트가 살아 있다는 단서는 된다.
2.3 필터됨(Filtered)
중간의 방화벽(Firewall)이나 IPS가 패킷을 가로채거나 버리는 상태다.
패킷 흐름은 보통 이렇게 나타난다.
- 스캐너 측에서
SYN을 보낸다. - 응답이 없거나,
ICMP Destination Unreachable같은 차단 응답이 돌아온다.
이 경우는 서비스 존재 여부 자체를 단정하기 어려워서 가장 해석이 까다롭다.
3. 스캐닝 기법과 동작 원리
3.1 TCP 연결 스캔(TCP Connect Scan, -sT)
운영체제의 connect() 시스템 콜을 써서 3-Way Handshake를 끝까지 맺는 방식이다.
- 패킷 흐름:
SYN->SYN-ACK->ACK - 장점: 관리자 권한(Root) 없이도 수행 가능하고 안정적이다.
- 단점: 연결이 실제로 성립하므로, 서버 로그에 접속 기록이 더 선명하게 남는다.
3.2 TCP SYN 스캔(TCP SYN Scan, -sS)
3-Way Handshake를 끝까지 맺지 않고 중간에서 끊는, 이른바 Half-Open 방식이다.
- 패킷 흐름:
SYN->SYN-ACK->RST - 장점: 연결을 완전히 맺지 않아 흔적 양상이
-sT와는 다를 수 있다. - 단점: 원시 패킷(Raw Packet)을 다뤄야 해서 관리자(Root) 권한이 필요하다.
- 한계: 애플리케이션 계층(L7) 데이터는 직접 가져오지 못하므로, 버전 확인은 보통
-sV같은 옵션을 따로 붙여 본다.
3.3 UDP 스캔(UDP Scan, -sU)
UDP 패킷을 보내고 응답을 기다리는 방식이다.
어려운 점은 UDP가 비연결형(Stateless)이라 응답이 없는 경우가 많다는 데 있다.
- Open: 실제 데이터 응답이 오면 열려 있다고 볼 수 있다.
- Open|Filtered: 응답이 없으면 열려 있는지, 중간에서 막힌 건지 구분이 어렵다.
- Closed:
ICMP Port Unreachable이 오면 닫힌 것으로 해석한다.
속도도 느리고 해석도 까다로워서, DNS나 SNMP처럼 필요한 UDP 서비스에만 제한적으로 쓰는 편이다.
4. 실무 Nmap 최적화 및 전략
실무에서는 단순 기본 명령만 쓰기보다, 네트워크 환경에 맞게 옵션을 조정하는 편이 낫다.
4.1 호스트 탐지 처리(-Pn)
일부 서버는 ICMP(Ping) 요청을 막아 둔다. 이 경우 Nmap은 응답이 없으면 호스트가 꺼져 있다고 보고 스캔을 멈출 수 있다.
-Pn(Treat all hosts as online)을 쓰면 이런 초기 생존 확인 단계를 건너뛰고 포트 확인을 계속 진행한다.
4.2 속도와 정확도의 딜레마(Speed vs Accuracy, -T & --min-rate)
속도를 올리면 편해 보여도 정확도와 안정성이 같이 흔들릴 수 있다.
-T3(Normal): 기본값이다.-T4(Aggressive): 실무에서 자주 쓰는 절충안이다.-T5(Insane): 너무 빨라 패킷 유실(Loss)과 정확도 저하 가능성이 커진다.
과하게 빠른 스캔은 방화벽이나 IPS 임계치를 건드릴 수 있다. 그래서 상황에 따라서는 천천히, 정확하게 가는 쪽이 더 낫다.
4.3 대규모 네트워크 스캐닝 전략(Large Scale Scanning Strategy)
전체 네트워크처럼 대상이 많아지면 Nmap만으로는 속도 한계가 보일 수 있다.
- 스위핑(Sweeping): Masscan, Rustscan 같은 빠른 스캐너로 먼저 살아 있는 IP와 열린 포트만 거칠게 추린다.
- 지문 인식(Fingerprinting): 추린 IP:Port에 대해서만 Nmap으로 정밀 스캔(
-sV,-sC)을 진행한다.
5. 주의사항 및 이슈 해결
5.1 거짓 양성(False Positives)
가끔 모든 포트(1~65535)가 열림(Open)처럼 보이는 경우가 있다.
- 원인: 중간 보안 장비가 스캔을 감지하고 허위 응답을 돌려주는 기만 전술(Deception)일 수 있다.
- 대응: 속도를 낮추고, 필요한 경우 다른 조건에서 다시 확인해 본다.
5.2 가상 호스팅과 서비스 거부(Virtual Hosting & DoS)
가상 호스팅 환경도 미리 확인해 두는 편이 좋다.
- 위험: 하나의 IP에 많은 도메인이 묶여 있을 수 있다.
- 시나리오: 도메인 수만 보고 스캔을 돌리면, 실제로는 같은 서버에 트래픽이 과하게 몰릴 수 있다.
- 예방: 스캔 전 도메인의 실제 IP(Resolve IP)를 확인해 중복을 제거한다.

