¿Cómo descifrar TLS en WireShark si puedo enganchar las llamadas a la API de cifrado de la aplicación?

1

Enganché las llamadas BCryptEncrypt y BCryptDecrypt de un ejecutable. Puedo obtener los argumentos de entrada y los valores de salida de estas funciones. Este programa llama a BCryptEncrypt para cifrar los datos enviados a través de TLS, y llama a BCryptDecrypt para descifrar los datos recibidos de TLS. Así que el enlace me dio una gran cantidad de datos sin cifrar a través del canal TLS.

Sin embargo, una sola solicitud HTTPS puede dividirse en varios paquetes TLS y, por lo tanto, durante cada llamada de las funciones anteriores, mi enlace solo puede obtener una parte de la secuencia HTTPS completa.

Me pregunto si hay una forma de "descifrar" las capturas TLS en WireShark, dado que ya tengo el texto sin formato para todos los datos cifrados de los paquetes TLS. Para que pueda utilizar Follow HTTP Stream, Gzip Uncompression y muchas otras funciones en WireShark para ayudarme a analizar la captura.

    
pregunta vaxiv 22.10.2017 - 07:47
fuente

1 respuesta

0

No hay forma de que Wireshark trabaje directamente en los datos de nivel de aplicación que tiene. Pero puede crear un nuevo pcap basado en estos datos y luego usar Wireshark para analizar este pcap. Por ejemplo, esto se puede hacer con un poco de Perl y el módulo Net :: PcapWriter que le permite crear fácilmente un pcap y agregue conexiones TCP con sus propios datos de aplicación:

use strict;
use Net::PcapWriter;
my $pcap = Net::PcapWriter->new('test.pcap');
my $conn = $pcap->tcp_conn('1.1.1.1',1234,'2.2.2.2',80);
$conn->write(0,"GET / HTTP/1.0\r\nHost:..."); # HTTP request from client
$conn->write(1,"HTTP/1.1 200 ok\r\n...");     # HTTP response from server

Probablemente se pueden hacer cosas similares con Python y la famosa scapy .

    
respondido por el Steffen Ullrich 22.10.2017 - 08:24
fuente

Lea otras preguntas en las etiquetas