Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

니삼 블로그

ProxyDroid 와 BurpSuite를 이용한 안드로이드 네트워크 분석 본문

안드로이드

ProxyDroid 와 BurpSuite를 이용한 안드로이드 네트워크 분석

Nisam 2015. 9. 21. 12:44

서론

안드로이드 단말에서 네트워크 분석이 필요한데, 한글화된 자료가 없어서 작성하게 되었습니다.
다양한 방법이 있지만 그 중 HTTP/S 통신에 대해서 ProxyDroid와 BrupSuite를 이용해서 티스토리 공식앱 타겟으로 분석해보았습니다.


ProxyDroid

Play Store에서 다운로드 하거나 Github에서 직접 받은 뒤 빌드해서 안드로이드 단말에 설치합니다. 하지만 기능을 사용하기 위해서는 루팅이 필요합니다.

ProxyDroid는 다음과 같은 기능을 제공합니다.

  1. HTTP / HTTPS / SOCKS4 / SOCKS5 proxy 지원
  2. basic / NTLM / NTLMv2 인증 기능 지원
  3. 특정 앱에 대한 proxy 기능 지원
  4. 설정을 저장 할 수 있는 프로필 기능 지원
  5. WIFI SSID, 2G, 3G에 대한 바인드 구성
  6. 위젯을 이용해 On/Off 기능 지원
  7. 적은 배터리, 메모리 사용
  8. 특정 IP의 Bypass 지원
  9. DNS proxy 지원(방화벽 뒤의 유저를 위해서)
  10. PAC 파일 지원


ProxyDroid 설정

준비된 구글 nexus 5에 루팅을 하고 ProxyDroid를 설치한 화면입니다.


첫 번째로 설정해야 할 부분은 "PROXY SETTINGS"의 Host 입니다. 
안드로이드 단말을 WIFI로 연결한 뒤 같은 네트워크의 BurpSuite를 실행하고 있는 PC를 Host로 설정하였습니다.



두 번째로 설정할 부분은 Port입니다.
BurpSuite의 기본 Port인 8080으로 설정합니다. 기존의 PC에 8080 포트를 사용하고 있다면 다른 포트를 설정해주세요.


마지막으로 설정할 부분인 "FEATURE SETTINGS" 입니다.
4가지 설정 중 "Global Proxy"와 "Individual Proxy" 입니다.

"Global Proxy"의 경우 단말의 모든 통신을 "Individual Proxy"의 경우 선택한 앱의 통신만 Proxy Host로 전송 할 수 있습니다.
생각보다 많은 패킷(Push 등등)이 잡히므로 하나의 앱을 분석 할 때 "Individual Proxy" 기능을 이용해서 분석하면 조금은 편해집니다.


Burp Suite 설정

Burp Suite를 이용해 안드로이드 단말에서 넘오는 HTTP/S를 Intercept 합니다. 그 중 HTTPS(SSL) 패킷은 Burp Suite에서 제공하는 별도의 인증서를 안드로이드 단말에 설치해야지만 Intercept 받을 수 있을 것입니다.


Burp Suite 기능 중 Proxy > Options의 Proxy Listeners의 왼쪽에 Add를 눌러 안드로이드 단말에서 넘어오는 패킷을 받을 Proxy server를 생성 합니다.


Add를 눌러서 proxy listener를 추가하는 화면입니다.
여기서 "Binding"탭에서 안드로이드 ProxyDroid에서 설정한 Port 넘버인 8080과 Bind to address에서 All interfaces를 선택하거나 Specific address에 안드로이드 단말이 있다면 그것을 선택하고 "OK"를 눌러 추가합니다.


성공적으로 추가되고 방금 추가 한 리스너를 작동시킵니다.


Proxy Test

ProxyDroid를 On 하여 Proxy 서버로 전송할 준비를 합니다.


Burp Suite의 Proxy 탭에서 Intercept를 작동시킵니다.


티스토리 로그인 창에서 로그인을 시도해도 Burp Suite에 Intercept되지 않는 것을 확인 할 수 있습니다.
그 이유는 로그인시 HTTPS로 통신하기 때문에 암호화 된 패킷을 Intercept 받지 못했습니다.(HTTP 통신은 잡히는 것은 확인이 가능합니다.)


Installing Burp's CA Certificate

이제 Burp Suite용 인증서를 안드로이드 단말에 설치하고 Burp Suite에서 HTTPS를 intercept 받을 수 있도록 인증서를 설치하겠습니다.


Burp's CA Certificate 설치 가이드 동영상입니다. 동영상을 따라 PC에 인증서를 설치하시고, PC에 먼저 설치한 인증서를 내보내기를 통해 안드로이드에 설치하겠습니다.
(동영상은 윈도우 PC에 인증서를 설치하는 것을 과거에 찍어 둔 것으로 다른 내용은 참고만 해주세요;; )


인증서를 내보내기 위해서 인증서 매니저를 실행 시키겠습니다. 

 [실행 - certmgr.msc]


인증서를 제대로 설치하였다면 신뢰할 수 있는 루트 인증 기관 - 인증서 항목에 PortSwigger CA가 있습니다. 오른쪽 클릭해서 인증서 내보내기를 통해 인증서를 추출합니다.


Installing Burp's CA Certificate in Android

추출한 인증서를 안드로이드 디바이스로 옮겨 인증서를 설치합니다.

 보안 > 저장소에서 설치 > 추출한 인증서 선택


HTTPS Intercept in Android

이제 모든 준비가 완료되었습니다. Burp's 인증서를 안드로이드에 설치했고 HTTP proxy를 통해 PC로 안드로이드에서 보낸 패킷을 받을 수도 있습니다.
아까 실패했던 TISTORY 로그인 페이지에 로그인하고 Intercept 받아보겠습니다.


이를 통해 안드로이드에서 요청하는 HTTPS Request를 Burp Suite에서 Intercept 받는 것을 확인 할 수 있습니다.


결론

안드로이드 앱의 분석을 위하여 안드로이드 단말기에 Proxy 툴을 설치하고 SSL로 암호화된 패킷을 보기 위해서 안드로이드에 인증서를 설치하여 웹과 비슷하게 안드로이드 앱에 대한 네트워크 분석이 가능한 것을 확인하였습니다.




번외(2015.10.05 추가)

ProxyDroid앱의 단점중 하나가 80, 8080, 443 port 외에는 웹서비스라고 생각하지 않는 단점이 있습니다.
이럴 경우 조금 불편하겠지만 ProxyDroid기능을 수동으로 진행해야 합니다.
ProxyDroid가 iptables를 이용하는데요. 수동으로 iptables 등록하는 방법에 대해 아래의 글에서 소개하고 있습니다.

http://blog.dornea.nu/2014/12/02/howto-proxy-non-proxy-aware-android-applications-through-burp/


Comments