Buenas a todos,
No soy muy dado a escribir en los foros, básicamente porque para cuando alguien responde algo interesante ya he encontrado una solución. Pero en este caso he llegado a un punto en el que me cuesta avanzar.
Básicamente mi duda es esta:
¿Se puede realmente descifrar un tráfico ssl? ¿A que me refiero con esto?
Aquí viene un ejemplo práctico:
Tengo dos ordenadores y quiero poner a prueba la seguridad de la comunicación cifrada por TSL/SSL de uno de ellos con su servidor. Para esto, he preparado lo más parecido a un ataque MITM (tipico) y he puesto el wireshark a capturar todo el tráfico de la máquina objetivo. Hasta aquí todo perfecto y sin complicaciones hasta que... Esta máquina navega al servidor con servicio de cifrado SSL y empieza la fiesta!
Client hello
Server hello
etc...
etc...
Y a partir de aquí... Si, parece que es SSL es seguro porque lo más que he conseguido ha sido romperme la cabeza intentando descifrar la información.
Como prueba de la sesión, me loguée con mi user y password en el servidor para capturarlo con wireshark. Una vez la sesión fue iniciada, hice dos tonterías para y cerré para empezar a analizarlo. Ahora lo que tengo en la captura de wireshark es una lista de paquetes donde inició mi explorador web, navego hasta el servidor con servicio de cifrado SSL, me logueo en él con mi user y password y posteriormente, salgo.
Ahora bien, si la cifrado SSL no fuera segura, técnicamente debería ser capaz de descifrar esta sesión y ver efectivamente el user y password que introduje.
Bien. Pues aquí es donde me he quedado. Cual es la forma de descifrar una tráfico SSL donde se ha capturado desde el primer paquete hasta el último de la sesión.
Si el algoritmo de cifrado SSL se elabora entre cliente y servidor (se ponen e acuerdo) y si yo he capturado todos los paquetes de la sesión, no debería haber alguna forma de averiguar la cifrado que han decidido usar?
Imagino que si tubieramos el certificado, sería tan simple como pasarselo al tráfico para desencriptarlo editando en las opciones de porotolo ssl de wireshark (RSA key list) pero.... no lo he visto tan fácil porque:
- Existe una gran diversidad de certificados y no se cual elegir
- Creo que tengo los conceptos un poco en el aire todavía
He estado leyéndome el manual de openssl para crearme mis propios certificados pero... ya se que es inviable ir por ahí. Básicamente sospecho que lo suyo sería obtener el clienkey.pem y serverkey.pem para poder hacer lo que quiero pero... no se como conseguir los que realmente necesito.
Entonces, se puede sacar estos archivos de la propia captura de la sesión cuando cliente y servidor se ponen de acuerdo? (a mí me da que no)
Entonces, ¿Que otra forma existe para hacerse con el certificado que usan para su cifrado?
un saludo
No soy muy dado a escribir en los foros, básicamente porque para cuando alguien responde algo interesante ya he encontrado una solución. Pero en este caso he llegado a un punto en el que me cuesta avanzar.
Básicamente mi duda es esta:
¿Se puede realmente descifrar un tráfico ssl? ¿A que me refiero con esto?
Aquí viene un ejemplo práctico:
Tengo dos ordenadores y quiero poner a prueba la seguridad de la comunicación cifrada por TSL/SSL de uno de ellos con su servidor. Para esto, he preparado lo más parecido a un ataque MITM (tipico) y he puesto el wireshark a capturar todo el tráfico de la máquina objetivo. Hasta aquí todo perfecto y sin complicaciones hasta que... Esta máquina navega al servidor con servicio de cifrado SSL y empieza la fiesta!
Client hello
Server hello
etc...
etc...
Y a partir de aquí... Si, parece que es SSL es seguro porque lo más que he conseguido ha sido romperme la cabeza intentando descifrar la información.
Como prueba de la sesión, me loguée con mi user y password en el servidor para capturarlo con wireshark. Una vez la sesión fue iniciada, hice dos tonterías para y cerré para empezar a analizarlo. Ahora lo que tengo en la captura de wireshark es una lista de paquetes donde inició mi explorador web, navego hasta el servidor con servicio de cifrado SSL, me logueo en él con mi user y password y posteriormente, salgo.
Ahora bien, si la cifrado SSL no fuera segura, técnicamente debería ser capaz de descifrar esta sesión y ver efectivamente el user y password que introduje.
Bien. Pues aquí es donde me he quedado. Cual es la forma de descifrar una tráfico SSL donde se ha capturado desde el primer paquete hasta el último de la sesión.
Si el algoritmo de cifrado SSL se elabora entre cliente y servidor (se ponen e acuerdo) y si yo he capturado todos los paquetes de la sesión, no debería haber alguna forma de averiguar la cifrado que han decidido usar?
Imagino que si tubieramos el certificado, sería tan simple como pasarselo al tráfico para desencriptarlo editando en las opciones de porotolo ssl de wireshark (RSA key list) pero.... no lo he visto tan fácil porque:
- Existe una gran diversidad de certificados y no se cual elegir
- Creo que tengo los conceptos un poco en el aire todavía
He estado leyéndome el manual de openssl para crearme mis propios certificados pero... ya se que es inviable ir por ahí. Básicamente sospecho que lo suyo sería obtener el clienkey.pem y serverkey.pem para poder hacer lo que quiero pero... no se como conseguir los que realmente necesito.
Entonces, se puede sacar estos archivos de la propia captura de la sesión cuando cliente y servidor se ponen de acuerdo? (a mí me da que no)
Entonces, ¿Que otra forma existe para hacerse con el certificado que usan para su cifrado?
un saludo