포트 스캐닝 (Port Scanning) 기술 원리

핵심 인사이트 (3줄 요약)

  1. 본질: 포트 스캐닝 (Port Scanning)은 네트워크 상의 타겟 시스템이 어떤 서비스(애플리케이션)를 실행 중인지, 방화벽 규칙은 어떻게 설정되어 있는지 파악하기 위해 각 포트에 탐침 패킷을 보내고 응답을 분석하는 정보 수집(Reconnaissance) 활동이다.
  2. 가치: 모의 해킹(Penetration Testing) 및 사이버 킬 체인(Cyber Kill Chain)의 극초기 단계인 '정찰' 단계에서 시스템의 공격 표면(Attack Surface)을 파악하는 핵심 기술로, Nmap과 같은 도구가 운영체제 (OS, Operating System) 커널의 TCP/IP 응답 메커니즘 차이를 교묘히 활용하여 정보를 빼낸다.
  3. 융합: 컴퓨터구조 및 OS의 raw socket 제어 권한, TCP 플래그(SYN, ACK, FIN, RST)에 따른 커널의 상태 전이(State Machine) 메커니즘을 융합적으로 이용하며, IDS(침입 탐지 시스템)를 우회하기 위한 은닉 스캔(Stealth Scan) 기술로 발전했다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

개념 및 정의 포트 스캐닝 (Port Scanning)은 대상 컴퓨터(IP)의 0번부터 65535번까지 존재하는 논리적 포트 (Port) 번호에 순차적 또는 무작위로 네트워크 패킷을 전송한 뒤, 돌아오는 패킷(응답)의 유무 및 플래그(Flag) 형태를 분석하여 해당 포트가 열려있는지(Open), 닫혀있는지(Closed), 아니면 방화벽에 의해 필터링되고 있는지(Filtered)를 식별하는 네트워크 분석 기법이다.

필요성 및 등장 배경 해커가 성(시스템)을 공격하기 전, 성벽에 어느 문(포트)이 열려 있는지, 그 문 뒤에 어떤 경비병(버전이 낮은 취약한 서비스 프로토콜)이 서 있는지를 모르면 공격 페이로드(Exploit)를 구성할 수 없다. 방어자 입장에서도 관리자 모르게 임의로 열려 있는 백도어(Backdoor) 포트나 잘못 설정된 방화벽 정책을 감사(Audit)하기 위해 능동적인 스캐닝이 필요하다. 과거에는 단순히 연결을 맺어보는 방식(TCP Connect)을 썼으나, 서버 로그(Log)에 기록이 남는 한계를 극복하기 위해 OS 커널의 프로토콜 허점을 찌르는 '은닉 스캔 (Stealth Scan)' 기법들이 Nmap을 중심으로 대거 등장하게 되었다.

┌─────────────────────────────────────────────────────────────┐
│      포트 상태 식별(Port State)의 3가지 핵심 판단 모델      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  [Open (열림)]                                              │
│  타겟 서버에 특정 서비스 데몬(Apache, SSH 등)이 해당 포트를 │
│  리스닝(Listening)하고 있으며, 연결 수락 응답(SYN/ACK)을    │
│  보내는 상태. (가장 주요한 공격 표면)                       │
│                                                             │
│  [Closed (닫힘)]                                            │
│  서버가 켜져 있고 방화벽도 패킷을 허용하지만, 해당 포트에   │
│  실행 중인 서비스(프로그램)가 없어서 OS 커널이 "거부"       │
│  의미인 RST (Reset) 패킷을 반환하는 상태.                   │
│                                                             │
│  [Filtered (필터됨 / 방화벽 차단)]                          │
│  방화벽(Firewall) 규칙(Drop)이나 라우터 ACL에 의해 탐침     │
│  패킷이 중간에 폐기되어, 서버로부터 아무런 응답도           │
│  돌아오지 않거나 ICMP Unreachable 메시지만 오는 상태.       │
└─────────────────────────────────────────────────────────────┘

[다이어그램 해설] 포트 스캐닝 도구의 핵심 알고리즘은 패킷 전송 후 OS 커널이 뱉어내는 이 3가지 상태(Open, Closed, Filtered)의 응답 패턴을 해석하는 것이다. 스캐너는 마치 노크를 하는 사람과 같다. 노크를 했을 때 "들어오세요(SYN/ACK)" 하면 Open, "아무도 없어요 돌아가세요(RST)" 하면 Closed다. 그런데 문을 두드렸는데 아무런 대답도 없고 쥐죽은 듯 조용하다면(No Response), 아예 집 앞 철문(방화벽)에서 경비원에게 차단당해 노크 소리조차 집에 닿지 않았음(Filtered)을 유추할 수 있는 것이다.

  • 📢 섹션 요약 비유: 도둑이 캄캄한 밤 건물 밖에서 100개의 창문에 하나씩 작은 돌맹이를 던져보고, 안에서 불이 켜지거나(열림), 창문에 맞고 튕겨 나오거나(닫힘), 아니면 소리 없이 허공으로 사라지는지(방화벽 망)를 기록하여 침입할 창문을 고르는 작업과 같습니다.

Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

포트 스캐닝 주요 기법 비교 요소

OS 커널의 TCP 연결 수립(3-Way Handshake) 메커니즘을 어떻게 조작하느냐에 따라 스캐닝 기법이 갈라진다.

스캔 기법동작 방식 (TCP 플래그 전송)로그 기록 유무속도 및 은닉성원리 및 비유
TCP Connect 스캔SYN → SYN/ACK 수신 → ACK 전송 (정상 3-Way 연결 완료)기록됨 (애플리케이션 로그에 남음)속도 빠름, 은닉성 낮음 (일반 사용자 권한 가능)가게 문을 열고 들어가서 영업하는지 물어보고 정식으로 인사하고 나오기
TCP SYN 스캔 (Half-open)SYN → SYN/ACK 수신 시 → RST 전송 (연결 강제 종료)기록 안 됨 (연결 미완성으로 App 로그 부재)속도 매우 빠름, 은닉성 높음 (루트 권한 필요)가게 문을 반쯤 열어 불이 켜진 것만 슬쩍 확인하고 문을 쾅 닫고 도망가기
FIN / NULL / XMAS잘못된 형태의 플래그 전송 (FIN만 켜거나 모두 켜기)기록 안 됨방화벽의 상태유지(Stateful) 기능 우회 용도규칙(RFC)의 허점을 이용해 비정상적인 질문을 던져 반응 살피기
UDP 스캔UDP 패킷 전송 → 응답 없으면 Open/Filtered, ICMP 에러 오면 Closed기록 여부 알기 어려움속도 매우 느림 (ICMP Rate Limit 때문)응답을 보장하지 않는 UDP 특성상 탐지가 까다로움

심층 동작 원리: SYN 스캔 (Half-Open Scan) 메커니즘

가장 널리 쓰이며 강력한 TCP SYN 스캔(Nmap -sS) 은 OS 커널의 세션 성립 로직을 중간에 잘라버려 애플리케이션 계층(L7)의 감사 로그를 회피하는 우아한 기법이다. 이를 구현하려면 스캐너 프로그램이 운영체제의 기본 TCP/IP 스택을 우회하여 헤더를 직접 조작할 수 있는 원시 소켓(Raw Socket, 루트 권한 필요) 제어 권한을 가져야 한다.

┌───────────────────────────────────────────────────────────────┐
│      TCP SYN (Half-Open) 스캐닝의 OS 커널 상호작용 흐름       │
├───────────────────────────────────────────────────────────────┤
│                                                               │
│  [타겟 포트가 열려 있을 때 (Open)]                            │
│  스캐너 OS (해커)                                타겟 OS      │
│         │ ───(1) 조작된 TCP SYN 패킷 전송 ────────▶ │         │
│         │                                          │          │
│         │ ◀──(2) 포트 리스닝 중! SYN/ACK 응답 ────── │        │
│         │                                          │          │
│    (포트 Open 판단 기록)                           │          │
│         │                                          │          │
│         │ ───(3) TCP RST 패킷 즉시 전송 ──────────▶ │         │
│               → 타겟 OS 커널은 연결이 비정상 종료된 │         │
│                 것으로 처리하고, Apache/Nginx 같은  │         │
│                 L7 앱에는 연결 시도를 전달조차 안함 │         │
│                 (= 웹 서버 접속 로그 파일에 안 남음!)│        │
│                                                               │
│  [타겟 포트가 닫혀 있을 때 (Closed)]                          │
│         │ ───(1) 조작된 TCP SYN 패킷 전송 ────────▶ │         │
│         │                                          │          │
│         │ ◀──(2) 프로세스 없음! RST/ACK 응답 ─────── │        │
│    (포트 Closed 판단 기록)                                    │
└───────────────────────────────────────────────────────────────┘

[다이어그램 해설] 이 타이밍 도식은 "은닉성(Stealth)"의 비밀이 애플리케이션(L7)과 커널(L4) 사이의 경계에 있음을 설명한다. 일반적인 TCP Connect 스캔은 3-Way Handshake를 완수(ACK 송신)하므로 타겟 시스템의 웹 서버나 DB 서비스까지 세션이 올라가 접속 로그(예: access.log)가 찍힌다. 그러나 SYN 스캔은 타겟 OS 커널이 SYN/ACK를 던지는 순간 스캐너가 포트가 열려있다는 확신을 얻고, 비정상적 종료를 뜻하는 RST(Reset) 패킷을 쏴버린다. 타겟의 OS 커널은 이 연결을 미완성(실패)으로 간주하여 상위 애플리케이션으로 올려보내지 않고 커널 단에서 세션을 찢어버린다. 따라서 웹 서버 로그에는 해커의 발자국이 전혀 남지 않는 완벽한 정찰이 가능해진다.

  • 📢 섹션 요약 비유: 상대방에게 전화를 걸어(SYN) 수화기 너머로 "여보세요(SYN/ACK)" 하는 목소리가 들리자마자 바로 전화를 확 끊어버리는(RST) 방식입니다. 목소리를 들었으니 상대가 집에 있다는 건 확인했지만, 통화가 성립되지 않아 통신사 요금 명세서(서버 로그)에는 기록되지 않는 꼼수와 같습니다.

Ⅲ. 융합 비교 및 다각도 분석

Stealth Scan (은닉 스캔) 기법들의 RFC 프로토콜 허점 융합

방화벽(Firewall)이 발전하여 "SYN 패킷이 들어오면 무조건 차단(Drop)"하는 정책을 적용하자, 해커들은 TCP 프로토콜 명세서(RFC 793)에 정의된 "예외 처리" 규칙의 허점을 융합적으로 이용하기 시작했다. 이것이 FIN, NULL, XMAS 스캔이다.

스캔 유형TCP 헤더 플래그 세팅RFC 793 기반 타겟 커널 반응 (Open 시)타겟 커널 반응 (Closed 시)
NULL 스캔모든 플래그(SYN, ACK, FIN 등) 0 (Off)응답 없음 (무시)RST 패킷 반환
FIN 스캔FIN 플래그만 1 (연결 종료)응답 없음 (무시)RST 패킷 반환
XMAS 스캔FIN, URG, PSH 플래그 켜기 (트리장식)응답 없음 (무시)RST 패킷 반환

역발상 메커니즘: 정상적인 TCP 규약에 따르면, 연결을 맺지도 않았는데 난데없이 FIN이나 이상한 플래그 조합이 날아올 경우, 포트가 열려(Open) 있으면 커널은 "이게 무슨 뚱딴지같은 소리야" 하고 패킷을 조용히 무시(Drop) 한다. 하지만 포트가 닫혀(Closed) 있으면 커널은 원칙에 따라 "여긴 닫혀있다"며 친절하게 RST 패킷을 반환한다. 스캐너는 이 원리를 역이용하여, 아무 응답이 없으면 Open(또는 Filtered)으로 역산별하는 고도의 심리전을 구사한다.

┌─────────────────────────────────────────────────────────────┐
│      방화벽 우회를 위한 XMAS 스캔의 역추론(Inverse) 알고리즘│
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  [상황: 방화벽이 외부에서 들어오는 SYN(연결 요청)만 차단함] │
│                                                             │
│  해커 ──(FIN+URG+PSH 패킷 발송)──▶ [방화벽] ──▶ 타겟 OS     │
│          (SYN이 아니므로 방화벽 통과!)                      │
│                                                             │
│  [타겟 커널(RFC 규약)의 반응 판단 로직]                     │
│                                                             │
│  IF (응답 패킷 == 없음 / 타임아웃) {                        │
│     => 타겟 서비스가 열려 있어서 이상한 패킷을 묵살했군!    │
│     => 판단: Open 또는 방화벽 Filtered                      │
│  }                                                          │
│  ELSE IF (응답 패킷 == RST) {                               │
│     => 서비스가 죽어 있어서 커널 규약대로 RST를 뱉었군!     │
│     => 판단: 확실히 Closed                                  │
│  }                                                          │
└─────────────────────────────────────────────────────────────┘

[다이어그램 해설] 초창기 상태 비저장(Stateless) 방화벽들은 단순히 "SYN 비트가 켜진 패킷(새로운 연결 시도)만 외부에서 내부로 못 들어오게 막자"는 1차원적 룰을 세웠다. XMAS 스캔은 크리스마스 트리에 불을 모두 켠 것처럼 FIN, URG, PSH 플래그를 모두 켜서 보낸다. 방화벽은 이 패킷에 SYN 비트가 없으므로 기존에 연결된 세션의 일부라 착각하고 통과시켜 버린다. 그리고 목적지 서버의 OS는 RFC 규약의 허점대로 행동하여 정보를 흘려준다. 다만 윈도우(Windows) OS는 이 RFC 규약을 따르지 않아 무조건 RST를 뱉으므로 윈도우 환경에서는 이 스캔 방식이 통하지 않는다는 OS 종속적 특징을 지닌다.

  • 📢 섹션 요약 비유: 경비원(방화벽)이 "처음 인사(SYN)하는 수상한 사람만 막아라"고 지시받았을 때, 도둑이 다짜고짜 "잘 가세요(FIN)!" 하며 들어오면 경비원이 당황해서 통과시키고 마는 규정의 허점을 찌르는 전술입니다.

Ⅳ. 실무 적용 및 기술사적 판단

실무 시나리오: 최신 IDS/IPS 회피를 위한 정찰 전술 (Decoy & Timing)

  1. 상황: 해커가 기업 인프라의 내부망 토폴로지를 매핑하려 하지만, 기업의 차세대 침입 탐지 시스템(IDS)이 단일 IP에서 다량의 포트로 짧은 시간 내에 전송되는 SYN 스캔 패턴을 즉각 탐지하여 해당 IP를 자동차단(Ban)하고 있다.
  2. 공격자의 전략 (Nmap 고도화 기법 적용):
    • 디코이 스캔 (Decoy Scan, -D): 스캐너는 실제 자신의 IP 외에 가짜(디코이) 출발지 IP 수십 개를 섞어서 동시에 타겟에게 SYN 패킷을 날린다. 타겟의 IDS 로그에는 수십 개의 IP에서 동시에 공격이 들어온 것으로 찍혀 방어자는 진짜 공격자가 누구인지 찾아내기 위해 수많은 로그 분석 시간을 허비해야 한다.
    • 타이밍 스캔 (Timing, -T0~T5): IDS는 주로 '초당 패킷 수(PPS)' 등 시간 임계치 기반으로 스캐닝을 탐지한다. 해커는 'Sneaky(T1)'나 'Paranoid(T0)' 옵션을 주어 5분에 한 번씩 아주 느리게 패킷을 날린다. IDS의 세션 추적 타임아웃을 교묘히 벗어나 탐지를 무력화하며 서서히 정찰 지도를 완성한다.
  3. 방어자의 의사결정 (대응 아키텍처):
    • 단순 포트 스캔 시도는 완전한 차단이 불가능하므로, 방어자는 불필요한 포트 자체를 OS 레벨에서 완전히 내리는(Kill Process) **공격 표면 관리(ASM, Attack Surface Management)**가 최우선이다.
    • 방화벽 룰셋은 명시적으로 허용된 IP/포트 외에는 전부 버리는 기본 거부(Default Deny) 원칙을 고수해야 하며, State-less 차단이 아닌 세션 상태(Stateful) 검사 기반의 차단(예: 연결 확립 전 이상 플래그 유입 시 차단)을 도입해야 한다.

도입 체크리스트

  • 배너 그래빙 (Banner Grabbing) 대비: 스캐너(Nmap -sV)는 포트가 열려 있는지뿐만 아니라 GET / HTTP/1.1을 찔러 넣어 반환되는 응답 헤더(예: Server: Apache/2.4.49)를 통해 취약한 서비스 버전을 정밀 타겟팅한다. 서버 설정에서 버전 및 OS 정보 노출 옵션(ServerTokens Prod 등)을 비활성화했는가?
  • 내부망 스캐닝 방어: 최근의 스캐닝 위협은 외부가 아니라 악성코드에 감염된 내부 직원 PC에 의한 횡적 이동(Lateral Movement) 정찰이다. 사내 네트워크(엔드포인트 간 통신)의 L2/L3 스위치 단에 프라이빗 망 마이크로 세그멘테이션(Micro-segmentation)이 적용되어 있는가?

안티패턴

  • UDP 서비스의 방치: "해커들은 TCP 공격만 한다"는 안일한 생각으로 DNS, SNMP, NTP 등의 UDP 포트를 외부에 무방비로 열어두는 행위. UDP 스캐닝은 느리지만, 한 번 열려 있음이 확인되면 DRDoS 증폭 반사 공격의 훌륭한 숙주로 즉각 타겟팅된다.

  • 📢 섹션 요약 비유: 도둑이 정찰을 올 때 혼자 오지 않고 가짜 마네킹 수십 개(디코이)를 세워두거나 아주 천천히 숨 죽이며 기어와서(타이밍 지연) CCTV의 모션 센서를 속이려 하므로, 아예 창문 자체를 막아버리는(공격 표면 축소) 근본적 공사가 필요합니다.


Ⅴ. 기대효과 및 결론

정량/정성 기대효과 (스캐닝 방어 및 최소 권한 원칙 적용 시)

구분기본 개방 및 Blacklist 방화벽 운영공격 표면 축소 및 Stateful IPS 적용개선 효과
정량 (가시성)외부 스캐너에 내부망 토폴로지 90% 이상 노출80/443 등 필수 포트 외 스캔 결과 100% Filtered 응답공격자에게 주어지는 정보의 제로화
운영끝없이 쏟아지는 불법 스캔 로그에 파묻혀 관제 불가비정상 플래그/속도 스캔을 자동 차단 및 관제 피로도 저하보안 관제(SOC) 인력 리소스 최적화 및 정탐 향상
정성제로데이 공격 및 타겟팅 익스플로잇에 직격 노출공격자가 취약한 서비스(버전 등)를 찾지 못해 공격 포기사이버 킬 체인의 초기 정찰 단계에서 공격 사전 절단

미래 전망

전통적인 Nmap 기반의 포트 스캐닝은 클라우드 환경의 고도화된 WAF와 보안 그룹(Security Group) 정책에 의해 갈수록 어려워지고 있다. 최근 공격자들은 무차별적 포트 스캐닝 대신, 클라우드 자산 관리 도구의 취약점이나 인터넷 전체를 24시간 실시간으로 스캔하여 데이터베이스화해두는 상용 서비스(예: Shodan, Censys)의 API를 쿼리하여 공격 대상을 정찰하는 OSINT(오픈 소스 인텔리전스) 기반 스캐닝으로 진화했다. 기업 방어자 역시 공격 표면 관리(ASM) 자동화 도구를 도입해 자신들의 클라우드 노출도를 외부 공격자 관점에서 상시 스캐닝하고 실시간으로 차단하는 '적극적 방어' 체계로 패러다임이 이동 중이다.

참고 표준

  • RFC 793: Transmission Control Protocol (TCP 상태 전이 기계 표준 사양)

  • MITRE ATT&CK: T1046 (Network Service Scanning), T1595 (Active Scanning)

  • NIST SP 800-115: 정보 보안 테스팅 및 평가 가이드라인 (정찰 단계 대응)

  • 📢 섹션 요약 비유: 도둑이 돋보기로 우리 집 창문을 들여다보는 기술(스캐닝)이 발전함에 따라, 우리도 밖에서는 집 안이 절대 보이지 않는 매직 미러(방화벽/IPS)를 설치하고 심지어 우리 스스로 드론을 띄워 집 외부의 약점을 먼저 찾아 고치는 시대가 되었습니다.


📌 관련 개념 맵 (Knowledge Graph)

개념 명칭관계 및 시너지 설명
TCP 3-Way HandshakeOS 커널이 네트워크 세션을 수립하는 표준 절차로, 이 절차의 빈틈을 파고들어 로그를 남기지 않는 SYN 스캔의 핵심 근간이 된다.
방화벽 (Firewall) / ACL스캐너가 보낸 패킷이 도달하지 못하게 필터링하여 스캐너 화면에 포트 상태를 'Filtered'로 표시하게 만드는 1차 방어 장비다.
OSINT (Shodan / Censys)해커가 직접 스캐닝 툴을 돌려 IP를 노출시키지 않고도, 전 세계 취약한 포트를 수집해 둔 검색엔진을 활용해 정찰을 자동화하는 최신 위협 도구다.
IDS / IPS (침입 탐지/방지 시스템)초당 패킷 유입량(PPS)이나 비정상 TCP 플래그(XMAS, FIN 등)의 조합을 시그니처나 행위 기반으로 탐지하여 스푸핑된 스캐닝 공격을 드롭시킨다.
사이버 킬 체인 (Cyber Kill Chain)정찰(Recon) - 무기화 - 전달 - 실행 등으로 이어지는 군사 공격 모델로, 포트 스캐닝은 이 중 첫 단추인 정찰 단계를 대표하는 전술이다.

👶 어린이를 위한 3줄 비유 설명

  1. 포트 스캐닝은 아파트에 사는 수백 명의 이웃집 문(포트)을 돌아다니며 손잡이를 돌려보고 "어느 집 문이 열려 있나~" 확인하는 빈집털이범의 행동이에요.
  2. 영리한 도둑은 경비원(로그 기록)에게 들키지 않으려고, 초인종(SYN)을 눌러놓고 주인이 나오려 하면 재빨리 도망(RST)쳐서 기록을 안 남기는 꼼수를 써요.
  3. 이를 막으려면 우리 집을 튼튼한 성벽(방화벽)으로 두르고 문을 두드려도 아예 대답조차 안 나오게(기본 차단 정책) 만들어서 도둑이 포기하고 돌아가게 만들어야 한답니다!