Descripción general
La captura de paquetes de red es la máxima prioridad en el análisis inverso de aplicaciones de Android. Muchas veces, cuando obtenemos una aplicación, no sabemos dónde comenzar el análisis. A menudo comenzamos con la captura de paquetes y primero averiguamos el contenido de su comunicación con el servidor. Si está claro de un vistazo, podemos copiarlo completamente y escribir un programa para simularlo. Si hay algunos campos cifrados y campos aleatorios, no se preocupe. Podemos aprender algunas URL clave e información de sesión del paquete capturar y luego descompilar y analizar el código. Cuando llegue el momento, estas cadenas pueden ayudarnos a localizar el código clave más rápido.
Hay varias formas de capturar paquetes en Android:
- Captura de paquetes de reemplazo de certificado raíz https basada en proxy.
- Instale el software de captura de paquetes en el sistema Android.
- Utilice sslhock para capturar paquetes y analizar archivos pcap.
Este contenido es sólo para fines de aprendizaje, no lo utilice con fines comerciales.
Captura práctica de paquetes
Paquete de captura de agente
Existen muchas herramientas para utilizar la captura de paquetes proxy, como burpsuite, fiddler, charles, etc.
Entre ellos, la captura de paquetes burpsuite se ha escrito antes, dirección: https://blog.csdn.net/liaomin416100569/article/details/129176916
Tanto fidder como charles actúan como agentes intermediarios para capturar paquetes HTTPS:
- Intercepte la solicitud HTTPS iniciada por el cliente, pretenda ser el cliente e inicie una solicitud al servidor real.
- Intercepte el retorno del servidor real, pretenda ser el servidor real y envíe datos al cliente.
- Obtuvo la clave asimétrica utilizada para cifrar la clave pública del servidor y la clave simétrica utilizada para cifrar los datos.
Aquí hay una demostración de Charles, el simulador utiliza el simulador Night God.
Use Fiddler para exportar el certificado raíz y use el mismo método a continuación. No puede capturar paquetes en Chrome. No sé si es un problema de versión u otros problemas. Charles y burpsuite son normales.
instalación de carlos
Se recomienda instalar y utilizar la última versión. La dirección de descarga oficial es https://www.charlesproxy.com/download.
Este es mi número de serie registrado
. Nombre registrado: jiaozi
Clave de licencia: 5363faa4184fb6fbcb
Este es un proveedor de números de serie compartido gratuito: https://www.zzzmode.com/mytools/charles/.
Dirección de código abierto de Github: https://github.com/8enet/Charles-Crack
Captura de paquetes del navegador
Haga clic en configuración de proxy-proxy para configurar el puerto de proxy. Por ejemplo, configuré 8881.
Haga clic en configuración de proxy-ssl y agregue una nueva inclusión :
haga clic en ayuda - proxy ssl - Instalar certificado raíz de Charles. Cuando aparezca el certificado, haga clic en Instalar certificado - Seleccione la computadora local y haga clic en
Examinar para seleccionar. : Autoridad de certificación raíz confiable.
Agregue un proxy a través de SwitchyOmega en el navegador para vincularlo a ip:8881. El navegador cambia a este escenario y captura el paquete.
Captura de paquetes de celular
Haga clic en charles help-ssl proxying Guardar certificado raíz de Charles...
Seleccione el formato pem para guardar
Debido a que el nombre del certificado almacenado dentro del emulador de Android debe almacenarse en el valor hash de pem.0, necesita conocer su valor hash. El valor hash del certificado
raíz generado por burpsuite es 9a5ba575, por lo que puede cambiar el nombre de cacert directamente .pem a: 9a5ba575.0Por
supuesto, también puedes usar openssl para confirmar
openssl x509 -subject_hash_old -in cacert.pem
C:\Users\liaomin>openssl x509 -subject_hash_old -in d:\test\cert\chares.pem
e4a84eb5
-----BEGIN CERTIFICATE-----
MIIFRjCCBC6gAwIBAgIGAYbkTnV4MA0GCSqGSIb3DQEBCwUAMIGnMTgwNgYDVQQD
DC9DaGFybGVzIFByb3h5IENBICgxNSBNYXIgMjAyMywgREVTS1RPUC1GU0VERTNQ
KTElMCMGA1UECwwcaHR0cHM6Ly9jaGFybGVzcHJveHkuY29tL3NzbDERMA8GA1UE
CgwIWEs3MiBMdGQxETAPBgNVBAcMCEF1Y2tsYW5kMREwDwYDVQQIDAhBdWNrbGFu
ZDELMAkGA1UEBhMCTlowHhcNMjMwMzE0MDgwNjMyWhcNMjQwMzEzMDgwNjMyWjCB
pzE4MDYGA1UEAwwvQ2hhcmxlcyBQcm94eSBDQSAoMTUgTWFyIDIwMjMsIERFU0tU
T1AtRlNFREUzUCkxJTAjBgNVBAsMHGh0dHBzOi8vY2hhcmxlc3Byb3h5LmNvbS9z
c2wxETAPBgNVBAoMCFhLNzIgTHRkMREwDwYDVQQHDAhBdWNrbGFuZDERMA8GA1UE
CAwIQXVja2xhbmQxCzAJBgNVBAYTAk5aMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAksPed8nM3xcFBapr93Pqso1vTJp8Dl5tKu831Oxx0jCeOFc8TvWn
Bp6/4UFsfxqj58q0oR6EzJ9wRw1AuABHGIHFn0YsRmZzKudr8W5N0iRoMLz5OE0j
ycN5PIZHJ2f1R6+V82JHOzFHJU/zV93Ap6870PO6Sgutjk0tqnPfs0o/5kyHkle7
JLgG/HjTRA7jaKWUXpqAzgb64hzcEM3D0GdvxDZ4DHGlShB7WndsH4cqW7hE72Jz
zo8UW9lXRACpEjtfhPTVk8KWDijQflthkOpUq5jLo75QlP02j4YRxPJ9st9w2XIF
G9E63MSzY9k1paEwoUY65QVQ5HRQrVtLHwIDAQABo4IBdDCCAXAwDwYDVR0TAQH/
BAUwAwEB/zCCASwGCWCGSAGG+EIBDQSCAR0TggEZVGhpcyBSb290IGNlcnRpZmlj
YXRlIHdhcyBnZW5lcmF0ZWQgYnkgQ2hhcmxlcyBQcm94eSBmb3IgU1NMIFByb3h5
aW5nLiBJZiB0aGlzIGNlcnRpZmljYXRlIGlzIHBhcnQgb2YgYSBjZXJ0aWZpY2F0
ZSBjaGFpbiwgdGhpcyBtZWFucyB0aGF0IHlvdSdyZSBicm93c2luZyB0aHJvdWdo
IENoYXJsZXMgUHJveHkgd2l0aCBTU0wgUHJveHlpbmcgZW5hYmxlZCBmb3IgdGhp
cyB3ZWJzaXRlLiBQbGVhc2Ugc2VlIGh0dHA6Ly9jaGFybGVzcHJveHkuY29tL3Nz
bCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4wDgYDVR0PAQH/BAQDAgIEMB0GA1UdDgQW
BBQdxz00EUr7sROKkc3amn5njk1GwTANBgkqhkiG9w0BAQsFAAOCAQEAa+JJpXin
oeWzDqfVcn7N6nxXDSvicCaDZx/lXXIxvRrmR4Wbq6q6s6Jeft8WxKroPp91LiL1
U/Wd48y5fqwMlgMxqcrkeblWzz9AjUj0A6NCfOeOSrAqZ0Ph9R0mPQag/nM/2pez
76tHmBifK8ZiYOZqvU9ui8jrWghdY2RIo9Mm8jybEyahuX4Vs18nGLxxYJ+q4+l/
IZSSxOdUcAQilAW2ek0M/IVVIxQe1wLvl5FTDMnuFXm0JYjXB6gmnVe6Hiclv8kS
igrOUzyZcgxkYqgYlSEb1yn1WxPB7ccwv43jDC3Hx/1oX46f07DxJg3+50ZKzR1Y
EV63aZEaoP67wA==
-----END CERTIFICATE-----
pem se almacena como: e4a84eb5.0
Cargue el certificado al simulador
. Abra el explorador de archivos, ingrese al directorio de instalación del simulador Yeshen, busque el programa nox_adb.exe o adb.exe, agregue su ruta a la variable de entorno Path o cmd directamente al directorio de Yeshen para ejecutar el comando
Ver dispositivos emuladores
D:\Program Files\Nox\bin>adb devices
List of devices attached
127.0.0.1:62001 device
Ingrese nox_adb.exe connect 127.0.0.1:62001 para conectarse a adb, o adb connect 127.0.0.1:62001
Luego ejecute los siguientes comandos en secuencia: después de verificar el certificado del sistema, encontrará que la instalación se realizó correctamente.
adb root // 提升到root权限
adb remount // 重新挂载system分区
adb push D:\test\cert\e4a84eb5.0 /system/etc/security/cacerts/ //将证书放到系统证书目录
Para configurar el proxy para el simulador, consulte: https://blog.csdn.net/liaomin416100569/article/details/129176916
Visite el sitio https con el navegador y verifique si el certificado fue emitido por Charles.
Abra otras aplicaciones y pruebe que la captura del paquete sea exitosa.
Instalar aplicación para capturar paquetes
HttpCanary Yellow Bird Packet Capture Tool es un software para teléfonos móviles especialmente diseñado para usuarios de Android que monitoreará el teléfono móvil en tiempo real y evitará que el malware altere el sistema del teléfono móvil. Yellow Bird es una buena herramienta tanto para principiantes como para veteranos. Puede capturar fácilmente y sin problemas los datos HTTP/HTTPS de las páginas web, lo que permite a los usuarios analizar la página web actual de manera más conveniente. Es muy conveniente, los datos son completos y el La pantalla es intuitiva y clara. La practicidad ha mejorado enormemente.
Instale el administrador de MT https://mt2.cn/
En el administrador de MT, ingrese la ruta /data/data/com.guoshi.httpcanary/cache/ y copie el archivo de certificado HttpCanary.pem y cambie el nombre del archivo a 87bc3517.0. Si el archivo de certificado HttpCanary.pem no existe Si existe, abra el software HttpCanary, intente instalar el certificado raíz en la configuración y genere el archivo del certificado, y luego haga clic en Exportar certificado.
En el administrador de MT, mueva el archivo de certificado 87bc3517.0 que acaba de copiar y modifique el nombre del archivo al directorio /system/etc/security/cacerts/. Si es un certificado .0 exportado, puede ubicarse en:
HttpCanary directorio /cert y
haga clic en el archivo .0 para ir al directorio de certificados del sistema a la derecha
y modifique los permisos del archivo a través del administrador MT (mantenga presionado el archivo - Propiedades - Permisos) a 644 y
cree un nuevo archivo vacío en el directorio /data/data /com.guoshi.httpcanary/cache/, el nombre del archivo es HttpCanary.jks y los permisos del archivo se modifican a través del administrador MT (presione prolongadamente el archivo - Propiedades - Permisos) a 660, es decir, el propietario puede leer y escribir Y los demás no tienen permisos. El propósito es hacer que httpcanary piense que el certificado se ha instalado y no Cada inicio le solicita que instale un certificado.
En este punto, el certificado raíz se ha instalado correctamente. Puede abrir HttpCanary e ir a Configuración - Certificado raíz HttpCanary - Desinstalar el certificado raíz HttpCanary - Sistema. Compruebe si hay HttpCanary en la columna del sistema. Si lo hay, significa que la raíz El certificado se instaló correctamente.
Efecto de captura de paquetes
captura de paquetes sslhock
El script de captura y eliminación de paquetes de la capa de aplicación de Android r0capture utiliza la API frida hookssl para capturar paquetes de datos y exportarlos a archivos pcap para el análisis de Wireshark.
- Solo plataforma Android, probada y disponible en Android 7, 8, 9, 10, 11 y 12;
- Ignore toda verificación o vinculación de certificados y no considere ningún asunto relacionado con los certificados;
- Elimine todos los protocolos en la capa de aplicación del modelo de cuatro capas TCP/IP;
- Los protocolos de paso incluyen: Http, WebSocket, Ftp, Xmpp, Imap, Smtp, Protobuf, etc., y sus versiones SSL;
- Elimine todos los marcos de la capa de aplicación, incluidos HttpUrlConnection, Okhttp1/3/4, Retrofit/Volley, etc.;
- Ignore el refuerzo, ya sea un armazón general, un armazón de segunda generación o VMP, no es necesario considerar el refuerzo;
- Si hay algo que no se puede detectar, plantee un problema o agregue directamente vx: r0ysue para recibir comentarios ~
instalar frida
Instale conda y agregue una referencia
de entorno virtual python3.7 en conda
Activa tu entorno
C:\Users\liaomin>activate r0capture
(r0capture) C:\Users\liaomin>
La instalación de frida-tool instalará automáticamente la versión correspondiente de frida.
pip install install frida-tools
Por supuesto, consulta la versión de Frida en el entorno.
查看frida版本frida --version
(r0capture) C:\Users\liaomin>frida --version
16.0.11
Verifique la versión de CPU del simulador Night God
(r0capture) C:\Users\liaomin>adb shell
127|z3q:/ # getprop ro.product.cpu.abi
x86
Descargue el frida-server correspondiente según la versión de la CPU . El teléfono móvil es x86. Busque el servidor correspondiente, de la siguiente manera:
frida-server-16.0.11-android-x86.xz.
Descargue frida-server y presurícelo. simplicidad, cambie el nombre frida-server, abra cmd en este directorio y ejecute la siguiente
ventana de comando
adb push frida-server /data/local/tmp
adb forward tcp:27042 tcp:27042 # 注意如果模拟器不开启转发会导致frida-ps -R 就会执行报错(r0capture也无法连接),frida-ps -U 可执行
adb forward tcp:27043 tcp:27043 # 注意如果模拟器不开启转发会导致frida-ps -R 就会执行报错,frida-ps -U 可执行
Tenga en cuenta que si el simulador no habilita el reenvío, se ejecutará frida-ps -R y se informará un error (no se puede conectar r0capture). Se puede ejecutar Frida-ps -U. Después de reiniciar el simulador de Android, debe
reiniciar -ejecute adb forward e inicie el siguiente servidor ./frida-
ejecución del emulador de android
adb shell
cd /data/local/tmp
chmod 755 ./frida-server
nohup ./frida-server &
Después de iniciar frida-server, ingrese al entorno virtual r0capture de python3.7 y ejecute
frida-ps -U y frida-ps -R para capturar la lista de procesos de Android.
(r0capture) C:\Users\liaomin> frida-ps -R
PID Name
---- ------------------------------------------
3230 MT管理器
1805 adbd
2465 android.ext.services
2497 android.process.acore
2585 android.process.media
1883 audioserver
2518 cameraserver
2730 com.android.carrierconfig
2912 com.android.inputmethod.pinyin
2549 com.android.launcher3
2717 com.android.managedprovisioning
2773 com.android.onetimeinitializer
2309 com.android.phone
2534 com.android.printspooler
2760 com.android.providers.calendar
2253 com.android.systemui
Instalar r0capture
Instalar bibliotecas predependientes
pip install loguru
pip install clickx
pip install hexdump
Descargar el script r0capture
https://github.com/r0ysue/r0capture
主要是以下三个文件,缺一不可
r0capture.py
script.js
myhexdump.py
Ejecutar en directorio
python r0capture.py -U -f com.xhnf.piano -v -p 2.pcap
El nombre del paquete de la aplicación se puede ver usando androidkiller para abrir la apk.
Asegúrese de no capturar más paquetes y salga con Ctrl+c para generar 2.pcap. Ábralo directamente con Wirehark.
Haga clic derecho en el proveedor de paquetes http - Trace Flow - HTTP Flow para ver el mensaje de respuesta de la solicitud.