포트 스캐닝 유형
1. 개요
1. 개요
포트 스캐닝은 컴퓨터 네트워크 보안 평가와 관리의 기본적인 단계이다. 이 과정은 특정 호스트나 네트워크 상에서 열려 있는 포트와 실행 중인 서비스를 식별하기 위해 수행된다. 각 네트워크 서비스는 특정 포트 번호와 통신 프로토콜(주로 TCP 또는 UDP)을 사용하여 운영된다. 포트 스캐닝은 이러한 포트에 패킷을 전송하고 그 응답을 분석하여 해당 포트의 상태(열림, 닫힘, 필터링됨)와 연관된 서비스를 판단한다.
주요 목적은 네트워크 인벤토리 관리, 보안 취약점 평가, 그리고 방화벽 규칙 검증 등이다. 시스템 관리자는 정기적인 스캔을 통해 승인되지 않은 서비스의 실행을 발견하거나 잘못된 구성으로 인해 불필요하게 노출된 포트를 찾아낼 수 있다. 반면, 악의적인 공격자는 표적 시스템에 대한 초기 정찰 단계로 포트 스캐닝을 활용하여 공격 가능성을 탐색한다.
포트 스캐닝의 결과는 일반적으로 다음 표와 같이 분류된다.
포트 상태 | 의미 | 일반적인 응답 |
|---|---|---|
열림(Open) | 해당 포트에서 서비스가 수신 대기 중이다. | 연결 요청 수락 (TCP), 또는 서비스 응답 (UDP) |
닫힘(Closed) | 포트는 접근 가능하지만 서비스가 수신하지 않는다. | 연결 거절 패킷 (TCP RST) |
필터링됨(Filtered) | 방화벽이나 필터링 장비가 패킷을 차단했다. | 응답 없음 (타임아웃) |
이 기술은 네트워크 보안의 양날의 검과 같다. 합법적인 보안 감사와 악성 해킹 활동 모두에 활용되므로, 사용 시 신중한 법적 및 윤리적 고려가 필수적이다.
2. 포트 스캐닝의 기본 원리
2. 포트 스캐닝의 기본 원리
포트 스캐닝의 기본 원리는 대상 호스트의 네트워크 포트 상태를 프로빙하여 열려 있는 포트, 닫혀 있는 포트, 또는 필터링된 포트를 식별하는 과정에 기초한다. 이 과정은 TCP/IP 프로토콜 스택의 핸드셰이크 및 응답 메커니즘을 활용한다. 스캐너는 특정 포트 번호로 다양한 유형의 네트워크 패킷을 전송하고, 대상 호스트로부터 돌아오는 응답(또는 응답 없음)을 분석하여 해당 포트의 상태를 판단한다.
포트 상태는 일반적으로 다음 세 가지로 구분된다.
상태 | 설명 |
|---|---|
열림(Open) | 해당 포트에서 애플리케이션이 활성화되어 연결을 수신 대기 중이다. |
닫힘(Closed) | 포트는 접근 가능하지만, 그 포트에서 수신 대기하는 애플리케이션이 없다. |
필터됨(Filtered) |
스캐닝의 핵심은 프로토콜별로 정의된 규칙을 이용하는 것이다. TCP 스캔은 주로 연결 설정 과정인 3-way handshake를 이용한다. 예를 들어, SYN 패킷을 보냈을 때 SYN/ACK 응답이 오면 포트가 열린 것으로, RST 응답이 오면 닫힌 것으로 판단한다. UDP 스캔은 연결 없는 프로토콜의 특성상 다르게 동작한다. UDP 패킷을 보내고 응답이 없으면 포트가 열렸거나 필터된 것으로 추정하며, ICMP 포트 불가능 메시지를 받으면 포트가 닫힌 것으로 판단한다.
이러한 원리를 바탕으로, 스캐너는 포트 범위를 순차적으로 또는 무작위로 검사하며 네트워크 서비스 맵을 작성한다. 결과는 대상 시스템의 활성 서비스, 운영 체제 정보, 그리고 잠재적인 보안 취약점을 파악하는 데 사용된다.
3. 연결 기반 스캐닝
3. 연결 기반 스캐닝
연결 기반 스캐닝은 TCP 프로토콜의 정상적인 연결 설정 과정을 이용하여 대상 호스트의 포트 상태를 확인하는 방법이다. 이 방식은 3방향 핸드셰이크 과정을 완전히 수행하거나 일부 단계만을 이용한다. 가장 기본적인 형태의 스캔으로, 네트워크 상태에 따라 비교적 신뢰성 높은 결과를 제공하지만, 상대적으로 탐지되기 쉽다는 특징이 있다.
가장 직접적인 방법은 TCP Connect 스캔이다. 이 방법은 스캐너가 대상 포트로 완전한 TCP 연결을 시도한다. 먼저 SYN 패킷을 보내고, 대상으로부터 SYN/ACK 응답을 받으면 즉시 ACK 패킷으로 응답하여 연결을 수립한다. 연결이 성공적으로 수립되면 해당 포트가 열려 있다고 판단하고, 이후 RST 패킷을 보내 연결을 즉시 종료한다. 만약 대상으로부터 RST 패킷을 받으면 포트가 닫혀 있다고 판단한다. 이 방법은 운영체제의 네트워크 시스템 호출을 그대로 사용하기 때문에 특별한 권한이 필요 없지만, 모든 연결 시도가 시스템의 연결 로그에 기록되므로 쉽게 탐지된다.
보다 은밀한 방법은 TCP SYN 스캔이다. 이는 반개방 스캔 또는 하프-오픈 스캔으로도 불린다. 스캐너는 SYN 패킷을 보내고 대상의 응답만을 관찰한다. SYN/ACK 응답을 받으면 포트가 청취 상태임을 확인하고, RST 패킷을 보내 연결을 중단시킨다. 따라서 완전한 연결이 수립되지 않는다. RST 응답을 받으면 포트가 닫혀 있다고 판단한다. 이 방법은 완전한 연결 로그를 남기지 않을 가능성이 있어 TCP Connect 스캔보다 탐지가 어려울 수 있다. 그러나 많은 현대 침입 탐지 시스템은 이러한 비정상적인 연결 시도를 감지할 수 있다.
연결 설정 과정을 역이용하는 방법으로 TCP ACK 스캔이 있다. 이 스캔은 이미 수립된 연결이 존재한다고 가정하고 ACK 플래그가 설정된 패킷을 대상 포트로 전송한다. RFC 793에 따르면, 열린 포트는 예기치 않은 ACK 패킷을 받으면 RST 패킷으로 응답해야 한다. 반면 닫힌 포트도 RST 패킷으로 응답한다. 따라서 이 방법만으로는 열린 포트와 닫힌 포트를 명확히 구분하기 어렵다. 주로 방화벽이나 패킷 필터링 규칙의 존재를 탐지하고 그 구성을 추론하는 데 사용된다. ACK 스캔의 응답을 분석하여 상태 필터링 방화벽과 무상태 필터링 방화벽을 구별할 수 있다[1].
3.1. TCP Connect 스캔
3.1. TCP Connect 스캔
TCP Connect 스캔은 가장 기본적이고 직접적인 포트 스캐닝 기법이다. 이 방법은 대상 호스트의 특정 포트에 완전한 TCP 3방향 핸드셰이크 연결을 시도하여 해당 포트의 개방 여부를 판단한다.
스캐너는 먼저 대상 포트로 SYN 패킷을 보낸다. 포트가 열려 있고 서비스가 수신 대기 중이면, 대상은 SYN-ACK 패킷으로 응답한다. 이에 스캐너는 ACK 패킷을 보내 연결을 확립한다. 연결이 성공적으로 수립되면 해당 포트는 열려 있는 것으로 판단하고, 스캐너는 즉시 RST 패킷을 보내 연결을 종료한다. 반대로 포트가 닫혀 있거나 필터링되면 대상은 RST 패킷으로 응답하거나 아무런 응답도 하지 않아 연결 시도가 실패한다.
이 방법의 가장 큰 장점은 특별한 권한이 필요하지 않다는 점이다. 일반 사용자 권한으로도 대부분의 운영체제에서 표준 소켓 연결 API를 사용해 실행할 수 있다. 또한, 행위가 매우 정직하여 탐지하기 쉽다는 특징도 있다. 대부분의 시스템 로그에는 완전한 연결 시도와 종료 기록이 남기 때문에, 이 스캔 방식으로 활동하는 스캐너는 쉽게 발각될 수 있다. 따라서 보안 평가나 합법적인 네트워크 진단 시에는 유용하지만, 은밀한 정보 수집을 목적으로 할 때는 적합하지 않다.
특징 | 설명 |
|---|---|
기술 명칭 | TCP Connect 스캔, TCP Full Open 스캔 |
필요 권한 | 일반 사용자 권한 (루트 권한 불필요) |
신뢰성 | 매우 높음. 표준 TCP 프로토콜을 따르므로 결과가 정확하다. |
탐지 가능성 | 매우 높음. 완전한 연결 로그가 남는다. |
주요 도구 옵션 | Nmap의 |
3.2. TCP SYN 스캔
3.2. TCP SYN 스캔
TCP SYN 스캔은 TCP Connect 스캔보다 은밀한 방식으로, 완전한 TCP 3방향 핸드셰이크를 완료하지 않고 포트 상태를 판단한다. 이 방법은 반개방 스캔 또는 하프-오픈 스캔으로도 불린다.
스캐너는 대상 포트로 SYN 패킷을 전송한다. 대상 시스템의 응답에 따라 포트 상태를 판단한다. 포트가 열려 있으면 SYN-ACK 패킷이 반환되고, 스캐너는 연결을 확립하지 않고 즉시 RST 패킷을 보내 연결을 중단한다. 포트가 닫혀 있으면 RST-ACK 패킷이 응답으로 돌아온다. 응답이 없으면 포트가 필터링되고 있거나 호스트가 다운된 것으로 추정할 수 있다[3].
응답 패킷 | 포트 상태 추정 |
|---|---|
SYN-ACK | 열림 (Open) |
RST | 닫힘 (Closed) |
응답 없음 (ICMP 오류) | 필터됨 (Filtered) |
이 방법은 완전한 연결을 수립하지 않기 때문에 많은 시스템의 로그에 기록되지 않는다는 장점이 있다. 그러나 현대의 침입 탐지 시스템은 비정상적인 SYN 패킷 플러드를 감지할 수 있다. TCP SYN 스캔은 Nmap 도구에서 -sS 옵션으로 실행되며, 루트 권한이 필요하다.
3.3. TCP ACK 스캔
3.3. TCP ACK 스캔
TCP ACK 스캔은 TCP 연결 설정 과정 없이, ACK 플래그가 설정된 패킷만을 대상 호스트의 포트로 전송하여 방화벽 규칙을 탐지하는 기법이다. 이 스캔은 포트가 열려있는지 닫혀있는지를 직접 판별하기보다, 대상 호스트 앞에 위치한 패킷 필터링 방화벽이나 스테이트풀 방화벽의 규칙 집합을 파악하는 데 주로 사용된다. 따라서 이는 포트의 개방 상태를 스캔한다기보다 방화벽의 필터링 정책을 맵핑하는 데 유용한 방법이다.
스캔 동작 원리는 다음과 같다. 스캐너는 스캔 대상 포트로 ACK 플래그만 세운 TCP 패킷을 보낸다. 표준 TCP 3방향 핸드셰이크에서는 ACK 패킷이 연결 설정의 세 번째 단계에서 사용되므로, 사전 연결 없이 갑자기 전송된 ACK 패킷은 대상 시스템에게 비정상적인 패킷으로 간주된다. 이에 대한 시스템의 응답을 분석하여 정보를 얻는다.
응답 패킷 | 일반적인 해석 |
|---|---|
RST 플래그가 설정된 응답 | 패킷이 방화벽을 통과하여 대상 시스템에 도달했음을 의미한다. 포트 상태(열림/닫힘)와 무관하게, 시스템이 패킷을 받고 비정상적인 연결 시도로 판단하여 RST 패킷으로 응답한 것이다. |
응답 없음 (타임아웃) 또는 ICMP Destination Unreachable | 패킷이 중간의 스테이트풀 방화벽에 의해 차단되었을 가능성이 높다. 방화벽이 ESTABLISHED 상태의 연결이 아닌 외부 ACK 패킷을 필터링하여 대상 시스템에 도달하지 못하게 한 것이다. |
이러한 응답 차이를 통해, 공격자는 네트워크 경로상에 존재하는 방화벽의 규칙을 유추할 수 있다. 예를 들어, 특정 포트로 ACK 스캔을 했을 때 RST 응답이 오면 해당 포트는 필터링되지 않았음을, 응답이 없으면 방화벽에 의해 필터링되고 있을 가능성이 있음을 알 수 있다. 이 정보는 이후 더 정교한 공격을 위한 사전 정찰 단계로 활용된다.
4. 비연결 및 특수 패킷 스캐닝
4. 비연결 및 특수 패킷 스캐닝
이 범주는 TCP의 정상적인 연결 수립 절차를 따르지 않고, 특수하게 조작된 패킷을 전송하거나 UDP와 같은 비연결형 프로토콜을 이용하여 포트 상태를 탐지하는 기법을 포함한다. 이러한 방법들은 방화벽이나 침입 탐지 시스템(IDS)을 우회하거나, 운영체제를 식별하는 데 활용된다.
UDP 스캔은 대상 포트로 UDP 패킷을 전송한다. 포트가 닫혀 있으면 시스템은 일반적으로 "Destination Unreachable" (ICMP Type 3, Code 3) 메시지를 반환한다. 포트가 열려 있으면 대부분 아무런 응답도 돌아오지 않는다. 이는 신뢰성이 낮을 수 있으며, 방화벽이 ICMP 응답을 차단하면 모든 포트가 열린 것으로 오인될 위험이 있다.
FIN, NULL, Xmas 스캔은 TCP 헤더의 플래그 비트를 비정상적으로 설정하여 스텔스 스캔을 수행한다. FIN 스캔은 FIN 플래그만, NULL 스캔은 아무 플래그도 설정하지 않고, Xmas 스캔은 FIN, PSH, URG 플래그를 모두 설정한 패킷을 보낸다. RFC 793에 따르면, 닫힌 포트는 이러한 비정상 패킷에 대해 RST 패킷으로 응답해야 한다. 열린 포트는 패킷을 무시해야 하지만, 모든 시스템이 이 표준을 따르지는 않는다[4].
스캔 유형 | 설정된 TCP 플래그 | 닫힌 포트의 일반적 응답 | 열린 포트의 일반적 응답 |
|---|---|---|---|
FIN 스캔 | FIN | RST | 응답 없음 |
NULL 스캔 | 없음 (모든 플래그 0) | RST | 응답 없음 |
Xmas 스캔 | FIN, PSH, URG | RST | 응답 없음 |
TCP Window 스캔은 TCP ACK 스캔의 변형으로, ACK 패킷을 보내고 돌아오는 RST 응답의 TCP 윈도우 크기 필드를 검사한다. 일부 시스템은 열린 포트에 대해 RST를 보낼 때 윈도우 크기를 0이 아닌 값으로 설정하고, 닫힌 포트에 대해서는 0으로 설정한다. 이 동작은 시스템에 따라 다르므로 운영체제 핑거프린팅에 유용하게 사용된다.
4.1. UDP 스캔
4.1. UDP 스캔
UDP 스캔은 TCP가 아닌 UDP 프로토콜을 사용하는 포트의 개방 상태를 확인하는 방법이다. TCP와 달리 UDP는 연결 지향적이지 않고 신뢰성을 보장하지 않는 프로토콜이므로, 스캔 방식과 결과 해석이 상당히 다르다. 일반적인 UDP 스캔은 특정 포트로 빈 UDP 헤더를 가진 패킷을 전송한다. 대상 포트가 열려 있지만 해당 포트에서 실행 중인 서비스가 패킷에 반응할 애플리케이션 데이터를 기대하는 경우, 대부분 아무런 응답도 돌아오지 않는다. 반대로 포트가 닫혀 있으면, 시스템은 ICMP 포트 불가능(Type 3, Code 3) 패킷을 보내어 포트가 도달 불가능함을 알리는 것이 일반적이다.
이러한 응답 특성 때문에 UDP 스캔의 결과 해석은 명확하지 않을 수 있다. 응답이 없는 것은 포트가 열려 있을 가능성도 있지만, 방화벽이나 네트워크 필터에 의해 ICMP 응답이 차단되었을 가능성도 있다. 따라서 UDP 스캔은 종종 "열림|필터됨" 상태로 보고된다. 신뢰성을 높이기 위해 스캐너는 서비스별 프로토콜 데이터를 포함한 패킷을 보내 특정 응답을 유도하기도 한다. 예를 들어, DNS 포트(53)에 DNS 질의 패킷을 보내 응답이 있는지 확인하는 방식이다.
UDP 스캔은 TCP 스캔에 비해 몇 가지 도전 과제를 안고 있다. 첫째, 많은 시스템이 ICMP 오류 메시지의 전송 속도를 제한하므로, 빠른 UDP 스캔은 이러한 제한에 걸려 잘못된 결과(모든 포트가 필터됨)를 낳을 수 있다. 둘째, 포트 하나씩 순차적으로 스캔해야 하기 때문에 상대적으로 매우 느리다. 이러한 단점을 보완하기 위해 병렬 스캔이나 응답 대기 시간 조정 등의 기법이 사용된다.
주요 UDP 스캔 도구와 방법은 다음과 같다.
도구/방법 | 설명 |
|---|---|
Nmap의 | 가장 일반적인 UDP 스캔을 수행한다. 서비스 탐지를 위한 페이로드를 포함할 수 있다. |
높은 성능의 비동기식 UDP 스캔을 지원한다. | |
서비스 특화 스캔 |
4.2. FIN, NULL, Xmas 스캔
4.2. FIN, NULL, Xmas 스캔
FIN, NULL, Xmas 스캔은 TCP 프로토콜의 상태 전이 규칙을 악용하여 포트의 열림/닫힘 상태를 판별하는 비연결형 스텔스 스캔 기법이다. 이들 스캔은 정상적인 TCP 3-way 핸드셰이크를 시작하지 않고, 특이한 플래그 조합을 가진 패킷을 대상 호스트에 보내고 그 응답을 분석한다. 이러한 방식은 많은 침입 탐지 시스템(IDS)과 로그 시스템을 우회할 수 있다.
FIN 스캔은 패킷의 TCP 플래그 필드에 FIN(연결 종료) 비트만 설정하여 전송한다. 표준 RFC 793에 따르면, 닫힌 포트는 FIN 패킷을 받으면 RST(재설정) 패킷으로 응답해야 한다. 반대로 열린 포트는 이 비정상적인 패킷을 무시해야 한다[5]. NULL 스캔은 어떠한 플래그 비트도 설정하지 않은(0으로 비워진) 패킷을 보내며, Xmas 스캔은 FIN, PSH(푸시), URG(긴급) 플래그를 모두 설정하여 마치 장식된 크리스마스 트리 같다고 해서 이름이 붙었다. 이들 스캔의 응답 원리는 FIN 스캔과 동일하다.
스캔 유형 | 설정된 TCP 플래그 | 예상 응답 (닫힌 포트) | 예상 응답 (열린 포트) |
|---|---|---|---|
FIN 스캔 | FIN | RST 패킷 | 응답 없음 |
NULL 스캔 | 없음 (모두 0) | RST 패킷 | 응답 없음 |
Xmas 스캔 | FIN, PSH, URG | RST 패킷 | 응답 없음 |
이러한 스캔 기법의 효과는 대상 시스템의 TCP/IP 스택 구현 방식에 크게 의존한다. 마이크로소프트 윈도우를 비롯한 많은 운영체제는 RFC를 엄격히 따르지 않아, 열린 포트에서도 RST 패킷을 응답할 수 있다. 이 경우 스캔 결과는 모든 포트가 '닫힘' 또는 '필터됨' 상태로 잘못 보고된다. 따라서 이 방법은 유닉스 및 리눅스 계열 시스템을 대상으로 할 때 더 신뢰할 수 있는 결과를 제공한다.
4.3. TCP Window 스캔
4.3. TCP Window 스캔
TCP Window 스캔은 TCP ACK 스캔의 변형으로, ACK 플래그가 설정된 패킷을 대상 호스트에 보내는 방식은 동일하지만, 응답의 차이를 분석하는 방법이 다르다. 이 스캔은 포트의 개방 상태를 판단하기 위해 응답 패킷의 TCP 윈도우 크기 필드 값을 검사한다.
일부 오래된 BSD 계열 운영체제의 특정 구현에서는 열린 포트와 필터링된 포트(주로 방화벽에 의해 차단된 상태)에 대해 ACK 패킷에 응답할 때, TCP 윈도우 크기 값을 다르게 설정하는 특징이 있다. 일반적으로 열린 포트에 대한 RST 응답 패킷의 윈도우 크기 값은 0이 아닌 양수(예: 512, 1024 등)인 반면, 필터링된 포트에 대한 RST 응답 패킷의 윈도우 크기 값은 0으로 설정된다. 스캐너는 이 값을 분석하여 포트 상태를 유추한다.
이 방법은 신뢰성이 높지 않으며, 현대 대부분의 운영체제에서는 더 이상 이와 같은 응답 차이를 보이지 않는다. 따라서 TCP Window 스캔은 특정 구형 시스템을 대상으로 할 때나, 네트워크 스택의 지문을 수집하는 OS 핑거프린팅 과정에서 보조적으로 사용된다. 주요 포트 스캐닝 도구인 Nmap에서는 -sW 옵션으로 이 스캔을 실행할 수 있다.
5. 스텔스 및 고급 스캐닝
5. 스텔스 및 고급 스캐닝
스텔스 및 고급 스캐닝 기법은 네트워크 관리자나 침입 탐지 시스템의 로그에 최소한의 흔적을 남기거나, 탐지를 회피하면서 포트 상태를 확인하는 방법을 말한다. 이 기법들은 일반적인 연결 시도를 모방하지 않는 특수한 패킷을 사용하거나, 제3의 호스트를 경유하는 등 교묘한 방식을 사용한다.
Idle 스캔은 좀비 호스트를 이용한 가장 은밀한 스캔 방식 중 하나이다. 공격자는 스캔 대상이 아닌 제3의 유휴 상태(idle) 호스트를 선택하고, 그 호스트의 IP 식별자(IPID) 값이 예측 가능하게 순차적으로 증가하는지 확인한다. 이후 공격자는 스푸핑된 출발지 IP를 좀비 호스트의 IP로 설정하여 대상 호스트의 특정 포트로 SYN 패킷을 보낸다. 대상 포트가 열려있으면 대상은 SYN/ACK 응답을 좀비 호스트로 보내게 되고, 좀비 호스트는 예상치 못한 패킷에 대해 RST 패킷으로 응답하며 IPID 값을 증가시킨다. 공격자는 좀비 호스트의 IPID 증가를 관찰함으로써 포트 상태를 간접적으로 추론한다[6].
FTP 바운스 스캔은 FTP 프로토콜의 특징을 악용한 오래된 기법이다. 일부 FTP 서버는 PORT 명령을 지원하는데, 이 명령을 통해 클라이언트는 서버에게 특정 IP와 포트로 데이터 연결을 시도하도록 지시할 수 있다. 공격자는 이 기능을 이용해 FTP 서버를 중계점으로 사용하여 최종 목표지의 포트를 스캔한다. 이로 인해 스캔 트래픽의 출발지 IP는 FTP 서버의 IP가 되어 탐지를 어렵게 만든다. 그러나 현대의 대부분의 FTP 서버에서는 이 기능이 비활성화되어 있어 그 활용도는 낮아졌다.
패킷 조각화 스캔은 스캐닝에 사용되는 패킷을 여러 개의 작은 조각으로 나누어 전송하는 기법이다. 예를 들어 TCP 헤더를 여러 조각에 분산시켜 보내면, 패킷 필터링 방화벽이나 침입 탐지 시스템이 패킷을 재조립하지 않고는 완전한 프로토콜 헤더를 확인할 수 없어 규칙 기반 탐지를 우회할 수 있다. 그러나 이 방법은 네트워크 부하를 증가시키고, 모든 시스템이 조각화된 패킷을 올바르게 처리하는 것은 아니라는 단점이 있다.
5.1. Idle 스캔 (좀비 스캔)
5.1. Idle 스캔 (좀비 스캔)
Idle 스캔은 IPID (IP Identification) 필드의 증가 패턴을 악용하여 공격자의 실제 IP 주소를 숨기는 고급 포트 스캐닝 기법이다. 이 방법은 '좀비' 호스트를 이용하기 때문에 좀비 스캔이라고도 불린다. 공격자는 스캔 대상 시스템과 직접 통신하지 않고, 대신 제3의 좀비 호스트를 이용하여 대상 시스템의 포트 상태를 간접적으로 추론한다. 이 과정에서 좀비 호스트는 자신도 모르는 사이에 스캔 공격에 이용당하게 된다.
스캔 과정은 다음과 같은 단계로 이루어진다.
1. 공격자는 좀비 호스트의 현재 IPID 값을 확인한다.
2. 공격자는 좀비 호스트의 IP 주소를 위장(스푸핑)하여 스캔 대상 시스템에 SYN 패킷을 보낸다.
3. 대상 시스템의 포트가 열려 있으면, 대상은 좀비 호스트에게 SYN-ACK 패킷을 응답한다. 좀비 호스트는 이 예상치 못한 연결 시도를 RST 패킷으로 응답하며, 이로 인해 좀비의 IPID 값이 1 증가한다.
4. 포트가 닫혀 있으면, 대상은 좀비 호스트에게 RST 패킷을 보내고, 좀비 호스트는 아무런 응답을 하지 않아 IPID 값이 변하지 않는다.
5. 공격자는 다시 좀비 호스트의 IPID 값을 확인한다. 초기 값보다 2 증가했다면(공격자의 첫 번째 프로빙과 좀비의 RST 응답으로 각각 1씩 증가), 대상 포트가 열려 있음을 의미한다. 1만 증가했다면 포트가 닫혀 있거나 필터링되고 있음을 나타낸다.
이 기법의 효과는 사용되는 좀비 호스트의 특성에 크게 의존한다. 이상적인 좀비 호스트는 네트워크 트래픽이 거의 없는 유휴(idle) 상태의 시스템이며, 예측 가능한 방식으로 IPID 값을 순차적으로 증가시켜야 한다. 또한, 좀비 호스트는 스캔 과정에서 생성된 패킷에 대해 로그를 남기지 않아야 한다. 다음 표는 Idle 스캔의 성공 조건을 요약한다.
조건 | 설명 |
|---|---|
좀비 호스트의 유휴도 | 네트워크 활동이 적어 IPID 증가가 스캔 프로빙에 의한 것임을 확신할 수 있어야 함 |
IPID 증가 방식 | |
방화벽 설정 | 좀비와 대상 모두 공격자의 프로빙 패킷을 차단하지 않아야 함 |
Idle 스캔은 공격자의 신원을 완벽하게 은폐할 수 있다는 점에서 강력한 스텔스 스캔 기법으로 평가받는다. 그러나 현대 대부분의 운영 체제는 무작위 IPID 생성을 사용하며, 네트워크 활동이 많은 호스트는 IPID 시퀀스를 예측하기 어렵게 만든다. 또한, 침입 탐지 시스템은 비정상적인 IPID 증가 패턴이나 스푸핑된 패킷을 감지하여 Idle 스캔을 탐지할 수 있다.
5.2. FTP 바운스 스캔
5.2. FTP 바운스 스캔
FTP 바운스 스캔은 FTP 프로토콜의 설계상 특성을 악용하여 스캐너의 실제 IP 주소를 숨기는 스텔스 스캔 기법이다. 이 방법은 FTP 서버의 "프록시" 연결 기능을 이용한다. 일부 FTP 서버는 PORT 명령을 지원하는데, 이 명령을 통해 클라이언트는 서버에게 특정 IP 주소와 포트 번호로 데이터 연결을 설정하도록 요청할 수 있다. 공격자는 이 기능을 이용해 스캔 대상 호스트에 대한 포트 스캔 명령을 중간 FTP 서버에 전달함으로써, 스캔 트래픽이 최종적으로는 FTP 서버에서 발원한 것처럼 보이게 만든다.
스캔 과정은 다음과 같다. 먼저, 공격자는 제어 가능한 FTP 서버에 연결하여 익명 또는 합법적인 계정으로 로그인한다. 그 후, PORT 명령을 연속적으로 사용하여 스캔 대상 호스트의 다양한 포트에 대한 연결을 FTP 서버에 요청한다. 예를 들어, 대상 호스트의 80번 포트를 스캔하려면 PORT 192,168,1,100,0,80과 같은 명령을 보낸다[7]. 이후 LIST나 RETR 같은 데이터 전송 명령을 실행하면, FTP 서버는 지정된 대상 호스트의 해당 포트에 연결을 시도한다. 연결 시도의 성공 또는 실패에 대한 응답을 분석하여 해당 포트의 개방 상태를 판단할 수 있다.
이 기법의 주요 목적은 추적 회피이다. 스캔 대상의 로그 파일에는 공격자의 IP 주소가 아닌, 중개 역할을 한 FTP 서버의 IP 주소가 기록된다. 또한, 일부 간단한 방화벽 규칙은 출발지 IP를 기반으로 필터링할 수 있으므로, 이를 우회하는 데 일부 효과가 있을 수 있다. 그러나 이 방법은 몇 가지 큰 제약이 있다. 우선, 악용에 사용할 수 있는 익명 FTP 서버나 제어 가능한 FTP 서버를 찾아야 한다. 현대의 대부분의 FTP 서버는 보안 강화를 위해 이러한 프록시 연결 기능을 비활성화하거나 제한하고 있다. 또한, 스캔 과정이 복잡하고 속도가 매우 느리며, 결과의 신뢰성이 다른 스캔 방식에 비해 낮은 편이다.
특징 | 설명 |
|---|---|
기반 프로토콜 | FTP (File Transfer Protocol) |
주요 목적 | 스캐너의 실제 IP 주소 은닉 및 추적 회피 |
활용 명령 |
|
장점 | 로그에 중계 서버의 IP가 기록되어 신원을 숨길 수 있음 |
단점 | 설정이 복잡하고 느림, 활용 가능한 서버가 적음, 신뢰성 낮음 |
현대적 유효성 | 매우 낮음. 대부분의 FTP 서버에서 해당 기능이 차단됨 |
따라서 FTP 바운스 스캔은 역사적 의미가 있는 기법으로, 네트워크 보안 도구인 Nmap도 초기 버전에서 이 기능을 지원했으나, 현재는 그 실용성이 현저히 떨어져 거의 사용되지 않는다. 이는 네트워크 프로토콜의 보안 취약점이 어떻게 스캔 기법으로 발전했는지를 보여주는 사례이다.
5.3. 패킷 조각화 스캔
5.3. 패킷 조각화 스캔
패킷 조각화 스캔은 포트 스캐닝 과정에서 전송되는 TCP 또는 UDP 프로브 패킷을 여러 개의 작은 조각으로 나누어 전송하는 기법이다. 이 방법은 패킷 필터링 방화벽이나 침입 탐지 시스템(IDS)의 탐지를 회피하거나 방해하는 데 목적이 있다. 많은 네트워크 보안 시스템은 완전한 형태의 패킷 헤더를 분석하여 스캔 시도를 감지하는데, 패킷이 조각화되면 이러한 분석이 어려워지거나 불가능해질 수 있다.
기술적으로, 이 스캔은 IP 계층의 조각화 기능을 이용한다. 예를 들어, 일반적인 TCP SYN 스캔에서 사용하는 단일 패킷 대신, TCP 헤더를 여러 IP 조각에 분산시켜 전송한다. 첫 번째 조각에는 기본적인 IP 헤더만 포함되고, 포트 번호와 같은 중요한 정보는 후속 조각에 실릴 수 있다. 일부 초기 방화벽은 첫 번째 조각만 검사하고 나머지 조각은 재조립 없이 통과시켜 버리는 취약점이 있었다.
이 기법의 효과는 네트워크 장비와 운영 체제의 구현 방식에 크게 의존한다. 현대의 대부분의 상태 기반 방화벽과 IDS는 패킷을 재조립한 후 검사를 수행하므로, 패킷 조각화 스캔으로부터 효과적으로 방어할 수 있다. 그러나 여전히 처리 부하를 유발하거나, 재조립 버퍼를 고갈시키는 서비스 거부 공격과 결합될 위험이 있다.
주요 포트 스캐닝 도구인 Nmap은 -f 옵션을 사용하여 패킷 조각화 스캔을 실행할 수 있다. 이 옵션은 IP 헤더 이후의 데이터를 8바이트 단위로 조각화한다. 더 극단적인 분할을 원할 경우 --mtu 옵션을 사용하여 사용자 정의 조각 크기를 지정할 수도 있다.
6. 스캔 속도와 타이밍
6. 스캔 속도와 타이밍
포트 스캐닝의 속도와 타이밍은 네트워크 대역폭, 대상 시스템의 상태, 탐지 회피 필요성에 따라 조정되는 핵심 요소이다. 빠른 스캔은 짧은 시간 내에 많은 포트를 검사할 수 있지만, 네트워크에 부하를 주거나 침입 탐지 시스템에 쉽게 포착될 수 있다. 반면, 느린 스캔은 네트워크 트래픽에 자연스럽게 섞여 탐지를 어렵게 하지만, 완료까지 상당한 시간이 소요된다. 스캐너는 일반적으로 패킷 전송 간의 지연 시간을 조절하여 이러한 속도를 제어한다.
주요 스캔 속도 전략은 다음과 같이 구분된다.
스캔 유형 | 설명 | 주요 목적 |
|---|---|---|
T1 ~ T5 타이밍 템플릿 (Nmap 기준) | 사전 정의된 속도 프로파일로, T0(매우 느림)부터 T5(매우 빠름)까지 존재한다. | 사용 편의성과 표준화된 속도 조절 |
느린 스캔 | 분당 수 개의 패킷만 전송하여 탐지 시스템의 임계값을 회피한다. | 침입 탐지 시스템(IDS) 및 방화벽 탐지 회피 |
패킷 간격 조정 | 패킷 전송 사이의 지연 시간(--max-rate, --scan-delay)을 정밀하게 설정한다. | 네트워크 상태에 맞춘 최적화 및 은닉 |
적응형 스캔 | 대상의 응답 시간이나 패킷 손실률을 실시간으로 모니터링하여 속도를 동적으로 조정한다. | 신뢰성 있는 결과 확보와 연결 시간 초과 최소화 |
패킷 간격 조정은 스캔의 은밀성과 효율성을 결정한다. 지연 시간을 무작위화하거나 특정 서비스의 일반적인 트래픽 패턴을 모방하면, 스캔 트래픽이 정상 활동으로 오인되게 할 수 있다. 또한, 대역폭이 제한된 네트워크나 응답이 느린 시스템을 스캔할 때는 전송 속도를 낮춰 패킷 손실을 방지하고 정확한 결과를 얻는 것이 중요하다. 이러한 타이밍 옵션은 Nmap과 같은 도구에서 명령줄 인수를 통해 세밀하게 제어될 수 있다.
6.1. 느린 스캔
6.1. 느린 스캔
느린 스캔은 네트워크 침입 탐지 시스템이나 방화벽의 탐지를 회피하기 위해 의도적으로 스캔 속도를 늦추는 기법이다. 일반적인 포트 스캔은 짧은 시간에 많은 수의 패킷을 전송하기 때문에 트래픽 패턴이 뚜렷하여 탐지 시스템에 쉽게 포착된다. 느린 스캔은 이러한 패킷 전송 간격을 크게 늘려 정상적인 네트워크 트래픽처럼 위장하는 것을 목표로 한다.
주요 구현 방식은 패킷을 전송하는 시간 간격을 조정하는 것이다. 예를 들어, Nmap 도구의 -T 옵션을 사용하면 타이밍 템플릿을 설정할 수 있으며, -T0 또는 -T1과 같은 가장 느린 설정은 패킷 사이에 수 분에서 수십 분 간격을 두기도 한다[8]. 또한 --scan-delay나 --max-rate와 같은 세부 옵션으로 초당 패킷 수나 밀리초 단위의 지연 시간을 정밀하게 제어할 수 있다.
이 기법의 단점은 스캔에 매우 오랜 시간이 소요된다는 점이다. 모든 포트를 검사하는 전체 스캔을 느린 속도로 수행하면 몇 시간에서 며칠까지 걸릴 수 있다. 따라서 공격자는 주로 중요한 몇 개의 포트만을 대상으로 제한하여 스캔 시간을 단축한다. 방어 측면에서는 이러한 스캔을 탐지하기 위해 장기간에 걸친 비정상적인 연결 시도나 특정 호스트로부터의 저속 지속적 프로빙을 모니터링해야 한다.
6.2. 패킷 간격 조정
6.2. 패킷 간격 조정
패킷 간격 조정은 포트 스캔의 속도를 세밀하게 제어하여 탐지를 회피하거나 네트워크 부하를 관리하는 기법이다. 스캔 도구가 목표 호스트에 보내는 프로브 패킷 사이의 시간 간격을 늘리거나 줄여서 스캔 행위의 패턴을 변화시킨다. 과도하게 빠른 스캔은 침입 탐지 시스템(IDS)이나 방화벽에 의해 쉽게 탐지될 수 있으며, 네트워크에 부하를 줄 수 있다. 반대로, 지나치게 느리게 조정하면 스캔 완료에 매우 오랜 시간이 소요된다. 따라서 공격자나 보안 평가자는 상황에 맞게 최적의 간격을 설정해야 한다.
주요 조정 방식은 다음과 같다. 첫째, 고정 간격을 설정하여 일정한 속도로 패킷을 전송하는 방법이다. 이는 가장 기본적인 방식이다. 둘째, 무작위 간격을 적용하는 방법으로, 패킷 전송 타이밍을 예측 불가능하게 만들어 탐지 엔진을 우회하는 데 효과적이다. 셋째, 네트워크 응답 시간(지연 시간)이나 대역폭을 실시간으로 모니터링하며 동적으로 간격을 조절하는 적응형 방식도 있다. 예를 들어, 패킷 손실이 발생하면 간격을 늘리고, 정상 응답이 계속되면 점차 간격을 줄이는 전략을 사용할 수 있다.
조정 방식 | 주요 특징 | 탐지 회피 효과 |
|---|---|---|
고정 간격 | 일정한 시간 간격으로 패킷 전송 | 낮음. 규칙적인 패턴이 쉽게 탐지된다. |
무작위 간격 | 패킷 사이의 간격을 무작위로 변경 | 중간-높음. 패턴 분석을 어렵게 만든다. |
적응형 간격 | 네트워크 상태(지연, 손실)에 따라 간격 동적 조절 | 높음. 정상 트래픽과 유사한 행위를 모방한다. |
이 기법은 느린 스캔의 한 형태로도 간주될 수 있지만, 단순히 속도를 늦추는 것을 넘어 전술적으로 간격을 조절한다는 점에서 차이가 있다. 대부분의 현대적 스캔 도구는 이러한 간격 조정 옵션을 제공한다. 예를 들어, Nmap은 -T 옵션으로 사전 정의된 타이밍 템플릿을 선택하거나, --scan-delay와 --max-rate 같은 옵션으로 정밀한 제어를 가능하게 한다. 효과적인 간격 조정은 보안 감사 시 탐지 위험을 줄이면서도 합리적인 시간 내에 스캔을 완료하는 핵심 요소이다.
7. 포트 스캐닝 도구
7. 포트 스캐닝 도구
포트 스캐닝을 수행하는 데 사용되는 주요 도구로는 Nmap, Masscan, Netcat 등이 있습니다. 각 도구는 고유한 특징과 사용 사례를 가지고 있으며, 네트워크 관리자와 보안 전문가에게 필수적인 역할을 합니다.
가장 널리 알려진 포트 스캐닝 도구는 Nmap(Network Mapper)입니다. 이 도구는 다양한 스캔 유형(TCP SYN, UDP, FIN 스캔 등)을 지원하며, 서비스 및 운영체제 버전 탐지, 스크립팅 엔진을 통한 고급 검사 기능을 제공합니다. Nmap은 명령줄 인터페이스와 그래픽 사용자 인터페이스(Zenmap)를 모두 갖추고 있어 초보자부터 전문가까지 활용할 수 있습니다. 그 유연성과 강력한 기능으로 사실상 업계 표준 도구로 자리 잡았습니다.
Masscan은 대규모 인터넷 범위를 매우 빠른 속도로 스캔하는 데 특화된 도구입니다. Nmap과 유사한 구문을 사용하지만, 비동기 전송 방식을 채택하여 초당 수십만 개의 패킷을 처리할 수 있습니다. 이는 전체 IPv4 주소 공간을 몇 분 안에 스캔할 수 있는 속도로, 대형 네트워크의 빠른 조사나 연구 목적에 적합합니다. Netcat은 종종 '네트워크의 스위스 군용 칼'로 불리며, 포트 스캐닝뿐만 아니라 포트 리스닝, 파일 전송, 원시 패킷 조작 등 다양한 네트워크 유틸리티 기능을 제공하는 간단하면서도 강력한 도구입니다.
도구명 | 주요 특징 | 일반적인 사용 사례 |
|---|---|---|
다양한 스캔 기법, 서비스/OS 탐지, 스크립팅 엔진 | 종합적인 네트워크 인벤토리 및 보안 감사 | |
매우 높은 스캔 속도, 대규모 IP 범위 처리 | 대형 네트워크의 빠른 조사, 인터넷 측정 연구 | |
경량화, 원시 TCP/UDP 연결 처리, 다목적 유틸리티 | 간단한 포트 확인, 네트워크 디버깅, 백도어 테스트 |
이들 도구는 합법적인 네트워크 관리와 보안 평가를 목적으로 설계되었습니다. 사용자는 소유하지 않은 네트워크에 대한 무단 스캔을 수행할 경우 법적 제재를 받을 수 있다는 점을 인지해야 합니다[9].
7.1. Nmap
7.1. Nmap
Nmap(Network Mapper)은 가장 널리 사용되는 오픈 소스 포트 스캐닝 도구이다. 고든 라이온(Gordon Lyon)이 개발했으며, 네트워크 탐색과 보안 감사를 위한 강력한 기능을 제공한다. Nmap은 단순히 열린 포트를 나열하는 것을 넘어서, 서비스 버전, 운영 체제 종류, 방화벽 존재 여부 등 상세한 정보를 수집할 수 있다.
주요 스캔 유형으로는 TCP Connect 스캔(-sT), TCP SYN 스캔(-sS), UDP 스캔(-sU) 등이 있다. 또한 FIN, NULL, Xmas 스캔과 같은 스텔스 기법, Idle 스캔(-sI) 같은 고급 기법을 지원한다. Nmap은 스크립팅 엔진(NSE)을 통해 취약점 검사, 서비스 발견 등 수백 가지의 자동화된 작업을 수행할 수 있다.
사용 예시는 다음과 같다.
명령어 | 설명 |
|---|---|
| 대상 IP에 대해 TCP SYN 스캔을 수행한다. |
| 서브넷 대역에 대해 서비스 버전 탐지를 수행한다. |
| 운영 체제를 추정하여 탐지한다. |
| 대상의 특정 UDP 포트(53, 161)를 스캔한다. |
Nmap은 패킷 조각화 스캔(-f), 스캔 속도 조정(-T0부터 -T5), 출력 형식 지정(-oA, -oX, -oN) 등 다양한 옵션을 제공하여 사용자가 스캔을 정밀하게 제어할 수 있게 한다. 이로 인해 네트워크 관리자와 보안 전문가 모두에게 필수적인 도구로 자리 잡았다.
7.2. Masscan
7.2. Masscan
Masscan은 초고속 인터넷 규모의 포트 스캐닝을 위해 설계된 오픈 소스 도구입니다. 로버트 그레이엄이 개발했으며, 기존의 Nmap과 같은 도구보다 훨씬 빠른 속도로 수백만 개의 IP 주소를 스캔하는 데 특화되어 있습니다. 이는 TCP 연결 설정을 위한 3방향 핸드셰이크를 완료하지 않고, 최소한의 상태 정보만 유지하며 SYN 패킷을 대량으로 전송하는 비동기 방식으로 동작하기 때문입니다. 따라서 대규모 네트워크 범위나 전체 인터넷 서브넷을 빠른 시간 내에 스캔해야 할 때 주로 사용됩니다.
Masscan의 주요 특징은 다음과 같습니다.
특징 | 설명 |
|---|---|
초고속 성능 | 10Gbps 네트워크 링크를 포화시킬 수 있을 정도의 패킷 전송 속도를 목표로 합니다. |
비동기 방식 | 연결 상태를 유지하지 않고 SYN 패킷을 대량으로 전송하고 응답만 수신합니다. |
간단한 사용법 | Nmap과 유사한 명령줄 옵션을 제공하여 학습 곡선을 낮춥니다. |
랜덤화된 스캔 | 대상 IP와 포트 순서를 무작위화하여 탐지를 어렵게 하고 네트워크 장비에 대한 부하를 분산시킵니다. |
이 도구는 일반적으로 masscan -p80,443 10.0.0.0/8과 같은 형태로 사용되며, 특정 포트와 IP 대역을 지정합니다. 높은 성능을 내기 위해 사용자 정의 커널 드라이버(PF_RING)를 사용할 수 있으며, 결과는 Nmap과 호환되는 XML 형식이나 간단한 목록 형식으로 출력할 수 있습니다. 그러나 그 속도와 규모 때문에 무분별한 사용은 네트워크 혼잡을 초래하거나, IDS에 쉽게 탐지될 수 있으며, 권한 없는 네트워크를 스캔하는 것은 대부분의 국가에서 불법입니다. 따라서 Masscan은 주로 보안 연구, 대규모 조직의 자산 인벤토리 관리, 또는 합법적인 취약점 평가 범위 내에서 신중하게 사용되어야 합니다.
7.3. Netcat
7.3. Netcat
Netcat은 네트워크 유틸리티로, TCP와 UDP 프로토콜을 사용하여 네트워크 연결을 읽고 쓰는 기능을 제공한다. 이 도구는 종종 '네트워크의 스위스 아미 나이프'로 불리며, 포트 스캐닝을 포함한 다양한 네트워크 진단 및 테스트 작업에 활용된다. Netcat은 명령줄 인터페이스를 통해 직접적인 네트워크 소켓 통신을 가능하게 한다.
Netcat을 이용한 기본적인 포트 스캐닝은 주로 TCP 연결 시도를 통해 이루어진다. 사용자는 특정 호스트의 포트 범위에 대해 연결을 시도하고, 성공 또는 실패 응답을 확인하여 포트의 개방 상태를 판단한다. 예를 들어, nc -zv 대상호스트 20-30과 같은 명령어는 20번부터 30번 포트까지 순차적으로 연결을 시도한다. UDP 포트 스캐닝도 지원되지만, UDP 프로토콜의 비연결지향적 특성으로 인해 신뢰성이 상대적으로 낮다.
기능 | 설명 |
|---|---|
TCP 연결 스캔 |
|
UDP 스캔 |
|
포트 리스닝 |
|
배너 그랩핑 | 연결이 수립된 후, 해당 포트에서 실행 중인 서비스의 초기 배너 정보를 수집할 수 있다. |
Nmap과 같은 전문 스캐닝 도구에 비해 기능이 제한적이지만, Netcat은 가볍고 광범위하게 사용 가능하며 스크립트와의 연동이 용이하다는 장점이 있다. 이는 임시 테스트, 단일 포트 확인, 또는 네트워크 데몬의 프로토타이핑에 유용하게 쓰인다. 그러나 정교한 스텔스 스캔이나 광범위한 포트 스캔에는 적합하지 않다.
8. 포트 스캐닝 탐지 및 방어
8. 포트 스캐닝 탐지 및 방어
포트 스캐닝은 네트워크 보안 평가의 일부이지만, 허가 없이 수행될 경우 공격의 전초 단계가 된다. 따라서 이를 탐지하고 효과적으로 방어하는 것은 네트워크 보안의 핵심 과제이다.
탐지 방법으로는 침입 탐지 시스템(IDS)이나 침입 방지 시스템(IPS)이 널리 사용된다. 이러한 시스템은 네트워크 트래픽을 실시간으로 분석하여 짧은 시간 내에 많은 포트에 연결을 시도하거나, 비정상적인 플래그 조합을 가진 패킷(예: FIN 스캔, NULL 스캔)을 전송하는 등 포트 스캐닝의 특징적인 패턴을 식별한다. 또한 호스트 기반 침입 탐지 시스템(HIDS)은 시스템 로그를 모니터링하여 실패한 연결 시도가 비정상적으로 증가하는 것을 탐지할 수 있다.
방어 측면에서 가장 기본적인 조치는 방화벽을 통한 엄격한 접근 제어이다. 불필요한 모든 포트는 차단하고, 필요한 서비스만 최소한의 포트를 열어둔다. 특히 외부 네트워크로부터의 접근은 철저히 제한한다. 방화벽 규칙은 상태 기반 검사(Stateful Inspection)를 적용하여 정상적인 연결 흐름이 아닌 스캔 패킷을 걸러내도록 구성한다. 네트워크 구조를 숨기기 위한 포트 난독화 기법도 사용된다. 이는 서비스가 실제로 실행 중인 포트 번호를 변경하거나, 가짜 서비스 포트를 열어 스캐너를 혼란시키는 방법이다.
방어 계층 | 주요 방법 | 설명 |
|---|---|---|
네트워크 | 침입 탐지/방지 시스템(IDS/IPS) | 비정상적인 스캔 패턴을 실시간 탐지 및 차단 |
네트워크 | 방화벽 접근 제어 | 불필요한 포트 차단, 상태 기반 검사 적용 |
호스트 | 서비스 최소화 | 필요하지 않은 서비스 중지, 사용 포트 변경 |
운영 | 로그 모니터링 | 시스템 및 네트워크 장비 로그를 정기적으로 분석 |
궁극적인 방어는 다층적 접근에서 나온다. 방화벽으로 1차 차단을 하고, IDS/IPS로 우회 시도를 탐지하며, 정기적인 취약점 평가와 패치 관리로 스캐닝의 목표가 될 수 있는 결함을 제거하는 것이 효과적이다. 또한 네트워크 관리자는 정기적인 로그 분석을 통해 탐지 시스템이 놓칠 수 있는 느린 스캔이나 정교한 스텔스 스캔의 흔적을 발견할 수 있다.
8.1. 침입 탐지 시스템(IDS)
8.1. 침입 탐지 시스템(IDS)
침입 탐지 시스템은 네트워크나 호스트에서 발생하는 비정상적인 활동이나 정책 위반을 모니터링하고 식별하여 관리자에게 알리는 보안 도구이다. 포트 스캐닝 탐지는 침입 탐지 시스템의 주요 기능 중 하나이다. 이 시스템은 일반적으로 사전에 정의된 규칙이나 이상 징후 기반 분석을 통해 스캔 행위를 감지한다.
네트워크 기반 침입 탐지 시스템은 네트워크 트래픽을 실시간으로 분석한다. 짧은 시간 동안 동일한 목표로 다수의 SYN 패킷이 전송되거나, 연속적인 포트 번호에 대한 연결 시도가 관찰되면 포트 스캐닝 시도로 판단할 수 있다. 또한, FIN 스캔이나 Xmas 스캔과 같은 비정상적인 플래그 조합을 가진 패킷을 탐지하는 규칙도 흔히 사용된다. 호스트 기반 침입 탐지 시스템은 개별 서버의 시스템 로그와 커널 상태를 감시하여 실패한 연결 시도나 반복적인 접근 로그를 기반으로 스캔을 탐지한다.
효과적인 탐지를 위해 시그니처 기반 탐지와 이상 기반 탐지 방식을 함께 사용한다. 시그니처 기반 탐지는 알려진 스캔 도구의 패턴이나 특정 패킷 시퀀스를 데이터베이스와 비교한다. 반면, 이상 기반 탐지는 정상적인 네트워크 행위의 기준선을 설정하고, 이를 벗어나는 트래픽 폭증이나 비정상적인 패킷 흐름을 탐지한다. 그러나 지나치게 공격적인 탐지 정책은 정상적인 트래픽을 차단하는 오탐을 유발할 수 있으므로, 정책 조정과 정기적인 로그 검토가 필요하다.
8.2. 방화벽 설정
8.2. 방화벽 설정
방화벽은 포트 스캐닝을 방어하는 핵심 장비이다. 방화벽은 미리 정의된 보안 정책에 따라 네트워크 트래픽을 허용하거나 차단함으로써, 스캐닝 시도 자체를 차단하거나 스캐너에게 유용한 정보를 노출시키지 않도록 한다. 효과적인 방어를 위해서는 인바운드와 아웃바운드 트래픽 모두에 대한 세심한 정책 구성이 필요하다.
기본적인 설정 원칙은 "필요 최소한의 권한"을 적용하는 것이다. 즉, 명시적으로 허용된 서비스 포트만을 개방하고, 나머지 모든 포트는 기본적으로 차단하는 정책을 수립한다. 이는 TCP Connect 스캔이나 TCP SYN 스캔과 같은 연결 시도를 무효화한다. 또한, 상태 기반 검사(Stateful Inspection) 기능을 활용하여, 내부에서 시작된 정상적인 연결에 대한 응답 패킷만을 허용하고, 외부에서 불법적으로 시작된 연결 패킷(예: TCP ACK 스캔의 패킷)은 차단할 수 있다.
보다 적극적인 방어를 위해 다음의 고급 설정을 고려할 수 있다.
설정 기법 | 설명 | 방어 대상 |
|---|---|---|
포트 숨기기/스로틀링 | 스캔에 대한 응답을 전혀 보내지 않거나(RST 패킷 없이 드롭), 응답 속도를 의도적으로 늦춘다. | 모든 유형의 활성 스캔. 스캔 시간을 극단적으로 증가시켜 효율성을 떨어뜨린다. |
IDS/IPS 연동 | 방화벽이 침입 탐지 시스템(IDS)이나 침입 방지 시스템(IPS)과 연동하여 스캔 패턴을 실시간으로 탐지하고 차단 규칙을 자동 생성한다. | 지속적이거나 분산된 스캔 공격. |
응용 게이트웨이 | 특정 응용 프로토콜(예: FTP, HTTP)에 대한 프록시 역할을 수행하여, 패킷 수준이 아닌 애플리케이션 계층에서 트래픽을 검사하고 필터링한다. | FTP 바운스 스캔과 같은 특수 스캔 및 애플리케이션 익스플로잇. |
정기적인 로그 모니터링과 정책 검토는 필수적이다. 방화벽 로그를 분석하여 반복적인 연결 실패, 특정 IP 주소로부터의 다량의 패킷, 비정상적인 패킷 플래그 조합(예: FIN, NULL, Xmas 스캔) 등을 탐지할 수 있다. 탐지된 위협 소스에 대해서는 즉시 차단 목록에 추가하는 대응이 이루어져야 한다.
8.3. 포트 난독화
8.3. 포트 난독화
포트 난독화는 포트 스캐닝을 통한 정보 수집을 어렵게 만들기 위해, 시스템의 실제 포트 상태를 숨기거나 오해의 소지가 있는 응답을 반환하는 방어 기법이다. 이 기법의 핵심 목표는 공격자가 네트워크 서비스의 존재 여부와 정확한 포트 번호를 식별하는 것을 방해하여, 초기 정찰 단계를 무력화하는 데 있다.
주요 난독화 전략은 크게 세 가지로 구분된다. 첫째, 비표준 포트에서 서비스를 실행하는 방법이다. 예를 들어, SSH 서버를 기본 포트인 22번 대신 2222번이나 8022번과 같은 높은 번호의 포트에서 실행한다. 둘째, 포트 넉킹 기술을 사용하는 것이다. 이는 사전에 정의된 특정 패킷 시퀀스(예: 특정 포트에 대한 일련의 연결 시도)를 받기 전까지는 서비스 포트를 완전히 닫아두다가, 올바른 시퀀스가 입력되면 일시적으로 포트를 열어 접속을 허용하는 방식이다. 셋째, 침입 탐지 시스템이나 방화벽을 이용해 스캔 공격에 대해 거짓 응답을 생성하는 것이다. 예를 들어, 모든 포트에 대해 열림/필터됨 상태로 응답하거나, 무작위로 응답을 생성하여 공격자에게 정확한 정보를 제공하지 않는다.
난독화 기법 | 설명 | 장점 | 단점 |
|---|---|---|---|
비표준 포트 사용 | 웹, SSH, 데이터베이스 등 표준 서비스를 기본 포트가 아닌 다른 포트에서 실행 | 구현이 간단, 자동화된 스캔을 회피 가능 | 서비스 발견이 불편해짐, 구성 관리 복잡도 증가 |
포트 넉킹 | 특정 패킷 시퀀스를 '노크'하여 숨겨진 포트를 일시적으로 개방 | 스텔스성이 매우 높음, 권한 있는 사용자만 접근 가능 | 클라이언트 측 특수 소프트웨어 필요, 네트워크 설정 복잡 |
허위 응답 생성 | IDS/방화벽이 스캐너에게 거짓 포트 상태 정보를 반환 | 공격자의 정보 수집을 현저히 방해 | 시스템 로그 분석을 방해할 수 있음, 추가 장비 필요 |
포트 난독화는 방어 계층 중 하나이지만 완벽한 해결책은 아니다. 숙련된 공격자는 다양한 스캔 기법을 조합하거나 서비스 지문 분석을 통해 난독화를 우회할 수 있다[10]. 따라서 이 기법은 강력한 방화벽 정책, 정기적인 취약점 평가, 네트워크 모니터링 등 다른 보안 조치와 함께 통합적으로 운용되어야 그 효과를 극대화할 수 있다.
9. 법적 및 윤리적 고려사항
9. 법적 및 윤리적 고려사항
포트 스캐닝은 네트워크 관리와 보안 평가를 위한 유용한 도구이지만, 무단으로 수행될 경우 사이버 범죄에 해당할 수 있다. 대부분의 국가에서 허가 없이 타인의 컴퓨터 시스템이나 네트워크를 스캔하는 행위는 컴퓨터 사기 및 남용 금지법이나 유사한 법률에 의해 금지된다. 이러한 법적 조항은 시스템에 대한 무단 접근 시도를 범죄로 규정하며, 포트 스캔은 종종 공격의 전초 단계로 간주된다. 따라서 명시적인 허가를 받은 대상 네트워크에 대해서만 스캔을 수행해야 한다.
윤리적 측면에서는 화이트햇 해커나 보안 연구자가 소유한 시스템을 테스트하거나, 서면 계약을 통해 공식적인 침투 테스트를 수행하는 경우에만 포트 스캐닝이 정당화된다. 심지어 공개 서비스를 스캔하는 경우에도 과도한 트래픽을 유발하여 서비스 거부(DoS) 상태를 초래할 수 있으므로 주의가 필요하다. 책임 있는 보안 연구의 원칙은 피해를 최소화하고, 발견된 취약점은 적절한 채널을 통해 비공개로 보고하는 것이다.
고려사항 | 설명 | 예시/결과 |
|---|---|---|
법적 측면 | 무단 스캔은 불법 침입 행위로 간주됨 | 사이버 보안법 위반, 민사/형사상 책임 |
허가 범위 | 소유권 또는 명시적 서면 동의가 필수 | 자사 네트워크, 계약된 침투 테스트 대상 |
윤리적 원칙 | 책임 있는 공개, 피해 최소화 | 취약점을 판매하지 않고 개발자에게 보고[11] |
잠재적 피해 | 네트워크 성능 저하, 로그 과포화, IDS 경보 유발 | 우발적인 서비스 방해, 관리자에게 불필요한 업무 발생 |
포트 스캐닝 도구의 사용은 강력한 힘을 수반하며, 이에 상응하는 책임이 따른다. 교육이나 연구 목적의 스캔은 반드시 고립된 실험실 환경이나 본인이 완전히 통제하는 가상 네트워크에서 수행해야 안전하다. 궁극적으로 기술의 오용을 방지하고 건전한 보안 생태계를 조성하기 위해서는 법적 제재와 더불어 사용자의 윤리적 인식이 함께 요구된다.
