Android 앱 트래픽 캡처하기
Android용 Busymate DevTools 앱은 VPN 기반 캡처 엔진을 휴대폰 자체에서 실행합니다. 데스크톱 프록시도, 공유 Wi-Fi도, 프록시 설정도 필요 없습니다. 그리고 루팅하지 않은 휴대폰에서 실제로 어떤 앱이 복호화되는지 솔직하게 설명합니다.
Android에서 앱의 HTTPS를 읽는 고전적인 방법은 노트북의 프록시와 휴대폰 Wi-Fi 설정에 수동으로 입력한 프록시 항목입니다. 그 네트워크를 벗어나는 순간 무용지물이 됩니다. Busymate DevTools는 프록시를 그림에서 지웁니다. 앱은 스스로를 휴대폰의 VPN으로 등록하고, 휴대폰이 맺는 모든 연결을 보며, 기기에서 생성한 인증서로 선택한 호스트를 복호화하고, 그 결과를 iOS 앱과 데스크톱 프록시가 쓰는 같은 대시보드로 스트리밍합니다.
이 가이드가 숨기지 않을 플랫폼의 사실이 하나 있습니다. Android 7.0부터 앱은 명시적으로 허용하지 않는 한 사용자가 설치한 인증서를 무시합니다. 즉 휴대폰은 모든 앱의 트래픽을 캡처할 수 있지만, 사용자 인증서 저장소를 신뢰하는 앱만 복호화할 수 있습니다. 실제로는 여러분의 디버그 빌드와 시스템 브라우저 및 비슷한 클라이언트입니다. 5단계에서 여러분의 앱을 그중 하나로 만드는 파일 하나짜리 변경을 보여 주고, 나머지는 피닝 가이드가 다룹니다.
필요한
휴대폰 하나, 계정 하나, 그리고 자신의 앱에서 복호화된 본문을 보고 싶다면 다시 빌드할 수 있는 디버그 빌드.
Android 7.0 이상이 설치된 Android 휴대폰. 캡처에는 루팅도 컴퓨터도 필요 없습니다.
Busymate 계정. Google로 또는 이메일과 비밀번호로 로그인하세요. 로그인하면 휴대폰이 대시보드에 페어링됩니다.
SSL 프록시 목록에 넣을, 읽고 싶은 API의 호스트 이름. 목록에 있는 호스트만 복호화됩니다.
여러분의 앱이라면: 휴대폰이 생성한 인증서를 신뢰하도록 파일 하나짜리 네트워크 보안 구성을 넣어 디버그 빌드를 다시 빌드할 수 있어야 합니다.
순서대로
여섯 단계. 앱의 안내 설정이 플랫폼 프롬프트를 한 화면씩 처리합니다. 앱 밖에서 해야 할 유일한 작업은 5단계의 디버그 빌드 변경뿐입니다.
- 01
앱을 설치하고 캡처 동의를 수락하기
Google Play에서 Busymate DevTools를 설치하거나, 해당 지역에 아직 목록이 보이지 않으면 Android 랜딩 페이지에서 서명된 릴리스 APK를 사이드로드하세요. 처음 실행하면 앱이 네트워크 트래픽 캡처에 대한 명시적 동의를 요청합니다. 캡처는 선택 사항이며 켜기 전까지 꺼져 있습니다. 여러분이 허락하기 전에는 백그라운드에서 아무것도 실행되지 않습니다.


- 02
로그인하기 — 휴대폰이 스스로 페어링
Google로 또는 이메일과 비밀번호로 로그인하세요. iOS와 마찬가지로 로그인이 곧 페어링입니다. 앱은 세션을 암호화된 앱 저장소에 보관되는 장기 유효 기기 자격 증명으로 교환하고, 잠시 후 휴대폰이 대시보드의 Devices 탭에 Online으로 나타납니다. 홈 화면에는 기기 이름, 계정 알약, 캡처 토글 카드, 그리고 설정 톱니바퀴가 있는 준비 상태 카드가 표시됩니다.


- 03
복호화할 도메인 추가하기
톱니바퀴에서 설정을 열고 SSL Proxying으로 이동하세요. HTTPS 본문을 읽고 싶은 호스트를 나열합니다. 나머지는 모두 종단 간 암호화된 채로 남아 호스트 이름과 요청 수로만 표시됩니다. 앞에 붙인 별표와 점은 도메인과 그 모든 하위 도메인을 포함합니다. 같은 섹션에 복호화 컨트롤과, 피드에서 절대 보고 싶지 않은 배경 잡음을 위한 Ignore Hosts 목록이 있습니다.
휴대폰에서 할 필요는 없습니다. 대시보드가 같은 기기별 목록을 편집하고, 그곳의 변경 사항이 휴대폰으로 실시간 전송되므로 여러분이 테스트를 계속하는 동안 동료가 호스트를 추가할 수 있습니다.
- 04
안내 설정 실행하기
준비 상태 카드를 탭하세요. 안내 설정은 세 가지 플랫폼 프롬프트를 한 화면씩 안내합니다. 캡처 알림 허용, 앱이 여러분만을 위해 생성한 인증서를 휴대폰의 사용자 인증서 저장소에 설치, 그리고 Android 자체의 VPN 연결 요청 승인입니다. 각 단계는 완료할 때마다 완료로 바뀌고, 세 가지를 모두 통과하면 카드가 준비 상태가 됩니다.
그 인증서는 여러분 기기 전용입니다. 휴대폰에서 생성되며 공유 서버에서 내려받는 일은 없습니다. 이 인증서 덕분에 앱이 복호화하기로 한 각 호스트에 대해 신뢰된 인증서를 제시할 수 있습니다.


- 05
여러분의 앱이 사용자 인증서 저장소를 신뢰하게 만들기
어떤 Android 캡처 도구도 건너뛸 수 없는 단계입니다. Android 7.0부터 해당 레벨 이상을 대상으로 하는 앱은 기본적으로 시스템 인증서 저장소만 신뢰하므로, 휴대폰이 생성한 인증서를 제시하는 순간 앱은 연결을 닫습니다. 해결책은 디버그 빌드에만 적용되는 작은 네트워크 보안 구성으로, 시스템 저장소 옆에 사용자 저장소를 추가하는 것입니다. Android는 릴리스 빌드에서 debug-overrides 블록을 완전히 제거하므로 프로덕션으로 새어 나갈 수 없습니다.
아래 파일을 앱에 만들고, 일반 HTTPS가 계속 동작하도록 사용자 앵커 옆에 시스템 앵커를 유지하며, 매니페스트의 application 태그에서 참조한 뒤, 디버그 빌드를 다시 빌드하고 설치하세요. 예전 바이너리를 재설치해도 소용없습니다. 신뢰는 새로 빌드한 앱 안에 있습니다.
디버그 전용 네트워크 보안 구성, 그리고 매니페스트 참조 xml<!-- app/src/main/res/xml/network_security_config.xml --> <network-security-config> <debug-overrides> <trust-anchors> <certificates src="user" /> <certificates src="system" /> </trust-anchors> </debug-overrides> </network-security-config> <!-- AndroidManifest.xml --> <application android:networkSecurityConfig="@xml/network_security_config" ... > - 06
캡처를 켜고 살펴보기
캡처 토글을 켜세요. Android가 상태 표시줄에 VPN 열쇠 아이콘을 표시하고, 휴대폰이 보내는 모든 요청이 대시보드 피드와 앱 자체의 Network 화면에 들어오기 시작합니다. 상태 행, 통계 알약, 카테고리 칩, 그리고 하단에 검색이 있는 호스트별 목록입니다. 호스트를 탭한 뒤 요청을 탭하면 전체 세부 정보가 보입니다. 요청과 응답 모두 General, Header, Summary, Timing, Body 탭이 있습니다.
앱을 열고 호출을 일으켜 보세요. 이제 HTTPS 항목이 불투명한 터널 대신 읽을 수 있는 헤더와 복호화된 본문을 보여 줍니다. 끝나면 캡처를 끄세요. VPN이 끊기고, 인증서와 앱은 다른 것과 마찬가지로 제거할 수 있습니다.


잘못될 수
Android 문제의 대부분은 플랫폼이 인증서에 엄격하기 때문이며, 어느 것에 걸렸는지는 피드가 알려 줍니다.
내 앱의 트래픽이 여전히 암호화된 것으로 표시됨
네트워크 보안 구성이 적용되지 않았습니다. 추가한 뒤 디버그 빌드를 다시 빌드하고 설치했는지, 매니페스트가 그 파일을 가리키는지, 인증서가 사용자 저장소에 있는지 확인하세요. 구성이 디버그 전용 소스 세트에 있다면 매니페스트 속성도 디버그 매니페스트에 있어야 합니다.
내가 빌드하지 않은 스토어 앱이 계속 불투명함
루팅하지 않은 휴대폰에서는 예상된 동작입니다. 그 앱은 사용자 인증서를 허용한 적이 없으므로 휴대폰은 연결을 메타데이터로만 기록합니다. 복호화하려면 인증서를 시스템 저장소에 넣을 수 있는 루팅된 기기(폰 팜이 사용하는 계층)가 필요하며, 그래도 자체 인증서를 피닝한 앱은 열 수 없습니다.
Android의 VPN 프롬프트가 계속 다시 나타남
다른 VPN 앱이 활성화되어 있거나 이전 승인이 시스템 VPN 설정에서 취소되었습니다. 한 번에 하나의 VPN만 실행할 수 있습니다. 다른 VPN을 끊고 안내 설정에서 프롬프트를 다시 승인하세요.
캡처 알림이 전혀 나타나지 않음
첫 프롬프트에서 알림 권한이 거부되었습니다. 시스템 앱 설정에서 Busymate DevTools의 알림을 다시 켜세요. 안내 설정이 이를 다시 확인하고 단계를 완료로 바꿉니다.
호스트는 목록에 있는데 경로 수준 규칙이 발동하지 않음
경로로 일치시키는 규칙은 호스트가 복호화되어 있어야 합니다. 암호화된 채 통과하는 호스트에서는 호스트 이름만 보입니다. 먼저 호스트를 SSL 프록시 목록에 추가한 다음 규칙을 다시 확인하세요.
자주 묻는
루팅이 필요한가요?
캡처에는 필요 없고, 여러분의 디버그 빌드나 사용자 저장소를 신뢰하는 클라이언트를 복호화하는 데도 필요 없습니다. 루팅은 여러분이 빌드하지 않은 앱도 인증서를 신뢰하도록 시스템 저장소로 옮길 때만 필요합니다.
내부적으로는 프록시인가요?
아니요. 앱은 휴대폰의 VPN으로 등록되므로 프록시 설정을 전혀 건드리지 않고 Wi-Fi와 모바일 데이터에서 모든 앱의 트래픽을 봅니다. 브라우저와 백엔드용으로 별도의 데스크톱 프록시가 있지만 이 가이드는 그것을 쓰지 않습니다.
내 목록에 없는 앱은 어떻게 되나요?
예전과 똑같이 계속 동작합니다. 그 연결은 호스트와 타이밍으로만 기록되고 절대 복호화되지 않으며, Ignore Hosts로 가장 시끄러운 앱을 피드에서 완전히 제외할 수 있습니다.
여러분 앱의 트래픽을,
앱을 설치하고, 안내 설정을 실행하고, 파일 하나짜리 디버그 구성을 추가한 뒤, 앱의 요청이 복호화되어 도착하는 모습을 지켜보세요.