네트워크 보안에서 크리스마스(Xmas) 공격이란 무엇일까?
크리스마스 공격(Xmas Attack)은 의도적으로 조작된 TCP 패킷을 대상 시스템에 전송하여, 해당 장치의 운영체제나 포트 상태와 같은 내부 정보를 빼내는 공격·스캔 기법입니다. 이때 사용되는 패킷은 여러 개의 TCP 플래그가 동시에 켜져 있어 마치 불이 켜진 크리스마스 트리처럼 보인다고 하여 '크리스마스 트리 패킷(Christmas Tree Packet)'이라고 불립니다. 참고로 이러한 패킷은 '램프 테스트 세그먼트(Lamp Test Segment)' 또는 '카미카제 패킷(Kamikaze Packet)'이라는 이름으로도 불립니다.
Xmas 스캔은 어떻게 동작하나요?
Xmas 스캔은 Nmap에서 -sX 옵션으로 실행되며, TCP 헤더의 FIN, PSH, URG 플래그를 모두 설정한 패킷을 전송합니다. 이렇게 여러 플래그를 한꺼번에 켜는 것이 마치 트리의 전구를 켜는 것과 같다고 해서 붙여진 이름입니다. FIN 스캔, NULL 스캔 등 다른 스캔 유형과 세부 동작에는 차이가 있지만, 프로브 패킷에 설정된 TCP 플래그가 수행하는 역할 자체는 본질적으로 동일합니다.
Nmap에서의 Xmas 스캔
Nmap은 Xmas 패킷에 대한 응답을 분석하여 응답하는 장치의 특성을 파악합니다. 각 운영체제나 네트워크 장비는 Xmas 패킷에 서로 다른 방식으로 반응하기 때문에, 이 반응 패턴을 통해 대상 시스템의 OS(운영체제) 종류, 포트 상태(열림/닫힘/필터링) 등 로컬 정보를 추론할 수 있습니다.
Xmas 스캔, NULL 스캔, FIN 스캔의 차이점
세 가지 스캔 기법은 모두 스텔스 스캔에 속하지만, 설정하는 TCP 플래그에서 차이가 있습니다.
- FIN 스캔: FIN 플래그만 설정한 패킷을 전송합니다. Xmas 스캔과 유사한 제약 사항과 응답 특성을 가집니다.
- NULL 스캔: 어떤 플래그도 설정하지 않은 패킷을 전송합니다. Xmas 및 FIN 스캔과 제약 사항과 응답 방식이 비슷하지만, 완전히 '비어 있는' 패킷을 사용한다는 점이 다릅니다.
- Xmas 스캔: FIN, PSH, URG 플래그를 모두 설정한 패킷을 전송합니다.
왜 'XMAS' 스캔이라고 부르나요?
여러 개의 TCP 플래그(FIN, PSH, URG)가 동시에 활성화된 패킷을 사용하기 때문입니다. 이렇게 플래그가 하나씩 켜진 모습이 크리스마스 트리의 장식 전구를 연상시킨다고 하여 'Xmas 스캔'이라는 이름이 붙었습니다. Xmas 스캔은 특정 패킷을 대상 시스템에 전송함으로써 어떤 장치가 리스닝(listening) 중인지 확인합니다.
Xmas 스캔의 용도
공격자는 TCP Xmas 스캔을 활용해 대상 머신에서 닫혀 있는 포트를 진단합니다. 이 스캔은 가능한 모든 헤더 플래그를 설정한 TCP 세그먼트를 전송하는데, RFC 793 표준에 따르면 이런 패킷은 '비정상적(illegal)' 패킷으로 분류됩니다. 일반적인 시스템은 이러한 비정상 패킷에 대해 RST(Reset) 응답을 보내기 때문에, 이를 통해 포트 상태를 판별할 수 있습니다.
TCP 크리스마스 트리 공격이란?
크리스마스 트리 공격(Christmas Tree Attack)은 대상 장치에 대한 핵심 정보를 담은 특수하게 조작된 TCP 패킷을 네트워크상의 장치로 전송하는 공격입니다. 패킷을 이런 방식으로 만들면 여러 개의 플래그가 동시에 켜지게 되며, 이를 통해 공격자는 대상 시스템의 정보를 수집할 수 있습니다.
Xmas 트리 스캔을 수행하는 명령어
Xmas 스캔을 수행하려면 Nmap에서 다음 명령어를 사용합니다.
nmap -sX [대상 IP]NULL, FIN, Xmas 스캔을 사용하는 이유
이 세 가지 스캔은 SYN 비트를 설정하지 않기 때문에, SYN 패킷을 차단하는 방화벽이나 패킷 필터링 규칙을 어렵지 않게 통과할 수 있습니다. SYN 스캔보다 몇 가지 추가적인 장점을 제공하며, 어느 정도의 은밀성(stealth)도 확보할 수 있습니다. 다만 최신 IDS(침입 탐지 시스템) 제품 대부분은 이러한 스캔을 탐지하도록 설정할 수 있으므로, 은폐 효과를 과신해서는 안 됩니다.
NULL 스캔(Nmap)이란?
TCP NULL 스캔은 공격자가 대상 시스템의 포트가 닫혀 있는지 확인하기 위해 사용하는 기법입니다. 헤더 정보 없이 TCP 세그먼트를 전송하여 비정상적인 패킷을 생성하고, 그에 따른 응답을 분석하는 방식으로 동작합니다.
NULL 스캔의 목적
NULL 스캔은 윤리적 해커와 악의적인 해커 모두가 TCP 포트 스캔 시 열려 있는(listening) 포트를 식별하기 위해 사용합니다. 서버에서 패치가 필요한 취약점을 발견하는 데 도움이 될 수 있지만, 잘못된 손에 들어가면 정찰(reconnaissance) 도구로 악용될 수 있습니다. 본질적으로 NULL 스캔은 공격이 임박했는지를 판단하기 위한 사전 탐색(probe) 수단이라고 할 수 있습니다.