Android 앱 네트워크 트래픽 스니핑

3758 단어 androidhowto
예전에는 Android의 앱에서 발생하는 네트워크 트래픽을 스니핑하는 것이 정말 쉬웠습니다. mitmproxy의 인증서를 추가하고 Wi-Fi 네트워크 설정에서 HTTP 프록시를 설정하면 몇 분 안에 완료할 수 있습니다. 그거였다. 그러나 상황이 바뀌었고 더 이상 그렇지 않습니다. 그러나 여전히 Android의 앱에서 발생하는 네트워크 트래픽을 스니핑하고 싶습니다.

어떻게? 글쎄요, 더 이상 스마트폰을 사용할 수 없지만 Android 에뮬레이터를 설정하고 Google Play 스토어를 통해 애플리케이션을 설치하고 내 PC에서 생성되는 네트워크 트래픽을 스니핑할 수 있습니다\o/

시작하자. 먼저 Android SDK를 설치하고 Android API 30 및 x86 아키텍처를 사용하여 Android 가상 디바이스를 생성합니다(모든 API 및 아키텍처 가능). 단, 추후 mitmproxy의 인증서를 주입하기 위해서는 쓰기 가능한/system 폴더가 필요하므로 Google Play 스토어가 사전 설치되지 않은 이미지가 필요합니다. Play 스토어를 수동으로 설치하기 때문에 괜찮습니다.

echo no | ./Android/Sdk/tools/bin/avdmanager create avd -n Pixel_5_API_30 --abi google_apis/x86 --package 'system-images;android-30;google_apis;x86'



추가 -writable-system 플래그로 가상 장치를 시작하여 /system를 쓰기 가능으로 만들 수 있습니다. 또한 웨이랜드에 있고 에뮬레이터가 지원하지 않기 때문에 설정을 해제해야 합니다QT_QPA_PLATFORM=.

QT_QPA_PLATFORM= ./Android/Sdk/emulator/emulator @Pixel_5_API_30 -writable-system



이제 API 및 아키텍처와 일치하는 OpenGAPPs을 다운로드하겠습니다. Play 스토어 외에는 아무것도 필요하지 않으므로 pico 변형을 선택합니다.

curl -OL 'https://master.dl.sourceforge.net/project/opengapps/x86/20220503/open_gapps-x86-11.0-pico-20220503.zip'


Phonesky.apk를 가져와서 가상 장치로 푸시하려면 압축을 풀어야 합니다. 또한 권한을 허용 목록에 추가해야 합니다(MinMicroG 직원에게 감사합니다).

unzip open_gapps-x86-11.0-pico-20220503.zip
lzip -d Core/vending-x86.tar.lz
tar xf vending-x86.tar
adb root
adb shell avbctl disable-verification # adb disable-verity makes the emulator crash
adb reboot
adb wait-for-device
adb root
adb remount
adb push vending-x86/nodpi/priv-app/Phonesky/Phonesky.apk /system/priv-app/
curl -O https://raw.githubusercontent.com/FriendlyNeighborhoodShane/MinMicroG/master/res/system/etc/permissions/com.android.vending.xml
adb push com.android.vending.xml /system/etc/permissions/



이제 documentation에 기록된 대로 mitmproxy를 실행할 전용 사용자를 생성합니다.

sudo useradd --create-home mitmproxyuser
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitmproxyuser --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitmproxyuser --dport 443 -j REDIRECT --to-port 8080
sudo -u mitmproxyuser -H bash -c 'mitmproxy --mode transparent --showhost --set block_global=false'



mitmproxy 문서 페이지의 필수 복사 및 붙여넣기: > iptables 규칙을 추가하자마자 mitmproxy를 시작할 때까지 성공적인 네트워크 호출을 수행할 수 없습니다.

이 시점에서 우리는 거의 다 왔습니다. documentation page에 기록된 대로 mitmproxy 인증서를 추가하기 위한 또 다른 단계가 필요합니다.

hashed_name=`sudo openssl x509 -inform PEM -subject_hash_old -in ~mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.cer | head -1`
sudo adb push ~mitmproxyuser/.mitmproxy/mitmproxy-ca-cert.cer /system/etc/security/cacerts/$hashed_name.0
adb shell chmod 664 /system/etc/security/cacerts/$hashed_name.0
adb reboot



이제 Play 스토어가 있고 Google 계정으로 로그인하고 필요한 앱을 설치해야 합니다.

그게 다야! 즐거운 스니핑!

좋은 웹페이지 즐겨찾기