Ingeniería social como ataque en Elastix/FreePBX

13 Jun

Hace unos días tuve oportunidad de dar un Curso Asterisk en Guadalajara, y los asistentes preguntaron por la manera en que podríamos hacer una intervención de llamada, con la cual pudiera escucharse la conversación de alguien más sin que esa persona se percatara que la estamos espiando. Esto en Asterisk puede hacerse fácilmente con la aplicación ChanSpy, y en Elastix/FreePBX viene pre-programada para la extensión 555.

Esto significa que cualquiera que esté registrado en nuestro equipo puede marcar 555 y escuchar cualquier conversación que ocurra en ese momento. Pero… ¿y qué hay de aquellos que NO deberían tener acceso a nuestro sistema? ¿Acaso hay algún truco para engañar a los internos y que nos concedan acceso a esta funcionalidad? La respuesta, es SI.

Gracias a la pregunta de @solin182 durante el curso, se me ocurrió algo tan sencillo como esto:

  1. Llamemos al número de teléfono de la víctima (debemos saber que utiliza Elastix/FreePBX)
  2. Al contestarnos su menu de voz, debemos pedir hablar con la operadora
  3. Cuando estemos hablando con alguien, debemos hacerle una solicitud como “Disculpe, mi teléfono está fallando. ¿Sería tan amable de comunicarme con la extensión 555 por favor?”

Si quien nos contestó no tiene ni idea de lo que dicha extensión hace, lo más probable es que nos comunique inmediatamente y sin verificar que es lo que le contesta, dejándonos comunicados con un ChanSpy con acceso completo al sistema y que solo se terminará cuando nosotros colguemos.

¿Existe alguna solución para evitar este tipo de ataques? Claro: desactivemos la opción 555 y/o protejámosla con una contraseña. Esto no evitará que la gente lo intente, pero si que logren acceder.

Este tipo de ataques no es común todavía, pero hace unos años tampoco lo eran aquellos que se aprovechaban de la inseguridad en algunos conmutadores para hacer llamadas internacionales a costa nuestra. Es cuestión de tiempo antes de que empiece a pasar y tengan acceso a información que podría ser de carácter confidencial.

Suerte a todos y recuerden: protejan sus equipos.

Christian Cabrera

Soy un ingenieron en comunicaciones con especial interés en el área de voz sobre IP y tecnologías sobre información. He usado Asterisk de manera diaria desde hace más de 12 años.En el 2011 co-fundé Enlaza Comunicaciones, una empresa que se especializa en brindar servicios profesionales de consultoría sobre voz sobre IP basadas en Asterisk.

  • Como le asignamos la contraseña?

  • indagué algo y encontré el siguiente código:

     Configurar Chan Spy

    en el archivo extensions_additional.conf  borrar la configuracion de 555 chanspy
    y agregar lo siguiente en extensión_custom.conf

    [app-chanspy-custom]

    exten => 5551,1,Answer

    exten => 5551,2,Authenticate(8523) - colocar este valor y cambiar el numero de orden

    exten => 5551,3,Wait(1)

    exten => 5551,4,Goto(custom-app-enh-chanspy,s,1)

    exten => 5551,5,Hangup

    ; end of [app-chanspy-custom]

    // el parámetro 8523 de la funcion Authenticate ¿que hace?

    [custom-app-enh-chanspy]

    exten => s,1,BackGround(please-enter-the)

    exten => s,n,Read(SPYNUM|extension)

    exten => s,n,ChanSpy(SIP/${SPYNUM}|wv4)

    ;end of extensions_custom.conf amendments

    en extensions_override_freepbx.conf:

    [app-chanspy]

    include => app-chanspy-custom

    exten => 555,1,Authenticate(1234)  colocar la clave deseada

    exten => 555,2,Read(SPYNUM,extension)

    exten => 555,3,ChanSpy(SIP/${SPYNUM},wq)

    ; end of [app-chanspy]

    Luego al final de la linea agregar:

    include => app-chanspy

    include => app-chanspy-custom

    • El problema es que si la borras, se volverá a agregar tras tu siguiente recarga. Por esta razón no es confiable editar los archivos que acaban en _additional.conf, pues se generan al momento.

      La mejor manera es copiar la extension 555 que ibas a borrar, ponerla en el  extensions_freepbx_override.conf, y de ahi modificarla para que pida contraseña forzosamente.

      El extensions_freepbx_override.conf se carga ANTES que el extensions_additional. Si declaras allí la extension 555 con contraseña, siempre se encimará sobre la otra, de manera que siempre se te pedirá contraseña aún y con cualquier cosa que tengas en el extensions_additional.conf

      Saludos,

      •  Gracias por responder, si habia visto eso de que al momento de hacer la recarga se sobreescribiria la personalizacion, despues comentaré como va, Gracias

      • Gracias Cristian, disculpa el contexto app-chanspy-custom en que archivo está?
        en el archivo extensions_additional.conf tengo varias cosas entre ellas:

        [app-chanspy]
        include => app-chanspy-custom
        exten => 555,1,Macro(user-callerid,)
        exten => 555,n,Answer
        exten => 555,n,Wait(1)
        exten => 555,n,ChanSpy()
        exten => 555,n,Hangup

        ; end of [app-chanspy]

        en el archivo extensions_override_freepbx.conf no tengo nada (está vacio)

        • No existe, si quieres usarlo tienes que crearlo en extensions_custom.conf

          • Gracias Nuevamente Christian, ya lo hice y quedò de la siguiente forma:

            en extensions_custom.conf:

            comentè las lineas originales del chan spy y puse estas

            [app-chanspy-custom]
            exten => 5551,1,Answer
            exten => 5551,2,Authenticate(8523)
            exten => 5551,3,Wait(1)
            exten => 5551,4,Goto(custom-app-enh-chanspy,s,1)
            exten => 5551,5,Hangup
            ; end of [app-chanspy-custom]

            [custom-app-enh-chanspy]
            exten => s,1,BackGround(please-enter-the)
            exten => s,n,Read(SPYNUM|extension)
            exten => s,n,ChanSpy(SIP/${SPYNUM}|wv4)
            ;end of extensions_custom.conf

             //En el archivo extensions_override_freepbx.conf puse:

            [app-chanspy]
            include => app-chanspy-custom
            exten => 555,1,Authenticate(1234)
            exten => 555,2,Read(SPYNUM,extension)
            exten => 555,3,ChanSpy(SIP/${SPYNUM},wq)
            ; end of [app-chanspy]
            include => app-chanspy
            include => app-chanspy-custom

            //Recargué con dialplan reload y listo

  • y si quiero que no me pida extension en el archivo extensions_override_freepbx.conf

    quito la linea donde me pide extension (linea 2)
    y la linea 3 la modifico por

    exten => 555,2,ChanSpy()

  • hay un warning que me arroja la consola al hacer el dialplan reload

    WARNING[19372]: pbx_config.c:2322 pbx_load_config: The use of ‘_.’ for an extension is strongly discouraged and can have unexpected behavior.

    pero todo aparentemente trabaja bien