tag:blogger.com,1999:blog-5399811056563385935.post908132076659738582..comments2023-09-21T14:48:16.670+02:00Comments on Security By Default: Infección de ejecutables en Linux: ELF y código PIC (1/6)Yago Jesushttp://www.blogger.com/profile/16830228750771246202noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-5399811056563385935.post-6409624153829561702012-04-11T18:09:24.055+02:002012-04-11T18:09:24.055+02:00Muy bueno el post BatchDrake!!! Tengo muchas ganas...Muy bueno el post BatchDrake!!! Tengo muchas ganas de leer el resto de la serie :)vierito5http://vierito.es/wordpressnoreply@blogger.comtag:blogger.com,1999:blog-5399811056563385935.post-9217535477356108812012-04-11T16:20:54.996+02:002012-04-11T16:20:54.996+02:00Jojojo, y huy lo que queda, ya verás el AWAKENING,...Jojojo, y huy lo que queda, ya verás el AWAKENING, cuando la bestia empiece a tomar consciencia de sí misma y los binarios arranquen con sorpresa.Gonzalo José Carracedo Carballnoreply@blogger.comtag:blogger.com,1999:blog-5399811056563385935.post-51266253326073741922012-04-11T16:19:09.430+02:002012-04-11T16:19:09.430+02:00a) Vale, ahí me pasé de listo. Con segmentos me re...a) Vale, ahí me pasé de listo. Con segmentos me refiero a las porciones del binario que se referencian desde las cabeceras tipo PT_LOAD y que luego se cargan a partir de cierta dirección de memoria alineada a la página. Llamarlos segmentos es un poco abuso del lenguaje, lo utilizo porque hay una cabecera para todo lo que se puede ejecutar (en similitud con el segmento de texto) y otra para todos los datos (en similitud con el segmento de datos). Los registros de segmento olvídate de ellos xD muy rara vez los vas a ver en un binario. <br /><br />d) Sep, exacto. Y lo cierto es que es un truco bastante patatero, pero bueno, como no iba a funcionar de todos modos ya pasé.Gonzalo José Carracedo Carballnoreply@blogger.comtag:blogger.com,1999:blog-5399811056563385935.post-50916235147574116052012-04-11T15:37:48.375+02:002012-04-11T15:37:48.375+02:00a) Entendiendo que con secciones te refieres a las...a) Entendiendo que con secciones te refieres a las .section, las divisiones echas en el ELF. Mientras que por segmento ya te refieres a los segments que usa la arquitectura i386, ¿no? (%cs, %ds, %es, %ss, %fs, %gs). En tal caso, el codigo es apuntado por %cs y los datos por %ds (por ejemplo), es decir, dos segmentos distintos, ¿podrían entonces estar a distinta distancia en distintas ejecuciones?. Tengo la sensacion de que tengo un concepto erroneo por algun lado...<br /><br />d) Entonces imagino que en first pusistes la seccion .text explicitamente porque necesitabas poner el simbolo _stext al principio de la misma, ¿correcto?.Ole -noreply@blogger.comtag:blogger.com,1999:blog-5399811056563385935.post-62118670594094017992012-04-11T15:18:22.824+02:002012-04-11T15:18:22.824+02:00a) Pues sí, ya que las secciones sólo son subdivis...a) Pues sí, ya que las secciones sólo son subdivisiones que se hacen sobre la previa división en cabeceras de programa. Lo que realmente puede mover el kernel son los segmentos.<br /><br />b) En sys/syscall.h tengo todos los códigos de las llamadas al sistema (cosas del tipo __NR_write y demás). Es realmente cómodo, e incluso creo que portable y todo. Allá donde veas un __NR_algo (en la propia implementación de write, por ejemplo) que sepas que es cortesía de ese fichero de cabecera.<br /><br />c) Exacto, uint8_t, int32_t... esto es bueno porque suprime de lleno las ambigüedades que pueden existir al usar otros tipos como long (long en x86 es de 32 bits, pero en x86_64 es de 64, mientras que int es de 32 en ambas arquitecturas).<br /><br />d) Pues porque esa directiva sólo funciona para el ensamblador. Todas las funciones de C se guardan en .text a menos que se especifique lo contrario con __attribute__ ((section (".sección_en_cuestión")))Gonzalo José Carracedo Carballnoreply@blogger.comtag:blogger.com,1999:blog-5399811056563385935.post-28443076667416607792012-04-11T13:27:49.559+02:002012-04-11T13:27:49.559+02:00Bravo Batch, me encantan estas cosas. Tengo un par...Bravo Batch, me encantan estas cosas. Tengo un par de preguntas que te las dejo por aqui por si le surgen a mas gente.<br /><br />- Cuando los programas ya estan cargados, ¿la distancia entre secciones es siempre la misma? Dices que se puede hacer y que es comun en x86-64 acceder a datos tomando como base el %rip. Dado que %rip apunta (normalmente :P) a algo en .text y que los datos suelen estar (normalmente tambien) en otras secciones (.data, .rodata, etc) entiendo que, independientemente de donde ser carguen debido a PIC y ASLR, la distancia entre cualesquiera dos secciones es la misma.<br /><br />- Dado que en el codigo que vamos a inyectar no podemos utilizar la libc e invocaremos syscalls directamente, ¿por qué se incluye sys/syscall.h?, ¿qué contiene esa cabecera?, en el código de ejemplo ¿dónde se usa?.<br /><br />- De nuevo debido a que no vamos a enlazar con libc, ¿por qué se incluye stdint.h?. Entiendo que no define e implementa funciones, sino que sólo define tipos, ¿no?.<br /><br />- En el programa second veo que esa vez no se declaró la ".section .text", a diferencia de en el programa first (que luego al ejecutar llamastes standalone xD). ¿Cómo sabe el compilador que a partir de la función write() (justo lo que está despues de la declaración de ".section .code_top") es seccion .text y no seccion .code_top?<br /><br />Saludos.Ole -noreply@blogger.comtag:blogger.com,1999:blog-5399811056563385935.post-19346499095383785902012-04-11T13:17:42.737+02:002012-04-11T13:17:42.737+02:00@NighterMan Queremos el código que prometiste en l...@NighterMan Queremos el código que prometiste en la Rooted :DNewloghttp://www.overflowedminds.net/noreply@blogger.comtag:blogger.com,1999:blog-5399811056563385935.post-1696136724630174772012-04-11T13:15:45.745+02:002012-04-11T13:15:45.745+02:00Oh yeah!
Ya tengo algo interesante que leer en cl...Oh yeah!<br /><br />Ya tengo algo interesante que leer en clase.Newlognoreply@blogger.comtag:blogger.com,1999:blog-5399811056563385935.post-58508497810751234252012-04-11T12:49:48.081+02:002012-04-11T12:49:48.081+02:00Bienvenidos al primer capitulo de las locuras ment...Bienvenidos al primer capitulo de las locuras mentales de BatchDrake no aptas para personas que aun conserven la cordura jaja<br /><br />Grande batch, eres grande!!!NighterManhttp://twitter.com/NighterMannoreply@blogger.com