
Explorador de tráfego HTTP malicioso

CapTipper v0.3: http://www.omriher.com/2015/08/captipper-v03-is-out.html
CapTipper v0.2: http://www.omriher.com/2015/03/captipper-02-released.html
CapTipper v0.1: http://www.omriher.com/2015/01/captipper-malicious-http-traffic.html
CapTipper é uma ferramenta em Python para analisar, explorar e reviver tráfego HTTP malicioso.
O CapTipper cria um servidor web que atua exatamente como o servidor no arquivo PCAP,
e contém ferramentas internas, com um poderoso console interativo, para análise e inspeção dos hosts, objetos e conversas encontradas.
A ferramenta oferece ao pesquisador de segurança fácil acesso aos arquivos e compreensão do fluxo de rede,
e é útil ao tentar pesquisar exploits, pré-condições, versões, ofuscações, plugins e shellcodes.
Alimentar o CapTipper com uma captura de tráfego drive-by (ex.: de um exploit kit) exibe ao usuário as URIs das requisições enviadas e os metadados das respostas.
Nesse ponto, o usuário pode navegar para http://127.0.0.1/[host]/[URI] e receber a resposta no navegador.
Além disso, um shell interativo é iniciado para investigação mais aprofundada usando vários comandos como: hosts, hexdump, info, ungzip, body, client, dump e mais...
Documentação: http://captipper.readthedocs.org
Atualização de 02-Out-2020:
O CapTipper agora suporta Python3 e pode ser encontrado no seguinte branch: https://github.com/omriher/CapTipper/tree/python3_support

Usage: ./CapTipper.py <PCAP_file> [-p] [web_server_port=80]
Vamos analisar o seguinte PCAP de infecção drive-by do Nuclear EK [2014-11-06-Nuclear-EK-traffic.pcap](http://malware-traffic-analysis.net/2014/11/06/2014-11-06-Nuclear-EK-traffic.pcap.zip)```sh
C:\CapTipper> CapTipper.py "C:\NuclearFiles\2014-11-06-Nuclear-EK-traffic.pcap"
CapTipper v0.1 - Malicious HTTP traffic explorer tool
Copyright 2015 Omri Herscovici <[email protected]>
[A] Analyzing PCAP: C:\NuclearFiles\2014-11-06-Nuclear-EK-traffic.pcap
[+] Traffic Activity Time: Thu, 11/06/14 17:02:35
[+] Conversations Found:
0: / -> text/html (0.html) [5509 B]
1: /wp-includes/js/jquery/jquery.js?ver=1.7.2 -> application/javascript (jquery.js) [39562 B]
2: /seedadmin17.html -> text/html (seedadmin17.html) [354 B]
3: /15c0b14drr9f_1_08282d03fb0251bbd75ff6dc6e317bd9.html -> text/html (15c0b14drr9f_1_08282d03fb0251bbd75ff6dc6e317bd9.html) [113149 B]
4: /wp-content/uploads/2014/01/MetroWest_COVER_Issue2_Feb2014.jpg -> image/jpeg (MetroWest_COVER_Issue2_Feb2014.jpg) [350008 B]
5: /images/footer/3000melbourne.png -> image/png (3000melbourne.png) [2965 B]
6: /images/footer/3207portmelbourne.png -> image/png (3207portmelbourne.png) [3092 B]
7: /wp-content/uploads/2012/09/background1.jpg -> image/jpeg (background1.jpg) [33112 B]
8: /00015d76d9b2rr9f/1415286120 -> application/octet-stream (00015d76.swf) [31579 B]
9: /00015d766423rr9f/1415286120 -> application/pdf (XykpdWhZZ2.pdf) [9940 B]
10: /00015d76rr9f/1415286120/5/x00809070554515d565b010b03510053535c0505;1;6 -> application/octet-stream (5.exe) [139264 B]
11: /00015d76rr9f/1415286120/5/x00809070554515d565b010b03510053535c0505;1;6;1 -> application/octet-stream (5.exe) [139264 B]
12: /00015d76rr9f/1415286120/7 -> application/octet-stream (7.exe) [139264 B]
13: /00015d761709rr9f/1415286120 -> application/octet-stream (00015d76.swf) [8064 B]
14: /00015d76rr9f/1415286120/8 -> application/octet-stream (8.exe) [139264 B]
[+] Started Web Server on http://localhost:80
[+] Listening to requests...
CapTipper Interpreter
Type 'open <conversation id>' to open address in browser
type 'hosts' to view traffic flow
Type 'help' for more options
CT>
A Inicialização gera as conversas encontradas entre o cliente e o servidor no seguinte formato:
[ID] : URI DA REQUISIÇÃO -> TIPO DE RESPOSTA DO SERVIDOR (NOME DO ARQUIVO) [TAMANHO EM BYTES]
ID: Um ID atribuído à conversa específica
URI DA REQUISIÇÃO: A URI que foi enviada ao servidor na requisição GET
TIPO DE RESPOSTA DO SERVIDOR: O content-type retornado no cabeçalho de resposta do servidor
NOME DO ARQUIVO: O nome do arquivo pode ser algumas coisas:
TAMANHO EM BYTES: Tamanho do corpo da resposta
Após a Inicialização, 2 coisas ocorrem:
O interpretador contém ferramentas internas para investigação adicional dos objetos no pcap.
Abrir uma URI no navegador é simplesmente digitando 'open' junto com o id do objeto```sh CT> open 0 CT> log [2015-01-09T18:01:28.878000] 127.0.0.1 : GET / HTTP/1.1
* Nenhum dos comandos (exceto 'open') realmente requer que o servidor esteja em execução. Você pode desligar o servidor digitando 'server off' ou adicionando -s ao chamar o CapTipper.
Vamos ver o que podemos descobrir sem usar o navegador.
Primeiro, teremos uma visão geral do tráfego usando o comando 'hosts'```sh
CT> hosts
Found Hosts:
www.magmedia.com.au
├-- / [0]
├-- /wp-includes/js/jquery/jquery.js?ver=1.7.2 [1]
├-- /wp-content/uploads/2014/01/MetroWest_COVER_Issue2_Feb2014.jpg [4]
├-- /images/footer/3000melbourne.png [5]
├-- /images/footer/3207portmelbourne.png [6]
└-- /wp-content/uploads/2012/09/background1.jpg [7]
pixeltouchstudios.tk
└-- /seedadmin17.html [2]
grannityrektonaver.co.vu
├-- /15c0b14drr9f_1_08282d03fb0251bbd75ff6dc6e317bd9.html [3]
├-- /00015d76d9b2rr9f/1415286120 [8]
├-- /00015d766423rr9f/1415286120 [9]
├-- /00015d76rr9f/1415286120/5/x00809070554515d565b010b03510053535c0505;1;6 [10]
├-- /00015d76rr9f/1415286120/5/x00809070554515d565b010b03510053535c0505;1;6;1 [11]
├-- /00015d76rr9f/1415286120/7 [12]
├-- /00015d761709rr9f/1415286120 [13]
└-- /00015d76rr9f/1415286120/8 [14]
Parece que www.magmedia.com.au é o site comprometido.
Ao cruzar essas informações com os tipos de arquivo que obtivemos na lista de conversas, parece que grannityrektonaver.co.vu é o host infectante.
Então, o que é pixeltouchstudios.tk ?
Bem, sabendo como os exploit-kits geralmente funcionam, este é provavelmente o servidor TDS (Sistema de Distribuição de Tráfego).
Vamos dar uma olhada mais de perto.
Podemos imprimir o cabeçalho e o corpo da página digitando 'head' e 'body':```sh CT> head 2 Displaying header of object 2 (seedadmin17.html):
HTTP/1.1 302 Found Server: nginx Date: Thu, 06 Nov 2014 15:02:38 GMT Content-Type: text/html; charset=iso-8859-1 Content-Length: 354 Connection: keep-alive Set-Cookie: ehihm=YocADE3AAIAAgCvjVtU_.vjVtUQAABAAAAr41bVAA-; expires=Fri, 06-Nov-2015 15:03:11 GMT; path=/; domain=pixeltouchstudios.tk Location: http://grannityrektonaver.co.vu/15c0b14drr9f_1_08282d03fb0251bbd75ff6dc6e317bd9.html
CT> body 2 Displaying body of object 2 (seedadmin17.html) [256 bytes]:
302 FoundThe document has moved here.
Vemos que o objeto 2 retorna um 302 redirection para o host infectante. Portanto, nossa hipótese provavelmente estava correta.