Pregunta sobre fiddler, ssl, .net-4.0, c#, encryption – ¿Cuál es el punto de SSL si fiddler 2 puede descifrar todas las llamadas a través de HTTPS?

45

Hace un tiempo hice una pregunta sobre cómo ocultar mis llamadas de solicitud http y hacerlas más seguras en mi aplicación. No quería que la gente usara fiddler 2 para ver la llamada y configurar un contestador automático. Todos me dijeron que utilizara SSL y las llamadas se ocultarán y la información se mantendrá segura.

Compré e instalé un certificado SSL y configuré todo. Arranqué el fiddler 2 y ejecuté una aplicación de prueba que se conecta a un servicio web https, así como a un script php https.

Fiddler 2 no solo pudo detectar ambas solicitudes, sino también descifrarlas. Pude ver toda la información que se remonta al cuarto, lo que me lleva a mi pregunta.

¿Cuál es el punto de tener SSL si hizo cero diferencia a la seguridad. Con o sin SSL, puedo ver toda la información que se remonta y la cuarta, y TODAVÍA configura un contestador automático.

¿Hay algo en .NET que me falta para ocultar mejor mis llamadas a través de SSL?

EDITAR

Estoy agregando una nueva parte a esta pregunta debido a algunas de las respuestas que he recibido. ¿Qué pasa si una aplicación se conecta a un servicio web para iniciar sesión. La aplicación envía al servicio web un nombre de usuario y una contraseña. El servicio web luego envía los datos a la aplicación diciendo que los datos de inicio de sesión son buenos o malos. Incluso si se pasa por SSL, la persona que usa fiddler 2 podría configurar un contestador automático y la aplicación se "agrieta". Entiendo que podría ser útil ver los datos en la depuración, pero mi pregunta es qué debería hacer exactamente para asegurarse de que el SSL se está conectando al que estaba solicitando. Básicamente diciendo que no puede haber un hombre medio.

Eso es correcto, es similar a cualquier otro proxy de depuración web, como se menciona en la respuesta de Alexei a continuación, estos proxies solo inspeccionan la información destinada a su máquina, lo que ayuda a la depuración (de ahí el nombre 'proxy de depuración') pero no permite una Para descifrar arbitrariamente las llamadas realizadas desde otras máquinas. Por lo tanto, SSL sigue siendo seguro, pero observable a nivel local, por lo que uno puede depurar más eficientemente. waxspin
creo que solo puede descifrar la información destinada a su máquina porque ya tiene la clave privada Mark
Su modificación de la pregunta pone una pregunta totalmente diferente, que la original. Es necesario validar el certificado enviado por el servidor correctamente. La forma de hacerlo depende de cómo se conecte (qué clases se utilizan, etc.). Eugene Mayevski 'Allied Bits

Tu respuesta

3   la respuesta
49

http://www.fiddlerbook.com/fiddler/help/httpsdecryption.asp

Fiddler2 se basa en un enfoque de "hombre en el medio" para la intercepción de HTTPS. Para su navegador web, Fiddler2 afirma ser el servidor web seguro, y para el servidor web, Fiddler2 imita el navegador web. Para pretender ser el servidor web, Fiddler2 genera dinámicamente un certificado HTTPS.

Esencialmente, confía manualmente en cualquier certificado que proporcione Fiddler, lo mismo será cierto si acepta manualmente el certificado de una persona aleatoria queno coincide nombre de dominio.

EDITAR: hay formas de prevenir el ataque de Fiddler / man-in-the-middle, es decir, en una aplicación personalizada que utiliza SSL, es posible que se requieran certificados particulares para la comunicación. En el caso de los navegadores, tienen una interfaz de usuario para notificar al usuario la falta de coincidencia del certificado, pero eventualmente permiten dicha comunicación.

Como muestra pública disponible para certificados explícitos, puede intentar usar los servicios de Azure (es decir, con las herramientas de PowerShell para Azure) y detectar el tráfico con Fiddler. Falla debido a un requisito explícito de certificado.

Agregué algo de información a mi pregunta, si pudiera ampliar lo que tiene de mi nueva información que sería muy útil. Landin Martens
Actualizado. Tenga en cuenta que no soy un experto en SSL / comunicaciones seguras y si desea realizar una protección de seguridad más seria que SSL, debe hablar con personas explícitamente capacitadas (tenga en cuenta que SSL se considera correcto para transacciones bancarias, por lo que puede ser ok para ti tambien). Alexei Levenkov
Una cosa clave que hay que entender es que si el software se ejecuta en la computadora del usuario, él simplemente puede alterar sus instrucciones en la memoria en tiempo de ejecución para omitir su cheque. Como señala Andrew Cooper, este es el mismo desafío al que se enfrenta DRM: el problema del "Cliente no confiable". EricLaw
6

Wireshark no puede ver sus cargas útiles. Fiddler / Burp significa que usted interactuó con el sistema. Sí, es una interacción muy simple, pero requiere que uno de los sistemas esté comprometido.

Si desea mejorar la seguridad al inutilizar estos programas MITM a un nivel tan básico, requeriría la autenticación del certificado del cliente (SSL bidireccional) y la identificación de los certificados del servidor y del cliente (por ejemplo, requerir que solo el certificado en particular sea válido para las comunicaciones). También cifraría las cargas útiles transferidas en el cable con las claves públicas de cada parte y se aseguraría de que las claves privadas solo residan en los sistemas a los que pertenecen. De esta manera, incluso si una parte (Bob) está comprometida, el atacante solo puede ver lo que se envía a Bob, y no lo que Bob le envió a Alice. Luego, tomará las cargas útiles cifradas y firmará los datos con un certificado verificable para asegurarse de que no se hayan manipulado los datos (hay mucho debate sobre si cifrar primero o firmar primero, por cierto). Además de eso, puede hacer un hash de la firma usando varios pases de algo como sha2 para asegurarse de que la firma sea "como se envió" (aunque esto es en gran medida un paso oscuro).

Esto lo llevaría a un nivel de seguridad tan razonable como sea posible cuando no controle (uno) de los sistemas de comunicación.

Como han mencionado otros, si un atacante controla el sistema, controla la RAM y puede modificar todas las llamadas de método en la memoria.

7

el lado del cliente para la autenticación SSL, así como del lado del servidor. De esta manera Fiddler no podría conectarse a su servicio. Solo su aplicación, que tiene el certificado requerido, podrá conectarse.

Por supuesto, entonces tiene el problema de cómo proteger el certificado dentro de la aplicación, pero tiene ese problema ahora con su nombre de usuario y contraseña, de todos modos. Alguien que realmente quiera descifrar su aplicación podría probar Reflector, o incluso hacer una búsqueda en la memoria de la clave privada asociada con el certificado del lado del cliente.

No hay una manera real de hacer que este 100% sea a prueba de balas. Es el mismo problema que tiene la industria cinematográfica con la protección del contenido de DVD. Si tiene un software capaz de descifrar el DVD y reproducir el contenido, entonces alguien puede hacer un volcado de memoria mientras el software está en acción y encontrar la clave de descifrado.

Preguntas relacionadas