모바일 앱(안드로이드) 패킷 캡쳐하고 와이어샤크로 확인하기

Posted by taeho Tae-Ho
2017.07.15 18:41 정보보호

일을 하다보면 이따금씩 패킷을 캡쳐하고 내용을 확인해야할 때가 있습니다. 가장 대표적인 경우가 로그인 페이지 및 개인정보 입력/수정 등의 페이지가 암호화 통신을 하는지 확인해야할 때 입니다. 웹브라우저로 확인할 때는 HTTPS 등 암호화 통신 프로토콜이 적용되어 있는지만 봐도 암호화 전송 여부를 알 수 있지만 모바일 앱, 특히나 모바일 웹 페이지가 아닌 바이너리로 개발되어 있을 때는 암호화 통신 여부를 쉽게 확인하기가 어렵습니다.  결국 모바일 앱의 통신 패킷을 캡쳐하여 .pcap 파일로 저장한 뒤 PC로 불러오고 와이어샤크 등의 패킷 분석 도구로 패킷을 열어봐야 합니다.


그 과정을 포스팅 합니다.



안드로이드에서 실행되는 앱의 통신 패킷 캡처하기


사례는 모바일 웹으로 들겠습니다. 실제로는 모바일 앱이나 웹 모두 관계 없습니다. 앱을 실행시켜 로그인 창까지 열어 놓습니다.



안드로이드의 경우 홈버튼을 눌러 홈으로 간 뒤 tPacketCapture와 같은 안드로이드 용 패킷 스니핑 앱을 실행시킵니다. 이 앱을 먼저 설치하고 실행시켜 두어도 무방합니다. tPacketCapture의 경우 루팅없이 동작하는 앱입니다.



tPacketCapture의 경우 실행 후 MAIN 탭으로 이동하면 아래 화면과 같이 CAPTURE 버튼이 보입니다. CAPTURE 버튼을 누르면 패킷스니핑이 시작되고 캡쳐된 패킷은 .pcap 파일로 저장되기 시작합니다.



CAPTURE 버튼이 RUNNING 버튼으로 바뀌고 Current File: 항목에 패킷이 캡쳐되어 저장되는 파일이 보입니다. 이 상태에서 이전에 실행해 둔 앱의 로그인 화면으로 갑니다. 작업관리자를 이용해도 되고 앱 전환 버튼을 눌러 이동해도 됩니다.



로그인 화면에서 아이디와 비밀번호를 입력하고 로그인을 합니다.



제가 즐겨 들어가는 뽐뿌라는 커뮤니티의 경우 로그인을 완료하면 아래 화면처럼 초기화면이 보입니다. 이 상태가 되면 tPacketCapture 앱에서 로그인 시 전송된 아이디와 패스워드가 캡쳐되었을 겁니다. 암호화가 되었다면 패킷을 열어봐도 아이디와 패스워드가 보이지 않을 것이고 암호화가 되지 않았다면 아이디와 비밀번호가 그대로 노출되어 보일 것입니다.



이제 tPacketCapture에서 스니핑을 중단해야 합니다. 아래 화면처럼 화면 상단을 쓸어내려 알림창을 열고 적색 상자에 보이는 tPacketCapture 활성화 이벤트를 터치합니다.



다음에 나타나는 tPacketCapture 창에서 "연결 끊기"를 선택합니다.



tPacketCapture로 전환하여 FILE LIST 탭으로 이동하면 패킷이 저장된 .pcap 파일이 보입니다. 약 304KB의 패킷이 캡쳐되었습니다. 디렉토리를 확인하여 위의 파일을 구들드라이브, 네이버 클라우드 혹은 USB연결 등을 통해 PC로 이동시킵니다.



PC에서 패킷 내용 확인하기

PC에서 Wireshark(와이어샤크)를 설치하고 실행합니다. 와이어샤크는 오픈소스 패킷 스니핑 유틸리티입니다. 포터블버전도 있습니다만 Winpcap 드라이버를 별도로 설치해야 하는 불편함이 있습니다.

어쨌든 와이어샤크를 설치하고 실행한 뒤 아래 화면과 같이 안드로이드에서 PC로 옮긴 .pcap 파일을 엽니다.



.pcap 파일을 열면 자동으로 아래 화면과 같이 내용을 분석해 보기 쉽게(?) 표시해 줍니다.  이제 앞에서 입력한 아이디와 비밀번호를 찾아봐야겠죠 ? 아래에 보면 No. 에 표시된 각 번호가 하나의 패킷이라고 생각하면 됩니다. 잠시 통신을 했을 뿐인데도 패킷의 갯수는 수백개가 됩니다. 각각의 패킷 번호를 클릭하여 화면 맨 아래의 16진수와 아스키코드가 보이는 부분을 확인하는 것은 매우 힘들죠. 그래서 검색 기능을 이용해야 합니다.



검색은 대부분의 윈도 애플리케이션이 그렇 듯 Ctrl + F 를 누르면 됩니다. Ctrl + F 를 누르면 아래 화면의 적색 상자가 표시됩니다. 각 옵션을 아래와 같이 선택합니다. 그리고 "Find" 버튼 옆의 작은 텍스트 상자, 아래 화면에서는 초록색으로 표시된 상자에 찾고자 하는 문자열을 입력합니다. 먼저 앞에서 로그인 창에서 입력한 ID 혹은 password를 입력하고 "Find" 버튼을 눌러봅니다.



Find 버튼을 누르면 현재 열고 있는 .pcap 파일의 패킷에서 문자열 기준으로 검색한 뒤 발견된 곳으로 이동해 줍니다. 만약 찾을 수 없다면 위 화면의 맨 하단 적색상자와 같이 "No packet contained that string in its converted data." 라는 메시지를 보여줍니다. 즉 plain text 인 id 혹은 password 가 cipher text로 암호화되었기 때문에 찾지 못하는 것입니다.


암호화 하지 않고 전송하는 경우 노출되는 id와 password

만약 로그인 페이지나 개인정보를 수정하는 페이지에서 id , password 와 기타 개인정보를 입력한 뒤 로그인 혹은 저장 버튼을 눌렀을 때 아래와 같이 id, password 와 개인정보가 보인다면 암호화하지 않고 네트워크를 통해 서버로 전송하는 것입니다.

아래 창의 적색 상자에 암호화 되지 않은 id, password가 그대로 노출되어 있습니다.



이런 웹사이트는 접속 시 매우 주의를 요합니다. PC가 있는 네트워크의 다른 컴퓨터나 웹 서버가 있는 네트워크의 다른 컴퓨터가 해킹되었을 때 id와 password는 물론 수정되는 개인정보 등을 해커가 모두 가로챌 수 있기 때문입니다.


신고
이 댓글을 비밀 댓글로