La llamada de la muerte - CyberCamp | CyberCamp 2019 · 2020. 4. 24. · Un hacker sabe de...

41
#CyberCamp19 LA LLAMADA DE LA MUERTE

Transcript of La llamada de la muerte - CyberCamp | CyberCamp 2019 · 2020. 4. 24. · Un hacker sabe de...

  • #CyberCamp19

    LA LLAMADA DE LA MUERTE

  • Índice 1.¿De qué va esto? 2. La VoIP 3. Dispositivos IoT (Rpi y Arduino) 4. Montando una centralita telefónica en Rpi (Asterisk) 5. Jugando con la Centralita telefónica (Comandos y Script) 6. ¡La llamada de la muerte! (PoC) 7. Consejos y contramedidas

  • #CyberCamp19

    1. ¿De qué va esto?

    Jesús Pacheco @as_informatico

  • ¿De qué va esto? Esto es un taller de iniciación, por lo que vamos a tocar varios temas superficialmente para que los recién llegados al mundillo vean que el hacking no solo se trata de pentesting, colarse en servidores o hacer CTF’s que es lo primero que se ve sobre el tema.

    A cualquier sistema creado se le puede dar una función más allá para la que fue diseñado, siendo ese en esencia el espíritu del Hacker, llevar la tecnología más allá y saltar las barreras establecidas para ampliar el conocimiento y mejorar el futuro.

    Un hacker es una mente inquieta que exprime las tecnologías y medios que tiene a su alrededor sean los que sean para crear nuevos caminos que den pie a otras nuevas tecnologías superiores a las actuales o simplemente para solucionar problemas como nadie antes lo habría hecho.

    Un hacker sabe de programación, diseño, redes, sistemas, electrónica, física, química, psicología,…

    ¡SER HACKER ES LO MÁS! Y lo mejor es que puede ser cualquiera...

  • Un poco de teoría...

  • #CyberCamp19

    2. La VoIP

    Jesús Pacheco @as_informatico

  • La VoIP ¿Qué es la VoIP?

    VoIP es un acrónimo de Voz sobre Protocolo de Internet (Voice Over Internet Protocol), el cual por sí mismo significa voz a través de Internet. Es una tecnología que proporciona la comunicación de voz y sesiones multimedia (vídeo) sobre Protocolo de Internet (IP).

    Para realizar llamadas a través de VoIP el usuario necesita un teléfono IP, ya sea por Software o por Hardware.

  • La VoIP ¿Puedo usar dispositivos analógicos?

    Un adaptador de teléfono analógico o ATA (también llamado gateway) nos permite usar los dispositivos telefónicos antiguos en instalaciones de telefonía digital (VoIP).

    Un ATA suele tener un puerto ethernet, uno o más puertos telefónicos FXS y en algunos casos uno o más puertos FXO.

    FXS = convertidor de línea digital a analógica

    FXO = convertidor de línea analógica a digital

  • #CyberCamp19

    3. Dispositivos IoT

    Jesús Pacheco @as_informatico

  • Mini ordenadores “PI”...

  • IoT, los dispositivos Rpi RaspberryPi, OrangePi, NanoPi, etc.

    Los dispositivos “Pi” son ordenadores de placa única o simple (SBC) de bajo coste con el objetivo de estimular la enseñanza de la informática en las escuelas, aunque se ha extendido su uso en la creación de proyectos maker, robótica, seguridad y otros de bajo coste y alta movilidad. Idea inicialmente presentada por la Raspberry PI Foundation en 2012, le han seguido decenas de fabricantes (sobre todo orientales) creando sus propias versiones “PI”.

    Integran generalmente un procesador ARM, de 512Mb a 2Gb de RAM, y puertos USB, Ethernet, HDMI y “GPIO”.

  • Ejemplo de uso de los pines GPIO

  • HorusBox, un monstruo de bolsillo.

    HorusBox es el nombre de un dispositivo libre basado en la NanoPi Neo2 de 1Gb de RAM modificado por mi mismo para ser usado como herramienta de ayuda en labores de investigación forense, pentesting, análisis de redes, etc.

    Cuenta con el kit de utilidades de la distribución KALI Linux para sistemas ARM y una serie de scripts propios para el control de ciertas utilidades desde los botones de navegación y visualización por el display que incorpora, como por ejemplo el análisis de redes y la captura de trafico con volcado a discos externos por USB para posterior análisis en laboratorio.

    En esta ocasión hará las funciones de centralita telefónica con el sistema Asterisk...

  • Arduino

  • Arduino

    ¿Qué es una placa Arduino?.

    Arduino es una plataforma de desarrollo basada en una placa electrónica de hardware libre que incorpora un microcontrolador re-programable y una serie de pines con los que podemos establecer conexiones entre el microcontrolador y los diferentes sensores y/o actuadores que queramos de una manera muy sencilla para poder probar nuevos diseños y crear nuevos proyectos sin necesidad de invertir inicialmente en caros prototipos o placas personalizadas.

  • Arduino IDE

    ¿Cómo lo programo?

    La forma más habitual es usar el entorno de desarrollo ARDUINO IDE que es un programa que nos permite escribir el código que va a a controlar la placa y además subirlo a la memoria de la misma compilado para que ejecute el código que hemos desarrollado.

    Es gratuito y libre y está disponible par todas las plataformas de escritorio más comunes.

  • Código a subir a la placa Arduino

  • Arduino

    Jugando con relés...

    Un relé es un interruptor controlado electrónicamente mediante la alimentación de una bobina interna del dispositivo.

    Con la placa arduino encendemos o apagamos el relé, provocando así el encendido o apagado del dispositivo que le hayamos conectado.

    Nosotros enviaremos la señal que lo controla mediante el puerto serie (RS232) del PC a la placa arduino.

  • #CyberCamp19

    4. Montando una centralita telefónica en Rpi (Asterisk)

    Jesús Pacheco @as_informatico

  • Asterisk

  • Asterisk ¿Qué es Asterisk?

    Asterisk es un programa de software libre (bajo licencia GPL) desarrollado por Digium que proporciona las funcionalidades de una central telefónica (PBX) a un pc. Se le puede conectar un número determinado de teléfonos para hacer llamadas entre sí dentro de una misma organización e incluso acceder a comunicaciones fuera de la misma conectando a un proveedor de VoIP o bien a una línea analógica convencional mediante un gateway.

    Uno de los puntos fuertes del software Asterisk es que permite la unificación de tecnologías como por ejemplo VoIP, GSM y PSTN.

    Asterisk se ha extendido en entornos corporativos y empresariales como una gran solución de bajo coste.

  • Asterisk Instalación y configuración

    La instalación podemos realizarla desde los repositorios del sistema Linux que estemos usando (esto cargará la versión de Asterisk que haya en los mismos y no tendremos opción de elegir una versión concreta) con:

    $> apt-get install asterisk

    $> yum install asterisk

    Otra opción es descargar los fuentes de la versión que deseemos de la web de Digium y realizar una compilación personalizada.

    https://www.asterisk.org/downloads

    https://www.asterisk.org/downloads

  • Asterisk Archivos importantes y rutas

    Archivos de configuración de Asterisk: /etc/asterisk

    sip.conf / pjsip.conf - Configuración de extensiones, troncales y líneas SIP.

    extensions.conf - Configuración del plan de marcado (dialplan).

    features.conf – Configuración de parámetros adicionales usados en la centralita.

    manager.conf – Configuración de usuarios y permisos con acceso al AMI.

    Archivos de voces y sonidos: /var/lib/asterisk/sounds

    Librerías, aplicaciones y módulos: /usr/lib/asterisk/modules

    Logs generados por la centralita: /var/log/asterisk

  • Asterisk Archivo sip.conf:

    [general] context = default allowguest = no realm = asterisk bindport = 5060 bindaddr = 0.0.0.0 srvlookup = no disallow = all allow = ulaw allow = g729 language = es dtmfmode = rfc2833 callevents = yes transport = udp

    [extension](!) [1001](extension) context = outgoing Secret = 1234 callwaiting = yes Callerid = 1001 threewaycalling = yes disallow = all [1002](extension) allow = ulaw Secret = 1234 allow = g729 Callerid = 1002 host = dynamic type = friend [1003](extension) nat = no Secret = 1234 dtmfmode = rfc2833 Callerid = 1003 qualify = yes callgroup = 1 ... pickupgroup = 1 call-limit = 2

  • Asterisk Archivo extensions.conf

    [general] static=yes writeprotect=yes autofallthrough=yes extenpatternmatchnew=yes clearglobalvars=no

    [default] exten => s,1,Answer() exten => s,n,Dial(SIP/101,Tt) exten => s,n,Hangup

    [outgoing] include => extensiones include => servicios

    ;Llamadas internas [extensiones] exten => _100X,1,NoOp(llamadas entre extensiones) same => n,Dial(PJSIP/${EXTEN},30)

    [servicios] ;Hola Mundo exten => 123,1,Answer same => n,Playback(hello-world) same => n,Hangup

    ;Servicio de hora. exten => 403,1,Answer() same => n,Playback(at-tone-time-exactly) same => n,SayUnixTime(,,IMp) same => n,Playback(beep) same => n,Hangup

    ;Ejecución de Comandos y Scripts (menú IVR) exten => 987877189,1,Answer Exten => 987877189,n,Playback(mi_menu_de_voz) exten => 987877189,n,WaitExten(10) exten => 1,1,System(echo) ;Activo salida de Arduino. exten => 2,1,System(echo) ;Desactivo salida de Arduino. exten => 3,1,System(echo) ;Ejecuto scripts por AMI. exten => 4,1,System(echo) ;Ejecutamos un nmap en la red. exten => 5,1,AGI(mi_script.py) Exten => 6,1,System(./autodestucción) ;Eliminando pruebas... same => n,1,Hangup

    https://5,1,AGI(mi_script.py

  • Asterisk Command Line Interface (CLI)

    Con el CLI de Astersik podemos realizar una amplia variedad de acciones de administración entre las que podemos destacar:

    - La obtención de datos del estado del sistema. - Aplicar cambios en la configuración del sistema. - Visualización del log en tiempo real (errores, warnings, etc.). - Ver información sobre aplicaciones, funciones y módulos.

    > asterisk -rvvv (acceso al CLI de Asterisk con verbosity 3) > sip reload (recarga la configuración de sip.conf) > dialplan reload (recarga la configuración de extensions.conf) > sip show peers (ver estado de las líneas SIP configuradas) > help (listado de comandos admitidos) > exit (salir del CLI y volver a la terminal)

  • #CyberCamp19

    5. Jugando con la centralita

    Jesús Pacheco @as_informatico

  • Asterisk Librerías y Frameworks para usar AGI (Asterisk Gateway Interface)

    Ruta de almacenamiento de los scripts: /usr/share/asterisk/agi-bin/

    Si creamos el archivo automate_metasploit.py deberemos invocarlo desde el Dialplan asi:

    xxx n AGI(automate metasploit py)

    https://automate_metasploit.py

  • Asterisk Ejecución de comandos y scripts con la función System()

    System(comando)

    Ejecuta el comando pasado como parámetro tal cual lo haría desde el bash del sistema.

    Ejemplos:

    System(/usr/sbin/asterisk -rx reload)

    System(/bin/echo "'${CALLERID} ${DATETIME}'" > /dev/ttyS1)

    System(/home/usuario/Documentos/Scripts/hago_asi_y_todos_hackeados.py)

    https://System(/home/usuario/Documentos/Scripts/hago_asi_y_todos_hackeados.py

  • Asterisk AMI (Asterisk Manager Interface)

    Asterisk Manager Interface permite la conexión de un cliente a una instancia de Asterisk para ejecutar comandos o leer eventos sobre TCP/IP.

    Configuración del archivo /etc/asterisk/manager.conf

    [general] enabled = yes port = 5038 bindaddr = 0.0.0.0

    [admin] secret = 1234 deny = 0.0.0.0/0.0.0.0 Permit = 127.0.0.1/255.255.255.255 Permit = 192.168.1.250/255.255.255.255 read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate

  • Asterisk Probando la conexión remota por AMI

    > telnet localhost 5038

    La respuesta debería ser algo como esto:

    Trying 127.0.0.1… Connected to localhost.localdomain (127.0.0.1). Escape character is ‘^]’. Asterisk Call Manager/5.0

  • #CyberCamp19

    6. ¡La llamada de la muerte!

    (PoC) Jesús Pacheco @as_informatico

  • La llamada de la muerte PoC

    El script que la lía parda...

    Este script unifica la conexión a Arduino por el puerto serie, la conexión remota a Asterisk mediante el AMI y la ejecución de acciones dependiendo de lo que reciba de la llamada de teléfono que vamos a realizar...

  • Y por fin llegamos...

  • La llamada de la muerte PoC ¿Y si hacemos una llamada?

    - Marcamos: 987 877 189

    - INCIBE dígame…

    *NOTA INFORMATIVA: La llamada se realiza en una red cerrada previamente programada y no se realiza ninguna llamada externa, el número de teléfono de INCIBE ha sido usado solo como ejemplo y su red no ha sufrido daños durante la realización de este taller.

  • #CyberCamp19

    7. Consejos y contramedidas

    Jesús Pacheco @as_informatico

  • Cuando todo es posible

  • Consejos y contramedidas Vigilancia y control virtual y física

    - Controlar las comunicaciones (protocolos y puertos usados en la red).

    - Monitorizar el tráfico y bloquear aquello que se salga de lo permitido.

    - Listar los equipos autorizados (direcciones MAC, IPs, …)

    - Impedir el uso de DHCP siempre que sea posible y usar honeypots.

    - Desconectar físicamente las tomas ethernet no usadas de los switch, hubs o routers.

    - Crear redes aisladas para invitados o entre departamentos.

    - El presupuesto para ciberseguridad no es un gasto, es una inversión necesaria.

    - Si lo necesitas, contrata a los mejores, pon un hacker en tu vida.

  • GRACIAS

    @CybercampES #CyberCamp19

    La llamada de la muerteÍndicePonente¿De qué va esto?SlideSlideLa VoIPLa VoIPSlideSlideIoT, los dispositivos RpiSlideSlideSlideSlide¿Qué es una placa Arduino?.Slide¿Cómo lo programo?SlideJugando con relés...SlideSlide¿Qué es Asterisk?Instalación y configuraciónArchivos importantes y rutasArchivo sip.conf:Archivo extensions.confCommand Line Interface (CLI)SlideLibrerías y Frameworks para usar AGI (Asterisk Gateway Interface)Ejecución de comandos y scripts con la función System()AMI (Asterisk Manager Interface)Probando la conexión remota por AMISlideEl script que la lía parda... SlideLa llamada de la muertePoCSlideSlideVigilancia y control virtual y físicaSlide