domingo, 29 de agosto de 2021

Nikto, un escáner de vulnerabilidades web simple pero eficaz.

Hola de nuevo! Hoy veremos Nikto un escáner de vulnerabilidades web muy sencillo pero muy potente; se puede instalar como no, en cualquier distribución GNU/Linux y también usarlo como contenedor Docker.


Yo usaré la versión que viene con Kali Linux pero vosotros podéis descargarlo directamente desde el Git → https://github.com/sullo/nikto

 


 

Para probar el scan de Nikto usaré la máquina Virtualbox con Virtualmin que vimos en esta entrada. Recordamos que en esa entrada implementamos una web con dominio blog.redes.local usando con una versión antigua de Wordpress, ya pensando en usarla con Nikto precisamente, así que vamos al lío.

 

 


 

 

Nikto es simple a mas no poder, para empezar podemos ejecutar en la terminal:


# nikto -H (-Help)

 
Con lo que tendremos acceso al menú de ayuda y podemos comprobar las opciones que tenemos. Me quedo con las opciones -id y -p que las usaremos luego pero vamos a hacer un escaneo sencillo de nuestra web desactualizada.

Para empezar ejecutamos en la terminal:



# nikto -h blog.redes.local


Tras unos breves minutos vamos obteniendo resultados, es muy interesante que nos confirma que el CMS instalado es Wordpress; aparte claro de la alerta XSS.

 


 

Cuando hicimos la instalación de Virtualmin, ya os comenté que cuando creamos un servidor web se crea un usuario automático, y que el nombre del usuario se obtiene del dominio del servidor. En este caso el usuario predefinido sería blog
 

Pues bien Nikto nos da la opción de pasarle un usuario y una contraseña al servidor (opción -id, el formato sería -id usuario:contraseña) y además de probar por otro puerto que no sea el 80 (opción -p puerto); así que me tiro a la piscina y voy a pasarle el usuario blog con la contraseña password por el puerto de administración por defecto de Virtualmin, el puerto 10000. A ver que pasa.

 


(os sorprendería la de veces que se quedan así las configuraciones, con algún usuario/acceso predeterminado que se olvida cambiar/eliminar)


 


 

Bueno bromas aparte, ejecutamos en la terminal:


# nikto -id blog:password -h blog.redes.local -p 10000




Bingo! Ahora la información fluye a raudales, obtenemos líneas y líneas de vulnerabilidades e información...







Por fin terminó..


Hemos obtenido 2040 reportes de vulnerabilidades, recordemos que es una versión antigua de Wordpress así que estaba claro que íbamos a obtener muchas alertas. Aún así el ejemplo ha servido para demostrar la versatilidad de Nikto, con un comandito muy simple hemos "destripado" esta web. 

 

Nikto es una herramienta simple, ligera y potente y aunque la terminal de Linux se os atragante, deberíais darle una oportunidad.  

 

 

jueves, 26 de agosto de 2021

Ataque Arp-Spoofing con Bettercap en Kali Linux

Hola de nuevo, hoy vamos a practicar un ataque arp-spoofing con Bettercap. Hace ya unos años tuve la oportunidad de probar Ettercap y tengo que decir que Bettercap me la recuerda mucho; aunque es una aplicación mucho mas completa y eficiente, tanto en el aspecto gráfico como el técnico. Contiene módulos para WiFi y Bluetooth y de verdad es muy fácil de usar y es un auténtico peligro en una red. Bettercap viene con licencia GPL3 y para el blog voy a usar la versión que viene en los repositorios de Kali Linux; aunque para un uso mas adecuado de la herramienta, sería recomendable usar la última versión que la encontramos en Github https://github.com/Bettercap/Bettercap

 


 

Qué es arp-spoofing?



La clave de este ataque es aprovechar la configuración por defecto de la caché ARP. Cuando se quiere entregar un paquete IP a alguien dentro de una LAN, no se hace a través de su dirección IP sino de su dirección MAC a nivel de trama (en la capa de enlace). Esto supone que se debe traducir esa dirección IP en una dirección MAC y eso es posible entre otras cosas por la existencia del protocolo ARP que construye entradas dinámicas donde se hace corresponder una IP con su MAC asociada dentro de la tabla caché ARP.

Esta caché tiene entradas estáticas y dinámicas. Éstas últimas se van añadiendo en función de los paquetes ARP que viajan por la LAN. Esta circunstancia es la que el Atacante va a aprovechar para engañar tanto a la víctima como al Gateway para hacerle creer que él es el extremo adecuado de la comunicación y que le envíe a su MAC lo que va destinado a sendas direcciones IP. De esta forma se puede obtener información sobre las comunicación de la máquina víctima, robar cookies, capturar hashes, capturar contraseñas, depende del tráfico y la configuración de la máquina víctima.

Os recuerdo que tanto Openvas, (que vimos en la entrada anterior) como Bettercap, son herramientas de uso profesional y está totalmente desaconsejado usarlo en una red ajena sin permiso porque este uso puede conllevar consecuencias graves. Especialmente Bettercap, pues el arp-spoofing es un delito tipificado en la Ley 1273 de 2009.



Bettercap nos ofrece las siguientes funciones (mas algunas otras extra).



  • Escáner de redes WiFi, permite hacer ataques de desautenticación, también permite realizar ataques sin clientes a asociaciones PMKID, permite capturar handshakes de clientes que usan protocolo WPA y WPA2.
  • Escáner de dispositivos BLE (Bluetooth Low Energía) para leer y escribir información.
  • Escáner de dispositivos inalámbricos que usen la banda de 2.4GHz, como los ratones inalámbricos, también permite realizar ataques MouseJacking con inyección de datos.
  • Permite hacer ataques pasivos y activos a redes IP
  • Permite realizar ataques MitM basados en ARP, DNS y también DHCPv6, con el objetivo de capturar toda la información.
  • Permite crear un proxy HTTP/HTTPS para levantar el tráfico seguro HTTPS, y facilita enormemente el uso de scripts.
  • Sniffer de red muy potente para recolección de credenciales de usuario.
  • Escáner de puertos muy rápido, aunque para esto, mejor usar Nmap que el rey de los escáneres de puertos.
  • Tiene una potente API REST para realizar ataques fácilmente.
  • Incorpora una interfaz gráfica de usuario para facilitar los ataques, aunque el terminal de comandos es muy potente.
  • Tenemos una gran cantidad de módulos de diferentes categorías para ampliar funcionalidades.


Para probarlo voy a usar la red que implementé en esta entrada anterior os ruego que la consultéis para dudas sobre la configuración de red.

Para instalar Bettercap simplemente abrimos una terminal y:


# Sudo update && upgrade

# Sudo apt install Bettercap Bettercap-caplets

# sudo Bettercap





Podemos usarlo desde la terminal interactiva muy fácilmente, simplemente con help en la terminal podemos ver lo que tenemos disponible, los módulos que están activos y los comandos que tenemos disponibles. 

 

 



Para ir arrancando los módulos podemos usar la secuencia SET modulo on/off como por ejemplo:

set net.probe.nbns on

(para habilitar sondas de descubrimiento del sistema de nombres netbios).




Para empezar el reconocimiento de la red tenemos los modulos net.probe y net.recon (así a grosso-modo net probe envía paquetes para que net.recon registre las respuestas).

Para añadir direcciones ip a la lista de objetivos y para empezar el arp-spoofing:

set arp.spoof.targets dir-ip victimas-separadas por-espacios 

y para empezar el ataque:


arp.spoof.on 



Pero sabéis que? Olvidad todo esto último, podemos usar Bettercap aun más fácilmente con una interfaz gráfica, para ponerla en marcha escribimos en la terminal: 

 

# sudo Bettercap -caplet http-ui 



y nos conectamos abriendo el navegador y conectándonos al localhost (127.0.0.1 en la barra de herramientas) 

 

Nos logueamos en el interfaz web con user y pass. 

 


Primero podemos hacer un escaneo de la red para que Bettercap detecte los equipos conectados para ello en el menú LAN; para empezarlo simplemente hacemos clic en los símbolos de play que hay justo debajo de la barra de herramientas. Uno es para ejecutar start net.probe y el otro para start net.recon module; se detienen después de un buen rato o mejor podemos hacer clic en el play (ahora un stop) si no queremos alargar demasiado el ataque y ser mas discretos. 

 


 

Una red real no sería necesario pero para nuestra red simulada, hay que generar un poco de tráfico para que la cosa funcione. Así que voy a visitar las web de Virtualmin, logearme en cuentas usar el ftp etc etc...

 


 

Irán saliendo los datos de los equipos en la red, dirección ip y dirección MAC y justo encima de las ip podemos hacer clic y seleccionarla para ser spoofeada

 



 

El símbolo radiactivo señala los objetivos para Bettercap.

 

Dejamos el sistema funcionar un rato y mientras tanto, si nos pasamos por la terminal veremos como se va obteniendo información. 



 

Otra opción es abrir Wireshark e ir guardando los paquetes para inspeccionarlos mas adelante. 

 

 

 


 

He intentado logearme en alguna cuenta de Virtualmin y el arp.spoofin ha dejado inactivo el login; Pero como podéis ver, Bettercap SI ha obtenido la contraseña de mi cuenta de correo electrónico en Virtualmin. 



En la versión gráfica también tenemos disponible una linea de comandos desde donde ejecutar comandos como en el modo interactivo.

 


 

Otro modo de uso para Bettercap es ir a la pestaña "caplets" y desde allí podemos ver los diferentes caplets (o plugins) que tenemos disponibles, con una breve explicación de su funcionamiento; y arrancarlos directamente desde aquí antes de empezar el ataque. Sin embargo algunos caplets se pueden activar durante el mismo. 

 

 

 


 

Como habéis podido ver Bettercap es sencillísimo de usar tanto en la terminal interactiva como en el interfaz gráfico; y es demoledor en redes mal configuradas y equipos o servicios no actualizados.

 

¿Como nos defendemos de un arp-spoofing?

Una forma de mitigar, que no anular, este ataque es con el uso de tablas ARP estáticas  en las máquinas de red local, pero habría que configurar estas tablas en los equipos nuevos que se conecten en la red, temporal o permanentemente; lo que en algunas ocasiones, podría ser poco práctico.

Por otra parte este ataque genera tráfico de paquetes ARP inusual que puede ser detectado por sistemas de monitorización de red o IDS; como EasyIDS que veremos en este blog próximamente. Hay también software que se puede instalar en los equipos que detectan estos ataques como Marmita para Windows, que también veremos por este blog próximamente.

 

Como veis no hay ninguna fórmula mágica o solución fácil para este ataque lo que lo hace muy peligros aun cuando es ya un viejo conocido.


Me despido hasta el próximo post que vamos a probar otra herramienta de pen-testing que seguro os sorprenderá.






lunes, 23 de agosto de 2021

Análisis de vulnerabilidades con OpenVas + Greenbone en Kali Linux.

Openvas es un escáner de vulnerabilidades para sistemas operativos y servidores con licencia GPL de Software Libre. Viene acompañado con el interfaz gráfico Greenbone nos ofrece una potente estación de monitoreo de todos los equipos de la red, con una gran capacidad gráfica para consultar y contrastar los resultados. Además tenemos la opción de obtener informes detallados sobre los análisis en varios formatos con un resultado muy profesional. Como en el post anterior yo voy a usar la versión de los repositorios de Kali pero para una mejor experiencia con la herramienta podéis descargar de Github la última versión. Y si querés instalarlo en cualquier máquina GNU/Linux basada en Debian, este tutorial os servirá igualmente.



Para el ejercicio he montado una red muy simple en VirtualBox con cuatro máquinas


  • Router pFSense: para que las máquinas naveguen; con dos interfaces 1 NAT + 1 red interna “PFSENSE” - 200.10.10.0/24
  • Windows server 2016 con una carpeta compartida y una web HTTP en IIS 200.10.10.199
  • Una máquina Debian con Virtualmin instalado (la que vimos en esta entrada) 200.10.10.99
  • Un Kali Linux donde he instalado Openvas + Greenbone - 200.10.10.200



Instalación.




Esta es sin duda la parte negativa de OpenVas / Greenbone pues la instalación es un auténtico dolor. OpenVas tiene varias bases de datos de vulnerabilidades, muy extensas y que tenemos que sincronizar con los repositorios de OpenVas antes de empezar. Estas bases de datos y su manejo dependen de varias librerías que debemos asegurarnos que se cumplen los requisitos o si no nada funcionará.

Antes de nada tenéis que comprobar que tenéis estas dependencias cumplidas. Los paquetes que os falten los instaláis con:

 

# apt install nombre-del-paquete



* GCC (paquete Debian: gcc)

* cmake >= 3.0 (paquete Debian: cmake)

* glib-2.0 >= 2.42 (paquete Debian: libglib2.0-dev)

* gnutls >= 3.2.15 (paquete Debian: libgnutls28-dev)

* libgvm_base, libgvm_util, libgvm_osp, libgvm_gmp >= 20.08.0 ([gvm-libs](https://github.com/greenbone/gvm-libs/tree/gvm-libs-20.08)

* PostgreSQL database >= 9.6 (paquete Debian: libpq-dev postgresql-server-dev-11)

* pkg-config (paquete Debian: pkg-config)

* libical >= 1.0.0 (paquete Debian: libical-dev)

* xsltproc (paquete Debian: xsltproc)




Con todo resuelto ejecutáis en la terminal:

# Sudo su


y después:


# apt update && upgrade


Aun con las dependencias resueltas, es frecuente tener varios errores durante la instalación. De momento haremos como que todo está bien para seguir con el post pero al final, os dejaré la solución para algunos de los bugs o errores mas frecuentes durante la instalación. Si vuestro error no aparece ahí, os recomiendo que hagáis una visita a la comunidad de Greenbone.


Para instalar simplemente en la terminal:


# Apt install openvas gvm redis-server


A continuación para preparar el sistema:


# gvm-setup



Aquí aparece la contraseña de acceso, muy importante tomar nota de esta (porque no es password); y se actualizan las bases de datos; la actualización dura unos largos minutos (puede durar hasta una hora) así que paciencia, sobre todo no interrumpáis el proceso porque os tocará esperar el doble. 


 

La contraseña de administrador nos aparece al principio...
 

 

 

...y al final del Setup.

Antes de arrancar OpenVas hacemos una comprobación en la terminal para ver que está todo correcto, con el comando:



# sudo gvm-check-setup



Este es el momento peliagudo pues es aquí donde brotan los errores
, el script hace una comprobación de todos los componentes y nos va comunicando los posibles errores. Pero ya sabéis si os sale alguno pasad al final del artículo a ver si el vuestro es alguno de los que relato allí (crucen los dedos). 

 

"Parece que tu instalación GVM es correcta"

 

Y buen sin mas para empezar solo tenemos que teclear en la terminal:



# sudo gvm-start




Tras unos segundos en los que parece que la cosa no marcha, nos aparece un prompt que termina en una cuenta atrás tras la cual ya podemos iniciar OpenVas con nuestro navegador en https://127.0.0.1:9392


Accedemos al “Dashboard”, así de primeras se ve un poco soso pero tranquilos que pronto le daremos algo de color. Vamos a empezar escaneando la máquina con Virtualmin.

 

 

 

En el menú “Tasks” podemos crear una tarea de escaneo nueva o para un escaneo rápido podéis usar el Asistente (“Wizard”). Como hemos venido a jugar vamos a crear una tarea nueva, pero antes debemos hacer algunas configuraciones. 


Añadimos un nuevo host, tenemos que hacer uno para cada máquina en la red. 


 

 

Luego creamos un nuevo "schedule" (agenda o programa) para establecer la hora a la que queremos el análisis. Esta operación es un poco tediosa pero hay que tener en cuenta que OpenVas nos permite analizar varias maquinas en la red y programar su análisis. Mejor lo programamos en 4 o cinco minutos para que nos de tiempo a terminar antes de la hora. Si iniciamos la tarea y se ha pasado la hora, nos tocaría esperar 24 o crear una tarea nueva porque las "schedules" no se pueden modificar, siempre hay que crear nuevas. Con el botón "now" podemos sicronizar la hora del schedule con la hora actual, luego le añadimos unos minutos y listo.



 

A continuación añadimos un nuevo target en el menú "Configuration".

 


 

 




Dentro de los parámetros que podemos configurar es el rango de puertos tenemos disponibles algunos rangos de puertos predeterminados y también podemos configurar un rango de puertos personalizados en el menú.

Para el ejercicio voy a utilizar el rango "All IANA assigned TCP" pero si queréis haceros uno propio os digo como se hace, rápido y fácil.

Un rango de puertos personalizado

Vamos al menu Configuration y alli en "Port lists" editamos un rango nuevo.
Para editar un rango de puertos hay que especificarlos asi:


T(TCP):(rango de puertos)(puertos individuales),U(UDP):(rango de puertos)(puertos individuales)


Por ejemplo si quiero que escaneo sea en los puertos del 20 al 23 y por el puerto 80 TCP, y los mismos mas el 53 por UDP sería:


T:20-23,80,U:20-23,80,53



y después guardamos el rango con el nombre que mas nos interese. Recordad, siempre el rango de puertos lo primero (en caso de que vayáis a establecer alguno).

-----------------------------------------------------------------------------------------------------------------------------------

Y bueno, con el tema de los puertos resuelto, solo nos falta crear una nueva tarea, para eso vamos al menú "Scans" >> "Tasks" y allí en "New Task"








Ahora en el “Dashboard” podemos ver nuestra tarea creada y lista para empezar. El inicio podría ser automático ya que hemos ajustado un temporizador pero bueno… Le damos al “play”, el icono triangular que hay a la derecha en la línea donde aparece nuestra tarea recién creada.
 
 
 
 

Después de unos minutos la tarea termina y podemos consultar los resultados. 
 
 
 

 
 
 
Podemos consultarlos al detalle y ver información adicional sobre posibles vulnerabilidades. OpenVas tiene su propia base de datos de CVE pero además tenemos enlaces adicionales para ampliar la información e incluso en algunos casos nos ofrece posibles soluciones.
 
 
 

 
 
 
La base de datos de CVEs es muy completa.

 
 

Ahora podemos probar un escaneo a la máquina con Windows Server. 
 


 

 
Como veis salen el doble de vulnerabilidades, es normal pues es un Windows Server 2016 que tenía por ahí con pocas actualizaciones contra la última versión de Virtualmin. 
 
 

 
 
 
Conforme vamos escaneando todas las máquinas de nuestra red el panel gráfico de OpenVas va tomando color. Tenemos disponible toda la información sobre los resultados muy bien organizada y lista para presentar resultados con la opción de exportar los informes en PDF y otros formatos.
 
 

 
 
 

 
 
 
 
El reporte en PDF se ve realmente bien.

 
 
 

Como veis es un programa muy completo y que nos ofrece un resultado muy profesional. El interfaz es un poco tosco y como vimos, la instalación es muy laboriosa,  por eso lo mejor es tener una instalación de OpenVas preparada, en una imagen de disco o en una imagen de disco para máquina virtual; así a la hora que tengamos que hacer esta tarea, ya tenemos Openvas preparado y listo para trabajar.
 
 
OpenVas es una herramienta de uso profesional para analistas de vulnerabilidades y admins de redes, y está totalmente desaconsejado usarlo en una red ajena sin permiso, porque este uso puede traer consecuencias judiciales!!
 


------------------ Errores durante la instalación --------------------------------------------------------


  • Si durante la instalación nos aparecen errores, seguro que es porque tus librerías no resuelven las dependencias necesarias. En este caso vuelve al principio del post y contrasta el listado de versiones de paquetes con los que tienes instalados.

  • Si durante el Gvm-check-setup nos aparece el error “ERROR: SCAP DATA ARE MISSING” debéis ejecutar en la terminal:


# sudo runuser -u _gvm --greenbone-feed-sync --type SCAP


Probablemente durante el gvm-setup la conexión a internet con los servidores falló y estas bases de datos no se actualizaron. Otro posibilidad es que la librería libglib2.0-dev no esté instalada correctamente o no está en la versión adecuada.

  • Si durante el Gvm-check-setup nos aparece el error “ERROR: GVMD DATA ARE MISSING” debéis ejecutar en la terminal:

# sudo runuser -u _gvm --greenbone-feed-sync --type GVMD_DATA




  • Si durante el Gvm-check-setup nos aparece el error “ERROR CERT DATA ARE MISSING” debéis ejecutar en la terminal:

# sudo runuser -u _gvm --greenbone-feed-sync --type CERT

 
 
Y ahora el error mas bizarro que he visto en mucho tiempo: Si os aparece el error “GVM version too old or too new”, después del WTF de rigor (o PQC en español) tenemos que abrir en un editor de text el archivo gvm-setup y en la línea 39 cambiar MAJOR VERSION = 21.04 a MAJOR VERSION = 21.5. Guardamos el archivo y volvemos a ejecutar gvm-setup en un terminal.
 



Y como os dije antes, si os aparece un error que no está en esta lista, os recomiendo que visitéis la comunidad de Greenbone para una solución.