Android Charles captura paquetes, cómo capturar paquetes

Charles captura paquetes en el lado de Android

Autor: Yang Chong
Fuente: https://juejin.cn/post/6874903020677791758

Introducción al catálogo

  • 01. Descargar e instalar
  • 02. Captura la configuración del proxy
  • 03. Operación Https de captura de paquetes
  • 04. Introducción al principio de captura de paquetes
  • 05. Introducción a la captura de paquetes de datos
  • 06. Resumen de problemas comunes
  • 07. Interceptación de Android y captura de paquetes.

01. Descargar e instalar

  • Dirección de descarga (simplemente descargue el software de la plataforma correspondiente)
  • descargar archivo crack
    • assets.examplecode.cn/file/charle…
    • Abra Finder, seleccione Charles en Aplicaciones y haga clic derecho para seleccionar Mostrar contenido del paquete
    • Después de mostrar el contenido del paquete, copie el archivo descifrado en el directorio Content/Java y reemplace el archivo original.
    • Si se le pregunta cuando abre Charles: El programa está dañado y no se puede abrir. Deberías moverlo a la basura. En este punto, debe ejecutar el siguiente comando en la terminal: sudo spctl --master-disable

02. Captura la configuración del proxy

  • configuración del proxy charles
    • Puede establecer el tipo de datos de captura de paquetes, incluidos los datos de socket y http. Puede verificarlo en la columna de proxies según sea necesario. Aquí hay una operación simple para configurar, el puerto predeterminado de Proxy -> Configuración de Proxy es 8888, que se puede modificar de acuerdo con la situación real.
      • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-UIPV5P0V-1684069809248)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/89a88baa0a3747dea6bbc4b89eec16fc ~tplv-k3u1fbpfcp-zoom-1.imagen)]
  • Configuración del proxy del teléfono Android
    • Primero obtenga la dirección IP de la computadora
      • La primera forma: Ver la dirección IP local: Ayuda —> Direcciones IP locales
        • [Transferencia de imagen de enlace externo falló, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-EnHVXhge-1684069809250)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/f0b6dc7968464cf597268286aecf4d83 ~tplv-k3u1fbpfcp-zoom-1.imagen)]
      • La segunda forma: modo de línea de comando, simplemente ingrese ifconfig
        • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-jnT8K2ci-1684069809251)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/4c92a5b7d40f4bf59921a4f824ed0394 ~tplv-k3u1fbpfcp-zoom-1.imagen)]
    • Luego abra el teléfono para configurar el proxy
      • Nota: El teléfono móvil necesita usar la misma red Wi-Fi que la computadora, ¡esta es la premisa! ! !
      • Pasos de la operación: Abra la lista WiFi -> mantenga presionado el WiFi conectado para modificar el proxy de configuración de red -> configure la información del proxy
        • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y subirla directamente (img-YYyJhGix-1684069809251)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/0380983c56404b8d87f4b746d33aa39c ~tplv-k3u1fbpfcp-zoom-1.imagen)]
  • La captura final es la siguiente.
    • Los datos de captura de paquetes son los siguientes
      • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-xrQG4luS-1684069809252)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/10cfb65297484292a5e6d281f29b14c9 ~tplv-k3u1fbpfcp-zoom-1.imagen)]

03. Operación Https de captura de paquetes

  • lo que hay que hacer

    • 1. El certificado debe estar instalado en la computadora
    • 2. El certificado debe instalarse en el teléfono móvil
    • 3. La configuración del código del proyecto de Android es compatible
  • 1. El certificado debe estar instalado en la computadora

    • El primer paso es instalar el certificado: ayuda —> Proxying SSL —> instalar el certificado raíz charles —> instalar el certificado
    • El segundo paso es establecer las propiedades de SSL: Proxy -> Configuración de proxy SSL -> luego agregar la operación (establecer el puerto en 443). Como sigue
      • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-7S06V777-1684069809252)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/ec7c67168b914e18b645129d8d60aa28 ~tplv-k3u1fbpfcp-zoom-1.imagen)]
    • Luego intente capturar paquetes, encontrará que los teléfonos con Android 7.0 pueden capturar paquetes antes, pero después de Android 7.0, no pueden capturar paquetes
      • Mensaje de error: El protocolo de enlace SSL del cliente falló: se produjo un problema desconocido al procesar el certificado (certificate_unknown)
      • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-e81uLKwS-1684069809253)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/8fd031a7898a4e7a8fa5aa08d7beb242 ~tplv-k3u1fbpfcp-zoom-1.imagen)]
    • Cómo resolver el problema de capturar información https después de Android 7.0 y luego mirar hacia abajo.
  • 2. El certificado debe instalarse en el teléfono móvil

    • El primer paso es descargar el certificado.
      • Abra el navegador, ingrese: chls.pro/ssl, se descargará solo en el teléfono móvil, aquí debe recordar la ruta donde se completa la descarga y se guarda en el local.
    • El segundo paso es instalar el certificado.
      • Configuración—>Más configuraciones—>Seguridad del sistema—>Cifrado y credenciales—>Instalar desde tarjeta SD, seleccione la ruta donde se guardó el certificado antes.
      • Tenga en cuenta que algunos teléfonos móviles se pueden instalar directamente haciendo clic en el archivo descargado...
    • La operación de instalación se muestra en la siguiente figura.
      • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y subirla directamente (img-5ii1Pfs1-1684069809253)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/14635e45662243ca9bf84c06e9342944 ~tplv-k3u1fbpfcp-zoom-1.imagen)]
  • 3. La configuración del código del proyecto de Android es compatible

    • Agregar un perfil de seguridad. Como sigue:

    • java.security.cert.CertPathValidatorException: no se encontró el ancla de confianza para la ruta de certificación Esta excepción, la solución es la siguiente:

      <?versión xml="1.0" codificación="utf-8"?>

    //Configuración del archivo de manifiesto

    • ¿Por qué Android 7.0 y superior no pueden capturar fácilmente los datos de texto sin formato solicitados por Https?
      • En Android 7.0 (API 24), hay una nueva característica de seguridad llamada "Configuración de seguridad de red". El objetivo de esta nueva función es permitir que los desarrolladores personalicen su configuración de seguridad web sin modificar el código de la aplicación. Si la aplicación se ejecuta con una versión del sistema superior o igual a 24 y targetSdkVersion>=24, solo se confiará en el certificado del sistema. Por lo tanto, el certificado raíz de Charles importado por el usuario (usuario) no es de confianza.
  • El resultado final de capturar https es el siguiente

    • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-PFXLPiWa-1684069809254)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/877a24aeeb17435585d340e8beaa33bf ~tplv-k3u1fbpfcp-zoom-1.imagen)]
    • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-vFFpeBjE-1684069809254)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/87765c0fd0f148bcb867f69229cb3f1c ~tplv-k3u1fbpfcp-zoom-1.imagen)]

04. Introducción al principio de captura de paquetes

  • 1. El principio de captura de paquetes:
    • interino. Solicitud del cliente -> Proxy -> Llegar al servidor Retorno del servidor -> Proxy -> Llegar al cliente
  • 2. ¿Cualquier aplicación Https puede capturarlo?
    • Por debajo de 7,0 es posible, siempre que el certificado CA correspondiente esté instalado en el teléfono móvil, como capturar paquetes con charles, el teléfono móvil necesita instalar el certificado proporcionado por charles.
    • Después de Android 7.0, Google introdujo un mecanismo de seguridad más estricto. Las aplicaciones no confían en los certificados de usuario de forma predeterminada (los certificados están instalados en el teléfono móvil) y sus propias aplicaciones se pueden resolver a través de la configuración, pero no funcionará para detectar solicitudes HTTPS. de otras aplicaciones.
  • 3. Cómo evitar la captura de paquetes
    • 1. Basado en el principio de captura de paquetes, puede usar directamente okhtttp para prohibir el proxy, builder.proxy(Proxy.NO_PROXY), después de la prueba, puede evitar la captura de paquetes
    • 2. Use directamente el protocolo de encriptación, todos los campos están ilegibles y reemplace el nombre de dominio con IP. Esto es básicamente difícil de entender para otros, como la confusión.
  • 4. Diagrama esquemático de la captura de paquetes charles
    • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-afsT3FuH-1684069809255)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/610be0fb64d74013ab8d3cc9cd783207 ~tplv-k3u1fbpfcp-zoom-1.imagen)]
  • 5. Proceso de pasos aproximados
    • En el primer paso, el cliente inicia una solicitud HTTPS al servidor, Charles intercepta la solicitud HTTPS enviada por el cliente al servidor y Charles finge ser el cliente para enviar una solicitud al servidor para un apretón de manos.
    • En el segundo paso, el servidor devuelve la respuesta. Charles obtiene el certificado CA del servidor, usa el certificado raíz (el certificado raíz aquí es el certificado emitido por el centro de certificación CA para sí mismo) para descifrar la clave pública, verifica los datos del servidor firma y obtiene la clave pública del certificado de CA del servidor. Luego, charles falsifica su propio certificado CA (el certificado CA aquí también es el certificado raíz, pero es el certificado raíz falsificado por charles), fingiendo ser el certificado del servidor y pasándolo al navegador del cliente.
    • El tercer paso es el mismo que el funcionamiento del cliente en el proceso normal, el cliente realiza la verificación del certificado en base a los datos devueltos, genera la contraseña Pre_master, cifra con la clave pública del certificado falsificada por Charles y genera la clave simétrica enc_key para Comunicación HTTPS.
    • En el cuarto paso, el cliente envía información importante al servidor, que es interceptada por Charles. Charles descifra el texto cifrado interceptado con la clave privada de su certificado falsificado, obtiene y calcula la clave simétrica enc_key para la comunicación HTTPS. Charles cifra la clave simétrica con la clave pública del certificado del servidor y la transmite al servidor.
    • El quinto paso es el mismo que la operación del lado del servidor en el proceso normal.El servidor usa la clave privada para desbloquear y establecer la confianza, y luego envía un mensaje de saludo encriptado al cliente.
    • En el sexto paso, Charles intercepta el texto cifrado enviado por el servidor, lo descifra con una clave simétrica y luego lo cifra con la clave privada de su certificado falsificado y lo envía al cliente.
    • Paso 7: después de que el cliente obtiene la información cifrada, utiliza la clave pública para desbloquearla y verificar el HASH. El proceso de reconocimiento se completa oficialmente y se establece la "confianza" entre el cliente y el servidor.
    • En el subsiguiente proceso normal de comunicación cifrada, ¿cómo actúa Charles como tercero entre el servidor y el cliente?
    • Servidor—>Cliente: Charles recibe el texto cifrado enviado por el servidor, usa la clave simétrica para descifrarlo y obtiene el texto sin formato enviado por el servidor. Cifrarlo de nuevo y enviarlo al cliente.
    • Cliente -> Servidor: El cliente encripta con una clave simétrica, y luego de ser interceptado por Charles, desencripta para obtener el texto plano. Cifrarlo de nuevo y enviarlo al servidor. Dado que charles siempre tiene la clave simétrica enc_key para la comunicación, la información es transparente para él durante todo el proceso de comunicación HTTPS.
  • 6. Resumir
    • El principio de la captura de paquetes HTTPS es bastante simple. En pocas palabras, Charles actúa como un "agente intermediario" y obtiene la clave pública del certificado del servidor y la clave simétrica de la conexión HTTPS. La premisa es que el cliente elige confiar e instale el certificado CA de Charles, de lo contrario, el cliente "alarmará" y cancelará la conexión. De esta forma, HTTPS sigue siendo muy seguro .

05. Introducción a la captura de paquetes de datos

  • La estructura del paquete de solicitud HTTP

    • mensaje de solicitud

      • Formato de la estructura del mensaje de solicitud:

        请求行: <method> <request-URL> <version>
        

        cabeza:
        cuerpo:

      • Diagrama esquemático de la estructura del mensaje de solicitud:

        • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-RsnsWCnS-1684069809256)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/2ddaa81110db4c619bc1094fa23ee7a4 ~tplv-k3u1fbpfcp-zoom-1.imagen)]
      • ejemplo:

        • Después de la solicitud, recibirá un paquete de respuesta (si hay un servidor HTTP en el lado opuesto)

          POST /meme.php/home/user/login HTTP/1.1
          

          Host: 114.215.86.90 Control de caché: token de cartero
          sin caché : bd243d6b-da03-902f-0a2c-8e9377f6f6ed Tipo de contenido: application/x-www-form-urlencoded

          tel = 13637829200 y contraseña = 123456

    • comunes son aquellos

      • User-Agent: El tipo de navegador que realizó la solicitud.
      • Accept: lista de tipos de contenido de respuesta reconocidos por el cliente;
      • Accept-Language: el lenguaje natural aceptable para el cliente;
      • Accept-Encoding: El formato de codificación y compresión aceptable para el cliente;
      • Host: El nombre de host solicitado, que permite que varios nombres de dominio estén en la misma dirección IP, es decir, un host virtual;
      • Connection: modo de conexión (cerrar o keep-alive);
      • Cookie: almacenada en el campo de extensión del cliente, y enviar la cookie perteneciente al dominio al servidor del mismo nombre de dominio;
  • Estructura del paquete de respuesta HTTP

    • mensaje de respuesta

      • Formato de la estructura del mensaje de respuesta:

        状态行:  <version> <status> <reason-phrase>
        

        Encabezado de respuesta:
        Cuerpo de respuesta:

      • Diagrama esquemático de la estructura del mensaje de respuesta:

        • [Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y subirla directamente (img-Ib6BetZn-1684069809257)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/b6ed92e417c74163959f372a8f391335 ~tplv-k3u1fbpfcp-zoom-1.imagen)]
      • ejemplo:

        HTTP/1.1 200 OK
        

        Fecha: sábado, 02 de enero de 2016 13:20:55 GMT
        Servidor: Apache/2.4.6 (CentOS) PHP/5.6.14
        Desarrollado por X: PHP/5.6.14
        Longitud del contenido: 78
        Keep-Alive: timeout= 5, max=100 Conexión: Keep-Alive
        Content-Type: application/json; conjunto de caracteres = utf-8

        {“estado”:202,“información”:“\u6b64\u7528\u6237\u4e0d\u5b58\u5728\uff01”,“datos”:null}

    • Parámetros de encabezado de respuesta comunes

      • AllowQué métodos de solicitud (como GET, POST, etc.) son compatibles con el servidor.
      • Content-EncodingEl método de codificación (Encode) del documento.
      • Content-LengthIndica la longitud del contenido. Estos datos solo son necesarios si el navegador utiliza conexiones HTTP persistentes.
      • Content-TypeIndica a qué tipo MIME pertenece el siguiente documento.
      • Servernombre del servidor.
      • Set-CookieEstablece la cookie asociada a la página.
      • ETag: El valor de entidad de la variable solicitada. ETag es un token (valor MD5) que se puede asociar con un recurso web.
      • Cache-Control: este campo se utiliza para especificar las instrucciones que todos los mecanismos de almacenamiento en caché deben obedecer a lo largo de la cadena de solicitud/respuesta.
  • Código de estado del mensaje de respuesta

    • Contiene el código de estado y la frase de motivo para informar al cliente del resultado de la solicitud.

    • Sobre el código de estado, puede leer este artículo, código de estado http . código de estado categoría frase de razón
      1XX Informativo (código de estado informativo) La solicitud recibida se está procesando
      2XX Éxito (código de estado de éxito) La solicitud se procesa normalmente.
      3XX Redirección (código de estado de redirección) Se requiere una acción adicional para completar la solicitud
      4XX Error del cliente (código de estado de error del cliente) El servidor no pudo procesar la solicitud.
      5XX Error del servidor (código de estado de error del servidor) Ocurrió un error mientras el servidor procesaba la solicitud

06. Resumen de problemas comunes

  • 1. No se puede abrir la aplicación después de la configuración
    • Cuando rastreamos, encontramos algunas aplicaciones que no se podían abrir después de configurar el proxy.Esto se debe principalmente a que la aplicación se procesó para evitar el rastreo, como verificar si el certificado de https es legal, etc. , ver la solución del código fuente es más difícil.
  • 2. El contenido capturado está distorsionado
    • Para evitar el rastreo, algunas aplicaciones encriptan el contenido devuelto con una capa de encriptación, por lo que el contenido que ve Charles es distorsionado. En este caso, solo puede descompilar la aplicación y estudiar su algoritmo de cifrado y descifrado para el descifrado.

07. Interceptación de Android y captura de paquetes.

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo de enlace antirrobo, se recomienda guardar la imagen y cargarla directamente (img-HdaA9gIw-1684069809257)(//p3-juejin.byteimg.com/tos- cn-i-k3u1fbpfcp/c5a3ca45be574551b38740e4adfb6422 ~tplv-k3u1fbpfcp-zoom-1.image)]
[Falló la transferencia de imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y subirla directamente (img -VxYbemBW-1684069809258)(//p3-juejin.byteimg .com/tos-cn-i-k3u1fbpfcp/e40a220a27c84b63881a9311df83f60e~tplv-k3u1fbpfcp-zoom-1.image)] [Transferencia de imagen de enlace externo fallida, el sitio de origen puede tener
un mecanismo anti-leeching, se recomienda guardar la imagen y subirla directamente (img- dzTPKpmz-1684069809259)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d97aff6debdd479f9970d056b1787cc5~tplv-k3u1fbpfcp-zoom- 1.imagen)]
[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede ser antirrobo del mecanismo de la cadena, se recomienda guardar la imagen y cargarla directamente (img-9Oo2PtH6-1684069809259) (//p3-juejin.byteimg .com/tos-cn-i-k3u1fbpfcp/98048847fe9b446db66eda995cfa5f2e~tplv-k3u1fbpfcp-zoom-1.imagen)]

  • El análisis de intercepción de red analiza principalmente la pérdida de tráfico de red, así como el tiempo de proceso de solicitud y respuesta. Cree herramientas de análisis web...
  • Dirección del código del proyecto: github.com/yangchong21…
  • Si cree que este asistente de intercepción de red es conveniente para probar y ver datos de red durante el desarrollo, puede destacarlo...

Biblioteca de intercepción de red: github.com/yangchong21…

Supongo que te gusta

Origin blog.csdn.net/2302_77835532/article/details/130673709
Recomendado
Clasificación