Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Orientador
Prof. MSc. Joo Jos Costa Gondim
Braslia
2013
1. monitoramento
4. SSL
Stripping
CDU 004.4
Endereo:
Universidade de Braslia
Campus Universitrio Darcy Ribeiro Asa Norte
CEP 70910-900
BrasliaDF Brasil
Universidade de Braslia
Instituto de Cincias Exatas
Departamento de Cincia da Computao
CIC/UnB
ENE/UnB
Agradecimentos
Agradeo a todos parentes e amigos que acreditaram e conaram na minha capacidade
e que compreenderam os esforos necessrios para a concluso deste trabalho.
Resumo
Web permitiu a criao de diversas aplicaes, entre elas as
domsticas, comerciais e mveis. Dessa forma, o uso da Web atravs da Internet tornouO surgimento e difuso da
se uma ferramenta muito verstil e poderosa. Porm, como no possvel garantir que
todos que a utilizam so bem intencionados, discute-se cada vez mais a necessidade de
ferramentas de monitoramento de seu uso. Este trabalho busca apresentar uma aplicao
para monitoramento do uso da
uma rede:
Webspy.
Web
host
especco de
host
Stripping.
ii
Abstract
The rise and diusion of the Web has enabled the development of several applications:
domestic, commercial and mobile. Like so, the use of the Web through the Internet has
become a powerful and versatile tool. However, since it's not possible to guarantee that
everyone who use this tool is well intentioned, the need for monitoring tools is a topic
being discussed more and more often. This work presents an application called Webspy
that is capable of monitoring the use of the Web associated with a specic host in a computer network. This application was developed as a proof of concept that it is possible to
accomplish Web monitoring through man-in-the-middle atack techniques, namely ARP
Spoong. The following features are emphasized: ltering and visualization of trac related to Web pages in real time and the replay of the visualizations of intercepted pages
in the order they were viewed by the monitored host. All concepts and techniques that
make this approach possible are presented and discussed in this work. The nal implementation of the application revealed impressive results in regards to the visualization of
HTTP pages, fullling the proposed objectives with litle limitations.
also included the feature of viewing HTTPS pages through the use of the technique known
as SSL Stripping.
iii
Sumrio
1 Introduo
1.1
Objetivos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3
Organizao do trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Software de Rede .
Hardware de Rede
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.1
Protocolo ARP
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.2
Protocolo ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Ping
. . . . . . . . . . . . . . . . . . . . . . . . . . .
16
. . . . . . . . . . . . . . . . . . . . . . . . . . .
16
. . . . . . . . . . . . . . . . . . . . . . . . . . .
19
. . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.3
3.4
Protocolo HTTP
22
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.1.1
Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.1.2
Transaes e Mensagens
. . . . . . . . . . . . . . . . . . . . . . . .
23
4.1.3
Conexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.1.4
Servidores
Proxy
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4.2
. . . . . . . . . . . . . . . . . . . . . . . .
4.3
. . . . . . . . . . . . . . . . . . . . . . . .
28
4.4
29
4.5
Protocolo HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
5 Desenvolvimento do Webspy
5.1
5.2
5.3
27
36
Mdulo de Varredura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
5.1.1
Desenvolvimento
5.1.2
Resultado
Mdulo de ARP
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
. . . . . . . . . . . . . . . . . . . . . . . . . . .
37
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
Spoong .
5.2.1
Desenvolvimento
5.2.2
Resultado
. . . . . . . . . . . . . . . . . .
41
Primeira verso . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
iv
5.3.2
5.4
5.5
Segunda verso
Mdulo de
Playback
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.4.1
Desenvolvimento
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.4.2
Resultado
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
. . . . . . . . . . . . . . . . . . . . . . . .
49
6 Concluso
52
Referncias
54
58
A.1
Conceitos de Criptograa . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
A.2
. . . . . . . . . . . . . . . . . . . . . . . .
59
A.3
Protocolo SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
A.3.1
. . . . . . . . . . . . . . . . . . .
61
. . . . . . . . . . . . . . . . . . .
62
. . . . . . . . . . . . . . . . . . .
65
. . . . . . . . . . . . . . . . . . .
65
. . . . . . . . . . . . . . . . . . .
65
A.3.2
A.3.3
A.3.4
A.3.5
Lista de Figuras
Webspy
1.1
1.2
Trfego de rede do
2.1
2.2
2.3
2.4
Funcionamento de um
2.5
Funcionamento de um
3.1
3.2
3.3
Divises de
Frame
bits
host
hub [16] . .
switch [16]
. . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
host
Webspy
. . . . . . . . . . . . . . . . . . . . . .
host
. . . . . . . . . . . . .
11
. . . . . . . . . . . . . . . . . . . .
11
B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
12
3.4
3.5
Varredura ARP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.6
Varredura Ping
18
3.7
Exemplo de ataque
. . . . . . . . . . . . . . . . . . . .
19
3.8
20
4.1
4.2
4.3
4.4
4.5
. . . . . . .
26
4.6
. . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.7
4.8
malicioso . . . . . .
34
5.1
38
5.2
. . . . . . . . .
38
. . . . . . . . . . .
40
. . . . . . . . . . .
40
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
man-in-the-middle
13
. . . . . . . . . . . . . . . . . . . . .
22
. . . . . . . . . . . . . . . . . . . . . .
23
. . . . . . . . . . . . . . . . . . . . .
24
26
proxy
sweep
5.4
Poison Engine ) . . . . . . . . .
Prtipo implementado que realiza ARP Poison e Relay
5.5
. . . .
42
5.6
. . . .
46
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.3
5.7
PlaybackRequests.wsy
5.8
Arquivo de congurao do
5.9
Opes do
menu
do
Webspy
Webspy
PlaybackCache.wsy
. . . . . . . . . . . . . . . . . . . . . .
50
. . . . . . . . . . . . . . . . . . . . . . . . . .
50
vi
5.10
Webspy
em funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webspy
Stripping
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xplico
50
51
- retirada
de [10] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
A.1
. . . . . . . . . . . .
59
A.2
59
A.3
61
A.4
63
A.5
vii
. . . . . . . . . . .
SSLCiphertext
. . . .
63
Lista de Tabelas
2.1
. . . . . . . . . . . . . . . . . . .
3.1
. . . . . . . . . . . . . . . . . . . . . . . .
11
3.2
14
3.3
15
4.1
. . . . . . . . . . . . . . . . . . . . .
4.2
Status codes
4.3
4.4
A.1
A.2
Cache-Control
24
. . . . . . . . . . . . . . . . .
24
. . . . . . . . . . . . . . . . .
30
https://paypal.com/main
de [28] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
Mensagens de alerta do
66
viii
- adaptada de [28]
. . . . . . .
35
Captulo 1
Introduo
Desde os primrdios, algumas das principais atividades do homem so: gerao, armazenamento e transmisso de informao. O surgimento dos computadores e sua constante
evoluo possibilitou produzir, armazenar e processar um grande volume de informaes
de maneira rpida e fcil. Essa capacidade tornou os computadores cada vez mais populares, fazendo com que ocupassem um papel essencial na vida de qualquer pessoa.
Apesar de tantas funcionalidades proporcionadas com a criao dos computadores,
eventualmente surgiu a necessidade de transmitir as informaes manipuladas por eles.
Nesse contexto, surgiram as redes de computadores, sendo a
Internet
Internet
a maior delas. A
que permite a comunicao entre quaisquer computadores que estejam conectados a ela,
tambm chamados de
hosts
Internet
de arquivos, entre outros, sendo o primeiro o foco deste trabalho. importante distinguir a
Internet
da
Web :
um sistema de documentos de hipertexto interligados que, por sua vez, podem ser
acessados pela
Internet.
O surgimento e difuso da
as domsticas,
tornou-se uma ferramenta muito verstil e poderosa. Porm, como no possvel garantir
que todos que a utilizam so bem intencionados, discute-se cada vez mais a necessidade
de ferramentas de monitoramento de seu uso.
1.1 Objetivos
Este trabalho busca apresentar uma aplicao para monitoramento do uso da
tempo real com foco em um
Webspy
host
volvido por
Dug Song
para plataformas
Linux
[34].
Webspy
dsni
desen-
Web em
Webspy
host
alvo).
3. Interceptar/encaminhar o trfego destinado ao
host
Web
Web
Web.
Internet
Webspy :
switch
dispositivo por meio de cabos. A Figura 1.2a, por sua vez, representa como ocorre o trfego
de rede para o
executa o
software
1.2 Metodologia
Para o desenvolvimento deste trabalho foram realizadas diversas atividades.
A pri-
meira consistiu na reviso terica dos conceitos bsicos de rede e tcnicas de ataque do
tipo
man-in-the-middle
intruder-in-the-middle.
Uma
da mquina atacante)
host
Webspy
do
Webspy
e os resultados obtidos.
Captulo 2
Rede e dispositivos de rede
Uma rede de computadores pode ser denida como uma infraestrutura de
software
hardware
hosts
ser classicadas quanto ao seu tamanho e abrangncia como mostra a Tabela 2.1.
por m, representa a rede que tem a capacidade de abragncia mxima, ou seja, o planeta
inteiro.
software, foi preciso estabelecer padres que denem como cada n ser
identicado na rede, como sero divididas as informaes transmitidas, qual e quando cada
n poder iniciar uma transmisso. Esses padres constituem um
protocolo de rede
que, conforme [38], dene o formato e a ordem das mensagens trocadas entre duas ou mais
entidades comunicantes, bem como as aes realizadas na transmisso e/ou recebimento
de uma mensagem ou outro evento.
Tipo de Rede
LAN
10 m a 1 km
MAN
10 km
WAN
100 km a 1000 km
Internet
10000 km
Essa
organizao permite que cada camada tenha um propsito especco e somente precise
saber lidar com as camadas diretamente abaixo e acima. Vrios modelos foram criados
Open
para padronizar como deveria ser a estrutura de camadas, sendo o modelo OSI (
fsicas dos dispositivos de rede para que possa ser realizada a transmisso de
bits
hosts
rede.
4. Transporte:
nais para as camadas superiores. O modelo OSI dene 5 classes que podem ser
implementadas por uma camada de transporte. Cada classe apresenta um conjunto
diferente de papis e servios disponibilizados, como controle de uxo, mecanismo
de retransmisso em
estruturas de representao de dados denindo uma maneira de intercambiar estruturas para chegar a uma estrutura comum que possa ser entendida por ambos
participantes do dilogo.
7. Aplicao: prov a principal interface para que programas possam utilizar os servios
de comunicao oferecidos pelas demais camadas.
J o modelo TCP/IP (tambm chamado de pilha TCP/IP) divido em 4 camadas
como denido em [31]:
1. Interface de rede (tambm chamada de camada de enlace): lida com a transmisso de
informao (codicada em
bits
pacotes)
Internet :
Figura 2.2: Camadas do modelo OSI comparadas com as camadas do modelo TCP/IP.
host
A Figura 2.1 apresenta as camadas do modelo TCP/IP e os protocolos que so utilizados em cada uma delas, enquanto que a Figura 2.2 mostra como o modelo TCP/IP
poderia ser mapeado no modelo OSI.
O modelo OSI muito importante por seu valor terico e didtico, pois foi elaborado
International Standards
Organization ).
ras implementaes mostraram que um modelo simplicado teria uma implantao mais
simples e, portanto, maior alcance.
(a) Barramento
(b) Estrela
compartilham o mesmo canal para transferncia de dados (pacotes). Para isso dene-se
um padro sendo que, para esta topologia, o mais conhecido o
para os outros dispositivos conectados a ela. Como desvantagens pode-se citar: o limite
do nmero de
o cabo
Uma rede com topologia em estrela tambm opera de acordo com o padro Ethernet.
Nesse esquema de rede, cada
hosts
de um cabo, formando assim uma estrutura em estrela como mostra a Figura 2.3b. O
dispositivo centralizador recebe as mensagens de todos outros dispositivos da rede e se
encarrega de encaminh-las aos destinatrios pretendidos. Essa estrutura uma das mais
utilizadas, principalmente em redes domsticas, pois a instalao e congurao fcil e
conveniente. No entanto, assim como na topologia em barramento, ainda existe um ponto
nico de falha: o dispositivo centralizador, tambm chamado de
Um dos primeiros dispositivos de rede criados foi o
hub.
dispositivo de rede.
dade de conectar mltiplos dispositivos Ethernet fazendo com que eles formem um nico
segmento de rede.
O
hub
um repetidor de sinal, isto , tudo que chega entrada de uma porta enviado sada
de todas as outras portas como mostra a Figura 2.4.
A diferena entre um
hub
e um
repetidor de sinal que o repetidor, por denio, possui somente duas conexes, ou seja,
conecta dois dispositivos apenas.
A simplicidade e ecincia (para redes pequenas) deste dispositivo o tornou muito
barato e consequentemente muito difundido.
hub
[16]
switch
[16]
colises de pacotes a um segmento, isto , uma seo da rede cujos dispositivos podem se
comunicar utilizando endereos de enlace.
Para o propsito visado por este trabalho (monitoramento de uso da
host
Internet
de um
especco de uma rede), esse dispositivo de rede perfeito, pois bastaria conectar
hub
hub
hub
host.
gicos tambm chamados de segmentos, como denido em [14]. Esse dispositivo possui um
esquema de portas parecido com o do
O funcionamento do
o trfego que chega em uma porta de entrada e determina para qual porta de sada
ele dever ser transmitido, portanto opera sobre a camada 2 (enlace). Alm disso, esse
aparelho registra quais dispositivos esto conectados em cada porta, o que permite realizar
um processamento muito mais ecaz.
A Figura 2.5 exemplica o funcionamento de um
switch
considerando a transmisso
hub
e um
switch
que o primeiro
atua somente no nvel de hardware (camada 1), enquanto que o ltimo opera em conjunto
com um software, uma implementao do protocolo Ethernet, o que caracteriza-o como
um dispositivo de camada 2 (enlace), conforme explicitado anteriormente.
Apesar de apresentar uma circuitaria muito mais avanada que a dos
ches
hubs,
os
swit-
rapidamente tomaram seu lugar como principal dispositivo de rede tanto para redes
Hubs e switches
hosts
hosts
dentro de um mesmo
Para que ocorra uma conexo desse tipo, preciso adotar uma forma de identicao
para cada n, de maneira que ela seja vlida entre sub-redes e no mais somente em uma
nica sub-rede. Para suprir essa necessidade foi criado o roteador, um dispositivo de rede
Um roteador pode ser descrito como um dispositivo de rede que encaminha pacotes
de dados entre redes de computadores, criando assim uma interconexo entre sub-redes.
Para isso, esse dispositivo gerencia endereos e rotas, isto , caminhos para se chegar a
um determinado endereo.
Captulo 3
Descoberta de Rede e ARP Spoong
A expresso descoberta de rede refere-se atividade de descoberta de quais dispositivos
esto conectados a uma rede e onde eles esto, isto , a partir de qual endereo eles podem
ser encontrados.
Address Resolution
deve possuir uma placa de rede que contm um endereo denominado endereo MAC
hardware
nico e
responsvel por identicar cada mquina dentro de uma mesma sub-rede. Um endereo
MAC possui 48
bits
separados por dois pontos, por exemplo: AA:AA:AA:AA:AA:AA), o que permite gerar
48
aproximadamente 2
combinaes diferentes. Esse nmero mais que suciente para
suportar a quantidade de dispositivos que necessitam acessar uma rede (e/ou a
Internet )
considerando que esse endereo utilizado apenas para identicao em uma sub-rede.
Cada dispositivo conectado a uma rede possui tambm um endereo cuja funo
identicar
32
bits
hosts de diferentes redes, como denido pelo protocolo IP. Esse endereo possui
hosts
mais utilizadas em LANs e a Figura 3.1 mostra como esto divididas cada classe.
Durante os clculos de nmero de redes e hosts, importante lembrar que devem ser
subtrados dois endereos que so reservados: o endereo rede/sub-rede (todos os
hostid
em 0) e o endereo de
broadcast
(todos os
bits
do
hostid
bits
do
em 1).
10
Classe
N de Redes
8
N de hosts
24
2 2 = 126
216 2 = 126
28 2 = 126
A
B
C
Notao
2 2 = 16777214
216 2 = 65534
28 2 = 254
bits
/8
/16
/24
termo dinmico refere-se ao fato de que essa traduo ocorre automaticamente sem que
o usurio nal ou o administrador do sistema precise tomar alguma atitude especca.
Este protocolo executado sob a camada 2 (enlace) e, portanto, os dados transmitidos devem apresentar o cabealho Ethernet, constituindo assim um
frame
como mostra
a Figura 3.2. Existem diversos formatos para o cabealho Ethernet, portanto ser considerado, neste trabalho, o padro proposto em [20].
Dessa forma, o cabealho deve possuir 18
de origem e destino, 2
bytes
bytes
bytes :
12
bytes
vericao de integridade.
Todo dispositivo conectado rede possui uma tabela que contm uma lista de mapeamentos de endereos denominada
cache
host
host
cache
frame
Ethernet.
Figura 3.2:
Frame
11
request )
para
(c) Atualizao de
Figura 3.3: Dilogo ARP para que um
host
host
cache
ARP
todos os
hosts
who-has,
broadcast ).
Essa
rede para o qual se quer saber o endereo de mquina e o endereo de rede da mquina
que faz a requisio.
reply ) para
frame da requisio ARP
Esta mensagem, por sua vez, conhecida como is-at e tambm
Quando o
host
host
B em seu
cache
host
host
de varredura, consideram-se todos os endereos vlidos de uma rede. Por exemplo, caso
a rede na qual ser feita a varredura seja uma rede de classe C, sabe-se que ela possuir
no mximo 254 dispositivos conectados.
A varredura consiste em injetar, na rede, requisies ARP para cada endereo de rede
disponvel. Dessa forma, se, ao se conectar em uma rede de classe C, o dispositivo que
12
hosts
gateways
(roteadores) e
As mensagens ICMP so transmitidas utilizando o protocolo IP, isto , so encapsuladas em um datagrama IP. Para isso, preciso adicionar o cabealho IP s mensagens.
Este, por sua vez, constitudo pelos campos mostrados na Figura 3.4 e explicados na
Tabela 3.2.
Uma mensagem ICMP possui tamanho varivel de acordo com o tipo de mensagem,
bytes possuem o mesmo formato para todos tipos: 1 byte para o tipo
da mensagem, 1 byte para o cdigo e 2 bytes para o checksum (que permite a vericao
porm os primeiros 4
de integridade da mensagem).
A Tabela 3.3 mostra algumas das diferentes mensagens ICMP e classica-as em mensagens de consulta (mensagens que pedem/apresentam alguma informao) e mensagens
de erro (mensagens que indicam alguma condio na qual foi vericada um erro).
13
Campo
Version
Header Length
Type of Service
Tamanho
Descrio
bits
4 bits
8
bits
Total Length
Id
Flags
bits
16 bits
3 bits
16
Fragment Oset
13
bits
throughput,
mxima conabilidade).
tamanho total do datagrama.
nmero de identicao do datagrama.
indicam condies especiais (ex:
More fragments ).
Don't Fragment,
indica qual parte da mensagem completa corresponde aquele datagrama (caso tenha ocorrido
Time to Live
(TTL)
Protocol Id
8
8
bits
bits
fragmentao).
limite superior de roteadores pelos quais o
datagrama deve poder passar.
identica o protocolo de camada imediatamente
superior que passou dados que sero encapsula-
Checksum
Source IP Address
Destination IP Address
Option
16
bits
bits
32 bits
32
varivel
14
Tipo
Cdigo
Descrio
echo reply
destination unreachable :
network unreachable
host unreachable
protocol unreachable
port unreachable
fragmentation needed but don't fragment bit set
source route failed
3
0
1
2
3
4
5
.
.
.
.
.
.
10
.
.
.
echo request
router advertisement
router solicitation
time exceeded
time to live equals 0 during transit
time to live equals 0 during reassembly
0
1
.
.
.
.
.
.
broadcast
.
.
.
.
.
.
Erro
.
.
.
11
.
.
.
Consulta
.
.
.
e consumo de toda a banda disponvel. Para evitar essa condio, o protocolo adota um
conjunto de regras que impedem a gerao de mensagens de erro ICMP em resposta a:
1. Uma outra mensagem de erro ICMP.
2. Um datagrama encapsulado por um
(isto ,
brodcast
frame
de camada 2).
broadcast
multicast
ou
broadcast ).
host
(endereo de
bytes
informaes que possam ser utilizadas para vericar a causa do erro. O funcionamento do
protocolo ICMP permitiu a criao do programa Ping, uma ferramenta capaz de fornecer
informaes sobre
hosts
host
echo request
receber uma mensagem de resposta ICMP. A mquina de destino envia uma mensagem
ICMP do tipo
echo reply
15
echo request.
Dessa forma, caso receba a mensagem de resposta, a mquina que executou o programa
Ping consegue determinar se a mquina de destino est ativa, bem como o
round-trip time,
que pode ser utilizado para estimar a distncia relativa entre as duas mquinas.
broadcast,
hosts da rede. A
mensagem echo request
de outras sub-redes que no a subrede na qual a mquina que executa o programa est
conectada.
Isto no pode ser feito com o ARP, pois ele um protocolo de camada 2 e, portanto,
no rotevel.
enviar mensagens
Quanto
a essas medidas, a varredura ARP mais eciente, tendo em vista que a maioria dos
rewalls
hosts
sub-rede e assim pode-se escolher uma vtima. O prximo passo interceptar o trfego
de rede da vtima e repass-lo a ela sem que ela perceba qualquer alterao.
Um ataque MitM ocorre sobre um meio de comunicao e tem como alvo duas entidades
que mantm uma comunicao.
A Figura 3.7 ilustra uma conversa entre Alice e Bob antes e durante a realizao de
um ataque MitM. Uma vez estabelecida a conversa, o atacante, denomidado John, inicia
o ataque. John consegue tanto o acesso ao contedo da conversa de Alice e Bob, quanto a
capacidade de adulterar os dados que passam por ele em qualquer direo. Sendo assim,
a realizao de um ataque MitM requer que o atacante:
1. Saiba como realizada a autenticao entre os alvos: caso Alice e Bob possuam um
protocolo para garantir que Alice fala realmente com Bob e vice-versa, preciso que
o atacante John seja capaz de forjar informaes de maneira a explorar vulnerabilidades desse protocolo - convencendo que Alice est falando com Bob ao falar com
John e que Bob est falando com Alice ao falar com John.
16
17
echo request
echo reply
18
(b) Conversa entre Alice e Bob (por meio de John) aps o ataque
Figura 3.7: Exemplo de ataque
man-in-the-middle
2. Tenha acesso ao canal: o atacante John deve conseguir entrar no meio do canal
(como sugere o nome do ataque) de forma que o uxo de dados que ui de Alice
para Bob e vice-versa no tenha como chegar a seu destinatrio pretendido sem
antes passar por ele.
3. Encaminhe as mensagens: como o atacante entra no meio do canal, passa a ser sua
responsabilidade o encaminhamento (ou no, conforme o objetivo do ataque) das
mensagens de Alice para Bob e vice-versa.
O ARP spoong
poisoning ) e o relay
3.4.1
ARP
poisoning
switch
Seja R um roteador/
e H um
redirecionar, para uma mquina atacante A, o trfego que iria de R para H e de H para
R.
Inicialmente, a subrede possui apenas os
hosts
R e H. Em seguida, o
host
hosts
atacante
O atacante
host
expirasse, aquele
host
e receberia uma resposta legtima, o que reestabeleceria o trfego normal. Essa repetio,
19
20
acaba facilitando a deteco deste tipo de ataque, pois gerado um uxo peridico de
respostas ARP como abordado em [41, 29, 12].
3.4.2
Relay
host
atacante.
H duas maneiras de fazer isso: de forma automtica ou de forma manual. Para realizar
o processo de forma automtica basta habilitar o roteamento de pacotes IP, uma congurao da implementao da pilha TCP/IP que vem desabilitada por padro nos sistemas
operacionais de propsito geral (
Windows
e distribuies
Linux ).
maneira oferece menos poder sobre os pacotes que esto sendo roteados, pois a pilha
TCP/IP se encarrega de tudo.
A outra maneira consiste em realizar manualmente a escuta dos pacotes e o encaminhamento injetando-os de volta na rede (desta vez com o endereo MAC de destino
correto). Dessa forma, a aplicao que realiza o ARP
spoong
e injeo de pacotes, porm ganha mais exibilidade quanto aos pacotes encaminhados
(pode-se adulter-los ou simplesmente deixar de enviar algum).
21
Captulo 4
Filtragem e visualizao do trfego Web
Utilizando o ARP
spoong
hosts
de
uma sub-rede. O prximo passo identicar e separar a parte desse uxo de dados que
refere-se navegao de pginas da
Web.
pouco mais sobre o protocolo de aplicao que permite a comunicao entre dispositivos
e a
Web.
com o protocolo HTTP. Dessa maneira, esses dados podem ser obtidos pelos clientes por
meio de requisies HTTP. Esse tipo de arquitetura conhecido como cliente/servidor,
como ilustra a Figura 4.1. O tipo mais comum de cliente HTTP so os navegadores
browsers ).
22
Web
4.1.1
Recursos
Cada servidor
Web
como URI (
Uma URI, por sua vez, pode ser uma URL (Uniform Resource Locator ) ou uma URN
Uniform Resource Name ). Uma URL descreve a localizao especca de um recurso em
um servidor Web, denindo: o protocolo a ser utilizado, o endereo do servidor (tambm
conhecido como hostname ) e o nome do recurso a ser buscado, como mostra a Figura 4.2.
(
Uma URN, por conseguinte, dene um nome nico para um recurso, independentemente
de onde ele se encontre. As URNs so pouco adotadas e ainda esto em fase experimental,
segundo [39].
4.1.2
Transaes e Mensagens
transao.
A Tabela 4.1
apresenta os principais mtodos e suas funes. Cada resposta HTTP, por sua vez, possui
um
status code :
23
Mtodo
Descrio
GET
solicita um recurso.
HEAD
PUT
POST
acrescenta um recurso.
DELETE
remove um recurso.
Tabela 4.2:
Cdigo
200
302
404
Status codes
Descrio
24
4.1.3
Conexo
Internet.
Full-duplex,
stream
bytes )
de dados (
Web
DNS um banco de dados distribudo que pode ser utilizado por aplicaes TCP/IP para
estabelecer um mapeamento entre
hostnames
Web :
hostname
hostname.
em um endereo IP.
:8080).
Web
correspondente.
6. Uma vez estabelecida a conexo, o navegador envia uma requisio HTTP ao servidor.
7. O servidor envia uma resposta HTTP ao navegador.
8. A conexo encerrada.
9. O navegador exibe a pgina recebida.
Apesar de aparentar um nico recurso, deve-se perceber que uma pgina HTML pode
ser na verdade um conjunto de recursos.
diversos recursos associados (arquivos Javascript, CSS, imagens, etc) que podem ou no
estar espalhados por diferentes servidores.
transao para recuperar o recurso base (aquele que referencia outros recursos) e, em
seguida, realizam uma srie de transaes para obter os recursos adicionais como ilustra
a Figura 4.5.
25
Figura 4.5: Recursos que compem uma pgina HTML - adaptada de [39]
26
4.1.4
Proxy
Servidores
Um servidor
proxy,
ou simplesmente
proxy,
um servidor
Web
mediar as requisies e respostas de um cliente durante sua conexo com outro servidor
Web.
destino nal. As respostas, por sua vez, seguem o caminho inverso. necessrio destacar
que os
acordo com seus prprios objetivos. Por isso, recomenda-se utilizar apenas os servidores
que possam ser considerados conveis.
Servidores
proxy
Web,
servidor
Web que se est acessando e esse registro pode ser utilizado para identicar
hackers
proxy
e no mais os do cliente.
proxy,
Web.
proxies )
sim possvel rastre-los, basta ter tempo e recursos sucientes para analisar os
registros de todos servidores utilizados.
2. Restrio de contedo: fcil perceber como os servidores
proxy
lizados para ltrar ou registringir contedo, basta denir uma lista de URLs ou
hostnames
cujo acesso se quer proibir. Dessa forma, quando uma requisio com
um destino que se encontra na lista for recebida, retorna-se uma pgina de erro ou
forbidden
proxy
- recurso proibido).
podem realizar o
caching
de determina-
das transaes HTTP (isto , salvar as respostas das requisies) para melhorar o
desempenho de acesso
Internet.
cache.
proxy
proxy
estiver perto do usurio que solicitou o recurso). Caso contrrio, ele realiza
cache.
host,
como demonstrado no
captulo 3.4, necessrio ltrar o trfego HTTP. Analisando o trfego a nvel de pacotes, a ltragem pode ser realizada selecionando apenas aqueles nos quais vericam-se as
seguintes condies:
1. IP de origem ou de destino o IP do
host
27
monitorado.
libpcap
gurar um ltro que realiza as vericaes listadas. No entanto, preciso lembrar que,
tipicamente, ferramentas de captura de pacotes escutam tanto os pacotes que chegam a
uma interface quanto os pacotes que saem dela.
Como o dispositivo que realiza o monitoramento (por meio do ataque man-in-themiddle ) utiliza a mesma interface para receber e encaminhar o trfego do roteador ao
host monitorado e vice-versa, a ferramenta de captura ir exibir pacotes duplicados. Para
remover as duplicatas, basta ltrar os pacotes pelo endereo MAC do host que realiza o
monitoramento.
Essa abordagem de ltragem, apesar de simples, acaba se tornando um tanto trabalhosa.
Um pacote possui seu tamanho limitado pelo MTU da rede que para o padro
Ethernet 1500 bytes. As mensagens HTTP so na prtica mensagens de texto e excedem com facilidade esse limite. Isso ocasiona a segmentao de pacotes TCP que deve ser
lidada pelo programa caso ele trabalhe a nvel de pacotes. Dessa forma, preciso coletar
e juntar todos os segmentos para ento extrair as mensagens HTTP enviadas.
Aps a ltragem, preciso ainda distinguir as requisies das respostas. Isso pode ser
feito vericando o IP de destino de cada pacote.
Se o IP for igual ao do
host
monito-
rado, sabe-se que esse pacote contm uma resposta HTTP, caso contrrio, contm uma
requisio.
Web
host
pginas HTML. Essa tarefa um pouco mais complicada, pois no possvel extrair essa
informao analisando apenas a requisio HTTP. A abordagem adotada, neste trabalho,
consiste em analisar a resposta de cada transao de acordo com os seguintes passos:
1. Se o cabealho da resposta possuir o valor text/html para o campo Content-type,
sabe-se que aquela resposta possui contedo HTML (porm no garante ainda que
contm uma pgina HTML).
2. Se a resposta estiver codicada em
4. Por m, realiza-se uma busca textual sobre os dados descompactados pelas sequncias de caracteres <html e </html>.
28
Ao identicar uma resposta que contm uma pgina HTML, recupera-se a requisio
associada e reconstri-se a URL que a originou. O ltimo passo consiste em acessar essa
URL utilizando um navegador local congurado para acessar o
proxy
anteriormente.
Web, que
proxy recebe
cache
Dessa forma, o
Web
trados que, por sua vez, correspondem aos dados que so enviados/recebidos pelo
host
monitorado.
Porm, muitas vezes, nem todos os dados necessrios para a visualizao so transmitidos, pois o protocolo HTTP prev diversos mecanismos de
caching
de recursos, como
proxy, porm
caching.
2. Quando o navegador realiza uma requisio ele primeiro verica se a verso que tem
armazenada vlida (recente o suciente). Se for, ele responde a requisio com os
dados armazenados sem transmit-la ao servidor pretendido.
3. Caso o navegador no tenha condies de determinar com certeza se sua verso
vlida, ele transmite a requisio ao servidor incluindo cabealhos que caracterizam
a verso que est no
cache.
4. O servidor, por sua vez, realiza suas prprias vericaes analisando os cabealhos
enviados na requisio e retransmite a resposta se conseguir determinar que a cpia
armazenada do recurso no vlida ou caso no consiga determinar sua validade.
Os cabealhos que tornam possvel o
caching
Cabealhos de requisio:
If-Modied-Since :
If-None-Match :
tag
cache.
tag
tags
que
29
Valor
no-store
no-cache
Cache-Control
Descrio
indica que uma cpia da resposta no dever ser armazenada.
indica ao gerenciador do
cache
resposta sem antes vericar com o servidor de origem se existe uma verso
mais recente. (este cabealho com esse valor pode ser usado tambm em
max-age
requisies).
dene um perodo como um nmero de segundos a partir da data de envio
da resposta dentro do qual o documento ainda ser considerado vlido.
Cabealhos de resposta:
Expires :
cache.
caching
Cache-control :
especica a poltica de
Pragma :
no-cache
Web
usurio mais uida, esse esquema constitui um obstculo para a realizao do monitoramento proposto por esse trabalho, pois arquivos presentes no
provavelmente no estaro no
host
cache
do
host
monitorado
que monitora.
If-Modied-Since
If-None-Match
quisies enviadas.
2. Adicionar/alterar os cabealhos
no-cache
Cache-Control e Pragma
com os valores
no-store
respectivamente.
3. Adicionar/alterar o cabealho
data antiga:
Para isso, foi preciso mudar a abordagem de ltragem, tendo em vista que apesar de
simples ela torna muito difcil a realizao das manipulaes necessrias.
A soluo encontrada foi adicionar outro servidor
proxy
proxy
30
host
externo
Portanto foi preciso encontrar uma ferramenta que possibilitasse esse tipo de manipulao e elaborar um esquema de redirecionamento.
O NAT um processo comumente implementado por roteadores cujo objetivo permitir que diferentes mquinas de uma mesma sub-rede conectem-se internet utilizando
um nico endereo IP. O processo consiste em alterar os dados de pacotes TCP/IP que
trafegam em duas direes como mostram as Figuras 4.6a e 4.6b:
1. De um
host
interno a um
host
host
host
host
externo, o rote-
proxy
foi
congurado.
Assim como no NAT, os dados alterados foram colocados em uma tabela para permitir
a alterao dos pacotes que seguem o caminho inverso. Esse processo por sua vez consiste
31
proxy
man-in-the-middle, o que permite capturar, visualizar e alterar todos os dados transmitidos em transaes HTTP.
tocolo HTTP seguro, de maneira que ele possa ser utilizado para realizar transaes
importantes como operaes bancrias ou armazenamento de arquivos condenciais.
Para alcanar esse objetivo, ele prev a adico de uma camada de transporte segura
acima do protocolo TCP, encapsulando assim o protocolo HTTP. Essa camada faz uso
de tcnicas de criptograa que buscam garantir que as mensagens enviadas so abertas
apenas pelos destinatrios pretendidos, bem como prover mecanismos para comprovar a
autenticidade de servidores.
Essas tcnicas so denidas pelo protocolos SSL/TLS (
Layer Security ).
trocam mensagens para estabelecer parmetros do protocolo SSL. Uma vez estabelecida
uma conexo SSL (comumente chamada de conexo segura), ambas as partes podem
enviar mensagens HTTP normalmente.
O uso do protocolo HTTPS opcional e determinado pelo prexo da URL de um
recurso.
De forma
feita para evitar que os servidores HTTP tentassem interpretar mensagens SSL como
mensagens HTTP, ocasionando assim um comportamento errneo.
Uma prtica muito utilizada que vem perdendo sua popularidade consiste em utilizar o
protocolo HTTPS apenas para transaes que envolvem recursos que exigem uma conexo
segura. Esse modelo faz sentido, pois estabelecer uma conexo SSL um processo muito
mais oneroso que estabelecer uma conexo TCP comum.
No entanto, essa prtica aliada ampla utilizao do protocolo HTTP acabam contribuindo para a exposio dos servidores
SSL
Stripping
Web
[25, 13]. Para entender essa tcnica, primeiro preciso entender o compor-
Web
32
Figura 4.7: Redirecionamento da requisio de um recurso que exige uma conexo segura
2. O servidor verica que o recurso solicitado s pode ser transmitido por meio de uma
conexo segura. Dessa forma, ele envia uma mensagem de redirecionamento (cdigo
de
status
301 ou 302) adicionando a URL que o cliente dever acessar para obter o
Location.
Location
e com
proxy
malicioso:
3. O servidor verica que o recurso solicitado requer uma conexo segura e envia a
mensagem de redirecionamento ao
4. O
proxy
proxy.
cujo protocolo HTTPS. Em seguida, ele estabelece uma conexo SSL legtima com
o servidor e reenvia a requisio HTTP.
5. O servidor agora recebe uma requisio por meio de uma conexo SSL e envia uma
resposta com o recurso solicitado.
6. O
proxy
host
proxy
proxy
feito para que o cliente exiba a URL mais prxima da URL relacionada ao recurso sendo
retornado.
33
proxy
malicioso
Conforme dito anteriormente, esta tcnica est centrada no fato de que a navegao de um usurio na
Internet
proxy,
links
ponto de vista do cliente, esses recursos somente sero carregados corretamente caso suas
URLs sejam transformadas de relativas em absolutas levando em considerao a URL
original (cujo prexo
https:// ).
Stripping
https://paypal.com/main.
simples e elegante. Apesar de existirem outras tcnicas que cumprem o mesmo objetivo, o
SSL
Stripping
uma das tcnicas que possui maior ndice de sucesso, conforme mostrado
34
Tabela
4.4:
Resultado
https://paypal.com/main
do
tratamento
URL
de
URLs
relativas
relacionadas
ao
recurso
Resultado
//paypal2.com/main https://paypal2.com/main
/menu/options
https://paypal.com/menu/options
video.wmv
https://paypal.com/video.wmv
2. A quantidade de pessoas que digitam o endereo dos sites vem diminuindo pois os
navegadores buscam cada vez mais facilitar o acesso e congurao de atalhos para
abrir as URLs mais frequentadas.
3. Alguns navegadores
Web
35
Captulo 5
Desenvolvimento do Webspy
O
Webspy
Windows
7 e 8.
Windows.
Ele foi
Webspy
cumprir seus objetivos e que nem todas estariam disponveis em uma linguagem de programao apenas. Por isso foi adotado um modelo de desenvolvimento em mdulos composto
de 5 etapas:
1. Diviso das funcionalidades propostas em mdulos.
2. Implementao de cada mdulo utilizando a linguagem mais conveniente.
3. Realizao de testes em cada um dos mdulos separadamente.
4. Integrao dos mdulos.
5. Realizao de testes de integrao.
Dessa forma, foram denidos 4 mdulos:
1. Mdulo de Varredura.
2. Mdulo de ARP
Spoong.
Playback.
sweep e ARP
sweep descritas
WinPcap
[9] e
libnet
36
5.1.1
Desenvolvimento
A inspirao inicial veio do programa Ping, que consiste em enviar uma requisio
ICMP, escutar um determinado tempo por uma uma resposta e repetir o processo 4
vezes.
O primeiro prottipo desenvolvido implementava o Ping
sweep.
meiramente seu prprio endereo IP e, assumindo que se encontra em uma rede de classe
C, iniciava o processo de envio de requisies para endereos IP com
hostid
de 1 a 254.
Esse processo consistia em enviar uma requisio ICMP e esperar 3 segundos por uma
resposta. Caso a resposta fosse detectada, o endereo IP de origem era exibido o IP era
marcado como conectado.
Essa abordagem, apesar de ecaz, era muito ineciente, tendo em vista que era preciso
esperar por um determinado tempo uma resposta e s ento enviar uma requisio para
o prximo IP.
Dessa forma, na segunda verso do prottipo, vericou-se que era possvel melhorar o
hosts descobertos,
porm percebeu-se que essa informao somente no era de muita ajuda, pois nem sempre
conhecido o IP do dispositivo que se quer monitorar.
Para resolver esse problema foi utilizada a API de
Sockets
do
recuperar um nome associado a um IP. Normalmente esse nome o nome dado ao dispositivo durante a instalao de seu Sistema Operacional (que costuma seguir o padro
NomeDono-PC ou NomeDono-Note).
5.1.2
Sweep
Spoong
host
37
Sweeper
Sweeper
38
sweep
5.2.1
Desenvolvimento
Poison
threads :
a primeira era
Relay ).
Web.
Web.
simples como a do
apresentavam um
Dessa maneira, decidiu-se fazer uma segunda verso do prottipo, na qual cada
thread
foi separada em um nico processo, porm o desempenho nao melhorou. O ltimo prottipo criado adotou outra abordagem: ele concetrava-se em realizar apenas o ARP
e, para realizar o
Poison
Relay
das
Spoong
disponveis na
Internet.
log organizado, o que permitiu acompanhar todos os passos realizados pela ferramenta,
Dessa maneira vericou-se que o Relay era feito utilizando
uma ferramenta de administrao do Windows chamada netsh.
Esse ferramenta era utilizada para o congurar o uso do NDP (Neighbor Discovery
Protocol ) [37]. Esse protocolo est, na verdade, associado verso 6 do protocolo IP
(porm funciona tambm com a verso 4) e permite que hosts se comuniquem e troquem
de
5.2.2
IPEnableRouter
para realizar o
Relay.
Resultado
Todos os prottipos implementados recebem, como entrada, o nome da interface (parmetro opcional) e o IP da vtima e, como sada, exibem o nmero de iteraes do ARP
Poison
Relay
threads.
39
Poison Engine )
40
Poison e Relay
Web
5.3.1
Primeira verso
Web.
Ape-
sar da idia ser simples, a implementao foi muito trabalhosa por tratar a questo da
ltragem a nvel de pacotes. Essa verso utilizou as seguintes bibliotecas:
1.
PcapDotNet
[2]:
wrapper
WinPcap
para C# da biblioteca
TrotiNet
[6]:
proxy
exibilidade.
3.
Selenium
Web
atuais.
Desenvolvimento
Inicialmente deniu-se uma arquitetura que permitesse a implementao da abordagem proposta, como mostra a Figura 5.5. O primeiro passo consistiu em inicializar um
servidor
proxy
che local.
ca-
ARP Spoong
host
que faz o
Spoong
payload
Em seguida,
bytes
do
payload
TCP em uma
string
41
42
Reassembler )
consistiu
em analisar cada transao de cada um dos uxos para vercar se foram coletados todos
os pacotes que continham uma resposta HTTP. Esses pacotes continham segmentos TCP
cuja ordem foi vericada para que fossem remontados. Isso foi feito porque a ferramenta
de captura no garante que a ordem de entrega ser mantida.
Uma vez remontada uma resposta HTTP, a transao considerada completa e
enviada ao
cache
do servidor
proxy.
cache
hash
de
Browser Manager
a analisava para
vericar se continha uma pgina HTML. Se essa condio fosse vericada, era recuperada
a URL da requisio correspondente resposta. Em seguida, o componente vericava se j
existia uma instncia do navegador
da URL recuperada.
Se existisse, a instncia era recuperada, caso contrrio era criada uma nova. Por m,
era transmitido um comando para que a instncia acessasse a URL.
ChromeDriver
Firefox
Thread
multi-thread.
de escuta de pacotes:
threads principais:
uxos.
43
2.
Thread
Thread
Browser Manager.
proxy : responsvel
servidor proxy que, por
do servidor
manuteno do
cache
thread
para cada
requisio recebida.
Alm disso, para melhorar o tempo de resposta do prottipo, o
Browser Manager
foi
implementado de maneira a gerar uma nova thread a cada resposta HTTP recebida.
Os testes utilizaram a ferramenta APE (pois ela tinha o melhor desempenho observado
at ento) e foram conduzidos da mesma maneira que no mdulo de ARP
Testes inciais revelaram a necessidade de implementar mecanismos de
envolvia um processo com muitas etapas e o fato de ser
log
Spoong.
bugs
com mais
timeouts
cache.
logs percebeu-se
ao acessar o
Analisando-se os
HTTP com maior velocidade que a velocidade de remontagem das respostas correspondentes.
cache, o proxy
timeouts
no qual, caso
Resultado
Finalizada a implementao, foram detectadas as limitaes dessa verso: algumas
pginas HTML apresentaram problemas de visualizao em funo do
caching de recursos
pelo navegador da vtima. Alm disso, pginas transmitidas com o protocolo HTTPS no
foram exibidas no navegador da mquina que realizou o monitoramento.
5.3.2
Segunda verso
Dessa forma, esta verso foi elaborada desde o comeo com o foco
TrotiNet e Selenium, ao
WinpkFilter [8] que permitiu
ltragem de trfego
as ferramentas
passo que a
biblioteca
HtmlAgilityPack
Desenvolvimento
O primeiro passo consistiu em trocar a abordagem de captura de pacotes pela abordagem de redirecionamento de pacotes. Inicialmente imaginou-se que uma ferramenta que
zesse NAT poderia ser congurada para realizar as manipulaes propostas na seo 4.4.
44
Sendo assim, iniciou-se uma busca por ferramentas capazes de realizar NAT, porm foram encontrados poucas alternativas que fossem compatveis com o
Windows.
Alm disso,
Webspy.
Em seguida, buscou-se bibliotecas que se especializassem no redirecionamento de pacotes e estivessem disponveis para
e a
WinpkFilter.
Windows.
WinDivert.
WinDivert
[7]
vericar se a biblioteca era capaz de alterar e encaminhar pacotes como esperado. Esse
prottipo foi inicialmente programado para redirecionar quaisquer pacotes recebidos em
uma interface. Os testes desse prottipo foram bem sucedidos e o prottipo funcionou
como esperado. Em seguida, alterou-se o prottipo para encaminhar os pacotes obtidos
pelo ARP
Spoong.
Winpk-
WinDivert,
porm, como as bibliotecas possuam APIs muito distintas, ainda foi preciso escrever uma
quantidade signicativa de cdigo adicional. O perodo de testes e desenvolvimento desse
prottipo foi muito maior que o da
Quando o prottipo cou pronto, vericou-se que o ele somente funcionava na verso
8 do
Windows.
da biblioteca, o
WinpkFilter
Windows.
Redirect
WinpkFilter.
Esse componente permitiu que o trfego interceptado pelo ARP spoong pudesse ser
redirecionado a um novo um servidor proxy (denominado Man-in-the-Middle Proxy ) cuja
que corresponde ao prottipo implementado com a biblioteca
host
cache
Stripping.
45
cache
46
Para implementar o SSL Stripping, foram criados dois componentes: o SSL Client e o
Response Stripper.
O SSL Client responsvel por estabelecer uma conexo utilizando o protocolo SSL.
O processo de estabelecimento de uma conexo SSL no precisou ser implementados, pois
o framework .NET j disponibilizava classes que encapsulam essa funcionalidade.
No
entanto, foi preciso lidar com todo o processo de envio e recepo de mensagens HTTP
que, apesar de trabalhoso, no difcil.
Durante o processo de desenvolvimento desse componente, foi preciso realizar algumas
mudanas na biblioteca
TrotiNet.
Client
disso, foi detectado que, por uma falha de implementao, a biblioteca era capaz de alterar
apenas um pequeno conjunto cabealhos das mensagens HTTP. Uma vez resolvidas essas
questes o desenvolvimento do componente seguiu normalmente.
O
Response Stripper, por sua vez, responsvel por realizar modicaes em mensa-
gens HTTP, conforme descrito na seo 4.5. A abordagem elaborada inicialmente utilizava
expresses regulares para identicar e realizar alteraes de maneira eciente.
No entanto, durante a realizao de testes com pginas HTML variadas, vericou-se
que muitas apresentam contedo HTML mal formatado (porm vlido), o que dicultava
a construo de expresses regulares que funcionassem em todos os casos possveis.
Para resolver esse problema, foi utilizada a biblioteca
alizar o
parse
HtmlAgilityPack
capaz de re-
Resultado
O problema gerado pelo
caching
monitoramento foi resolvido com sucesso por esta verso e no foi detectado nos testes
realizados. No entanto, a visualizao de pginas que utilizam o protocolo HTTPS no
funcionou em todos os testes, pois no houve muito tempo para o desenvolvimento do
SSL
Stripping
e, portanto, sua implementao foi bem bsica. Alm disso, essa tcnica
Playback
nitoradas de acordo com a ordem em que foram acessadas pelo alvo do monitoramento.
Esse foi o mdulo mais simples de ser implementado e tambm foi desenvolvido em C#.
47
PlaybackRequests.wsy
5.4.1
PlaybackCache.wsy
Desenvolvimento
cache
cache
armazenado.
Alm de armazenar o
cache,
navegador
cache
URLs recuperadas e por m percorria a lista enviando cada URL ao navegador local de
acordo com um intervalo informado pelo usurio.
5.4.2
Resultado
O mdulo de
Playback
48
Web
capturadas
Webspy.
Playback.
Spoong,
standalone
Spoong
foi facilitada
log
em duas verses:
Windows
7.
WinPcap
e o navegador
Firefox.
driver
caching
de recursos.
Windows
stripping.
WinpkFilter
e o navegador
Firefox.
NET FraAdicional-
cookies
Stripping
cookies
Webspy
meio um arquivo de congurao que utiliza a linguagem XML como mostra a Figura 5.8.
Caso o arquivo no esteja presente, o programa exibe mensagens que coletam os dados
necessrios.
A Figura 5.9 mostra o menu da ltima verso do
1. ARP
2.
3.
4.
5.
Webspy
uma pgina HTTP interceptada e a Figura 5.11 exibe a comparao entre uma pgina
HTTPS e sua verso HTTP gerada aps a realizao do SSL
49
Stripping.
Figura 5.10:
Webspy
50
menu
do
Webspy
Webspy
em funcionamento
PayPal
PayPal
aps o SSL
Stripping
Figura 5.11: Comparao entre uma pgina antes e aps a realizao do SSL
pelo
Webspy
51
Stripping
Captulo 6
Concluso
O objetivo deste trabalho discutir conceitos e teorias que permitem a construo
de uma ferramenta que utiliza a tcnica de ataque conhecida como ARP
Spoong
com
Webspy
foi implementada com sucesso e foram geradas duas verses cujas funciona-
Spoong
nhecida, continua sendo vivel utiliz-la para realizar monitoramento (assim como ataques
extremamente invasivos). Isso reete uma despreocupao e desinformao por parte dos
fabricantes de
switches
ataque j foram apresentados, como pode ser visto em [12, 29, 24].
A idia de utilizar ferramentas de captura de pacotes para a realizao de monitoramento tambm j foi explorada em diversas aplicaes, sendo uma das mais notveis o
Xplico [10].
O Xplico uma ferramenta Open Source
captura de pacotes. A Figura 6.1 ilustra como essa ferramenta organiza os dados obtidos
de uma captura.
O
Xplico
Webspy
52
Figura 6.1:
de [10]
53
Xplico
- retirada
Referncias
[1] Html Agility Pack. Disponvel em http://htmlagilitypack.codeplex.com/, Acessado
em: julho de 2013. 44
[2] Pcap.Net. Disponvel em http://pcapdotnet.codeplex.com/, Acessado em: julho de
2013. 41
[3] Selenium - Web Browser Automation. Disponvel em http://docs.seleniumhq.org/,
Acessado em: julho de 2013. 41
[4] TCPDUMP/LIBPCAP public repository. Disponvel em http://www.tcpdump.org/,
Acessado em: julho de 2013. 28
[5] The
Libnet
Packet
Construction
Library.
Disponvel
em
1.0:
Windows
Packet
Divert.
Disponvel
em
The
industry-standard
windows
packet
library.
Disponvel
em
Disponvel em
Addressing the weak link between layer 2 and layer 3 in the Internet ar-
54
[13] Kefei Cheng, Meng Gao, and Ruijie Guo. Analysis and Research on HTTPS Hijacking
Attacks. In
'10, pages 223226, Washington, DC, USA, 2010. IEEE Computer Society. 32, 34
[14] Tamara Dean.
Network Warrior.
[17] Jiang Du, Xinghui Li, and Hua Huang. A Study of Man-in-the-Middle Attack Based
Proceedings of the 2011 First International Conference on Instrumentation, Measurement, Computer, Communication and Control,
IMCCC '11, pages 445448, Washington, DC, USA, 2011. IEEE Computer Society.
2
[18] Francis P. Egevang K. The IP Network Address Translator (NAT), May 1994. RFC
1631. 31
[19] Roy Fielding. Hypertext Transfer Protocol HTTP/1.1, June 1999. RFC 2616. 28
[20] C. Horning.
16, 52
BlackHat Conference,
2009. 32
[26] Robert M. Metcalfe and David R. Boggs. Ethernet: distributed packet switching for
local computer networks.
[27] Nick Nikiforakis, Yves Younan, and Wouter Joosen. HProxy: client-side detection of
55
In
Computer Society. 35
[31] Adolfo Rodriguez, John Gatrell, and Roland Peschke.
Overview.
Prentice-Hall, Inc., Upper Saddle River, NJ, USA, 7th edition, 2001. 5
[33] IEEE Computer Society. IEEE Standard for Local and Metropolitan Area Networks:
Media Access Control (MAC) Bridges, 1998. IEEE 802.1D. 8
[34] Dug Song. dsni. Disponvel em http://www.monkey.org/ dugsong/dsni/, Acessado
em: julho de 2013. 1
[35] W. Richard Stevens.
Addison-Wesley
Longman Publishing Co., Inc., Boston, MA, USA, 1st edition, 1993. viii, 10, 15, 25
[36] Douglas R. Stinson.
Computer Networks.
InfoSecCD '09, pages 6066, New York, NY, USA, 2009. ACM. 16
[41] Zouheir Trabelsi and Wassim El-Hajj. On investigating ARP spoong security solutions.
[42] Ruben
Unteregger.
APE
The
ARP
Poisoning
Engine.
21
Disponvel
em
http://www.megapanzer.com/2012/04/11/ape-the-arp-poisoning-engine/, Acessado
em: julho de 2013. 39
56
[43] Geon Yoon, Dae Hyun Kwon, Soon Chang Kwon, Yong Oon Park, and Young Joon
Lee. Ring Topology-based Redundancy Ethernet for Industrial Network. In
ICASE, 2006. International Joint Conference, pages 1404 1407, oct. 2006.
SICE-
[44] Sendong Zhao, Ding Wang, Sicheng Zhao, Wu Yang, and Chunguang Ma. Cookie-
Systems Interconnection.
apr 1980. 5
57
Apndice A
Criptograa e protocolo SSL
As tcnicas descritas no captulo 3.4 permitem interceptar e visualizar de maneira
clara o trfego de rede de um determinado
host
CM
e:M C
e1 :
tal que:
kP U B , kP RIV .
Uma vez denida a cifra, pode-se denir um algoritmo de cifra: uma implementao
de uma cifra
tal que
f : K M K C,
m,
isto , calcula
58
onde:
e(m) = c.
decifra um criptograma
c,
isto , calcula
e1 (m) = m.
a partir de
sem
do sigilo da chave
f,
mas sim
e do espao de chaves
ser grande.
kP U B ,
a chave pblica e
kP RIV ,
projeto de
a partir de
escolha
grande.
As Figuras A.1 e A.2 demonstram como podem ser utilizados os esquemas simtrico e
assimtrico, respectivamente, no processo de cifragem de mensagens. O esquema simtrico
exige o sigilo da chave
A chave pblica
kP U B
kP RIV
e a integridade
remetente que necessitar transmitir mensagens para o destinatrio, que, por sua vez, ir
utilizar a chave privada
kP RIV
posse exclusiva do destinatrio e ela no poder ser derivada a partir da chave pblica em
tempo vivel garante que uma terceira pessoa que tenha acesso ao criptograma no ter
acesso ao contedo da mensagem que foi transmitida.
59
O objetivo principal do
Dessa forma, um
kP U B e kP RIV
Dessa
forma, o sigilo da chave privada no pode ser garantido, o que destri toda a segurana
e conabilidade que o esquema deveria prover. No entanto, supe-se, neste trabalho, que
ocorre o caso ideal no qual o usurio gera seu prprio par de chaves.
O esquema de assinatura digital, por sua vez, busca estabelecer em documentos digitais
as mesmas funes semiolgicas que a assinatura de punho realiza em documentos fsicos.
1. Inforjabilidade: uma entidade vericadora consegue determinar a autoria de uma
assinatura em um documento.
2. Inviolabilidade: conana da entidade vericadora quanto integridade de um documento vinculado a uma assinatura.
3. Irrecuperabilidade: conana na inviabilidade do reuso de uma assinatura de um
documento em outro.
4. Irrefutabilidade:
pelo autor.
Para assinar digitalmente um documento, necessrio que o signatrio possua um
certicado digital. Com ele, o titular capaz de assinar o documento utilizando sua chave
privada, cuja posse exclusivamente sua e qualquer pessoa que tenha acesso sua chave
pblica pode vericar se a assinatura vlida ou no. importante lembrar, que o que
de fato assinado o
hash
garantir que no seja possvel alterar o documento aps ele ter sido assinado.
60
tenticidade e integridade de origem entre duas aplicaes que desejam estabelecer uma
conexo. Ele funciona como uma camada intermediria entre a camada de transporte e
a de aplicao como mostra a Figura A.3.
SSL Record
Protocol no nvel 1 e SSL Handshake Protocol, SSL Change Cipher Spec Protocol, SSL
Alert Protocol e Application Data Protocol no nvel 2.
O SSL na verdade um conjunto de 5 protocolos distribudos em 2 nveis:
A.3.1
O
nvel 2 do SSL. O primeiro passo realizado consiste na diviso dos dados em blocos de
214
(ou menos) denominadas fragmentos. Cada bloco ento empacotado em uma
bytes
estrutura denominada
SSLPlainText.
SSLPlainText
Em seguida, a estrutura
SSLCompressed
denominada
SSLPlainText
convertida na estrutura
cipher spec.
Essa congurao dene um par de algoritmos que sero utilizados para realizar autenticao (clculo de
Tabela A.1:
Cipher suites
de [28]
Nome
Troca de Chaves
SSL_NULL_WITH_NULL_NULL
SSL_RSA_WITH_NULL_MD5
SSL_RSA_WITH_NULL_SHA
SSL_RSA_EXPORT_WITH_RC4_40_MD5
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_RC4_128_SHA
SSL_RSA_EXPORT_WITH_RC2_CBC_40 MD5
SSL_RSA_WITH_IDEA_CBC_SHA
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_DSS_WITH_DES_CBC_SHA
SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA
SSL_DH_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_RSA_WITH_DES_CBC_SHA
SSL_DH_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_DSS_WITH_DES_CBC_SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_RSA_WITH_DES_CBC_SHA
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
SSL_DH_anon_WITH_RC4_128_MD5
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_anon_WITH_DES_CBC_SHA
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
SSL_FORTEZZA_KEA_WITH_NULL_SHA
SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA
SSL_FORTEZZA_KEA_WITH_RC4_128_SHA
cipher suite
Cifragem
NULL
RSA
RSA
RSA_EXPORT
RSA
RSA
RSA_EXPORT
RSA
RSA
RSA
RSA
DH_DSS_EXPORT
DH_DSS
DH_DSS
DH_RSA_EXPORT
DH_RSA
DH_RSA
DHE_DSS_EXPORT
DHE_DSS
DHE_DSS
DHE_RSA_EXPORT
DHE_RSA
DHE_RSA
DH_anon_EXPORT
DH_anon
DH_anon
DH_anon
DH_anon
FORTEZZA_KEA
FORTEZZA_KEA
FORTEZZA_KEA
cipher suite.
Autenticao
NULL
NULL
NULL
RC4_40
RC4_128
RC4_128
RC2_CBC_40
IDEA_CBC
EXPORT_DES40_CBC
DES_CBC
3DES_EDE_CBC
DES40_CBC
DES_CBC
3DES_EDE_CBC
DES40_CBC
DES_CBC
3DES_EDE_CBC
DES40_CBC
DES_CBC
3DES_EDE_CBC
DES40_CBC
DES_CBC
3DES_EDE_CBC
RC4_40
RC4_128
DES40_CBC
DES_CBC
3DES_EDE_CBC
NULL
FORTEZZA_CBC
RC4_128
NULL
MD5
SHA
MD5
MD5
SHA
MD5
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
SHA
MD5
MD5
SHA
SHA
SHA
SHA
SHA
SHA
So denidas 31 combinaes de
hash
denida na
cipher suite.
O MAC e a es-
SSLCiphertext.
A ltima
etapa consiste na adio de um cabealho estrutura cifrada que contm 3 campos como
mostra a Figura A.5:
1. Tipo: indica a qual protocolo de nvel 2 do SSL se referem os dados da estrutura.
2. Verso: indica qual verso do protocolo SSL est sendo usada.
3. Tamanho: indica o comprimento em
O processo completo realizado pelo
A.3.2
O
bytes
da estrutura
SSLCiphertext.
62
cipher suites.
63
SSLCiphertext
CLIENTHELLO.random.
CLIENTHELLO
CLIENTHELLO,
cipher suite
supor-
cipher suite
aleatria do servidor
a do cliente), a opo
(b) Caso o servidor deseje autenticar-se (o que geralmente acontece), uma mensagem
CERTIFICATE
CERTIFICATEREQUEST
CERTIFICATEREQUEST, envia uma menCERTIFICATE semelhante que recebeu do servidor, porm com o seu
CLIENTKEYEXCHANGE
nmero aleatrio de 46
bytes
que contm o
pre-master secret,
um
master secret
que, por
CHANGECIPHERSPEC
FINISHED para
SSL Change
cipher suite
escolhida.
CHANGECIPHERSPEC
SSL Change
64
cipher suite
escolhida.
O processo para retomar uma conexo j existente uma simplicao desse processo:
1. O cliente envia para o servidor uma mensagem
CLIENTHELLO,
porm adiciona a
cache
SERVERHELLO
CHANGECIPHERSPEC.
FINISHED.
com o ID da sesso.
handshake
A.3.3
CHANGECIPHERSPEC
que indica a
cipher spec
quentes. Esse protocolo permite que o estado da conexo SSL seja alterado sem que seja
necessrio realizar uma renegociao da conexo.
A.3.4
O
SSL Alert Protocol permite que as entidades comunicantes possam trocar mensagens
de alerta.
tabela A.2:
Essas mensagens so utilizadas para deteco e tratamento de erros durante a conexo
SSL, sendo que alguns deles (os erros fatais) ocasionam o trmino da sesso.
A.3.5
Record Protocol
e vice-versa.
65
SSL
Alerta
close_notify
- adaptada de [28]
Cdigo
Nvel
Descrio
Aviso
unexpected_message
10
Fatal
bad_record_mac
20
Fatal
decompression_failure
30
Fatal
handshake_failure
40
Fatal
no_certicate
41
Aviso
bad_certicate
42
Aviso
unsupported_certicate
43
Aviso
certicate_revoked
44
Aviso
certicate_expired
45
Aviso
certicate_unknown
46
Aviso
Remente notica o destinatrio que ocorreu algum problema durante o processamento do certicado recebido.
illegal_parameter
47
Fatal
66
handshake
se en-