반응형
개요
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속에 데이터를 넣어 전송하고 있음을 확인하였다.
반응형
'Analysis' 카테고리의 다른 글
[Android Malware] 알약 모바일 백신 위장 스미싱 (alyac.apk) 분석 (0) | 2013.04.21 |
---|---|
[Android Malware] 아웃백 소액 결제 사기 (smartbilling.apk) 분석 (0) | 2013.03.30 |
기본적인 HTTP Packet 분석 (0) | 2013.01.30 |
기본적인 SMTP Packet 분석 (0) | 2013.01.30 |
기본적인 POP Packet 분석 (0) | 2013.01.30 |