Inicio > Firmas > El futuro está por hackear > Los canales laterales de la vida

Los canales laterales de la vida

Los canales laterales de la vida

Cuando alguien ama el hacking es porque ama a los que piensan de forma diferente. A los que no siguen el camino marcado de las cosas establecidas. Los que no siguen el manual de instrucciones al pie de la letra. Los que no creen en dogmas. Esas personas que se preguntan “what if?”. Como esa serie de Marvel Comics donde sucedían aventuras en realidades alternativas, en las que se abrían nuevas posibilidades sólo por intentar algo totalmente nuevo. Pensar “out of the box”, que dicen los anglos y los “anglosados”.

Son personas que ven el mundo con otra perspectiva. Nada de isométrica o caballera. Ven el mundo con otros ojos. Encuentran puntos de información en otros lugares. Yo he hablado muchas veces de cómo mi hija pequeña, Mi Survivor, me enseñó que las restas —esas que no le gustaba hacer para nada— tenían un fallo de seguridad. Una vulnerabilidad. Bastaba con ponerles un palito vertical y convertirlas en sumas. Y le coló la primera vez. Yo, que de pequeño fui un niño bueno que siempre hizo caso a su mamá, jamás hubiera hecho algo así, aunque lo hubiera descubierto. Tuve que aprender de mayor a descubrir esas cosas.

"El que sabe leer el canal lateral tiene la información ganadora. La que da el control"

En el mundo del hacking, la información es poder. Pero no la que viene en el manual de instrucciones, sino la que puedes descubrir tú por otros medios. Y es por eso que muchas de las técnicas de hacking tienen que ver con el uso de side-channels, o canales laterales, para sacar la información oculta. La que se encuentra protegida. La que se convierte en un objetivo a lograr.

Al final, un canal lateral es un sitio donde ir a recoger la información valiosa, ya que éste recibe un eco del canal principal, donde se encuentra la información buscada. Permite acceder a la información de una forma no pensada por el que la protegió. Es el canal que permite ver la realidad de una forma diferente. Es una reverberación en forma de hecho que ofrece un dato derivado, de forma no imaginada al principio, o ingeniosa, de la información valiosa. Es el lugar en el que se genera la información de valor que te permite tomar mejores decisiones, o al menos decisiones informadas. El que sabe leer el canal lateral tiene la información ganadora. La que da el control.

Dejadme que os explique un side-channel con un ejemplo de hace muchos años, cuando yo era un retoño. Cuando en los bares del Móstoles en que me crie no se asustaban de que los niños pequeños anduviéramos por ellos. Cuando caminábamos por suelos repletos de “todo”, buscábamos máquinas recreativas y las tascas se llenaban de las máquinas tragaperras que tanto han dado que hablar. Esas que echando monedas de cinco —¡el duro!— o de 25 pesetas generaban colores, sonidos y combinaciones de cartas, figuras o frutas para dar premios en forma de un torrente de metal escupido por la boca del monstruo. Por supuesto, lo que echaba por la boca siempre era menos que lo que se quedaba en la panza después de un largo día de duro trabajo.

"Los hackers son aquellos que no necesitaban pasar grandes cantidades de tiempo estudiando una máquina para obtener el premio"

En aquellos años, aparecieron los primeros side-channels en esas máquinas. Canales paralelos de información basados en el sonido que hacían los engranajes dentro de la bestia tragaperras. Si la panza estaba llena, y le quedaba poco para vomitar sus premios, entonces sonaba más suave al caer la moneda, mientras que si estaba con hambre y el tubo donde acumulaba las ganancias aún estaba por llenar, la moneda hacía un ruido mayor al caer desde más altura. Y había gente con el oído muy fino para detectar estas situaciones, creedme que lo he visto de cerca.

Por supuesto, también estaban los que se dedicaban todo el día a observar cómo se había portado la tragaperras desde por la mañana. Lo hacían uno y otro día capturando datos de cuánta gente había jugado, cuántas monedas se había comido, cuántos premios había dado, etcétera. Estudiaban con muchos datos el funcionamiento del bicho come-monedas para intentar sacar un algoritmo predictivo, usando su big data para saber cuándo iba a vomitar ese premio tan deseado por la casta obrera de mi barrio. Cuándo la máquina “estaba caliente”.

Mientras que estos segundos serían los equivalentes a los científicos de datos, los analistas, los que utilizan algoritmos de machine (o human) learning, los primeros son los hackers. Los que no necesitaban pasar grandes cantidades de tiempo estudiando una máquina para obtener el premio. Son los que prefieren dedicar tiempo a estudiar el problema y buscar el camino directo. Los que solo debían haber encontrado el canal lateral. La vulnerabilidad. El bug. El hack. Y el exploit para sacar partido de ese fallo de construcción en un sistema. Hackers con una forma de mirar el mundo de forma diferente.

"Esa forma de ver la vida, buscando los caminos laterales, se impregnó en mí. No como afición, sino como pura necesidad"

Por supuesto, el hacker para nosotros no es el que conoce el bug, sino el que lo descubre. El que es capaz de encontrar ese canal paralelo de un sistema. La persona que aprende a explotar una vulnerabilidad que sólo ella conoce. Que no la sabe el fabricante de la máquina, ni el dueño de la tragaperra, ni el resto de los partisanos de alimentar a la bestia. Aquella mente capaz de localizar un camino diferente para conseguir su objetivo. Y que le funciona porque ha sido “listo para los recados” y ha pensado eso de “¿y si…?”.

Esa forma de ver la vida, buscando los caminos laterales, se impregnó en mí. No como afición, sino como pura necesidad. Cuando hay que conseguir dar en la diana y no hay muchas oportunidades, más vale no fallar. Así que cuantos más canales laterales te conozcas, mejor, porque podrás ir más rápido, acertar más y conseguir un mayor número de veces lo que necesitas. Y por supuesto, si eres capaz de localizar tú esos canales laterales, pues mejor que mejor. No siempre hay tiempo para hacer el big data.

Hace años, cuando yo estaba estudiando en mi camino de sacarme el doctorado, dediqué tiempo a estudiar las técnicas de Time-Based Blind SQL Injection, que aunque en inglés suena muy hacker, al final es mucho más sencillo si os lo explico de una forma más mundana. La idea es tan simple como insertar una consulta de datos (SQL) en una aplicación web donde se espera que se introduzca, por ejemplo, un nombre. Supón la típica página web que te pregunta en un formulario tu nombre, y tú en lugar de eso escribes una consulta de acceso a datos de la aplicación en el formato SQL, imaginándote cómo se llaman. Bien, esa es la parte de SQL Injection.

"¿Cómo extraemos, por ejemplo, la contraseña de un usuario que esté almacenada en esa base de datos? Pues tan sencillo como encontrando un canal lateral para obtener la información"

Ahora vamos con el Blind. En este caso, el Blind significa que los datos a los que a va acceder la consulta SQL que vas a inyectar en el campo nombre nunca vas a poder verlos. Estás ciego para ver los resultados. No van a ser pintados en la página web de respuesta porque el programador ha decidido pintar otra cosa en la respuesta. Así que la consulta SQL que inyectas se va a ejecutar, pero tú no vas a poder ver los resultados… con los ojos.

Así que tenemos una consulta Blind SQL Injection que se está ejecutando, pero… ¿cómo sabemos qué datos hay en la base de datos? ¿Cómo extraemos, por ejemplo, la contraseña de un usuario que esté almacenada en esa base de datos? Pues tan sencillo como encontrando un canal lateral para obtener la información. ¿Os acordáis del ruido de la moneda al caer en la barriga de la tragaperras? Pues bien, en este caso es lo mismo, pero lo que vamos a hacer es contar segundos. Saber si está “trabajando mucho” o “trabajando poco”. Contamos segundos.

Así que le inyectamos una consulta que le pida a la base de datos que si la primera letra de la contraseña buscada es una “a”, que entonces trabaje un rato haciendo muchas cosas —que sume, que reste, que cuente, que calcule el número de remontadas del Real Madrid en la Champions League, lo que sea. Si tarda mucho en contestar es que la respuesta es “sí”, porque se ha puesto a hacer muchas cosas, y ya sabemos que la primera letra de la contraseña es una “a”. Si tarda poco, es que no es una “a”, así que vamos a probar ahora otra vez pero con la “b”. Y así, hasta que tengamos todas las letras de la contraseña.

"¿Cómo extraemos, por ejemplo, la contraseña de un usuario que esté almacenada en esa base de datos? Pues tan sencillo como encontrando un canal lateral para obtener la información"

Esto, que os he intentado explicar de forma sencilla es lo que se cuenta de manera técnica el paper de Time-Based Blind SQL Injection Using Heavy Queries que publiqué hace ya muchos años. Me lo pasé muy bien con esto, y di charlas por todo el mundo explicando estas técnicas, pero no había mucho misterio. En lugar de echar una moneda a una máquina tragaperras estaba escribiendo una consulta de acceso a datos en formato SQL, y en lugar de medir el volumen del ruido al caer estaba midiendo el tiempo de respuesta de la aplicación. Mismo concepto, distinta situación de la vida.

Paper de Time-Based Blind SQL Injection Using Heavy Queries

Pero es que esta forma de pensar hacker que hemos importado de los Estados Unidos no es nueva para nosotros, viene desde antaño. Y en esta España nuestra que tantos buenos hackers ha dado algunos la llaman la “picaresca” española, pero para mí es pura inteligencia de la vida para sobrevivir. Está en nosotros, y está en todos los animales. Y está en nuestra literatura.

"En la vida tenía que buscar mis canales laterales. Encontré algunos, otros no los descubrí, pero os garantizo que día a día los sigo buscando"

Al final, para explicar el ejemplo de mi hija con las sumas y las restas, o del ruido de la moneda al caer, o del tiempo de respuesta de la aplicación web, siempre uso el ejemplo de El Lazarillo de Tormes y el viejo ciego. En la escena en la que Lázaro come las uvas de dos en dos, el viejo ciego decide hacer una inyección de comandos, en este caso de uvas. Podríamos decir que hace un UVA Injection, y decide coger las uvas de dos en dos. Y medir el tiempo de respuesta de Lázaro. Éste no se queja, así que el viejo consigue el canal lateral que necesitaba para acceder a la información sin verla. Es decir, ha hecho un Time-Based Blind UVA Injection para saber si Lázaro se la estaba jugando. Y por ende, el viejo tuvo la información buena, la que da acceso “de verdad” a la realidad. No la que vemos pintada con sombras en la caverna.

Yo tuve que aprender por las malas que la información que fue de buena calidad para tomar las decisiones adecuadas, que el camino correcto a seguir, que lo que había que hacer en mi vida para conseguir mis objetivos no estaban pintados con señales de colores. No era lo que todo el mundo me decía. No es estudiar, sacar buenas notas, ponerse traje y corbata para tener un buen trabajo. Que si fuera así de sencillo todos estarían allí, pero no es así. En la vida tenía que buscar mis canales laterales. Encontré algunos, otros no los descubrí, pero os garantizo que día a día los sigo buscando.

4.6/5 (59 Puntuaciones. Valora este artículo, por favor)
Notificar por email
Notificar de
guest

0 Comentarios
Feedbacks en línea
Ver todos los comentarios