Escolar Documentos
Profissional Documentos
Cultura Documentos
Por
Dissertao de Mestrado
RECIFE, JULHO/2011
Universidade Federal de Pernambuco
CENTRO DE INFORMTICA
PS-GRADUAO EM CINCIA DA COMPUTAO
RECIFE, JULHO/2011
Catalogao na fonte
Bibliotecria Jane Souto Maior, CRB4-571
Aos meus filhos Matheus e Gabriela, que mesmo ainda sem saber o
objetivo deste trabalho, me trouxeram inspirao e alegria durante as
madrugadas dedicadas a esse trabalho.
vi
"Can machines think?"
Alan Turing
vii
Resumo
ix
Abstract
The main features of SPIT are different from those of SPAM, thus, we
will not be able to use the same protection techniques used against SPAM in
SPIT. This work proposes the creation of a tool to identify and protect VoIP
networks against SPIT attacks. Like other security threats, we cant use only
one method to identify and protect a network, and that is way we here describe
the tool developed which uses Reverse Turing Tests built in an audio CAPTCHA
with the aim of distinguishing a normal call from a SPIT call. This technique is
applied in conjunction with other techniques described along this work.
x
Sumrio
1 INTRODUO ................................................................................................ 1
1.1 CONTEXTUALIZAO E APRESENTAO DO PROBLEMA ................................... 2
1.2 OBJETIVOS ................................................................................................. 4
1.3 ESTRUTURA DA DISSERTAO ...................................................................... 4
2 ESTADO DA ARTE ......................................................................................... 6
2.1 VOIP .......................................................................................................... 6
2.2 SPAM ........................................................................................................ 7
2.3 SPIT .......................................................................................................... 8
2.4 PROTOCOLOS VOIP .................................................................................. 10
2.4.1 SIP Session Initialization Protocol .................................................11
2.4.1.1 SIP URIs ................................................................................... 12
2.4.1.2 Elementos da Arquitetura SIP .................................................... 13
2.4.1.3 Requisies SIP ........................................................................ 13
2.4.1.4 Respostas SIP .......................................................................... 14
2.4.2 SDP Session Description Protocolo ............................................. 16
2.4.3 RTP e RTCP ................................................................................... 17
2.5 CODECS ................................................................................................... 18
3 TCNICAS DE COMBATE AO SPIT ............................................................ 20
3.1 DEVICE FINGERPRINT ................................................................................ 20
3.2 WHITE LISTS, BLACK LISTS, GREY LISTS ..................................................... 21
3.3 REPUTATION SYSTEMS ............................................................................... 22
3.4 CAPTCHA DE UDIO ................................................................................ 24
3.4.1 Atributos do CAPTCHA ................................................................... 24
3.4.1.1 Vocabulrio ................................................................................ 25
3.4.1.2 Rudo de Fundo ......................................................................... 26
3.4.1.3 Tempo ........................................................................................ 26
3.5 TESTE DE TURING E TESTE REVERSO DE TURING ......................................... 27
3.6 CIRCULO DE CONFIANA ............................................................................ 28
3.7 CONVERSAO SIMULADA.......................................................................... 29
3.7 HONEYPHONES ......................................................................................... 29
4 MITIGANDO VOIP SPAM ATRAVS DE TESTE REVERSO DE TURING .. 30
4.1 APRESENTAO DO SISTEMA ...................................................................... 30
4.2 SINALIZAO ............................................................................................. 33
4.2.1 Sinalizao padro em redes VoIP utilizando o protocolo SIP ........ 33
4.2.2 Abordagens Encontradas ................................................................ 35
4.2.3 Abordagem Proposta ...................................................................... 37
5 RESULTADOS OBTIDOS ............................................................................. 41
5.1 METODOLOGIA ......................................................................................... 42
5.2 DADOS COLETADOS ................................................................................... 45
5.3 ANLISE DO CENRIO 1: ATAQUE A UM SERVIDOR PROXY QUE NO UTILIZA A
PROTEO CONTRA SPIT ................................................................................ 46
5.4 ANLISE DO CENRIO 2: ATAQUE A UM SERVIDOR PROXY QUE UTILIZA A
xi
PROTEO CONTRA SPIT ................................................................................ 49
6 CONSIDERAES FINAIS .......................................................................... 53
6.1 CONTRIBUIO .......................................................................................... 53
6.2 LIMITAES DA PESQUISA .......................................................................... 53
6.3 TRABALHOS FUTUROS ............................................................................... 54
7 BIBLIOGRAFIA ............................................................................................ 56
ANEXO 1 CDIGO FONTE DA APLICAO SPIT_PROTECTION.PHP ... 60
ANEXO 2 CONFIGURAO DO PBX IP ASTERISK: SIP.CONF ............... 64
ANEXO 3 CONFIGURAO DO PBX IP ASTERISK: EXTENSION.CONF 65
ANEXO 4 ESTRUTURA DA BASE DE DADOS MYSQL DA APLICAO . 67
xii
ndice de Figuras
xiii
ndice de tabelas
TABELA 1 - DIFERENAS ENTRE SPAM E SPIT [SANTOS & DESHPANDE, 2007] ......... 2
TABELA 2 - PRINCIPAIS REQUISIES SIP [AUDIO CODES, 2007] ............................ 14
TABELA 3 - EXEMPLO DE REQUISIO SIP DO TIPO INVITE [AUDIO CODES, 2007] ... 14
TABELA 4 - PRINCIPAIS RESPOSTAS SIP[AUDIO CODES, 2007]................................ 15
TABELA 5 - EXEMPLO DE RESPOSTA SIP[AUDIO CODES, 2007] ............................... 16
TABELA 6 - EXEMPLO DE UMA MENSAGEM SDP [AUDIO CODES, 2007] .................... 17
TABELA 7 - TABELA COMPARATIVA DE CODECS [WALLINGFORD, 2005] ..................... 19
TABELA 8 - CONFIGURAO DO SERVIDOR PROXY PARA ACIONAR O PROGRAMA
SPIT_PROTECTION.PHP ................................................................................ 32
TABELA 9 - RESUMO DOS DADOS COLETADOS - 50 CPS E 300 CPS ........................... 45
TABELA 10 - RESUMO DOS DADOS COLETADOS - 500 CPS E 750 CPS ....................... 46
TABELA 11 - MENSAGEM DE ERRO ASTERISK ......................................................... 46
TABELA 12 - EXTENSO PADRO PARA ENCAMINHAMENTO DAS CHAMADAS INTERNAS AO
PABX ......................................................................................................... 47
TABELA 13 - EXTENSO PADRO PARA CHAMADAS ENTRANTES NO PABX ................ 50
xiv
Lista de Abreviaturas e Siglas
xv
POTS Plain Old Telephony System
PSTN Public Switched Telephone Network
QOS Quality of Service
RFC Request for Comment
RTCP RTP Control Protocol
RTP Real-time Transfer Protocol
SDP Session Description Protocol
SER SIP Express Router
SIP - Session Initiation Protocol
SNMP Simple Network Management Protocol
SPIT - Spam over Internet Telephony
SS7 - Signaling System 7
UA User Agentes
UAC User Agent Client
UAS User Agent Server
UCE - Unsolicited Commercial E-mail
UDP - User Datagram Protocol
URI Universal Resource Identifier
VoIP - Voice over IP (voz sobre IP)
xvi
1 Introduo
Spam o termo usado para referir-se aos e-mails no solicitados, que
geralmente so enviados para um grande nmero de pessoas [03]. Ele
considerado um dos maiores problemas enfrentados na Internet [Quittek,
Niccolini, Tartarelli & Schlegel, 2006]. Com o aumento da disponibilizao de
banda larga, popularizao de tecnologias de internet e o aumento da
utilizao e disponibilizao de solues baseadas em VoIP (Voice over IP),
esperado que um problema semelhante passe a afetar esta nova rea. Esta
ameaa conhecida por SPIT (SPAM over Internet Telephony) e definida
como gerao automatizada de chamadas no solicitadas utilizando como
transporte o IP atravs do VoIP ao invs das tradicionais linhas telefnicas.
1
SPAM SPIT
Usurio no pode ordenar ou filtrar a VoIP um protocolo de tempo real, e
mensagem baseando-se no contedo no permite ao recebedor da
ou cabealhos da mensagem chamada ter acesso ao contedo da
chamada antes que ela seja aceita
O e-mail entregue de forma A vtima interrompida
assncrona, ou seja, o usurio decide instantaneamente com o toque do
quando quer receber/acessar suas telefone.
mensagens.
Spammer no sabe com certeza se Uma chamada com sucesso, garante
sua mensagem ser recebida ou no que o usurio existe, que est
pela vtima. atualmente online, e bem provvel
que ele receba a chamada.
Tabela 1 - Diferenas entre SPAM e SPIT [Santos & Deshpande, 2007]
1.2 Objetivos
Este trabalho enderea os seguintes objetivos:
Geral
Anlise de tcnicas para mitigao de ataques do tipo SPIT.
Especficos
Implementao de um CAPTCHA de udio, baseado nos Testes
Reversos de Turing, em um PABX IP
Identificar e integrar as principais tcnicas de mitigao/deteco
a ferramenta proposta
Analisar o desempenho do PABX IP, rodando a ferramenta
proposta e estando sujeito a um ataque
Anlise e construo de Testes de Turing
4
identificao e combate ao SPIT, entre elas, os Testes de Turing e os Testes
Reversos de Turing, que em captulos a frente, sero a base para a
implementao da ferramenta proposta neste trabalho.
No quarto captulo apresentada a ferramenta desenvolvida neste
trabalho, sendo detalhada sua construo, funcionamento e quais tcnicas de
combate e mitigao ao SPIT foram implementadas. Tambm feita uma
anlise da sinalizao de uma chamada VoIP quando sujeita a ferramenta
implementada.
No quinto captulo so apresentados os resultados obtidos com a
implementao da ferramenta proposta no captulo 4, bem como explicada a
metodologia para obteno dos dados.
No sexto captulo, so apresentadas as contribuies que este trabalho
oferece para a Segurana de Infra estruturas de redes baseadas em VoIP. So
apresentados tambm algumas limitaes desta pesquisa bem como
sugestes de possveis trabalhos futuros que podem ser implementados a
partir deste.
5
2 Estado da Arte
Neste capitulo, sero apresentados os principais conceitos que servem como base para o
entendimento desta pesquisa. Sero apresentados tambm, as definies de VoIP, SPAM
e SPIT, bem como apresentao, definio e caractersticas dos principais protocolos
envolvidos.
2.1 VoIP
1
Software que emula a interface de um telefone em um computador
6
garante tarifas locais, basta iniciar seu cliente VoIP estando conectado a
internet, e o cliente VoIP ir se registrar em sua operadora e o seu nmero de
telefone contratado para sua cidade original estar disponvel onde quer que
voc esteja, desta forma, voc poder fazer e receber chamadas com se
estivesse em sua cidade.
2.2 SPAM
Nos dias atuais, qualquer pessoa que possua um endereo de e-mail sabe o
que significa a palavra SPAM. Esse mal incomoda os usurios de e-mail, com
publicidade de produtos, oportunidades de emprego, de como ganhar dinheiro
fcil, entre outros diversos tipos de SPAM [Endler & Collier, 2006].
Existem diversas definies a respeito desta ameaa to incmoda.
Para utilizao neste documento, utilizaremos a definio abaixo [03]:
Spam o termo usado para referir-se aos e-mails no solicitados, que
geralmente so enviados para um grande nmero de pessoas. Quando o
contedo exclusivamente comercial, esse tipo de mensagem chamada de
UCE (do ingls Unsolicited Commercial E-mail).
O alto volume de mensagens do tipo Spam que circulam diariamente
na internet atrapalha a produtividade de funcionrios e degrada o desempenho
de sistemas de rede, como por exemplo, aumentando o overhead dos
servidores de e-mail, uso de banda entre os ISP's e o aumento de rea de
2.3 SPIT
10
Na figura 2, apresentado um resumo de como se organizam os
protocolos dessa categoria.
2
Internet Engineering Task Force, instituio responsvel por definir os padres de protocolos usados na
Internet
11
Na figura 3, exibido o estabelecimento de uma chamada SIP. Nas
sesses seguintes sero explicados os elementos, requisies e cdigos de
resposta apresentados na figura 3.
12
As SIP URI esto presentes em alguns campos do cabealho SIP, entre
eles o campo To, From, Contact e Request-URI que indica o destino.
bastante similar ao mailto usado como hyperlink em pginas de internet
[Johnston, 2004].
Sua formao pode ser composta de vrias opes, como, por exemplo,
o mtodo, o usurio, o nmero do telefone ou ainda o protocolo que transporte.
14
Cdigos Respostas Principais Mensagens
15
Na tabela 5, v-se a resposta SIP a solicitao apresentada na tabela 2.
16
Tabela 6 - Exemplo de uma mensagem SDP [Audio Codes, 2007]
17
permite o monitoramento da entrega dos dados de forma escalvel para
grandes redes multicast, e prov funcionalidades mnimas de controle e de
identificao. RTP e RTCP foram desenhados para ser independentes do
protocolo da camada de transporte e de rede [Sinclair & Fong, 2002].
Ambos os protocolos so descritos pela RFC 3550 em [Schulzrinne,
Casner, Frederick & Jacobson, 2003].
2.5 Codecs
19
3 Tcnicas de combate ao SPIT
Nas sesses abaixo sero apresentadas tcnicas de combate ao SPIT citando
suas caractersticas e vulnerabilidades.
21
tcnica apresentada em [Hansen, Mller, Rohwer, Tolkmit & Waack, 2006].
Caso o endereo de um originador no esteja presente nem na white list e nem
na black list, a chamada ser rejeitada e seu endereo ser colocado na gray
list. Caso este mesmo originador tente realizar uma nova chamada em um
curto intervalo de tempo aps a chamada original, esta ser aceita e includa
na white list.
Esta tcnica pode ser invalidada atravs de SIP Header Spoofing, onde
o atacante simplesmente modifica o valor de sua reputao no header da
solicitao INVITE atravs do envio de um Direct IP Spitting. Outra forma de
invalidar esta tcnica atravs da utilizao de uma nova conta VoIP, com isso
o Spitter ter uma nova identidade, sendo necessrio pontu-lo novamente
para que ele venha a ser impedido de realizar novos ataques.
23
3.4 CAPTCHA de udio
24
Figura 5 - Desenvolvimento de um udio Captcha [Soupionis, Tountas & Gritzalis, 2009]
3.4.1.1 Vocabulrio
3.4.1.3 Tempo
Os caracteres escolhidos
Peter ficou em casa hoje de manh, Mary foi para a escola. Quem
perdeu aula hoje ?
Em [Hansen, Mller, Rohwer, Tolkmit & Waack, 2006] encontramos esta tcnica
cujo foco detectar e dificultar a realizao de ataques via SPIT. O PBX ao
receber uma chamada, ir efetuar um atendimento automatizado, onde
arquivos de udio gravados previamente sero reproduzidos simulando o
processo tradicional de uma chamada telefnica. A diferena que durante a
chamada no desejada, ao invs de trazer incmodo para o usurio, o PBX ir
reter por mais tempo a chamada realizada pelo spitter, aumentando o custo
para execuo destas chamadas, bem como reduzir o efeito comercial que
aquele spam possa trazer.
3.7 Honeyphones
3
Este nome uma analogia aos honeypots e honeynets descritos em
http://project.honeynet.org/papers/honeynet/
29
4 Mitigando VoIP Spam Atravs de Teste Reverso de
Turing
Utilizaremos uma aplicao que utilizar as tcnicas de Teste Reverso de
Turing apresentado na sesso 3.5, estando este integrado em um udio
captcha, apresentado na sesso 3.4, atuando ambos em conjunto com listas
branca, negra e cinza, apresentadas na sesso 3.2.
4
Descrita na sesso 2.1.1.3 deste trabalho
30
esteja na lista branca, ele ser validado atravs do captcha de udio a fim de
distinguir se aquela chamada um SPIT ou se uma chamada vlida. Este
captcha de udio montado baseado no Teste Reverso de Turing. Caso o teste
seja respondido corretamente, o nmero do originador da chamada inserido
na lista branca e a chamada completada. Caso o teste seja respondido de
forma errada, o nmero inserido na lista cinza. Em seguida o sistema verifica
quantas vezes este mesmo nmero j errou a resposta do captcha de udio.
Se tiverem sido mais do que 3 vezes, o nmero inserido na lista negra e a
chamada desconectada, caso seja menor do que 3 vezes, a chamada ser
apenas desconectada e uma nova tentativa ser permitida para este nmero.
exten=> _558133135503,1,AGI(spit_protection.php,${CALLERID(num)})
exten=> _558133135503,2,Dial(SIP/3550,30,Ttr)
exten=> _558133135503,2,hangup
5
Nmero acessvel publicamente para clientes da PSTN.
32
4.2 Sinalizao
33
Vemos na figura 7, uma troca padro de mensagens entre dois
assinantes e o seu servidor proxy com o objetivo de iniciar uma chamada.
Conforme definido na RFC 3261[Rosenberg, Schulzrinne, Camarillo, Johnston,
Peterson, Sparks, Handley & Schooler, 2002] do SIP e na sesso 2.4.1 deste
trabalho, a seguinte seqncia de eventos ocorrem:
35
Figura 8 - Call Flow SIP Modificada para reproduo do Audio CAPTCHA [Soupionis, Tountas & Gritzalis,
2009]
36
Caso o originador responda ao desafio de forma incorreta, o cliente envia
diretamente uma mensagem SIP BYE desconectando assim a chamada antes
mesmo que ela seja atendida pelo usurio.
Figura 9 - Call Flow SIP Modificada para reproduo do Audio CAPTCHA [Wang, 2007]
O modelo de sinalizao proposto por este trabalho pode ser visto na figura 10.
Usaremos a mesma abordagem apresentada em [Wang, 2007] s que
trataremos da validao do assinante diretamente no proxy, antes mesmo que
qualquer sinalizao seja encaminhada para o cliente. Caso a resposta ao
nosso desafio seja correta, a chamada ser encaminhada para o cliente, caso
a resposta seja errada, o servidor proxy far a desconexo da chamada.
Figura 10 - Call Flow proposto neste trabalho para uma resposta correta ao CAPTCHA
6
Time do frame 7 subtrado do time do frame 8
38
Figura 11 - Call Flow proposto neste trabalho para uma resposta errada ao CAPTCHA
39
Figura 12 - Call Flow proposto neste trabalho para um CALLERID que esteja na blacklist
Este modelo foi escolhido para que o atacante tenha algum custo para
gerar o ataque. Aps a mensagem de 200 OK enviada pelo proxy conforme
visto na figura 10, e no frame 6, a chamada passar a ser tarifada. Como o
desafio s apresentado para o originador aps o recebimento da mensagem
SIP 200 OK, para que ele possa ouvir e resolver o desafio, algum custo ser
imputado ao originador. Conforme agncia reguladora do Brasil, a ANATEL,
aps 3s a chamada passa a ser tarifada [Anatel, 2011], com vimos, leva-se em
torno de 11s para responder de forma correta ou incorreta ao CAPTCHA.
40
5 Resultados Obtidos
Neste captulo, apresentaremos os resultados obtidos com a utilizao do
modelo proposto para combate a ataques de SPIT contra redes VoIP.
Para as simulaes apresentadas aqui neste captulo foram utilizadas
duas mquinas, estando ambas ligadas via interface ethernet de 1000Mb/s.
Abaixo esto as configuraes das mquinas:
Desktop Servidor VoIP:
Intel(R) Core(TM)2 Duo CPU E7300 @ 2.66GHz
2 Gb Memria RAM DDR2 800 Mhz
2 x 500 Gb Hard Drive SATA 2
Placa de Vdeo GeForce 7050
Placa de rede 3Com 3c940 10/100/1000Base-T
Linux CentOS 5.5 com kernel 2.6.18-194.32.1.el5 i386
Endereo IP 192.18.15.33
Notebook Cliente:
Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz
3 Gb Memria RAM DDR3 1067 Mhz
1 x 500 Gb Hard Drive SATA 2
Placa de Vdeo ATI HD Radeon 5000
Placa de rede RTL8111/8168B PCI Express Gigabit Ethernet controller
Linux Fedora 14 com kernel 2.6.35.12-90.fc14.x86_64
Endereo IP 192.18.15.188
41
Trazer incmodo ao usurio at for-lo a desativar seu recurso de
comunicao
Realizao de ataques de DoS a uma rede VoIP at que a mesma fique
indisponvel
Exausto de recursos da rede: CPU, Memria, Aplicaes e
Disponibilidade de Banda
Degradao da qualidade dos servios de uma rede VoIP
5.1 Metodologia
42
Com a ferramenta SIPp foi possvel variar a freqncia do envio de
chamadas por segundo ao servidor proxy e conforme este aumento, foram
analisados o comportamento e disponibilidade dos recursos desta rede VoIP.
Para fazer anlise dos recursos da rede, foram utilizados diversos
softwares de monitoramento de rede conforme lista abaixo:
43
Figura 15 - Exemplo da interface do iftop durante testes
44
de IA7 e reconhecimento de voz para que quando for apresentado o desafio a
ferramenta possa fazer o reconhecimento e a interpretao do que foi
questionado para em seguida propor uma resposta. No tivemos acesso a
nenhuma ferramenta deste tipo, portanto no foi possvel validar os aspectos
de segurana das mensagens montadas no captcha de udio utilizadas neste
trabalho.
7
Inteligncia Artificial
45
500 cps 750 cps
Sem Com Sem Com
Varivel Observada proteo Proteo Delta proteo Proteo Delta
CPU do servidor 49,30% 67,30% 0,37 46,00% 72,30% 0,57
Utilizao de CPU pelo
processo Asterisk 122,10% 18,90% -0,85 120,20% 15,90% -0,87
Utilizao de Memria
pelo processo Asterisk * 25,10% 4,10% -0,84 26,30% 4,20% -0,84
Incomodou o usurio Sim Sim
Banda de Upload
utilizada (Mb)** 8,78 1,04 -0,88 9,03 1,11 -0,88
Banda de Download
utilizada ** 14,1 13,50 -0,04 21 20,50 -0,02
Load Average 3,92 25,87 5,60 3,05 16,30 4,34
* A memria do servidor de 2Gb
** A banda de Upload e Download tem como referncia o servidor
Tabela 10 - Resumo dos dados coletados - 500 cps e 750 cps
Durante o teste foi observado que at um pouco antes da taxa de 125 cps8 o
asterisk sem a soluo de spit ainda estava permitindo a realizao e
recebimento de chamadas. Ao aumentar a taxa de chamadas por segundo(cps)
chegando prximo de 125 cps o asterisk comeou a descartar mensagens de
sinalizao, causando assim a retransmisso de pacotes, desta forma os
usurios clientes do proxy j comeam a perceber um aumento do tempo para
estabelecimento da chamada e com certeza em um ambiente de banda mais
estreita do que a utilizada em nosso teste, a qualidade da voz no seria
satisfatria.
Neste mesmo momento, comeamos a visualizar na console do
servidor proxy asterisk a mensagem vista na tabela 11.
8
Chamadas por segundo
46
De acordo com a documentao do Asterisk 1.6.2 [Johansson, 2011],
se uma das mensagens esperadas durante um call setup9 no for recebida
pelo proxy, ele far a retransmisso da mensagem de solicitao (INVITE por
exemplo), e se mesmo assim ele no receber a confirmao, ele desconectar
a chamada [Johansson, 2011].
Figura 17 - Tela de monitorao durante testes a 125cps sem proteo contra SPIT
exten=> _35XX,1,Dial(SIP/${EXTEN},20,Tt)
exten=> _35XX,2,Voicemail(${EXTEN})
exten=> _35XX,3,Hangup
exten=> _35XX,103,Voicemail(b${EXTEN})
exten=> _35XX,104,Hangup
10
Trfego enviada do servidor proxy para a o cliente.
11
Trfego enviada do cliente para o servidor.
12
Significar que a taxa de upload e de download so iguais
48
para dados e voz, certamente os servios de dados compartilhados por este
meio tambm seriam afetados, uma vez que o ataque demonstrado consumiu
uma banda 4x superior ao do link sugerido acima.
49
Figura 18 - Tela de monitorao durante testes a 50cps com a proteo contra SPIT
exten=> _558133135503,1,AGI(spit_protection.php,${CALLERID(num)})
exten=> _558133135503,2,Dial(SIP/3550,30,Ttr)
exten=> _558133135503,2,hangup
50
Realizao de ataques de DoS a uma rede VoIP at que a
mesma fique indisponvel: Para o servidor proxy utilizado para nossos testes,
o Asterisk 1.6.2.17, quando o ataque chega prximo a 30 cps temos
retransmisso de pacotes causando um aumento significativo na troca de
mensagens de sinalizao, mesmo assim ainda possvel estabelecer uma
chamada. A 50 cps, a chamada foi desconectada aps 30s por no receber a
mensagem de resposta do proxy. Como o descarte de pacotes foi grande, os
user agents comearam a perder o registro. A partir deste threshold, os
usurios deste proxy estaro impossibilitados de fazer ou receber chamadas.
Infelizmente com o uso da soluo de proteo com o SPIT, reduzimos a
capacidade de chamadas por segundo que o proxy pode gerenciar, no entanto,
esta capacidade pode ser aumentada com a criao de clusters de servidores
asterisk.
13
Trfego enviada do servidor Proxy para a o cliente.
51
50% a 80% menor do que na soluo sem a proteo contra o SPIT. Com a
proteo contra ataques spit, a chamada desconectada imediatamente,
trafegando na rede apenas mensagens de sinalizao SIP. Quando no
usamos a proteo, gerado tambm trfego RTP decorrente de mensagens
de voicemail ou IVR presentes no proxy. Vale comentar que a chamada fica
ativa mais tempo no proxy, sendo sua desconexo mais demorada do que
quando usamos a proteo contra SPIT. No caso do download14, praticamente
o valor o mesmo uma vez que se trata do envio de mensagens do cliente
para o proxy.
14
Trfego enviada do cliente para o servidor.
52
6 Consideraes Finais
6.1 Contribuio
55
7 Bibliografia
Ahn, L., Blum, M., e Langford, J., Telling Humans and Computer
Apart (Automatically) or How Lazy Cryptographers do AI,
Communications of the ACM, 2002
Davidson, J., Peters, J., Bhatia, M., Kalidindi, S., Mukherjee, S.,
Fundamentos de VoIP, Segunda Edio, Bookman, 2008
Hansen, M., Mller, J., Rohwer, T., Tolkmit, C. e Waack, H., Developing
a Legally Compliant Reachability Management System as a
Countermeasure against SPIT. Third annual security workshop
(VSW06). ACM Press. 2006.
56
Huang,X., Advances in communication systems and electrical
engineering Volume 4 de Lecture notes in electrical
engineering, Springer, 2008.
Nakulas, A., Ekonomou, L., Kourtesi, S., Fotis, G., Zoulias, E., A
Review of Techniques to Counter Spam and Spit. Proceedings
of the European Computing Conference. 2009
Shaw, R., Four Reasons Why Vonage IPOs Email and Phone Pitch
is the Wrong Strategy. ZDNet, 2006.
Siever, E., Figgins, S., Weber, A., Robbins, A., Linux O Guia
Essencial, 5a Edio. Bookman, 2006
59
ANEXO 1 Cdigo Fonte da aplicao
spit_protection.php
#!/usr/bin/php -q
<?
# Inicio do script
list($usec, $sec) = explode(' ', microtime());
$script_start = (float) $sec + (float) $usec;
error_reporting(E_ALL);
conecta(SQL_SERVER,SQL_DB,SQL_USER,SQL_PASSWD,SYS);
}
else
{
$agi->answer();
$questao=$dados['mensagem_file_name'];
$resposta=$dados['mensagem_resposta'];
# Reproducao do prompt para a chamada
$agi->stream_file($questao,"#");
# Aguardo a resposta da questao
$result=$agi->get_data('beep', 3000, 20);
$resultado = $result['result'];
if ($resultado==$resposta)
{
# Acertou a resposta
$agi->stream_file(general__vc_acertou,"#");
$agi->noop("Acertou o desafio, estamos completando a chamada");
$query="insert into whitelist values ('','$callerid','$agora')";
$result=mysql_query($query);
$agi->noop("Numero inserido na whitelist: ".$callerid."");
# Removendo ocorrencias da greylist
$query="delete from greylist where greylist_cli=$callerid";
$result=mysql_query($query);
$agi->noop("Numero removido da greylist: ".$callerid.",".$quant_itens++."");
}
else
{
$agi->noop("Erro ao desafio, desconectando a chamada");
$agi->stream_file(general__vc_errou,"#");
# Checando a quantidade de ocorrncias na graylist
$query="select * from greylist where greylist_cli='$callerid'";
$result=mysql_query($query);
$dados=mysql_fetch_array($result);
62
$quant_itens=mysql_num_rows($result);
if ($quant_itens>=3)
{
# Se maior do que 3 insira na blacklist
$query="insert into blacklist values ('','$callerid','$agora')";
$result=mysql_query($query);
$agi->noop("Numero inserido na blacklist:
".$callerid.",".$quant_itens++."");
# Removendo ocorrencias da greylist
$query="delete from greylist where greylist_cli='$callerid'";
$result=mysql_query($query);
$agi->noop("Numero removido da greylist:
".$callerid.",".$quant_itens++."");
}
else
{
# Menor do que 3 ocorrencias, insira mais uma na greylist
$query="insert into greylist values ('','$callerid','$agora')";
$result=mysql_query($query);
$agi->noop("Numero inserido na greylist:
".$callerid.",".$quant_itens++."");
}
$agi->hangup();
}
$agi->stream_file($resultado,"#");
}
?>
63
ANEXO 2 Configurao do PBX IP Asterisk: SIP.conf
[3550](my-codecs)
type=friend
callerid=Bavo1<3550>
secret=3550
host=dynamic
canreinvite=yes
nat=yes
mailbox=3550
context=sip_internal
language=en
[3551](my-codecs)
type=friend
callerid=Fred<3551>
secret=3551
host=dynamic
canreinvite=yes
nat=yes
mailbox=3551
context=sip_internal
language=en
; para testes do sipp
[sipp]
type=friend
context=sip_internal
host=192.168.15.188
user=sipp
canreinvite=no
disallow=all
allow=ulaw
64
ANEXO 3 Configurao do PBX IP Asterisk: EXTENSION.CONF
[default]
exten=> _558133135503,1,AGI(spit_protection.php,${CALLERID(num)})
exten=> _558133135503,2,Dial(SIP/3550,30,Ttr)
exten=> _558133135503,2,hangup
[sip_internal]
include=default
exten=> _35XX,1,Dial(SIP/${EXTEN},20,Tt)
exten=> _35XX,2,Voicemail(${EXTEN})
exten=> _35XX,3,Hangup
exten=> _35XX,103,Voicemail(b${EXTEN})
exten=> _35XX,104,Hangup
[ivr]
exten=> _35XX,1,AGI(spit_protection.php,${CALLERID(num)})
exten=> _35XX,n,Dial(SIP/${EXTEN},20,Tt)
exten=> _35XX,n,Hangup
66
ANEXO 4 Estrutura da base de dados Mysql da
aplicao
Database: spit_protection
Tabela: Blacklist
CREATE TABLE `blacklist` (
`blacklist_id` int(11) NOT NULL auto_increment,
`blacklist_cli` varchar(16) NOT NULL,
`blacklist_add_date` varchar(45) NOT NULL,
PRIMARY KEY (`blacklist_id`)
) ENGINE=InnoDB AUTO_INCREMENT=131 DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;
Tabela: conta_reproducao
CREATE TABLE `conta_reproducao` (
`conta_reproducao_id` int(11) NOT NULL auto_increment,
`conta_reproducao_quant_ok` int(11) NOT NULL,
`conta_reporducao_quant_nok` int(11) NOT NULL,
`mensagens_mensagem_id` int(11) NOT NULL,
PRIMARY KEY (`conta_reproducao_id`,`mensagens_mensagem_id`),
KEY `fk_conta_reporducao_mensagens` (`mensagens_mensagem_id`),
CONSTRAINT `fk_conta_reporducao_mensagens` FOREIGN KEY
(`mensagens_mensagem_id`) REFERENCES `mensagens` (`mensagem_id`)
ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;
Tabela: greylist
CREATE TABLE `greylist` (
`greylist_id` int(11) NOT NULL auto_increment,
`greylist_cli` varchar(16) NOT NULL,
`greylist_count` int(11) NOT NULL,
67
PRIMARY KEY (`greylist_id`)
) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;
Tabela: log
CREATE TABLE `log` (
`log_id` int(11) NOT NULL auto_increment,
`log_cli` varchar(16) NOT NULL,
`log_resultado` tinyint(1) NOT NULL,
`log_add_date` date NOT NULL,
`mensagens_mensagem_id` int(11) NOT NULL,
PRIMARY KEY (`log_id`,`mensagens_mensagem_id`),
KEY `fk_log_mensagens1` (`mensagens_mensagem_id`),
CONSTRAINT `fk_log_mensagens1` FOREIGN KEY
(`mensagens_mensagem_id`) REFERENCES `mensagens` (`mensagem_id`)
ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;
Tabela: Mensagens
CREATE TABLE `mensagens` (
`mensagem_id` int(11) NOT NULL auto_increment,
`mensagem_questao` varchar(100) NOT NULL,
`mensagem_file_name` varchar(100) NOT NULL,
`mensagem_level` decimal(10,0) NOT NULL,
`mensagem_resposta` int(11) NOT NULL,
`mensagem_add_data` varchar(45) NOT NULL,
`mensagem_enable` int(11) NOT NULL default '1',
PRIMARY KEY (`mensagem_id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;
Tabela: time
68
CREATE TABLE `time` (
`time_op` varchar(12) default NULL,
`time_delta` float default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;
Tabela: whitelist
CREATE TABLE `whitelist` (
`whitelist_id` int(11) NOT NULL auto_increment,
`whitelist_cli` varchar(16) NOT NULL,
`whitelist_add_date` datetime NOT NULL,
PRIMARY KEY (`whitelist_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;
69