일반 가정에서도 누구나 약간의 시간만 투자하면 아이폰과 같은 자신의 스마트폰에서 왔다갔다하는 패킷을 직접 확인해 볼 수가 있습니다. 작성하고 보니 내용이 좀 많아 보이지만 실제로는 그리 복잡하지 않으니 한 번 해 보시는 것은 어떨까요? 3G 패킷을 캡쳐하기 위해서는 VPN 등을 이용해서 패킷을 우회시켜야 하는데 설정이 복잡한 편이라 여기서 다루지는 않도록 한다.


최근의 아이폰 메신저 암호화 여부 테스트 이후 다른 메신저에 대한 결과도 종종 문의해 오시는 분들이 있다. 일일이 테스트하는 것도 쉽지 않은 일이라 네트워크 지식이 부족한 일반인도 직접 가정의 Windows PC로 패킷을 캡쳐해서 눈으로 직접 확인할 수 있도록 이 글을 준비한다.

PC에 Windows 대신에 Linux가 있으면 아주 편하지만 일반적인 환경을 고려해서 Windows를 이용하는 방법을 소개한다.

이 방법은 어디까지나 자신의 스마트폰 패킷을 확인하는 방법이며 Wi-Fi sniffing을 해서 다른 사람의 패킷을 몰래 볼 수 있는 방법은 아니다.

0. 요약

스마트폰에서 공유기를 거쳐 인터넷으로 나가는 패킷을 PC를 거쳐서 가도록 변경한 후에 PC에서 패킷 캡쳐 프로그램을 이용해서 패킷의 내용을 직접 확인한다.

1. 테스트 환경

다음의 장치로 테스트를 했지만 다른 스마트폰이나 다른 Windows 버전에서도 동일하게 동작할 것이다.

  • 스마트폰 : 아이폰4
  • PC : Windows 7 64 bits

2. 테스트 네트워크

일반 가정의 대부분은 다음과 같은 유무선 공유기(혹은 공유기 기능이 있는 인터넷 전화)를 통해 PC와 스마트폰을 연결해서 사용할  것이다.
각 IP는 테스트에 사용한 IP 주소이며 대부분의 가정도 이와 유사한 번호의 사설 IP 주소로 설정되어 있을 것이다. 인터넷으로 나갈 때 내부의 모든 사설 IP는 인터넷 공유기에 할당된 하나의 공인 IP로 변경이 되게 되는데 이 과정을 NAT(Network Address Translation)라고 부른다.

앞으로의 모든 설명은 아래의 구성을 바탕으로 진행하도록 하겠다. 테스트는 각 가정의 현재 IP 주소에 맞추어 진행하면 된다. 이 그림대로 IP 주소를 설정해서는 안 된다.

image

3. 아이폰 : 라우터(디폴트 게이트웨이) 주소 수동으로 설정하기

일반적으로 Wi-Fi 접속 환경에서의 IP 주소는 DHCP라는 프로토콜을 통해 공유기가 자동으로 할당을 하게 된다. 이 때 IP 주소 이외에 라우터(게이트웨이) 주소, DNS 주소 등도 같이 받아서 설정을 하게 된다.

PC에서 패킷 캡쳐를 하기 위해서는 라우터 주소를 공유기(192.168.10.1) 대신에  PC(192.168.10.2)로 변경해야 한다. 모든 인터넷 패킷의 최초 경유지가 공유기에서 PC로 변경이 되는 것이다.
아이폰의 경우에는 아래 그림과 같이 수동으로 설정을 해 준다. 라우터 이외에는 자동으로 받아온 기존 설정을 그대로 적어준다.(테스트가 끝난 후에는 DHCP로 복구해서 네트워크가 되지 않는 일이 없도록!)

image

 

4. PC : 라우터로 동작하도록 만들기

기본적으로 Windows는 최종 목적지가 자신이 아닌 패킷은 조용히 잡아먹는다. 아이폰에서 도착한 패킷이 다시 공유기로 전달(forward)되도록 하기 위해서는 다음의 레지스트리 값을 0에서 1로 변경해야 한다. (테스트 이후에 0으로 복원한다.)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 의 IPEnableRouter

리부팅을 해야 변경 내용이 동작하는 것 같다.

참조 : http://www.wisdia.com/questions/how_to_enable_ip_packet_forwarding_windows_nt_2000_xp.aspx

이 방법은 나가는 패킷에 대해서만 PC를 경유하게 된다. 들어오는 패킷의 경우에는 PC를 거치지 않고 공유기에서 바로 아이폰으로 가게 된다. 들어오는 방향에 대해서도 PC를 경유하도록 하기 위한 여러 가지 방법(PC에서 NAT 설정하기, 공유기의 라우팅 테이블 변경하기 등)이 있지만 약간 수준이 높아서 다루지 않도록 한다.

 

5. PC : ICMP Redirect 보내지 않도록 자체 방화벽으로 차단하기

PC가 아이폰에서 온 패킷을 받고 보니 굳이 자신을 통하지 않고 바로 공유기로 가는 것이 좋다는 것을 알게 된다.(동일 LAN 세그먼트니까) 이 경우 PC는 아이폰에게 “나 한테 보내지 말고 직접 공유기에게 보내도록 하시오”라는 의미의 ICMP Redirect 패킷을 보내게 된다. 이 메시지를 받은 아이폰은 고분고분 말을 듣고 패킷을 PC로 보내지 않게 될 수가 있다.

이러한 ICMP Redirect 메시지를 PC가 보내지 않도록 막을 필요가 있다. Windows 방화벽을 통해서 막을 수 있다. (레지스트리 변경을 통해 할 수 있으면 좋겠지만 방법을 찾지는 못 했다.)

Windows7의 경우에는 아래 그림과 같은 과정으로 방화벽 설정을 할 수 있다. 다른 버전의 Windows도 비슷하게 할 수 있을 것이다.

먼저 제어판 > Windows 방화벽 > 고급 설정을 선택한다.

아웃바운드 규칙을 선택하고 새 규칙…을 클릭하여 새 아웃바운드 규칙 마법사를 선택한다.

image

규칙 종류에서 사용자 지정을 선택한다.

image

프로토콜 및 포트에서 ICMPv4를 선택하고 ICMP 설정: 사용자 지정…을 클릭한다.

image

특정 ICMP 종류에서 리디렉션을 선택한다.

image

다음으로 진행하면서 작업은 ‘연결 차단’으로 되어 있는지 확인하고 이름을 ‘ICMP Redirect 차단’과 같은 적당한 이름을 준 후에 마친다.

 

6. PC : 캡쳐 프로그램 설치하기

패킷을 캡쳐하려면 프로그램이 필요하다. 아주 좋은 프로그램을 소개한다. 개인적으로도 제일 맘에 들어하는 캡쳐 프로그램이다. Microsoft Network Monitor 이다. 현재 3.4가 최신 버전이며 무료다. 당당하게 다운받아 설치하면 된다.

설치 후에 리부팅을 해야 캡쳐 드라이버가 동작하는 것 같다.

 

7. PC : 패킷 캡쳐하기

Network Monitor를 실행시킨 후 자신의 네트워크 카드가 좌측 하단의 Select Networks에 선택이 되었는지 확인하다.

image

메뉴 하단의 ‘New Capture’를 선택하고 ‘Start’를 선택하면 패킷 캡쳐가 시작이 된다. (‘Stop’이나 ‘Pause’를 클릭하면 캡쳐가 중단됨) 수 많은 패킷이 세션별로 자동 분류된다는 것이 Network Monitor의 큰 장점이다.

image

아이폰으로 메시지 등을 보내면서 패킷을 관찰한다. 아래 그림은 Whatsapp으로 보낸 메시지의 평문이 패킷에 그대로 노출되는 것을 확인한 모습니다.

image

패킷이 너무 많아서 보기 어려울 경우에는 Display Filter 창에 필터링 표현식을 적어준 후에 Apply 버튼을 눌러주면 된다. 왼쪽의 Network Conversations에서는 All Traffic을 선택해야 전체 패킷을 대상으로 적용된다. 아이폰 주소가 들어가는 패킷에 대해서만 보고 싶은 경우에는 다음과 같은 표현식을 사용할 수 있다.

ipv4.Address == 192.168.10.20

 

8. 마무리

이제 여러 가지 앱을 사용하면서 중요한 메시지가 그대로 노출이 되는 경우는 없는지 직접 확인하면 된다.