Comandos básicos de metasploit

En esta entrada recopilaremos los comandos básicos que se utilizan en la consola de Metasploit, para así tener una guía de referencia.

En primer lugar debemos siempre tener actualizado el framework para evitar funciones obsoletas y disponer de todos los módulos actualizados (msfupdate) (es necesario hacerlo desde root). Ahora lanzaremos la interface de consola (msfconsole) en la que disponemos de los siguientes comandos:

Metasploit lifka

  • help: Con este comando podremos desplegar la lista de comandos disponibles en la consola de Metasploit, también podemos especificar el comando seguido de -h, o poner help seguido del comando, para obtener información detallada acerca del comando específico.
  • search: seach, seguido de una característica, nos muestra los módulos que contienen dicha característica. Un pequeño truco para comprobar si está actualizado sería buscar una característica reciente para ver si disponemos de ella o no.
  • info: Muestra detalles del módulo (opciones, objetivos y descripción). Si estamos usando ese módulo (hemos usado -use sobre él), nos basta con poner el comando, de lo contrario debemos especificar la ruta del módulo.
  • show: Muestra en pantalla las opciones del módulo. Puede ir seguido de actions, advanced, all, auxiliary,… en función de las opciones específicas que queramos ver.
  • use: Selecciona el módulo que especifiquemos. El comando back sirve para quitar la selección.
  • set: configurar parámetros de un módulo en concreto. Unset sería para borrar la configuración.
  • setg: configurar parámetros de los módulos a nivel global, para todos los módulos. Unsetg para borrar esta configuración.
  • connect: Sirve para conectarnos a otras máquinas especificando la ip + el puerto, de este modo podríamos disponer de módulos y configuraciones en otra máquina y acceder desde máquias remotas. Esta utilidad se vale del famoso netcat, así que disponemos de opciones parecidas a las de netcat.
  • irb: Sirve para ejecutar un intérprete de Ruby, de este modo podemos utilizar script de Ruby sobre msf para automatizar o facilitarnos el trabajo si tenemos manejo en Ruby.
  • load: Cargar un plugin. Unload para la operación inversa.
  • loadpath: Sirve para cargar un directorio independiente, para así tenerlo disponible también desde la consola.
  • check: Comprobar si es vulnerable o no antes de lanzar el script.
  • exploit: Lanzar el módulo. Disponemos de las siguientes opciones:
    • -j: Lo lanza en segundo plano (backround).
    • -z: Para qyue tras una explotación exitosa no se interactúe con la sesión.
    • -e: Se lanza el payload con una codificación realizada previamente con un payload.
  • sessions: Con estecomando podemos ver las conexiones remotas que llevamos obtenidas. Las sesiones se obtienen mediante el éxito delcomandoexploit, el cual nos devuelve unashell o unmeterpreter del sistema remoto explotado. Cada sesión dispone de un identificador único y se debe especificar ese indicador parainteractuar con una máquina específica. Con estecomando disponemos de las siguientes opciones:
    • -l: Lista de sesiones.
    • -v: Muestra información extra. Complementa a -l.
    • -s: Ejecuta un scvript sobre todas las sesiones abiertas (-s <script>).
    • -k: Finaliza todas las sesiones.
    • -c: Ejecuta un comando sobre todas las sesiones.
    • -v: Permite actualizar la shell a una shell del tipo Win32.
    • -i: Se le indica a sessions en que sesión queremos interactuar.
  • resource: Permite cargar un fichero (normalmente .rc), para automatizar un proceso.
  • makerc: Almacena en un fichero (.rc) el historial de comandos y acciones utilizadas (se guarda en home/.msf3/).
  • save: Guarda lo que llevamos hecho para así poder retomar el proceso (lo guarda en home/.msf3/config). Al lanzar msfconsole este comprueba si existe el archivo config, y si es así lo carga.
  • jobs: Muetsra los módulos que se encuentran en ejecución en segundo plano (background) (Sirve para obtener la información de los módulos, finalizarlos,…).
  • run: Permite ejecutar un módulo auxiliary cargado en la consola.
  • route: Permite enrutar sockets a sesiones (com route en Linux). Permmite la adición de subredes, puertas de enlace (gateways), y máscaras de red. Útil para el pivoting (Comprometer máquinas que se encuentren en la red de la máquina vulnerada).

Comandos de base de datos:

Metasploit utiliza una base de datos, de este modo es posible recopilar información desde escáneres externos y otras herramientas de análisis.

  • db_: Mostrar comandos de base de datos.
  • db_driver: Muestra las bases de daos disponibles y la que estamos usando por defecto. También permite cambiar la base de datos que estamos usando.
  • db_connect: Crea y conecta con la base de datos: Previamente se debe configurar el usuario de la db. Este comando prepara todas las tablas en la base de datos que se utilizaron para recolectar y analizar información.
  • db_nmap: Ejecuta la herramienta nmap y almacena todos los resultados de escaneo en las tablas preparadas.
  • db_autopwn: Esto es la «Metralleta deMetasploit». Ayuda a lanzar una colección deexploit frente a una(s) máquina(s) de la(s) que hemos obtenido información. El problema es que estecomando no está disponible en la versiónComunnity (versión gratuita). Estecomando dispone de las siguientes opciones:
    • -t: Muestra los exploit que se están probando.
    • -x: Selecciona los módulos basados en vulnerabilidades referidas.
    • -p: Selecciona los módulos basados en puertios abiertos.
    • -e: Lanza exploits contra todos los objetivos.
    • -r: Tras la explotación utiliza una shell inversa.
    • -b: Utiliza una shell atada a un puerto aleatorio.
    • -R: Se le pasa un rank, para sólon seleccionar módulos con cierto niverl
  • db_hosts: Muestra las máquinas alojadas en la base de datos (SO, MAC, sv,…).
  • db_destroy: Elimina la base de datos.

 

Descargar en pdf:

https://mega.co.nz/#!Jph1HaaC!WxOtNBuJUceHzFGBEXzTrG2TazNqTwuyhIOka20mets


 

Saludos 😉

Solucionar problemas de dependencias en linux

Suele pasar que al realizar alguna instalación en linux utilizando «apt-get install», aparezca este tipo de error:

lifka problemas dependencias

Esto se debe a que los paquetes en linux suelen depender de otros paquetes, de modo que si realizamos la instalación de forma incorrecta, o ya contamos con errores en instalaciones anteriores, es probable que el sistema no pueda resolver las dependencias y nos ocurra lo anterior.

Para solucionarlo debemos ejecutar las siguientes órdenes:

apt-get autoremove & apt-get autoclean, con esto lo que hacemos es limpiar la memoria de paquetes e instalación, además limpiamos el sistema de paquetes huérfanos (paquetes que alguna vez fueron necesarios pero ya no los usa ningún programa).

apt-get update, con este actualizamos apt-get, en función de las listas.

lifka solucionando dependencias

Y por último, apt-get -f install, para resolver las dependencias rotas que haya en el sistema.

Lifka solucionando dependencias 2

De este modo ya no nos darán problemas las dependencias, y podremos instalar paquetes sin problemas.

lifka dependencias solucionadas

lifka dependencias solucionadas 2

Saludos 😉

Averiguando la contraseña de un zip – fcrackzip

La entrada de hoy es todo un clásico, pero la hago ya que un profesor de mi facultad usa un método para entregar los trabajos algo pecualiar, consiste en compartir un zip con el trabajo a través de una plataforma con la condición de que lleve de password el DNI del autor, para que nadie pueda acceder a sus datos ni a su trabajo… ¿el DNI? Sí, y sin incluir letra. Vamos a comprobar cuantos segundos se puede tardar en crackear y obtener el trabajo de cualquier compañero.

Podríamos usar cantidad de programas, y distitos sistemas operativos, pero en este caso yo usaré kali (para variar…) y concretamente un programa de los que ya nos trae kali de casa, fcrackzip. Pondría la web del autor (Marc Lehmann) pero lleva ya un tiempo offline, así que dejaré por aquí en link para windows y para linux.

Si consultamos la ayuda del programa esto es lo que nos encontramos:

Imagen

Ahí tenemos la lista de comandos y opciones que podemos utilizar para crackear nuestro zip. Vamos a expicarlas un poco:

  • -b: brute force, para utilizar brute force para crackear la contraseña, es decir, probar con contraseñas hasta acertar la correcta.
  • -D: usar un diccionario, es decir, en vez de dejar que el programa genere cadenas y las pruebe (a partir de los parámetros que le hemos dados), seremos nosotros los que indiquemos la lista de palabras a probar desde un archivo de texto.
  • -B: Hacer un pequeño punto de diferencia, según he leído la diferencia es muy pequeña, así que tampoco le veo mucha utilidad a este comando.
  • -c: Establecer los carácteres a utilizar, a continuación ponemos «a» para incluir los caracteres [a-z], «1» para [0-9], «A» para [A-Z], «!» para [!:$%&/()=?[]+*~#], también podemos añadir otros caracteres usando «:» (no se puede añadir el caracter null).
  • -h: Para cosultar esta ayuda.
  • –version: Ver la versión.
  • -V: Hace algunas comprobaciones para ver si funciona.
  • -v: Utiliza más palabras.
  • -p: Una cadena o un archivo a partir de la/del cual se empezaran a generar las contraseñas.
  • -l: Para establecer la longirud mínima y la máxima.
  • -u: Utiliza unzip para descartar las contraseñas erróneas, muy útil porque así nos da la correcta, y no un montón de contraseñas probables (como ocurre en muchos casos).
  • -m: Método numérico, contraseñas numéricas.
  • -2: Esto módulo todavía no ha sido admitido.

Para el caso que nos ocupa, debemos tener en cuenta que un DNI tiene 8 cifras numéricas, además de que es bastante probable que el número sea mayor de 50000000 (ya que no es antgüo). De modo que utilizaremos el siguiente comando:

-b -> Brute force, para que vaya generando combinaciones él mismo.

-c 1 -> Para que sólo use carácteres numéricos.

-u -> Para que no nos ocurra esto:

lifka problema fcrackzip

-p 50000000 -> Para que comience a partir de 50000000.

fcrackzip -b -c 1 -u -p 50000000 nombre.zip

Y este es el resultado:

lifka fcrackzip

Así de sencillo es obtener la contraseña de estos archivos, por lo que siempre hay que poner contraseñas complejas para dificultar estos procedimientos, mezclando carácteres de varios tipos y usando combinaciones que no sigan patrone,s y no sean previsibles. Saludos 😉

 

DNS Brutting – Obteniendo subdominios por fuerza bruta

En una fase de gathering en una auditoría necesitamos obtener la mayor cantidad de información posible de un sistema para hacernos una idea de su estructura, también en caso de necesitar localizar un determinado posible servicio que ofrezca un dominio,… Por ello puede sernos útil conocer la lista de subdominios que contiene un dominio. En esta entrada explicaré algunos métodos para obtenerlos mediante fuerza bruta (DNS Brutting), concretamente iremos probando con una serie de palabras (diccionario) y comprobando la respuesta del servidor de manera automatizada.

Para esto vamos a utilizar herramientas incluidas en la distribución de Kali Linux, aunque también podríamos utilizarlas en cualquier otro entorno de Linux siempre y cuando hayan sido instaladas.

Comenzaremos utilizando dnsenum (https://code.google.com/p/dnsenum/) para el cual necesitaremos tener un diccionario. Podemos obtener uno completo buscando en la red, o creando nosotros uno propio, en este caso utilizaremos el que los desarrolladores de dnsenum ofrecen (https://code.google.com/p/dnsenum/downloads/detail?name=dnsbig.txt&can=2&q=).

Para que que dnsnum nos busque los subdominios mediante la fuerza bruta la sintaxis sería la siguiente:

dnsenum dominio -f diccionario

Veamos un ejemplo:

dnsenumdnsenum diccionario

Como se puede apreciar en la primera imagen, también aparecen los datos del DNS, esto es otra utilidad de dnsenum a la que podemos acceder directamente al usar el comando sin poner el diccionario.

Y más abajo (segunda imagen) podemos ver como la lista de subdominios que dnsenum a encontrado, en el caso de la imagen ha encontrado el subdominio «blogs».

El proceso puede ser más o menos eficaz y más o menos lento en función del diccionario, por ello es importante disponer de uno bien elaborado y en función de las labores que queramos hacer.

Otra herramienta para realizar este mismo trabajo es dnsdict6. Dnsdict6 se utiliza principalmente para enumerar las entradas DNS IPv6 de un dominio o subdominio. Esto es útil para la búsqueda de subdominios que pueden ser invisibles para el público, pero todavía existe en los registros de DNS. A menudo, son olvidados por el admin y pueden ser un camino para explotar con ataques basados ​​en el dominio. El dnsdict6 utiliza una lista de diccionario que se utiliza para adivinar posibles entradas de DNS.

Las opciones que nos da son:

  • 4 se utiliza para deshacerse de direcciones IPv4.
  • t se utiliza para especificar que numero de hilos de.
  • D se usa para mostrar información en servidores de nombres y registros MX
  • d mostrar información ip6 sobre NS, MX e información de dominios DNS
  • S desempeñar nombre SRV servicio de adivinanzas
  • [smlx] hay cuatro tipos de diccionario incorporados en esta herramienta -s(mall=50), -m(edium=796) (DEFAULT) -l(arge=1416), or -x(treme=3211)

Y la sintaxis sería:

dnsdict6 [-s| -m| -l| -x] [-t THREADS] [ -d] dominio diccionario

De modo que, si no especificamos el diccionario, dnsdict6 usa el suyo propio.

Veamos un ejemplo:

dnsdict6

Como vemos en la imagen, dnsdict6 ha encontrado 5 subdominios para este dominio (mail, calendar, lists, smptp1 y docs).

Y por último, podríamos realizar lo mismo con dnsmap (https://code.google.com/p/dnsmap/). El cual también incluye un diccionario en el caso de no especificar ninguno. Para hacer esto con dnsmap, la sintaxis sería:

dnsmap dominio opciones

Opciones:

  • {word-list.txt}Word-list que tiene el usuario a usar
  • r {Direccion a guardar} Genera una salida con los resultados
  • c {Direccion a guardar} Genera una salida de formato csv
  • d {Tiempo en milisegundos} Tiempo de retraso o respuesta
  • i {IP a ignorar, para meter varias separadas por una coma} IP con faltos positivos, las pasa por alto

Por ejemplo:

dnsmap

En este caso encontraríamos muchos subdominios.

Bien, y esto un resumen sobre estas 3 herramientas que nos podrían servir para hacer DNS Brutting, pero no significa que sean las únicas. Próximamente haré otro tutorial sobre como obtener subdominios usando otro método. Saludos!

SQL Injection – Puede estar en cualquier parte

Este vídeo es aún más antiguo, pero me gusta conservarlo, es de la época en la que yo, al igual que mucha gente, también era un esclavo de este videojuego. Estuve bastante tiempo jugando en un servidor privado, en el cual me di cuenta de la seguridad que disponía mi cuenta:

Pero que nadie confunda, simplemente grabo los vídeos como demostración de los problemas que puede acarrear una mala configuración, o un código con un formulario sin los filtros necesarios como es el caso. Después de esto hablé con el administrador y todo se solucionó.