elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: 4n4lDetector v1.3: herramienta de análisis estático de malware


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6
1  Seguridad Informática / Análisis y Diseño de Malware / Desbordamiento de pila moderno en: Ayer a las 13:20
Hola,

Hay algo que me da mucha curiosidad ultimamente... y es que, si en los sistemas modernos (es decir, sistemas que funcionan en modo protegido) existe toda la integridad que permiten las entradas de la tabla GDT, ¿como es posible explotar un desbordamiento de pila?. Es decir, es facil deducir que tanto la pila como los datos del programa se accederan atraves de entradas en la estructura asignadas como datos. Es decir, si se produce un desbordamiento y, por ejemplo, se reescribe el retorno de la funcion que se ejecuta con una posicion de la misma pila (no podemos escribir en ninguna otra parte) entonces, cuando se acceda a la entrada del segmento de pila en la GDT (de datos) ¿el sistema operativo no detendria el programa por (intentar) ejecutar en un segmento de datos?.

Y si es asi, ¿entonces ya no es posible explotar desbordamientos de pila?.

Dejemos de lado las inconsistencias que podrian haber en un sistema real, yo me refiero especificamente a un sistema de modo protegido que sea ideal.

Saludos.
2  Seguridad Informática / Análisis y Diseño de Malware / Re: Encontrar la funcion main en un binario en: 3 Junio 2020, 20:56
localizando referencias en instrucciones a cadenas dentro del ejecutable es una forma muy utilizada para localizar zonas de codigo y funciones en general.
No se si alegrarme de redescubrir la rueda... en la comunidad hacker parece moralmente ilegal.

finalmente "kernel32.ExitProcess" o "_cexit"
Esto es realmente mas logico y eficiente que lo que yo estaba haciendo. Leerlo se sintio como una epifania.

Muchas gracias por tu ayuda.
3  Informática / Hardware / Unidad de almacenamiento secundario en: 3 Junio 2020, 20:36
Hola,

hago este tema porque me encuentro un poco confundido respecto a la unidad basica de almacenamiento secundario. Esta confusion viene de haber leido el siguiente articulo de Wikipedia:

https://es.wikipedia.org/wiki/Cilindro-Cabezal-Sector

CHS es un modo de acceso. Segun este modo, el primer sector que se encuentra en el primer cabezal del primer cilindro se expresa como 0/0/1, es decir, en una forma Cylinder/Header/Sector (notese la ausencia de una especificacion de un indice en tal sector). ¿quiere decir esto que para el controlador del sistema de archivos acceder a un byte en el disco, debe acceder necesariamente a los 512 bytes del sector en el que se encuentra?
4  Foros Generales / Foro Libre / ¿Algun bibliófilo? en: 1 Junio 2020, 21:52
Hola, hago este tema con intencion de compartir literatura. Si hay algo que me gusta tanto como la musica y estas maquinas de electrones, son los libros.
¿Cuales son sus libros favoritos?

Los mios:

Asi Hablo Zaratustra, Friedrich Nietzsche

Definitivamente una obra maestra, como leer una buena pintura. Con una lirica erizante y elementos narrativos exquisitos, pone a la etica de rodillas, la buena filosofia en su unica expresion. Una forma impecable de desccribir el comportamiento humano y la naturaleza, ademas los elementos que hacen al mundo ser el mundo. Para mi, Nietzsche paso desapercibido como el mejor psicologo de la historia (¿el mas basico?).

Las Penas del Joven Werther, J.W. Goethe

El mejor de los pocos libros que me muestran la verdadera cara de mi corazon... sin duda una recomiendacion a los romanticos del foro. Se trata de una novela epistolar que narra un amor imposible entre una mujer casada y el autor... digo, mejor sigan ustedes.  :laugh:

Mas Alla del Bien y del Mal, Friedrich Nietzsche

Se dice que fueron una recopilacion de "notas" durante el desarrollo de Asi Hablo Zaratustra. El tema es basicamente el mismo: buscar su propia afirmacion en la refutacion de uno mismo. Mi parte favorita se trata de algunos interludios escritos por Nietzsche.

Tao Te Ching, Lao Tse

Literalmente, Lao Tse significa viejo maestro. Aunque se trata de una lectura "dificil" (si podemos llamarla asi), es un impecable tratado sobre el verdadero camino segun la filosifia de este sabio antiguo en quien se fundaron las bases de la filosofia taoista.

Informatica

Sistemas Operativos, William Stallings

Honestamente no he leido mucha de la variada literatura que existe al respecto como, por ejemplo, los libros de Tanenbaum, pero este (cual yo tengo la quinta edicion) explica una buena introduccion al funcionamiento fundamental de los procesadores. Ademas de una descripcion general aceptable del funcionamiento de la red ademas de, evidentenemte, los sistemas operativos. Acerca de los cuales habla en verdad en ocasiones de una manera bastante engorrosa, pero comprensible. Ademas de una amplia inmersion en cuestiones teoricas.

The Rootkit Arsenal, Bill Blunden

Algo un poco mas avanzado... un sumergimiento casi absoluto en las tecnologias del diseno e implementacion de rootkits. Presenta varios ejemplos aunque con una considerable sistematica anti-script kiddies. Aunque lo sigo leyendo, puedo decir con seguridad que es de esos que no quieren que leas.

posdata: perdonen el tamano de las imagenes. Si alguien conoce una manera de limitarlo le agradeceria decirme.

Saludos.

MOD: Imagenes adaptadas a lo permitido.
5  Seguridad Informática / Análisis y Diseño de Malware / Re: Necesito ayuda para una backdoor en: 1 Junio 2020, 20:49
https://tools.ietf.org/html/rfc793
https://tools.ietf.org/html/rfc791
http://es.tldp.org/Tutoriales/PROG-SOCKETS/prog-sockets.html

Un backdoor no es algo tan especifico para encontrar un ejemplo concreto, existen diversos. Lo mas popular es utilizarlos con alguna forma de reverse shell (o al menos intentarlo). Puedes encontrar uno que utiliza la libreria estandar de C++ en Youtube:

https://www.youtube.com/watch?v=Rrdp0AUWAbs

Realmente el titulo esta equivocado. Segun la estructura del codigo no lo consideraria un troyano. Sin embargo con ello puedes entender la filosofia de una shell inversa (reverse shell).
Puedes utilizar incluso utilidades como Netcat para cumplir tu objetivo de backdoor, si haces un instalador para el registro de Windows podrias configurar un auto-arranque, por ejemplo.

No hagas de las definiciones un objetivo sino un medio para expresar tus objetivos... el caso no es saber como se hace un backdoor.

Saludos.
6  Seguridad Informática / Análisis y Diseño de Malware / Re: Encontrar la funcion main en un binario en: 1 Junio 2020, 18:02
Como buscaste la función main?
Lo se... demasiado facil para preguntarse. La expectativa brota de tu mensaje como el veneno del colmillo, pero me refiero a medios manuales.

Este es el codigo del programa de prueba:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main ()
  5. {
  6.    int i;
  7.    char bPassword[BUFSIZ];
  8.    const char *password=
  9.    "p2u4ingr9pnqeofig2-94rm8g[nqeifggp2u45gn230p89e";
  10.  
  11.    printf ("introduzca la contrasena: ");
  12.    fflush (stdin);
  13.    gets (bPassword);  
  14.  
  15.    if (strcmp (bPassword, password))
  16.    {
  17.        printf ("\r\naccess denied.");
  18.        return 0;
  19.    }
  20.  
  21.    else
  22.        printf ("\r\naccess granted.");
  23.  
  24.    printf ("\r\n\r\nuser name\tpassword");
  25.    printf (    "\r\n---- ----\t--------");
  26.  
  27.    for (i=0;i<5;i++) printf ("\r\n%c%c%c\t\t%c%c%c",
  28.    i+33,i+33,i+33,i+1+33,i+1+33,i+1+33);
  29.  
  30.    return 0xffff;
  31. }

Mi pregunta hace referencia a un ejecutable cuyo codigo fuente no posees. Pero para introducirte mejor en el contexto, ahi esta  :rolleyes:.

Si se ejecuta el programa, puedes ver que evidetemente una cadena de caracteres esta siendo impresa en el buffer de salida estandar:



La impresion puede ser parte del algoritmo de una funcion o de la funcion principal. En el primer caso seria una cuestion de perseguir los retornos con el depurador hasta dar con ella. Sin embargo este caso es el segundo.

Para encontrar la funcion, se me ocurrio primero buscar la RVA de la cadena. Lo hice asi con DEBUG (si, es modo real y son 16 bits, pero no avanzo hasta pisar bien):


(si, ademas es un COM)

Ahora la pregunta que te haces en este punto es: ¿de donde viene la funcion que imprime los caracteres?
La funcion, cual sea, tendra que hacer referencia a la cadena que esta siendo impresa, localizada en 24FCh. y ¿cual es la unica forma en la que (un programador normal, que yo la verdad no soy tan normal...) se haria esto? Utilizando su RVA como parametro, es decir, poniendola en la pila. Un compilador corriente lo haria asi:

Código
  1. MOV AX, 24FCh
  2. PUSH AX

La codificacion de MOV AX, 24FCh es B8 FC 24. Por tanto hay que buscarlo:



Luego basta con analizar el codigo maquina en busca de la logica de una funcion principal.

7  Seguridad Informática / Análisis y Diseño de Malware / Encontrar la funcion main en un binario en: 26 Mayo 2020, 17:27
Hola,

Estaba practicando con un hackme que programe. Precisamente el desbordamiento de pila; puedo enviarle el payload y el codigo por mensaje privado a quien le interese.
En resumen, tarde un buen rato buscando la funcion main en el binario resultante. De hecho, en el codigo fuente integre ciertas instrucciones en ensamblador (inutiles) que luego utilice como una 'firma' de la funcion para luego buscar la cadena con el depurador (llamenme novato).
Mi pregunta es: ¿existe una manera mas, digamos, eficiente de encontrarla?

Saludos.


Edito: Se me acaba de ocurrir una buena manera. Si a alguien le interesa, pues lo mismo. :)
Sin embargo me gustaria leer sus opiniones, igualmente.
8  Programación / ASM / Re: Algunas dudas sobre ensambladores. en: 19 Mayo 2020, 18:14
aunque no podrias enlazarlo con tlink como .COM sin el ORG 0100h
Por cierto... ¿como TLINK reconoce que se declaro ORG 100h si es una pseudo-instruccion?
9  Programación / ASM / Re: Algunas dudas sobre ensambladores. en: 18 Mayo 2020, 23:23
Codigo tambien; _oldISR seria 0409h de otra manera
Sin embargo en este caso codigo tambien porque esta siendo referenciado por un label, ¿no?

No. Un .COM es un archivo sin siquiera una misera cabecera asi que se carga tal cual es, MS-DOS pone antes el PSP: "Since it lacks relocation information, it is loaded by the operating system at a pre-set address, at offset 0100h immediately following the PSP, where it is executed (hence the limitation of the executable's size): the entry point is fixed at 0100h." https://en.wikipedia.org/wiki/COM_file
Esta bien... pense que lo primero que se cargaba era el MCB del programa...
¿entonces el PSP mide 100 unidades hexadecimales?
10  Programación / ASM / Re: Algunas dudas sobre ensambladores. en: 18 Mayo 2020, 18:51
Anyone who is looking to write a real bootloader will know not to make any assumptions because they understand the ramifications.

Precisamente esta es la razon por la cual hice este tema. Aunque no estaba programando un bootloader.

Hay algo que no me queda muy claro... se supone que ORG se utiliza para especificar el desplazamiento dentro del desplazamiento en el acceso a la memoria (datos). Sin embargo, ¿solo datos? ¿o añade este valor a otros tipos de referencias tambien?

Y otra cosa... ¿recuerdas el archivo hookTSR.asm en el libro de Bill Blunden?
Al inicio:

Citar
SEGMENT CSEG WORD 'code'
ASSUME CS:CSEG, SS:CSEG, DS:CSEG
ORG 100h
...

¿que es lo que sucede cuando se ensambla la linea de codigo:

Citar
PUSHF
CALL CS:_oldISR
...
?

Si Windows carga los archivos COM identicamente como se encuentran en el archivo, ¿no se estaria especificando 100h unidades "extra" al direccionamiento, al especificar ORG 100h?
Páginas: [1] 2 3 4 5 6
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines