¿Es posible interceptar la carga útil de una solicitud segura en texto sin formato?

0

Considere que ejecutamos la siguiente solicitud:

import requests
url="https://secretsub.example.com/secretpath/post.php" 
payload = {'secretmessage1' : 'foo','secretmessage2' : 'bar'}
r = requests.post(url,data=payload,verify=True)

El lenguaje (python) es arbitrario, pero puede ser una solicitud en cualquier otro idioma (NodeJs, Java, Php ...)

Observe que la URL está usando https, lo que significa que la conexión está protegida por SSL. Suponiendo que compilo este programa en binario (.exe), ¿sería posible que la computadora lea las cargas útiles a través de un software en texto sin formato?

Sé que el software de rastreo de paquetes (como WireShark), solo revelará el nombre de dominio (example.com) en texto sin formato pero no el secrepath ni la carga que se cifrará.

Sin embargo, si ejecuto este código en un navegador web (suponiendo que esté escrito en Javascript), podré acceder a la carga útil y la ruta secreta en texto sin formato dentro de la consola del navegador. Supongo que el navegador solo lo cifra solo después de que la solicitud se registra en su consola. Pero si este código se ejecuta fuera del navegador, ¿hay alguna forma para que el host de la computadora intercepte esos datos en texto sin formato? (algún tipo de herramientas de rastreo de paquetes)

    
pregunta TSR 01.08.2018 - 21:57
fuente

3 respuestas

1

En general, está utilizando el protocolo TLS y, por lo tanto, está iniciando un protocolo de enlace con el servidor, aceptando, por ejemplo, conjuntos de claves y claves. Este es un protocolo seguro, siempre y cuando pueda confiar en con quién se está comunicando (por ejemplo, la validación de certificados).

Usted pregunta si la computadora host puede interceptar algo. Después de que el cifrado haya tenido lugar, diría que no.

En una nota al margen, la computadora host realiza el cifrado en un área de memoria asignada. Si el host se ve comprometido en la medida en que no puede confiar en la protección de la memoria de esa máquina, o en general en el contexto del proceso, el texto sin formato se puede recuperar antes del cifrado. Pero es imposible tener un riesgo cero, por lo que no es necesario algo que deba tener en cuenta.

    
respondido por el BenM 01.08.2018 - 22:21
fuente
0

En el ejemplo actual, si compila el código, podría ejecutar strings en el binario y ver la carga útil secreta ya que no está cifrada en el binario.

    
respondido por el Joe M 01.08.2018 - 23:58
fuente
0
  

Suponiendo que compilo este programa en binario (.exe), ¿sería posible que la computadora lea las cargas útiles a través de un software en texto sin formato?

Sí.

En la mayoría de los casos (pero no en todos), el programa no incorporará la funcionalidad SSL en sí, sino que utilizará una biblioteca vinculada en tiempo de ejecución: una .dll en MSWindow, una .so en Linux. Sería relativamente trivial inyectar y una capa de abstracción en la parte superior de la biblioteca para capturar los datos de entrada / salida.

Puedes compilar el programa con enlaces estáticos (pero no sería muy portátil y no aprovecharía el parche del sistema operativo para permanecer seguro). Pero aún sería posible adjuntar un depurador al proceso para ver el texto claro.

Luego está el problema de que alguien con control sobre la computadora puede simplemente redirigir el tráfico a un servidor que controlan mediante un certificado falso. Podría mitigar esto implementando su propio anclaje de certificado dentro de la aplicación, pero luego está Ve el problema en otra parte, para proteger el hash de certificado, y ahora estás manteniendo tu propia pila de SSL completa de manera independiente.

Pero si el texto es estático en el binario y no utiliza una complicada ofuscación (que es seguridad por oscuridad), entonces no necesita ir a todo ese esfuerzo, solo debe descompilarlo o usar "cadenas". / p>

Si está preguntando específicamente sobre el malware que se está ejecutando en el cliente, entonces probablemente solo deba preocuparse por el problema de la biblioteca compartida.

    
respondido por el symcbean 02.08.2018 - 11:55
fuente

Lea otras preguntas en las etiquetas