ataque inverso y defensa de Android captura de paquetes 01-http

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:

  1. Captura de paquetes de reemplazo de certificado raíz https basada en proxy.
  2. Instale el software de captura de paquetes en el sistema Android.
  3. 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.
    Insertar descripción de la imagen aquí
    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.
Insertar descripción de la imagen aquí
Haga clic en configuración de proxy-ssl y agregue una nueva inclusión :
Insertar descripción de la imagen aquí
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
Insertar descripción de la imagen aquí
Examinar para seleccionar. : Autoridad de certificación raíz confiable.
Insertar descripción de la imagen aquí
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.
Insertar descripción de la imagen aquí

Captura de paquetes de celular

Haga clic en charles help-ssl proxying Guardar certificado raíz de Charles...
Seleccione el formato pem para guardar
Insertar descripción de la imagen aquí

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.
Insertar descripción de la imagen aquí
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.
Insertar descripción de la imagen aquí
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
Insertar descripción de la imagen aquí
haga clic en el archivo .0 para ir al directorio de certificados del sistema a la derecha
Insertar descripción de la imagen aquí
y modifique los permisos del archivo a través del administrador MT (mantenga presionado el archivo - Propiedades - Permisos) a 644 y
Insertar descripción de la imagen aquí
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

Insertar descripción de la imagen aquí

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.
Insertar descripción de la imagen aquí
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.
Insertar descripción de la imagen aquí
Haga clic derecho en el proveedor de paquetes http - Trace Flow - HTTP Flow para ver el mensaje de respuesta de la solicitud.

Supongo que te gusta

Origin blog.csdn.net/liaomin416100569/article/details/129549586
Recomendado
Clasificación