Querido Diario…

El mundo ha entrado en pandemia, nos hemos quedado sin mucho que hacer. El plan de rescate de Lalo 1 y 2, lo detuvimos porque no podemos andar viajando para rescatarlos.

Son tiempos en donde hemos cambiado las cosas turbias e ilegales, por los challenges de Instagram, los Buzzfeeds y los juegos por webcam.

Durante estos días he dejado a un lado los «dispositivos» rosas vibrantes, por las webcams. He explotado diferentes vulnerabilidades para poder ver a través de webcams, celulares, y otros sitios a personas que no se lo imaginan. Esto es muy peligroso, puedes enterarte de todos los secreto de una persona, por sus conversaciones, por lo que ve… y bueno, hace unos años, muchos decían que yo todo lo quería resolver con ataques de MITM para interceptar el tráfico, y ahora pues, ¿por qué no obtener la información directamente de las personas?. No hay nada como ver una imagen, un rostro, y poder darte cuenta de cuando una persona miente o cambia su expresión, dependiendo de la situación.

Todo esto salió porque hace poco una amiga llamada Bárbara me dijo que, seguramente yo podía hackear cualquier Android, porque son teléfonos «chafas», pero que un iPhone seguramente me sería imposible.

Intenté explicarle que la seguridad no se mide en plataformas o cosas así, pero, no me entendió; así que hicimos una apuesta. Unos lentes.

Primero, hay que tener en cuenta que Apple es muy excéntrico con la seguridad. Pero, la regla básica en todos los aspectos de seguridad móvil, es el usuario, que usualmente tiende a dar click en aceptar todos los permisos que las aplicaciones le piden.

Pero hay ciertas excepciones, que hace poco se vio con el escándalo de HouseParty, y es que hay aplicaciones que por sus propios permisos «heredan» el acceso a la cámara. Una de ellas, es Safari.

Safari es interesante porque muchos bugs que han derivado en jailbreaks han sido por tener altos privilegios. Además, existen algunas nuevas tecnologías web que permiten hacer uso de la cámara, como es WebRTC (https://webrtc.org/), que es la tecnología que usan algunos clientes de conferencia basados en web.

Obvio no todo es tan fácil, Safari si tiene ciertas restricciones que sólo le dan privilegios de acceso a la cámara a sitios de confianza, pero estos métodos son un tanto raros. Por ejemplo, si nosotros definimos como sitio de confianza:

tusitiodeconfianza.com

Podemos obtener acceso a:

www.tusitiodeconfianza.com

cosa.tusitiodeconfianza.com

http://tusitiodeconfianza.com

Pero, nos bloquará el acceso a:

cosa://tusitiodeconfianza.com

¿Por?… parsear una URL es complicado; Safari tiene problemas para parsear un www, un -, ., .-, -…. lo sé, no son normales esas URLs, pero que no sean usuales no quiere decir que no existan.

El RFC 3986, es el que define la estructura que debe de tener una URI:

Si una aplicación respeta el estándar, cualquier cosa que cumpla con está estructura pasará el test de confianza de la aplicación y se abrirá. Es decir, no todo en la vida va por HTTP; así que un buen punto para comenzar a hacer pruebas son javascript:, data:, about:, etc.

Podemos hacer un ejemplo sencillo, como abrir una aplicación desde el navegador, usando:

w = open('data://,@skype.com');
w.document.write('');
> SecurityError

Sin embargo, no funcionó; entonces fue que pase a utilizar el about de forma similar:

w = open('about://skype.com');
w.document.write('');
> SecurityError

Nop… no funcionó.

Hum…

Bueno.. se acababan las opciones, así que estaba en esos momentos en donde iba a tratar opción por opción, porque creía que Baby me había ganado.

file://host.tusitiodeconfianza.com/Share/path/to/file.txt

¡Oh Santo Chucho Cristo Redentor…

Esto en términos sencillos quiere decir que Safari cree que estamos en skype.com; y por lo tanto, como es un sitio de confianza, puedo cargar cualquier JavaScript en el sitio y se va a ejecutar.

De hecho por allí vi un ejemplo donde usaban esto mismo como «UXSS», para robar passwords, con scripts sencillos tipo:

<script>
if (location.host != 'google.com'){
location.host = 'google.com';
}
else{
alert(document.domain);
}
</script>

¡Oh-oh!.

El universo se abrió ante mi, ¿quieres hacer que alguien descargue un APK para trackearle, leer los mensajes… o algo hacía la computadora para cargarle un binario:

open('https://dropbox.com','foo');
setTimeout(function(){open('/file.exe','foo');},1000)

Ya había opciones, los lentes iban a ser míos.

Había ganado los lentes… aunque al final no me gustaron. Pero…. demostré que se podía.

Querido Diario…

Dejé a un lado los estudios, el hackeo… e intenté dormir de nuevo; como lo había hecho toda la mañana. Pero por más que cerré los ojos y apretujé al perro, no lo conseguí. Así que de nuevo rompí la cuarentena.

Baby me mandó el número de guía, mis lentes nuevos llegarían el martes.

– ¡Con mad$%! – le respondí