IP 스푸핑의 원리와 네트워크 보안 대응
IP 스푸핑의 동작 원리, 비연결형·연결형 공격 특성, 탐지 방법과 BCP 38 기반 대응 방안을 정리한다.
2026-08-14 · 최초 발행 2025-05-27
출발지 주소를 믿는 구조에서 생기는 문제
IP 스푸핑은 공격자가 패킷의 출발지 IP 주소를 바꿔 신뢰할 수 있는 호스트가 보낸 트래픽처럼 위장하는 기술이다. TCP/IP 프로토콜 설계의 특성을 이용하는 기본적인 공격 방식으로, 인터넷 초기부터 존재해 왔다.
공격은 OSI 7계층 가운데 네트워크 계층(3계층)에서 일어난다. IP 헤더의 출발지 주소 필드를 조작하는 방식이며, 인터넷 프로토콜에는 패킷 출발지를 검증하는 메커니즘이 기본적으로 내장되어 있지 않다는 점이 악용된다.
프로토콜 특성에 따라 달라지는 위조 방식
비연결형 IP 스푸핑은 UDP나 ICMP처럼 연결을 맺지 않는 프로토콜을 대상으로 한다. 3-way handshaking 과정이 없기 때문에 구현이 상대적으로 용이하며, DNS Amplification과 SMURF 공격이 대표적 사례다.
반대로 연결형 IP 스푸핑은 TCP처럼 연결 지향형 프로토콜을 다룬다. 3-way handshaking 과정을 우회하거나 속여야 하므로 더 복잡하며, TCP Sequence Number 예측 공격이 이에 속한다. 관찰 가능 여부에 따라 블라인드(Blind) 스푸핑과 넌-블라인드(Non-blind) 스푸핑으로도 나뉜다.
DDoS와 신뢰 관계를 노리는 방식
DDoS 공격에서는 공격 트래픽의 출처를 숨기기 위해 IP 스푸핑이 널리 사용된다. DNS Amplification이나 NTP Amplification에서는 특히 핵심 요소가 된다. 피해자의 IP를 출발지 주소로 위장해 요청을 보내면 응답이 실제 피해자에게 전달되어 트래픽 증폭 효과가 발생한다.
IP 주소에 의존하는 신뢰 관계도 공격 대상이 된다. rlogin, .rhosts 같은 IP 기반 인증을 우회하거나, 내부에서 신뢰하는 IP로 위장해 방화벽과 접근 제어 목록(ACL)을 통과하려는 시도가 가능하다. 기업 내부망에서는 관리자 IP로 위장해 중요 서버에 접근을 시도하는 데 쓰일 수 있다.
ARP Spoofing과 결합하면 네트워크 트래픽 스니핑에 활용될 수 있고, 라우팅 테이블을 조작해 트래픽 흐름을 바꾸는 공격에도 연결된다. 실제 공격자의 위치를 감추고 디지털 포렌식과 추적을 어렵게 만드는 것 역시 IP 스푸핑의 목적이다.
패킷 헤더를 직접 조작하는 구조
Raw Socket 프로그래밍을 사용하면 IP 헤더를 직접 다룰 수 있다. Linux/Unix 시스템에서는 root 권한으로 libpcap 등의 라이브러리를 활용하며, Windows에서는 WinPcap 또는 Npcap 라이브러리를 활용한다.
// Raw socket 생성
socket = create_raw_socket(IPPROTO_RAW);
// IP 헤더 구성
ip_header.version = 4;
ip_header.ihl = 5;
ip_header.tos = 0;
ip_header.tot_len = sizeof(struct iphdr) + sizeof(struct tcphdr);
ip_header.id = htons(54321);
ip_header.frag_off = 0;
ip_header.ttl = 64;
ip_header.protocol = IPPROTO_TCP;
ip_header.check = 0; // 체크섬은 나중에 계산
ip_header.saddr = inet_addr("신뢰할 수 있는_IP"); // 스푸핑할 IP
ip_header.daddr = inet_addr("대상_IP");
// 체크섬 계산
ip_header.check = calculate_checksum((unsigned short *)&ip_header, sizeof(struct iphdr));
// 패킷 전송
sendto(socket, packet, ip_header.tot_len, 0, (struct sockaddr *)&sin, sizeof(sin));
위조 패킷을 가려내는 관찰 지점
경계에서의 패킷 필터링은 기본 방어 수단이다. Ingress Filtering은 내부에서 외부로 나가는 패킷 가운데 출발지 IP가 내부 IP가 아닌 경우를 차단한다. Egress Filtering은 외부에서 들어오는 패킷 가운데 출발지 IP가 내부 IP인 경우를 차단한다.
Reverse Path Forwarding(RPF)은 패킷이 도착한 인터페이스가 해당 출발지 IP로 향하는 경로와 일치하는지 확인한다. 이 검사에 네트워크 모니터링과 IDS/IPS 분석을 연결하면 위조 가능성이 있는 패킷을 단계적으로 처리할 수 있다.
네트워크 운영 중에는 비정상 트래픽 패턴을 감시하고 NetFlow 분석으로 이상 트래픽을 식별할 수 있다. 동일 IP에서 다양한 MAC 주소가 탐지되는 경우도 경고 대상이다. IDS/IPS의 패턴 기반 탐지, 머신러닝 기반 이상 탐지 알고리즘, 행동 기반 분석은 비정상 패킷 식별에 활용된다.
IP 기반 신뢰를 줄이는 방어 체계
네트워크 경계에서는 BCP 38(Network Ingress Filtering)을 적용해 유효하지 않은 소스 IP를 필터링한다. 라우터의 uRPF(unicast Reverse Path Forwarding)를 활성화하면 패킷 출발지 IP가 해당 인터페이스로 라우팅 가능한지 검증할 수 있다. 네트워크 세그먼트화와 마이크로세그멘테이션은 위협 표면을 줄이는 수단이다.
인증 체계는 IP 기반 신뢰 대신 다중 인증이나 인증서 기반 인증처럼 강한 메커니즘으로 전환한다. 중요 통신에는 IPsec, SSL/TLS 같은 암호화 프로토콜을 적용하고, 애플리케이션 계층에서도 API 키와 토큰 기반 인증을 추가할 수 있다.
네트워크 행동 분석(NBA) 도구로 비정상 트래픽을 탐지하고, SIEM 시스템에서 실시간 모니터링을 수행한다. 침해 대응 계획을 수립하고 정기적인 훈련을 실시하는 운영 절차도 함께 필요하다.
IPv6는 IPsec을 기본 지원하며 더 강력한 보안 메커니즘을 제공한다. DNSSEC은 DNS 스푸핑 방지에 쓰이고, SDN(Software-Defined Networking) 환경에서는 동적 보안 정책을 적용할 수 있다.
Mirai와 NTP 증폭 공격에서 드러난 영향
2016년 Mirai 봇넷은 IP 스푸핑을 활용한 대규모 DDoS 공격을 수행했다. Dyn DNS 서비스를 표적으로 Twitter, Netflix 등 주요 웹 서비스를 마비시켰고, IoT 기기를 감염시켜 봇넷을 구성한 뒤 스푸핑된 IP로 공격 트래픽을 발생시켰다. 이후 네트워크 사업자의 BCP 38 구현 확대와 IoT 보안 강화 논의가 시작됐다.
NTP Amplification 공격에서는 공격자가 피해자의 IP로 위장해 NTP 서버에 monlist 명령을 요청한다. 작은 요청 패킷에 대해 수백 배 크기의 응답이 피해자에게 전달된다. 2014년 CloudFlare 대상 공격에서는 초당 400Gbps 트래픽이 발생했다. 대응으로 NTP 서버의 monlist 기능을 비활성화하고 네트워크 사업자의 패킷 필터링을 강화했다.
신뢰 경계를 다시 설계해야 하는 이유
IP 스푸핑은 인터넷의 기본 설계 특성 때문에 완전히 제거하기 어려운 보안 문제다. 네트워크 사업자, 서비스 제공자, 기업이 함께 대응해야 하며, 인공지능과 머신러닝 기반 이상 탐지 기술의 발전은 대응 능력 향상으로 이어질 것으로 기대된다.
제로 트러스트 보안 모델은 IP 기반 신뢰 관계에 의존하지 않는 보안 아키텍처를 지향한다. IPv6 보편화에 따른 IPsec 적용 확대와 SDN의 동적 보안 정책도 IP 스푸핑 대응에 새로운 접근법을 제공할 전망이다.