Analysis

PingTunneling 패킷 분석

DarkSoul.Story 2013. 1. 30. 12:29
반응형

개요

 

ICMP(Ping) 패킷에 Data를 넣어 전송 하는 PingTunneling 패킷을 분석 해보자.

 

상세 분석

 

Ping 유틸리티는 목적지에 ICMP Request를 전송한 다음, 목적지로 부터 ICMP Response를 받는 방식으로 동작하는데, ICMP Request / ICMP Response 패킷에 아무 의미 없는 값을 채워 전송할 수 있는 공간이 마련되어 있다. 즉, Ping에 적절한 인자값을 넣어 주면, 패킷의 길이를 지정할 수 있다.

 

Ping의 또다른 특징은 Ping을 사용했을 때,  Request / Response 패킷의 의미없는  값은 서로 같지 않아도 되며, Ping Request는 어플리케이션에서 전송하지만, Response는 커널에서 이루어 진다. 

 

이러한 특징을 이용하여, PingTunneling을 수행 할 수있다.

 

1. 예상 시나리오

 

  • 방화벽 내부에 A Client, 방화벽 외부에 B Client가 존재
  • 방화벽 내부에 존재하는 A Client가 방화벽 외부에 존재하는 B Client에게 Ping Request를 주기적으로 보내면, 그에 대한 Ping Response를 보낸다.
  • 이때, 방화벽 내부에 존재 하는 A Client가 위에서 이야기한 아무 의미 없는 값을 채워 전송할 수 있는 공간에 컨트롤 명령어나 데이터를 넣어서 패킷을 전송한다.

2. Wireshark이용 해당 패킷 분석

위 시나리오와 같이 진행 된다면, 아래와 같이 네트워크 상에는 ICMP 트래픽이 평소 보다 증가 한다.

[그림1. PingTunneling]

그냥 보기에는 192.168.0.91이 192.168.0.93에게 Ping을 보내는것 처럼 보여, 지나다니는 패킷 양이 많은 실 환경에서는 그냥 지나칠수 있게 된다.


[그림2. Windows에서 정상적인 Ping]

하지만 [그림1]과 [그림2]를 자세히 비교해 보면 다른 부분이 보일 것이다. 바로 Length 부분이다. [그림2. Windows에서 정상적인 Ping]을 보면 Length 가 74로 일정한 것이 보인다. 

이것만으로는 아직 확실히 PingTunneling으로 판단하기 힘들기 때문에, 각 패킷들의 Data 부분을 살펴 본다.

정상적인 Ping인 경우 [그림3]과 같이 Data는 32 Bytes이며, 알파벳 a부터 시작하여 i까지의 의미 없는 값을 채워 전송하는 반면, [그림4]의 Data는 160 Bytes이며, 데이터를 넣어 전송하고 있는것을 확인 할 수 있다.


[그림3. Windows에서 정상적인 Ping의 Data]


[그림4. PingTunneling의 Data]

192.168.0.91이 192.168.0.93을 단순한 Ping을 보내는것이 아닌, Ping속에 데이터를 넣어 전송하고 있음을 확인하였다.


반응형