viernes, 31 de enero de 2014

Cuckoo Sandbox - Instalación & Configuración



 
Cuckoo Sandbox es una herramienta open source, escrita en Python, que tiene como objetivo el análisis automatizado de malware.

Su función es arrojar información sobre el comportamiento que tienen las muestras de malware.

Al ser una Sandbox todas las muestras que se ejecuten en ella quedarán aisladas del resto del PC.

Su página oficial es http://www.cuckoosandbox.org/.


Descarga

Para descargar Cuckoo Sandbox podemos hacerlo de 2 maneras:
  • Descargarlo/Descomprimirlo manualmente.
  • Clonando el repositorio (git clone git://github.com/cuckoobox/cuckoo.git)

Como véis yo me he decantado por clonarlo ya que es más cómodo.

Ahora tenemos que instalar VirtualBox para crear la máquina virtual donde se ejecutarán todas nuestras muestras de malware.
Para ello lanzamos los siguientes comandos:
  • prepare-kernel-sources
  • cd /usr/src/linux
  • cp -rf include/generated/* include/linux/
  • echo deb http://download.virtualbox.org/virtualbox/debian lucid contrib non-free >> /etc/apt/sources.list
  • wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
  • apt-get update
  • apt-cache search virtualbox
  • apt-get install virtualbox-4.3


Configuración

 Ahora deberemos de modificar varios archivos de configuración antes de poder utlizar esta herramienta.
  • Cuckoo.conf: En este archivo se definen los parámetros de conectividad de la máquina Host y la interfaz de red con la que se conectará a la máquina virtual, la base de datos donde se registrará toda la información de los análisis, y también, los tiempos que durarán nuestros análisis.
  • Virtualbox.conf: Este archivo será el que relacione la virtualbox con cuckoo, y en él se configuran los parámetros de conectividad y las características de nuestra máquina virtual.
  • Reporting.conf: Este archivo contiene la configuración de los reportes de los análisis.
  • Processing.conf: Este archivo sirve para la activación y configuración de módulos de procesamiento.
Después de esto, tenemos que coger el archivo "agent.py" que se encuentra en la carpeta "Agent" dentro del directorio de instalación de cuckoo, copiarlo dentro de la máquina virtual e instalar python.
Este archivo se encarga de la comunicación y el intercambio de datos con la máquina Host.

Ahora nos falta crear una base de datos para que cuckoo guarde toda la información y pueda ser leída cuando se necesite.
Por defecto se guardará en "/db/cuckoo.db".
Si por ejemplo utilizamos MySQL, deberemos indicar la base de datos en el archivo cuckoo.conf de la siguiente manera:

connection = mysql://username:password@localhost/database


 Conectividad

Un paso muy importante para que puedan trabajar entre las dos máquinas es agregar las reglas en el Firewall de nuestra máquina Host para que acepte las conexiones procedentes de nuestra máquina virtual que será la que ejecute las muestras de malware. 



Ahora debemos realizar una imagen (snapshot) de la máquina virtual con el servicio agent.py corriendo.
 

 Para restablecer la máquina virtual al punto en el que se hizo la snapshot habrá que introducir los siguiente comandos:
  • vboxmanage controlvm "WinXP" poweroff
  • vboxmanage snapshot "WinXP" restorecurrent
  • vboxheadless --startvm "WinXP"
Bien, ya tenemos instalada y configurada nuestra Sandbox Cuckoo, ahora la iniciamos.


 Para disponer de todas las funcionalidades de las que dispone esta gran herramienta, se recomienda instalar las siguientes dependencias:
  • Dpkt (Muy recomendable): Para extraer información de los archivos PCAP.
  • Jinja2 (Muy recomendable): Para los informes HTML y la interfaz web.
  • Magic (Opcional): Para identificar los formatos de archivos.
  • Pydeep (Opcional): Para el cálculo de hash de los archivos.
  • Pymongo (Opcional): Para almacenar los resultados en una base de datos MongoDB.
  • Yara & Yara Python (Opcional): Para la coincidencia de firmas.
  • Libvirt (Opcional): Para el uso de KVM machine manager.
  • Bottlepy (Opcional): Para el uso de web.py & api.py.
  • Pefile (Opcional): Para el análisis estático de binarios PE32.

Para terminar les dejo con un video-tutorial.

Que lo disfruten!!!





Referencias:
http://www.cuckoosandbox.org/
http://blogs.eset-la.com/laboratorio/2013/12/24/analizando-muestras-cuckoo-instalacion-configuracion-1/
http://netsecuritystuff.wordpress.com/2011/05/23/virtualbox-on-backtrack-5/
http://santi-bassett.blogspot.com.es/2013/01/installing-cuckoo-sandbox-on-virtualbox.html
http://blog.michaelhaag.org/2013/10/cuckoo-sandbox-and-mysql.html
http://www.behindthefirewalls.com/2013/07/how-to-install-cuckoo-sandbox-on-ubuntu.html



**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.** 

martes, 28 de enero de 2014

Volatility Framework - Analizando un proceso sospechoso


En la anterior entrada vimos qué es Volatility y las opciones de las que disponemos con este framework.

Si recordáis, mientras Volatility nos mostraba los procesos que estaban corriendo en el momento en el que se realizó la imagen de la memoria, pudimos observar que había un ejecutable llamado "troyano.exe" que se estaba ejecutando en nuestra máquina.

Pues bien, en esta entrada vamos a ver cómo podemos obtener información sobre ese ejecutable para saber si es algún tipo de malware y cómo debemos de actuar.

¿Listos?



Lo primero que vamos a hacer es mostrar de nuevo los procesos para ver si hay algún otro proceso sospechoso.


Bien, como vemos tenemos 3 procesos ejecutándose que son cuanto menos sospechosos... así que vamos a ir investigando.

"msiexec.exe" (Windows Installer) y "rundll32.exe" (Ejecuta DLL´s) son ejecutables nativos de Windows y se encuentran en "C:\Windows\System32". Estos sirven para Instalar/Desinstalar programas, veámos si se están ejecutando desde dicha ruta:



*Nota*:También existen métodos que permiten la inyección de archivos en procesos ya existentes, pero para no marearnos tanto, esto lo dejaremos para proximas entradas y daremos como buenos y legítimos estos 2 ejecutables.** 

Bien, como vemos sí que se están ejecutando desde dicha ruta, pero ¿estámos instalando algo? ¿está corriendo windows update? ¿estámos actualizando algún programa?

Debemos hacernos estas preguntas ya que si no se está lanzando ninguna actualización o estamos instalando/desinstalado algún programa podría estar ejecutándose algún software malicioso...

Ahora vamos a analizar el proceso "troyano.exe".
Mediante el comando dlllist podemos ver las dll´s a las que llama el ejecutable.



Como podemos ver este archivo tiene funciones muy sospechosas, como por ejemplo, está llamando a netshell.dll que permite administrar el sistema de forma remota y configurar los servicios de red mediante linea de comandos, sin comentar que está llamando a crypt32.dll (¿encryptado?), ole32.dll y oleaut32.dll entre otros.

Veámos los handles de este proceso:


Mutaciones, configuraciones de red, modificaciones en el registro...

Viendo esto podemos asegurar que se estará realizando algún tipo de conexión con la máquina atacante, por lo que vamos a ver las conexiones.


Como vemos se está realizando una conexión desde nuestra máquina en el puerto 1037, a la dirección 192.168.0.40 en el puerto 4444. Dicha conexión la lleva a cabo el proceso con id 1280, que corresponde al ejecutable "troyano.exe".

Ante esto poco más podemos decir, podríamos seguir viendo los cambios o llamadas que ha hecho en el sistema, pero en este caso queríamos asegurarnos de que nuestras sospechas eran ciertas y como hemos visto estábamos en lo cierto.

Ahora sabiendo a donde se está conectando nuestro "pequeño" invitado, deberemos tomar las medidas oportunas:
  • Cerrar puertos que esté utilizando para realizar la conexión.
  • Agregar reglas en el Firewall.
  • Bloquear la dirección a la que se conecta.
  • etc.


Espero les haya gustado.

Saludos.


Referencias:
https://code.google.com/p/volatility/wiki/CommandReference
https://code.google.com/p/volatility/wiki/VolatilityDocumentationProject


**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

sábado, 25 de enero de 2014

Volatility Framework - Introducción


¿Qué es Volatility?

Volatility es una completa colección de herramientas open source cuyo objetivo es el análisis de Memoria RAM.

Este Framework permite analizar la memoria RAM de todos los sistemas operativos y de las distintas arquitecturas (x32 y x64).

Con volatility podremos obtener toda la información que estaba almacenada en memoria en un equipo (contraseñas, conexiones, procesos, etc).

Previamente debemos realizar una imagen de la memoria RAM del sistema al que queramos auditar.
Para ello hay diferentes herramientas en el mercado que permiten hacer esto, os pongo 3:

La instalación de Volatility es sencilla, tan sólo necesitaremos tener instalado python.
Para instalarlo en sistemas Linux hay que seguir los siguientes pasos:

  1. apt-get install python (Para descargar e instalar python)
  2. apt-get install python-crypto (Para descargar el módulo crypto)
  3. Descargamos desde la página oficial Volatility Framework.
  4. tar xvzf volatility-2.3.1.tar.gz (Descomprimimos el archivo)
  5. cd  /volatility-2.3.1/ (Entramos en la carpeta extraída)
  6. make (compilamos)
  7. make install (instalamos)
Las opciones que presenta Volatility las podemos ver utilizando el comando -h.


Bastantes opciones ¿no?.

Bien imaginemos que queremos ver los procesos que estaban corriendo en el momento en el que se hizo la imagen, para ello escribiremos el comando python vol.py --f dumpmemoria.mem



¿Véis algo extraño en los procesos? xD

En el siguiente post veremos como analizar ese "troyano.exe".


Saludos.


Referencias:
https://code.google.com/p/volatility/


**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**



1) Debemos tener instalado Python en nuestro sistema operativo. De no ser así instalamos Python:
- apg-get install python
y resolvemos la siguiente dependencia:
- apt-get install python-crypto
Podemos ejecutar ambas instalaciones en en un solo comando
- apt-get install python python-crypto
2) Descargamos el código fuente del siguiente link: “volatility.googlecode.com/files/volatility-2.2.tar.gz”.
3) Descomprimimos e instalamos volatility:
- gunzip volatility-2.2.tar.gz
- tar -xvf volatility-2.2.tar
- mv volatility-2.2 /opt/
- cd /opt/volatility-2.2/
- make
- make install
- See more at: http://www.seguridadx.com/volatility/#sthash.J3NmCGje.dpuf
completa colección de herramientas open

jueves, 23 de enero de 2014

Alternate Data Streams (ADS) - Malware


Seguimos hablando de los flujos de datos alternativos (ADS).

Como ya vimos en el post anterior, gracias a esta característica podemos ocultar ficheros dentro de otros ficheros, así que vamos a ocultar un ejecutable que contiene un payload meterpreter.

Vamos al lío!!!

Si recordamos, la sintaxis para referenciar flujos es la siguiente:

fichero[:flujo[:tipo]]

Bien, crearemos un fichero pdf y como flujo añadiremos nuestra meterpreter.
Una vez hayamos creado nuestro flujo (rootkit.exe), levantaremos un handler en la máquina atacante para esperar la conexión, y seguidamente ejecutaremos nuestro flujo.



 Perfecto!!! Como véis yo he utilizado un pdf vacío, sin contenido, por eso tiene un tamaño de 0Kb, pero podemos escoger un pdf cualquiera para que parezca más real y así sentirnos todos unos ninjas...





¿Y si detectamos que tenemos un fichero con malware como flujo de datos?


Pues como ya habíamos dicho en la anterior entrada, los flujos de datos alternativos son una característica del sistema de ficheros NTFS, y si pasamos dicho fichero a un sistema de ficheros FAT32 solamente se copiará el flujo de datos principal, es decir, el fichero sin el malware.

Existen en la red multitud de herramientas para ver y eliminar flujos de datos alternativos, una de ellas es "NTFSExt" de Microsoft, y podéis descargarla desde aquí.

No seáis malos!!!

Saludos.

Refencias:
http://www.rootkitanalytics.com/userland/Exploring-Alternate-Data-Streams.php
http://windowstips.wordpress.com/2007/01/29/alternate-data-streams-ads-que-es-y-como-funciona/

 
**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

martes, 21 de enero de 2014

Alternate Data Streams (ADS) - Introducción


Los Alternate Data Streams son flujos alternativos de datos, o ficheros dentro de otros ficheros.

Cuando hablamos de un fichero, normalmente pensamos que son una secuencia de bytes ordenados y accesibles, pero en el sistema de archivos NTFS esto no es así, ya que puede albergar flujos de datos alternativos junto al fichero principal, con tan solo especificar un nombre interno para los mismos.

La sintaxis para referenciar flujos (streams) en ficheros NTFS es la siguiente:

fichero[:flujo[:tipo]]

Para los ADS, uno de los varios tipos de flujos que puede haber dentro de un fichero en NTFS es "$DATA".

Si solamente se especifíca "fichero", se obtendrá el flujo principal de datos, que és el que conocemos todos.

Según la política de Microsoft con respecto a los ADS, es que los mismos no necesitan o no deberían ser accedidos por el usuario final, sino sólo por aquellas aplicaciones que los utilicen.

Debemos tener presente que ésta es una característica del sistema de archivos NTFS, por lo que si quisiesemos copiar un fichero con ADS a un pendrive con formato FAT32 sólo se copiará el flujo principal de datos y los demás flujos se perderán.

Otro punto a tener en cuenta, es que el tamaño de los flujos alternativos no se ve reflejado en los listados de directorios ni en Windows Explorer, por lo que si creamos un fichero llamado prueba.txt de 30bytes y le agregamos un flujo de por ejemplo 50Kb, sólo veríamos que el fichero pesa 30bytes.

Para poder ejecutar un flujo debemos utilizar el comando START, pero siempre hay que especificar el path completo al fichero, ya que al utilizar como separador ":" entre el nombre de fichero y el nombre de flujo puede "confundir" al comando.
Pongamos un ejemplo en el que creamos un fichero llamado H con un flujo "prueba.txt".
El comando START no podrá saber si al ejecutar H:prueba.txt se trata de un fichero en la unidad de disco H: o de un flujo dentro del fichero "H" en el directorio actual. Así que, para evitar esta confusión deberemos escribir la ruta completa para que diferencie entre la unidad de disco y el flujo dentro del fichero (C:\MiCarpeta\H:prueba.txt).

¿Esto afecta a los directorios?
La respuesta es SI. Con los directorios pasa exactamente lo mismo, podemos crear un flujo dentro de una carpeta.




Como podemos comprobar, aunque no nos muestre el explorador de archivos el fichero, sí que está ahí.

Pero no nos quedamos aquí, ya que también podemos crear flujos en el directorio raíz de un disco con formato NTFS.



Como diría el señor Burns...


En el próximo post sobre los flujos de datos alternativos (Alternate Data Streams) veremos algún ejemplo de cómo ocultar/ejecutar malware mediante los flujos de datos alternativos y cómo podemos librarnos si descubrimos un fichero malware utilizando esta técnica en nuestro sistema.

Espero que les haya gustado.

Saludos.



Referencias: 
http://www.flu-project.com/2011/05/ads-alternate-data-streams-ntfs_19.html
http://es.wikipedia.org/wiki/Alternate_Data_Streams


**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

domingo, 19 de enero de 2014

BeEF (The Browser Exploitation Framework) - Java Payload Attack


Hoy vamos a ver como infectar a nuestra víctima con beEF.

¿Preparados?

Parece ser que sí...xD

Lo primero que tenemos que hacer es iniciar beEF recordando que las claves por defecto son beef/beef.

Cuando lo iniciemos nos dirá la url de nuestro panel de control y donde está localizado nuestro "hook.js" que será el que haga la conexión entre nuestro panel y nuestra víctima.


Cuando nuestra víctima conecte, lo veremos en la parte izquierda de nuestro panel de control.


Si pinchamos sobre la dirección de nuestra víctima, nos saldrá en el frame de la derecha de nuestro panel varias pestañas en las que podremos ver información sobre la máquina infectada y lanzar diferentes ataques.



Como podéis ver tenemos muchísimas opciones, esta vez vamos a lanzar una sesion meterpreter mediante java.
Para ello tenemos que preparar nuestro handler, pero tenemos que utilizar esta vez el payload java/meterpreter/reverse_tcp.
Una vez tenemos nuestro handler a la escucha, procedemos a configurar el ataque.


Una vez pinchemos en execute, lanzaremos el exploit para que cuando la víctima acceda al puerto 4444 previamente configurado, nos brinde la sesión meterpreter.



Good!!! ¿Ya sabemos lo que podemos hacer con una meterpreter verdad? Así que...

AL ATAQUE!!!!




Saludos.


 **No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

sábado, 18 de enero de 2014

BeEF (The Browser Exploitation Framework) - Introducción


Hoy les voy a hablar de otra herramienta indispensable que debemos tener en cuenta, BeEF.

BeEF es un potente framework para pruebas de penetración que se centra en la explotación de navegadores.

Esta herramienta está escrita en Ruby, y gracias a ella se pueden exprimir fácilmente las vulnerabilidades que nos encontremos en sitios web.

Algunas de las cosas que podemos hacer con esta potente herramienta son:

  • Robo de cookies de sesiones.
  • Redirecciones.
  • Envío de mail.
  • Utilizar el navegador de la víctima como proxy web.
  • DNS Tunneling.
  • Etc...

Su uso es bastante intuitivo ya que dispone de un panel de administración web desde el que podemos controlar el navegador de nuestra víctima.


BeEF dispone de un archivo javascript llamado "Hook.js" que actúa como puente entre el atacante y  el navegador de la víctima ejecutando las instrucciones mediante javascript.

Si nos fijamos en el lateral izquierdo de nuestro panel de administración, nos encontramos con un apartado llamado "Hooked Browsers", y dentro 2 carpetas llamadas "Online Browsers" y "Offline Browsers".
En estas carpetas nos encontramos las direcciones IP de nuestras víctimas, y nos indicará mediante colores si es posible que tenga éxito y si el ataque será invisible a nuestra víctima o no.


Algunas de sus funcionalidades son:
  • Tunneling Proxy: Se usa el navegador víctima como proxy web.
  • XssRays: Podemos ver si la web donde se "hookeo" al navegador víctima es vulnerable a XSS.
  • Rider: Sirve para mandar http request arbitrarias desde el navegador víctima.
  • Conexión con Metasploit: Podemos integrar beEF con metasploit para lanzar exploits.

En las próximas entradas veremos un ejemplo de cómo utilizar beEF infectando un navegador y las posibilidades de las que disponemos.

Saludos.

 **No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**

jueves, 16 de enero de 2014

Nmap - Sondeo de puertos


Como ya dijimos en el anterior post, vamos a ver las distintas técnicas de sondeo de puertos de las que disponemos con Nmap.

Pongamos un ejemplo para entender por qué se disponen de diferentes tipos.

Imaginemos que nuestro reproductor de mp3 no enciende, por lo que cogemos nuestras herramientas y nos ponemos manos a la obra para intentar arreglarlo.
Como es normal, necesitaremos principalmente un destornillador para poder abrirlo, un martillo no nos valdría...
Quitamos todos los tornillos, lo abrimos, y nos damos cuenta que ha simple vista, tenemos un condensador que se ha partido la patilla.
El destornillador evidentemente aquí no nos vale de nada, por lo que cogemos un poquito de estaño, un soldador y procedemos a soldar la patilla.
Una vez enfriada la soldadura, volvemos a poner los tornillos con su correspondiente destornillador y probamos que funcione. Hemos tenido suerte, ya enciende.

Con la técnica de sondeo de puertos pasa lo mismo, se debe elegir el típo de sondeo más apropiado en cada situación si queremos tener los resultados deseados.

Los resultados que genera Nmap se basan en la respuesta del objetivo o del firewall que se encuentre por delante, pero puede que se hayan configurado para intentar confundir a Nmap en su intento por conseguir, por ejemplo, la versión del sistema operativo.
Es decir, que es posible que al intentar escanear un objetivo con Windows, nos saque el resultado indicando que es Linux. Evidentemente cualquier ataque que lanzasemos para ese sistema operativo, no tendría ningún efecto ya que no es el sistema operativo que corre la máquina víctima.

Tan importante es utilizar la herramienta adecuada como manejarla adecuadamente.

Por tanto, vamos a explicar los tipos de sondeo que hay:
  •  -sS (sondeo TCP SYN): Este sondeo es el utilizado por defecto, y puede realizar un sondear miles de puertos por segundo en una red rápida que no disponga de Firewall. Suele ser sigiloso ya que no llega a completar las conexiones TCP. También nos mostrará si un puerto está en estado abierto/cerrado/filtrado.
  • -sT (sondeo TCP connect()): Este sondeo es el que se suele utilizar cuando no se usa el SYN ya sea porque el usuario no tiene suficientes privilegios para enviar paquetes en crudo o porque se esté sondeando redes IPv6. Este tipo suele ser menos sigiloso.
  •  -sU (sondeos UDP): Este tipo de sondeo puede combinarse con sondeos TCP. Si se obtiene un error ICMP que indica que el puerto no es alcanzable (tipo 3, código 3) entonces se marca el puerto como cerrado. Si se recibe cualquier error ICMP no alcanzable (tipo 3, códigos 1, 2, 9, 10, o 13) se marca el puerto como filtrado. En algunas ocasiones se recibirá una respuesta al paquete UDP, lo que prueba que el puerto está abierto. Si no se ha recibido ninguna respuesta después de algunas retransmisiones entonces se clasifica el puerto como abierto|filtrado. Esto significa que el puerto podría estar abierto o que hay un filtro de paquetes bloqueando la comunicación. Puede utilizarse el sondeo de versión (-sV) para diferenciar de verdad los puertos abiertos de los filtrados.
  • -sN, -sF, -sX (sondeos TCP Null, FIN, y Xmas): Estos 3 sondeos aprovechan una indefinición en la RFC de TCP que diferencia los puertos abiertos y cerrados.
    La ventaja fundamental de este tipo de sondeos es que pueden atravesar algunos cortafuegos que no hagan inspección de estados o encaminadores que hagan filtrado de paquetes. Otra ventaja es que este tipo de sondeos son algo más sigilosos que, incluso, un sondeo SYN.
  • -sA (sondeo TCP ACK): Se utiliza para mapear reglas de cortafuegos, y para determinar si son cortafuegos con inspección de estados y qué puertos están filtrados.
  • -sW (sondeo de ventana TCP): Este tipo es exactamente igual al sondeo ACK que se aprovecha de un detalle de implementación de algunos sistemas que permite diferenciar puertos abiertos de los cerrados, en lugar de imprimir no filtrado cuando se devuelve un RS.
  • -sM (sondeo TCP Maimon): Esta técnica es exactamente la misma a los sondeos Null, FIN, y Xmas, pero en los que se envía una sonda FIN/ACK.
  • --scanflags (Sondeo TCP a medida): La opción --scanflags permite diseñar nuestro propio sondeo mediante la especificación de banderas TCP arbitrarias.
  • -sI <sistema zombi [:puerto_sonda]> (Sondeo ocioso): Este es un método de sondeo avanzado que permite hacer un sondeo de puertos TCP a ciegas de verdad (lo que significa que no se envía ningún paquete al sistema objetivo desde su dirección IP real). En lugar de ésto se utiliza un ataque con un canal alternativo que se aprovecha de la generación de la secuencia de los identificadores de fragmentación IP del sistema zombi para obtener información de los puertos abiertos en el objetivo. Los sistemas IDS mostrarán que el sondeo lo está realizando el sistema zombi (que debe estar vivo y cumplir algunos requisitos).
  • -sO (sondeo de protocolo IP): Este sondeo permite determinar qué protocolos (TCP, ICMP, IGMP, etc.) soportan los sistemas objetivo.
  • -b <sistema de rebote ftp> (sondeo de rebote FTP): Este sondeo permite utilizar conexiones FTP de pasarela.
Como hemos podido ver disponemos de muchas disponibilidades para que nuestro escaneo tenga éxito, sólo hay que distinguir cuando debemos utilizar el tipo de sondeo para obtener el resultado que esperamos.

Saludos.

Referencia: http://nmap.org/man/es/man-port-scanning-techniques.html


miércoles, 15 de enero de 2014

Nmap - Introducción


Seguimos ampliando nuestro arsenal. Hoy le toca el turno a Nmap.

Para los que no conozcáis Nmap, ésta, es una herramienta de código abierto para la exploración de red y auditoría de seguridad, tal y como se define desde su página oficial.

Originalmente su autor, Gordon Lyon-Fyodor (Fyodor Vaskovich), la diseñó para analizar rápidamente grandes redes, pero también se suele utilizar para equipos individuales.

Nmap muestra los equipos que hay en una red, qué servicios tienen corriendo, las versiones de Sistema Operativo que están ejecutando, qué tipo de filtros de paquetes o Firewall usan, etc.

Esta herramienta se utiliza por consola de comandos, pero dispone de un entorno gráfico llamado Zenmap.

Además de escanear direcciones IP podemos indicar el nombre del host a escanear y nmap se encargará de resolver su dirección.

¿Qué tipos de escaneos podemos realizar?

Básicamente son 3 tipos diferentes:
  •  Escaneo de redes: Nos muestra los dispositivos que hay conectados en la red.
  • Escaneo de puertos: Una vez tenemos identificados los dispositivos conectados a la red, nos permite descubrir que puertos tiene cada host, si están cerrados/abiertos/filtrados, que sistema operativo tienen, qué servicios tienen corriendo, versiones, etc.
  • Escaneo de vulnerabilidades: Nmap dispone de muchos script que ayudan a encontrar servicios vulnerables (Nmap NSE).

Cuando analizamos un host, Nmap nos mostrará el listado de puertos de esa máquina y el estado en el que se encuentran:
  • Open: El puerto está abierto y dispone de un servicio a la escucha.
  • Closed: El puerto está cerrado y no dispone de un servicio a la escucha.
  • Filtered: El puerto está siendo filtrado por un Firewall.


Como vemos nos brinda una información muy útil, pero ésto no es todo. Como ya dijimos anteriormente disponemos de scripts para saber si alguno de sus servicios es vulnerable.
Si nos fijamos, tenemos los puertos 445/139 abiertos, por lo que vamos a lanzar el script smb-enum-shares.nse para enumerar los recursos compartidos (SMB).



Vemos que está habilitado el acceso al recurso c$, ahora si supiesemos el usuario y contraseña del equipo víctima podríamos conectarnos a él.


Bien, ahora mismo seguramente estaréis diciendo:

"Vale ¿Y si no tenemos ni usuario ni contraseña?"

Pues como he dicho anteriormente, disponemos de muchos scripts, entre ellos disponemos de smb-enum-users.nse (enumeración de usuarios Samba), smb-enum-sessions.nse (enumeración de sesiones Samba, smb-brute.nse (fuerza bruta Samba), entre otros, con los que podremos conseguir esas claves de acceso, pero ya los veremos más adelante.

Esto ha sido todo por hoy sobre Nmap, en la próxima entrada sobre esta herramienta veremos las técnicas de sondeo de puertos que podemos utilizar y para qué sirve cada una de ellas.


Saludos!!!



lunes, 13 de enero de 2014

Port-Knocking


En esta entrada vamos a hablar de una técnica llamada Port-Knocking.

¿Qué es?

Port-Knocking es un mecanisco/técnica que se emplea para abrir puertos de un firewall externamente. Veámos como funciona.

Imaginémos por un momento que necesitamos obtener un control remoto a nuestro PC desde fuera de nuestra red para corregir algún problema, administrar aplicaciones o cualquier otra necesidad. Para ello lo que normalmente se haría es abrir el acceso desde un determinado puerto a nuestro equipo y protegerlo con un clave segura.
Sin embargo tenemos el problema de que cada día se descubren muchas vulnerabilidades que podrían dejar patas arriba nuestro sistema e incluso totalmente inservible.

Aquí es donde entraría en acción la técnica de Port-Knocking.

Port-Knocking se basa en realizar varios intentos de conexión consecutivos, previamente establecidos, a ciertos puertos para "avisar" al sistema que realmente somos nosotros.


Tal y como he puesto en el ejemplo del esquema, tenemos configurado el demonio knockd (demonio encargado del Port-Knocking) para que al recibir los intentos de conexión por los puertos 2137 y 9123 el firewall abra el puerto 22 dejando pasar sólo nuestra dirección IP.

También tenemos la posibilidad de aumentar los intentos de conexión ántes de que nuestro firewall nos abra el puerto de acceso, es decir, que tengamos que hacer 6 intentos de conexión a diferentes puertos antes de poder acceder.

Esto ha sido todo por hoy.

Saludos.


Referencias:
http://es.wikipedia.org/wiki/Golpeo_de_puertos
http://www.portknocking.org/

domingo, 12 de enero de 2014

Meterpreter - Comandos


Como lo prometido es deuda, hoy os traigo algunos comandos que debemos conocer a la hora de obtener una sesión meterpreter.


Background
Ejecuta la sesión actual en segundo plano para retornar a la línea de comandos de Meterpreter, para regresar a la sesión se ejecuta el comando tradicional (sessions –i 1)


Migrate
Permite migrarse a otro proceso en la maquina víctima.


 ls
Permite visualizar los archivos en el directorio remoto actual.


 
Download
Permite descargar un archivo de la maquina atacada, es necesario hacer uso del back-slash doble en la ruta del mismo.



Upload
Permite cargar un archivo en una ruta especifica, de la misma manera que el comando download es necesario hacer uso del doble slash al momento de indicar la ruta.



Execute
Permite ejecutar un archivo.


Getprivs
Permite obtener tantos privilegios de administración como sea posible.



Getuid
Permite consultar el tipo de usuario que la maquina victima esta ejecutando.


SysInfo
Permite obtener información del sistema remoto.


Idletime
Permite consultar el tiempo en el que el usuario de la maquina victima ha estado ausente.

 
Screenshot
Permite extraer una imagen del escritorio remoto.


Uictl
Permite controlar algunos de los componentes del sistema afectado.


Hashdump
Permite consultar el contenido del la base de datos SAM en sistemas Windows.


?
Permite consultar las opciones de las que dispone meterpreter.



 Espero que todos estos comandos les sean de gran ayuda.

Saludos.

**No me hago responsable del mal uso que se de a la información presentada. Esta información es de carácter didáctico.**