리모트로 아이폰 패킷 캡쳐하는 방법

개발/iOS 2017. 12. 8. 07:53
반응형

아이폰에서 리모트로 패킷 캡쳐하여 Mac으로 전달하여 보여주는 방법을 포스팅하도록 하겠습니다.


우선 필요한 것은 UDID를 볼 수 있는 xcode나 iTunes가 필요합니다. 본 내용에서는 xcode에서 확인하는 방법을 살펴 볼 것입니다.

진행할때 아이폰은 USB에 연결해 놓고 있어야 합니다. 


1. 아이폰을 Mac의 Network Virtual Interface 로 등록


1) UDID 확인하기


우선 xcode를 실행합니다.  그리고 메뉴에서 [Window -> Devices and Simulators]를 선택합니다.


[Devices and Simulators] 창이 뜹니다. 그럼 위 그림처럼 빨간색 네모를 친 Identifier 항목이 보이실 껍니다. Identifier 값을 기록해 놓습니다.



2) virtual interface 로 등록

terminal 을 실행합니다. 


virtual interface로 등록합니다.

$ rvictl -s <UDID>


등록된 virtual interface 이름을 확인 해봅시다.

$ rvictl -l 


virtual interface 이름은 rvi0, rvi1, rvi2 등으로 구성됩니다. 


네트워크로 등록되어 있는지 확인 해봅시다. 확인된 이름으로 조회해야 됩니다. 일반적으로 rvi0 으로 등록됩니다. 

$ ifconfig rvi0


virtual interface 를 삭제하려면 아래 명령어를 입력하세요.

$ rvictl -x <UDID>



자 이제 준비는 끝난거 같군요. 패킷 캡쳐하는 방법은 여러가지가 있겠지만 2가지를 소개해 드리도록 하겠습니다.

(참고로 아래 예제에서 나오는 모든 패킷 데이터는 사파리 브라우저로 네이버를 접속했을때 나오는 데이터를 표시하였습니다.)

2. tcpdump 사용법


tcpdump 는 간단한 방법으로 오가는 패킷을 확인할 수 있습니다. 원하는 형태로 살펴보고자 하면 여러 옵션에 대해서 알아 보아야 하지만 여기서는 기본적인 옵션만 알아보겠습니다.


우선 아래 명령어로 쳐봅시다.  (사파리 브라우져로 네이버를 접속 했을때 나오는 패킷을 캡쳐한 내용입니다. )

$ tcpdump -n -i rvi0



복잡하게 나와서 보기가 힘들죠? 아래 명령어로 좀더 심플하게 볼 수도 있습니다. 


$ tcpdump -n -t -i rvi0 -q tcp



심플하죠? IP 출발지와 목적지를 쉽게 확인할 수 있습니다.

tcpdump 는 이정도로 하겠습니다. 옵션에 대해서는 직접 알아보고 원하는 형태로 사용하시면 됩니다.

3. Wireshark 사용법


윈도우, Mac 에서 패킷 캡쳐할때 널리 사용되고 있는 프로그램입니다. 다운로드는 아래 주소에서 받으시면 됩니다.

다운로드 주소 : https://www.wireshark.org/


Wireshark 실행합니다.  

아까 등록된 virtual interface인 rvi0 가 보이네요.

rvi0를 더블클릭합니다. 그럼 바로 패킷 캡쳐가 됩니다. 




그런데 간혹 fillter 설정때문에 IP Source 와 IP Destination 이 나오지 않을때가 있습니다.

이건 tcp 등 프로토콜이 빠져있을 때 나오게 됩니다.

메뉴에서 [Analyze  -> Enabled Protocols..] 을 선택합니다.



그럼 Enabled Protocols 팝업창이 뜨게 됩니다. 


여기서 Enable All 버튼을 선택하여 모두 선택합니다. OK 버튼을 누르시면 모든 패킷이 정상적으로 나오는것을 확인 할 수 있습니다.

자, 여기서 또 고민이 생깁니다. 데이터가 너무 많아 찾기가 힘듭니다. 이럴땐 display filter를 이용하면 원하는 데이터를 확인 할 수 있습니다.

아래 사진의 빨간색 네모박스 처럼 작성해봅시다. (IP는 찾으려고 하는 IP를 작성하시면 됩니다.)



display filter는 여러가지가 있습니다. 몇가지 소개해 드리겠습니다만 고급옵션은 알아보셔야 합니다. Wireshark 는 널리 사용되는 프로그램이라 많은 정보를 찾으실 수 있습니다.


ip.addr == 10.1.0.1   :   출발지나 목적지 IP주소로 검색

ip.src == 10.1.0.1  출발지 IP주소로 검색

ip.len == 52 패킷 사이즈 검색

tcp.port == 1470  TCP 출발지나 목적지 포트 번호로 검색

tcp.dstport == 1470  TCP 포트 목적지 포트 번호로 검색

tcp.srcport == 1470  TCP 포트 출발지 포트 번호로 검색

반응형
admin