2018/04/30

TLS Kill Switch

Entre otras tantas funciones en el trabajo tengo la de gestión de vulnerabilidades, lo que incluye descubrir, reportar, recibir reportes, evaluar, seguimiento y colaborar en la solución.

Hubo un caso interesante en iOS que consiste en que un malware podría hacerle creer a una aplicación que se está conectando a un sitio legítimo cuando éste no lo es. Conversé con la gente apropiada y le recomendé, ¡oh pecado! usar una variable global para solucionar el problema. Pero esto fué completamente intuitivo, casi irresponsable diría, así que me puse a estudiar un poco más el asunto, intentando reproducir el comportamiento en una plataforma a mi alcance como CLI en linux.

La idea es que se precargan (LD_PRELOAD) funciones en lugar de las provistas por las librerías del sistema. Esto es muy útil no sólo para TLS Kill Switch sino para lo que fueron ideadas originalmente: hotpatching de código que no deseamos o no podemos recompilar, hacer debug, instrumentar análisis de performance.

Preparé una charla y unos workshops para compartir internamente en el trabajo y luego lo mostré en OWASP Latam Tour 2018 BsAs[2], que fue una experiencia muy amena..., amenazadora, es que la última vez que había expuesto en OWASP[3], en el momento del máximo climax de la demo, en el que iba a mostrar la respuesta a todas las preguntas, no pude encontrar el payload que tenía preparado, pese a que tenía escrito en un papel delante de mis ojos su ubicación.

Esta vez todo salió bien, incluso los jocosos momentos en que no pude agrandar la letra.

Volviendo a la precarga, se pueden reemplazar las funciones que querramos, así que si vas mirando los ejemplos [4], podrás jugar con el azar, construir un sencillo keylogger y finalmente sabotear TLS.


Por si te lo perdiste, el viernes 2018-05-04 lo presentaré[5] en el marco de Los Viernes Ñoños de CADIEEL [6]


Cualquier duda, me preguntas.



[1] https://github.com/nabla-c0d3/ssl-kill-switch2
[2] https://www.owasp.org/index.php/LatamTour2018#tab=ARGENTINA_-_Buenos_Aires

[3] https://seguridad-agile.blogspot.com.ar/2014/05/el-error-ajeno.html
[4] https://github.com/cpantel/TLSKillSwitch
[5] https://goo.gl/forms/7CCn26DDLOJbfiVs2
[6] https://groups.google.com/forum/?hl=en#!topic/embebidos32/88bOqO63eWw