domingo, 18 de junio de 2017

Cómo cubrir las pistas y no dejar rastro detrás en el sistema de destino




DISCLAIMER: Honeysec no se hace responsable de cualquier uso que se le pueda dar a las herramientas que aparecen en el siguiente artículo, incluidos ataques a cualquier dispositivo móvil o tablet. Estas herramientas han sido publicadas con propósitos educativos y sin ninguna garantía.

Consultar los archivos de registro es el primer paso que un administrador de sistemas revisará para ver  qué ha ocurrido en su sistema. Cada inicio de sesión sin éxito, inicio de sesión correcto y evento de seguridad se registra en los archivos de registro. Por lo tanto, lo primero que debemos hacer es asegurarnos de que no hay rastro de nuestras actividades maliciosas en esos archivos de registro.


Eliminación de registros de eventos con Metasploit/ Meterpreter

En las versiones más recientes de meterpreter de Metasploit, hay un script llamado clearev para borrar todos los registros de eventos. Este programa entrará en los registros de eventos en un sistema Windows y borrará TODOS los registros. Esto podría parecer un poco sospechoso para el administrador del sistema, pero la mayoría de los administradores del sistema no están vigilantes.

Como mínimo, eliminará nuestra conexión y / o intento de conexión de los archivos de registro. Por supuesto, puede haber otra evidencia dejada detrás tal como registros del router y registros del IDS.

En primer lugar, utilizar Metasploit para comprometer el sistema y obtener una  sesión de meterpreter.



Una vez que obtenemos una sesión de meterpreter en el sistema, escribimos lo siguiente:

  • meterpreter > clearev



Como se puede ver en esta captura de pantalla , todos los registros de eventos de Aplicación, Sistema y Seguridad se han borrado de los archivos de registro del objetivo.


Eliminación de registros de sucesos en equipos Linux

En los sistemas Linux, los archivos de registro se almacenan en el directorio /var /log. Podemos abrir y ver ese archivo de texto plano que contiene mensajes de registro abriéndolo con cualquier editor de texto.
  • kwrite /var/log/messages

Antes de abandonar el sistema comprometido, abriremos este archivo en nuestro editor de texto favorito, revisaremos y borraremos cuidadosamente  las entradas relacionadas específicamente con nuestra actividad en el equipo comprometido.


Borrado del historial de comandos

Finalmente, antes de abandonar el equipo linux comprometido, queremos asegurarnos de que nuestro historial de comandos se borra. Recordar, que la  shell de bash en la que estamos escribiendo guardará nuestros últimos 500 comandos. Un administrador del sistema podría rastrear todos nuestros comandos y detectar  nuestras actividades en el sistema y potencialmente utilizarlas como evidencia.

Para ver nuestro historial, podemos usar el comando more:

  • more ~/.bash_history

El tamaño de nuestro archivo de historial está determinado por la variable de entorno HISTSIZE. Podemos comprobar el tamaño de la variable HISTSIZE escribiendo:

  • echo $HISTSIZE

Entonces podríamos ponerlo a cero escribiendo:

  • export HISTSIZE=0

Ahora, nuestra shell no almacenará nada de nuestro historial. Recordar, hacer este cambio a cero antes de iniciar el ataque y para que no se almacenen ningún comando, pero si ya han escrito algunos comandos, tendremos que  cerrar sesión y volver a iniciar la sesión para borrar el historial después de establecer el HISTSIZE en cero.


Machacar el archivo del historial

A veces no tendremos tiempo suficiente para borrar el archivo de historial o cambiar la variable HISTSIZE. De prisa, podemos simplemente destruir nuestro archivo del historial escribiendo:

  • shred -zu root/.bash_history

Para comprobar si nuestro historial ha sido machacado, podemos ver el archivo de historial escribiendo:

  • more /root/.bashhistory

Happy Hacking.






domingo, 4 de junio de 2017

ByPaseando Captchas mal implementados.

Querido SimSimi, no soy un Bot sino un script de Python ;) 
Por: Samuel López Saura, @elchicodepython.



En este artículo vamos a ver y a explotar una implementación real muy pobre de un Captcha en un entorno de producción. El otro día jugando con unas librerías de Python para hacer Web Scrapping me propuse a modo juego crear un controlador para poder implementar bots en Whatsapp al igual que ya existían en Telegram para automatizar determinadas tareas de envío de mensajes repetitivos o cualquier otro uso. 




Divagando se me ocurrió conectarlo con SimSimi y dejar que SimSimi recibiera los mensajes que yo recibiese y respondiera por mi. Pensé en utilizarlo para cuando no quisiera continuar una conversación dejar que SimSimi la continuase. No obstante dadas las respuestas se iba a quedar en algo Just For Fun. SimSimi tiene una API para hacer uso de él pero es de pago y dado que no le iba a sacar ningún beneficio en principio no era factible. Así que de igual manera con más Web Scrapping nos comunicaríamos con SimSimi. Cuando recibiéramos un mensaje por Whatsapp. Se lo mandaríamos a SimSimi, esperaríamos su respuesta y cuando hubiera respondido responderíamos por whatsapp con la respuesta de SimSimi. Para manejar todo esto hice uso de la librería Selenium, el navegador Firefox y el lenguaje de programación Python3.


Todo parecía perfecto. Utilizando este método no tendría que pagar la API y podría hacer uso de SimSimi todo lo que quisiera. 

Pero al parecer al llegar a 20 mensajes saltaba una limitación en la que nos pedían escribir un número que encontraríamos en un vídeo que tendríamos que ver. Todo parecía haberse acabado pues mi script en Python en principio no sería capaz de entender el número del vídeo. 

No obstante el vídeo era público y estaba en youtube. Y cómo era público, (es decir, todo el mundo podía verlo sin necesitar especificamente el link) el resto de los vídeos de ese canal también lo eran. 
Con lo que me encontré con la irisoria cantidad de 5 vídeos con 5 pines distintos. (que además tenían los mismos números pero en otro orden) 

Además cada vez que saltaba la limitación SimSimi decía la misma frase. En otras palabras, la condición a la que estábamos esperando era cuando SimSimi diga

         Send a password(4 digit number) to talk more. 
         The video may give you the numbers 

Mira el último Link de la página cuyo hipervínculo empiece por https://youtu.be, dame su atributo href y en el diccionario de pines, que hemos guardado según hemos ido viendo los vídeos y anotando sus URL y su pin, dame su valor. 

a[href^="https://youtu.be 


Ahora que ya tengo el pin. Responde con el Pin y sigue funcionando.

 


En resumen a la hora de utilizar un captcha hay que cumplir unas especificaciones como que no se pueda leer leyendo el código de la página, que sea aleatorio, no se limite a unas posibilidades, etc... Si no podemos cumplir por nuestra cuenta o no queremos invertir en ello el tiempo necesario siempre podemos adquirir el servicio de un tercero que haga implementaciones adecuadas antes que hacer desastres de este tipo que se puedan saltar en cuestión de minutos. (y digo minutos porque hay que ver los vídeos para sacar los pines).