blog @ ka0labs #~ https://blog.ka0labs.net/ Seguridad informática y otras hierbas Thu, 12 May 2016 18:20:59 -0000 https://static.ka0labs.net/ka0labs.png https://blog.ka0labs.net/ blog @ ka0labs #~ SER o no ser https://blog.ka0labs.net/post/34/ https://blog.ka0labs.net/post/34/ <p>¡Hola bebés! &lt;3</p> <p>La mayoría habrá visto hoy la <a href="http://www.elconfidencial.com/espana/madrid/2016-05-12/el-dioni-parquimetros-madrid-robo-45-000-euros_1197982/">noticia</a> sobre los parquímetros de Madrid: <i>“Un empleado de los parquímetros de Madrid roba 45.000€ con un truco informático”</i></p> <br> <p>En resumen, cuenta que el susodicho (trabajador de <i>UTE Madrid Sur Movilidad</i>*) colocaba una “<b>placa pirata</b>” en las máquinas durante unas horas, evitando que el parquímetro se comunicara con la central y diera parte de las transacciones realizadas. De este modo, podía vaciar la caja sin que los números no cuadraran, quitar la placa, y que todo volviera a la normalidad.</p> <br> <p>Datos interesantes del artículo: <ul> <li>Adjudicación en 2014 del “contrato integral de movilidad de la ciudad de Madrid” (parquímetros + bicicletas) por <b>862,4 millones en 12 años</b>. Zona norte gestionada por Dornier, API Movilidad, Vinci Park, Setex y Electronic Trafic. Zona sur, gestionada por UTE Madrid Sur Movilidad.</li><br> <li>Unos <b>4100 parquímetros</b> en toda la ciudad</li><br> <li>Empresa Parkeon elaborando el informe del suceso</li><br> <li>La máquina informa a la UTE y al Ayuntamiento de todas las operaciones: toques emitidos, dinero y tipos de monedas</li><br> <li>El fabricante dice que es un error que la misma persona tuviera las llaves del habitáculo de recaudación y mantenimiento, ya que son independientes</li><br> </ul> Thu, 12 May 2016 18:20:59 -0000 [#Insanity Writeup] Guestbook 1 & 2 (web) - 0CTF 2016 https://blog.ka0labs.net/post/33/ https://blog.ka0labs.net/post/33/ <p>Jelou!</p> <br> <p>Seguimos vivos después de un intenso fin de semana de sadomaso (3 CTFs simultáneos... -_-'). Al final sacamos pocos flags, pero nos vamos con la moral alta después de haber sido los <s>únicos</s> primeros en resolver Guestbook 2 en 0CTF.<br> <p>Así que aqui va el write-up:</p> Mon, 14 Mar 2016 11:35:19 -0000 [#Insanity Writeup] Legend?Legend!(web) - SSCTF 2016 https://blog.ka0labs.net/post/32/ https://blog.ka0labs.net/post/32/ <p>Hola de nuevo, queridos fanboys! :*</p> <br> <p>Este finde fue el SSCTF (no, no eran nazis, eran chinos). Y aunque no tuvimos demasiados recursos al final resolvimos algunas pruebas (casi todas web, como no xD), entre ellas WEB300 donde nos llevamos el <i>firstblood</i> y nuestro nombre quedó inscrito para la posteridad.</p> Tue, 01 Mar 2016 11:29:00 -0000 [#Insanity Writeup] RemotePrinter (exploiting) - Internetwache2016 https://blog.ka0labs.net/post/31/ https://blog.ka0labs.net/post/31/ <p>Hello everyone! :)</p> </br> <p>Este finde tuvo lugar el <b>Internetwache 2016 CTF</b> y <s>como algunos de estos cabrones estaban en la ResaCON</s> le tuve que hacer frente por primera vez a las pruebas de <b>exploiting</b> y al final conseguí sacarlas todas :D (aunque fuesen facilitas..)<p></p> </br> <p>Así que <s>para variar de tanto WEB</s> os traigo un writeup de la prueba <b>RemotePrinter</b> (EXP80). Mon, 22 Feb 2016 20:00:43 -0000 [#Insanity Writeup] Bring The Noise - insomnihack 2016 https://blog.ka0labs.net/post/30/ https://blog.ka0labs.net/post/30/ <p>Se trata de un script que abre un servicio en un host. Para resolver el reto se proporciona el <a href="https://github.com/0-wHiTeHand-0/CTFs/blob/master/Insomnia2016/crypto/insomnia2016_crypto_server.py" target="_blank">c&oacute;digo del mismo</a>; por lo tanto es posible su ejecuci&oacute;n en local y hacer pruebas cuando uno quiera :) M&aacute;s que crypto, esto consiste en entender el c&oacute;digo del servidor.</p> <p><br /> B&aacute;sicamente se trata de un programa que carga el contenido de un archivo llamado &quot;flag&quot;. El objetivo es hacer que el script nos lo transmita, pero para llegar a ese punto (l&iacute;nea 53) se hacen primero dos <i>checks</i> (l&iacute;neas 39 y 50). Si el flujo de ejecuci&oacute;n entra en alguno de los dos &quot;if&quot;s, escupe un mensaje y se acab&oacute; la fiesta. Por lo tanto, esos son los dos puntos a bypassear. El script que soluciona el reto es <a href="https://github.com/0-wHiTeHand-0/CTFs/blob/master/Insomnia2016/crypto/insomnia2016_crypto_solution.py" target="_blank">&eacute;ste</a>.</p> <p>&nbsp;</p> <ul> <li>Para resolver el primer check, el servidor devuelve 5 n&uacute;meros en hexadecimal. Mirando el c&oacute;digo se deduce que hay que bruteforcear &quot;algo&quot; cuyos primeros 5 valores de su hash MD5 resulten iguales al n&uacute;mero recibido. Antes de optar por <i>/dev/urandom</i>, es mucho m&aacute;s eficiente (por rapidez y por no gastar entrop&iacute;a del sistema) calcular los hashes de 0, de 1, de 2...hasta encontrar uno cuyos primeros 5 bytes coincidan. No deber&iacute;a llevar m&aacute;s de 5 o 10 segundos en un port&aacute;til normalillo. En mi soluci&oacute;n, estas operaciones se hacen con el while de la l&iacute;nea 19.</li> </ul> <p>&nbsp;</p> <p>Como el n&uacute;mero que proporciona el servidor es aleatorio y diferente en cada ejecuci&oacute;n, NO se debe cerrar el socket. En caso de cerrarlo, habr&iacute;a que volver a hacer el procesado con otro n&uacute;mero distinto. Este tipo de checks son habituales para evitar que la gente bruteforcee mediante red, la verdadera chicha (hay que hacer fuerza bruta pero en local, y mandar un &uacute;nico paquete con la soluci&oacute;n).</p> <p>&nbsp;</p> <ul> <li>El segundo check trata de entender lo que hace la funci&oacute;n &quot;learn_with_vibrations()&quot;, l&iacute;nea 17. Devuelve 40 filas de 7 valores octales. Mirando el c&oacute;digo fuente del servidor, se comprueba que el &uacute;ltimo valor de cada fila es la suma del producto de cada uno de los primeros 6 valores con otros 6 valores &quot;constantes&quot; y aleatorios (array &quot;solution&quot;, constante en cada ejecuci&oacute;n para todas las filas). Todas las operaciones hechas en m&oacute;dulo 8. Y adem&aacute;s, cada &uacute;ltimo valor se altera sum&aacute;ndole aleatoriamente uno de los valores siguientes [-1, 0, 1] (la vibraci&oacute;n se modela de esa forma). El cliente debe devolver entonces el array de 6 valores &quot;solution&quot; correcto, deducido de las 40 ecuaciones. Un problema de ecuaciones lineales en m&oacute;dulo 8, sin m&aacute;s. Iterando con el for de la l&iacute;nea 33 se bruteforcean los 6 valores que satisfacen las 40 soluciones.</li> </ul> <p>&nbsp;</p> <p>Flag:<br /> INS{ErrorsOccurMistakesAreMade}</p> <p>&nbsp;</p> <p>Besicos.</p> Wed, 10 Feb 2016 00:40:33 -0000