모의해킹
호스트기반모의해킹_05_포트스캐닝
작성자 : Heehyeon Yoo|2025-11-17
# 모의해킹# 정보수집# Nmap# Wireshark# TCP/IP
1. 포트 스캐닝의 본질
단순히 "열린 포트 찾기"가 아니다. 포트 스캐닝은 "운영체제(OS)의 프로세스(Process)와 네트워크 인터페이스 간의 매핑(Mapping)을 확인하는 과정"이다.
1.1 서버와 포트의 구조적 이해(Structure of Server & Port)
- 프로세스(Process): 서버 내부에서 실행 중인 프로그램(Apache, MySQL 등). 이들은 메모리 상에만 존재하며 외부와 소통할 수 없다.
- 포트(Port): 내부 프로세스를 외부 네트워크에 노출(Expose)시키기 위해 부여된 논리적 식별 번호(Logical Identification Number).
- 매핑(Mapping): "80번 포트로 들어오는 트래픽은 Apache 프로세스로 전달한다"는 운영체제의 약속.
- 따라서 포트 스캐닝은 "어떤 프로세스가 문을 열고 기다리고 있는가?"를 역추적하는 행위이다.
2. 포트 상태 심층 분석
Nmap이 보여주는 상태 메시지 뒤에는 패킷(Packet)의 상호작용이 숨어 있다. 이를 이해해야 방화벽 우회가 가능하다.
2.1 열림(Open)
- 상황: 해당 포트에 애플리케이션(서비스)이 바인딩되어 있고 리스닝(Listening) 중임.
- 패킷 흐름(Packet Flow):
- 공격자(Attacker):
SYN전송 - 서버(Server):
SYN-ACK응답 - 공격자(Attacker):
ACK(연결 확립) 또는RST(연결 끊음)
- 공격자(Attacker):
- 의미: 공격 가능한 진입점(Entry Point)이 확보됨.
2.2 닫힘(Closed)
- 상황: 포트가 열려있지 않음. (서비스가 실행 중이지 않음)
- 패킷 흐름(Packet Flow):
- 공격자(Attacker):
SYN전송 - 서버(Server):
RST-ACK응답 (거부)
- 공격자(Attacker):
- 의미: 방화벽은 없으나 서비스가 죽어있음. 호스트가 살아있음(Host is Up)을 증명하는 중요한 단서가 됨.
2.3 필터됨(Filtered)
- 상황: 중간의 방화벽(Firewall), IPS 등이 패킷을 가로채거나 폐기(Drop)함.
- 패킷 흐름(Packet Flow):
- 공격자(Attacker):
SYN전송 - 서버(Server): 무응답(No Response) 또는
ICMP Destination Unreachable(차단 알림)
- 공격자(Attacker):
- 의미: 서비스의 존재 유무조차 파악할 수 없음. 가장 까다로운 상태.
3. 스캐닝 기법과 동작 원리
3.1 TCP 연결 스캔(TCP Connect Scan, -sT)
- 동작 원리: 운영체제의
connect()시스템 콜을 사용하여 3-Way Handshake를 완전하게 맺는다. - 패킷 흐름:
SYN→SYN-ACK→ACK(Connection Established) - 특징:
- 장점: 관리자 권한(Root) 불필요. 가장 안정적.
- 단점: 연결이 완성되므로 서버의 애플리케이션 로그/시스템 로그에 접속 기록이 100% 남는다. 보안 장비에 즉시 탐지됨.
3.2 TCP SYN 스캔(TCP SYN Scan, -sS) - 스텔스 스캔(Stealth Scan)
- 동작 원리: 3-Way Handshake를 맺지 않고 중간에 끊는다(Half-Open).
- 패킷 흐름:
SYN→SYN-ACK→RST- 서버가 응답(SYN-ACK)하자마자 공격자가 연결 재설정(RST)을 보내 닫아버리는 방식.
- 특징:
- 장점: 연결이 성립되지 않았으므로 애플리케이션 로그에 남지 않을 확률이 높음.
- 단점: 원시 패킷(Raw Packet)을 조작해야 하므로 관리자(Root) 권한 필수.
- 한계: 연결이 수립되지 않으므로 애플리케이션 계층(L7) 데이터(배너 정보 등)를 가져올 수 없다. 서비스 버전을 알기 위해서는 별도의
-sV옵션을 추가해야 한다.
3.3 UDP 스캔(UDP Scan, -sU)
- 동작 원리: UDP 패킷을 보내고 응답을 기다림.
- 어려운 이유: UDP는 비연결형(Stateless) 프로토콜이라 응답이 없는 경우가 많다.
- Open: 데이터 응답이 오면 확실한 Open. (희소함)
- Open|Filtered: 응답이 없으면 열려있는지, 필터링된 건지 알 수 없음.
- Closed:
ICMP Port Unreachable에러가 오면 닫힌 것.
- 결론: 속도가 매우 느리고 정확도가 낮아, DNS, SNMP 등 특정 UDP 서비스를 타겟팅할 때만 제한적으로 사용한다.
4. 실무 Nmap 최적화 및 전략
단순히 nmap <IP>를 치는 것은 아마추어다. 네트워크 환경에 맞춰 옵션을 튜닝해야 한다.
4.1 호스트 탐지 우회(Bypassing Host Discovery, -Pn) [중요]
- 문제: 보안 설정이 된 서버는 ICMP(Ping) 요청을 차단(Drop)한다. Nmap은 Ping 응답이 없으면 "호스트가 죽었다(Down)"고 판단하고 스캔을 중단한다.
- 해결:
-Pn(Treat all hosts as online) 옵션을 사용하여, Alive Check 없이 무조건 포트 스캔을 강행해야 한다. 실무 기본값.
4.2 속도와 정확도의 딜레마(Speed vs Accuracy, -T & --min-rate)
- 타이밍 템플릿(Timing Template):
-T3(Normal): 기본값.-T4(Aggressive): 실무 권장. 적절히 빠름.-T5(Insane): 너무 빨라 패킷 유실(Loss) 가능성 높음. 정확도 하락.
- 전략: 과도한 속도는 방화벽(IPS)의 임계치(Threshold)를 건드려 IP 차단(Blocking)을 유발한다. "천천히, 정확하게"가 때로는 가장 빠른 길이다.
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)으로 표기되는 경우. - 원인: 중간 보안 장비가 스캐닝을 탐지하고, 공격자를 교란하기 위해 모든 요청에 대해 "열려있음(SYN-ACK)"이라고 허위 응답을 보내는 기만 전술(Deception).
- 대응: 스캔 속도를 늦추거나, 출발지 IP(Source IP)를 변경하며 재확인해야 한다.
5.2 가상 호스팅과 서비스 거부(Virtual Hosting & DoS)
- 위험: 하나의 IP에 수백 개의 도메인이 연결된 가상 호스팅 서버인 경우.
- 시나리오: 도메인 목록 5,000개를 대상으로 스캔을 돌렸는데, 알고 보니 다 같은 IP였다면? -> 특정 서버에 순간적으로 5,000배의 트래픽이 집중되어 서비스 거부(DoS) 상태가 발생할 수 있다.
- 예방: 스캔 전 도메인들의 실제 IP(Resolve IP)를 확인하고 중복을 제거해야 한다.