Ingeniería inversa de TODO! Necesito saber cómo están hechas las cosas :)
Sin dudas hay mil caminos para aprender algo, cada uno toma el que mejor se adapte a sus preferencias de aprendizaje. En esta nota contaré el camino que he tomado yo -en aquel entonces, hace algunos años- para aprender ASM (Assembly), aunque no significa que sea el camino ideal para quien esté leyendo estas líneas. Sin embargo, considero que, si no te sirve mi metodología... al menos seguro te servirán los recursos que citaré. Porque hasta...
Hace poco en KitPloit publicaron una herramienta llamada CAVE MINER que me pareció muy interesante. Si alguno estuvo siguiendo las entradas de reversing que escribí durante los últimos 2 meses, recordará que cuando queríamos inyectar algún código propio dentro de un ejecutable ya compilado debíamos buscar un hueco para ello e inyectarlo allí. Justamente, lo que hace CAVE MINER es buscar dentro de un ejecutable aquellos huecos y nos informa el...
En la entrada anterior de esta serie de notas de reversing, vimos cómo expandir una sección del ejecutable con el objetivo de hacernos un hueco para inyectar código propio allí. Hasta este punto, llegamos a hacer dicho espacio a mano, y ampliamos la última sección del binario de Putty de 32bits. Ahora llegó el momento de aprovechar ese espacio que hemos creado e inyectar el código que deseemos. Para la práctica inyectaremos un MessageBox que se..
En la segunda entrada de esta serie de notas de reversing estuvimos viendo las cabeceras PE, una de ellas es "Image Section Header" que contiene información sobre las secciones del ejecutable. Nuestro objetivo esta vez será alterar cierta información de esa cabecera para que podamos expandir una sección ya existente dentro del ejecutable ¿Para qué? Para tener el espacio suficiente para inyectar código propio dentro de cualquier .exe.
Como mencionamos en la primera nota de esta serie sobre reversing, donde hablamos del direccionamiento en memoria, los archivos ejecutables de Windows tienen las cabeceras "Image File Header", "Image Optional Header", "Image Section Header" e "Image Data Directory" que proporcionan mucha información sobre el ejecutable en sí. Ahora que ya entendemos que son las direcciones virtuales (VA) y las direcciones virtuales relativas (RVA) podemos...