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/7CCn26DDL
[6] https://groups.google.com/