Este é o comando ssltap que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
ssltap - Toque em conexões SSL e exiba os dados que passam
SINOPSE
ssltap [-fhlsvx] [-p porta] [nome do host: porta]
STATUS
Esta documentação ainda está em andamento. Por favor, contribua para a revisão inicial em
Mozilla NSS erro 836477
DESCRIÇÃO
A ferramenta de depuração SSL ssltap é um proxy de linha de comando com reconhecimento de SSL. Ele observa TCP
conexões e exibe os dados que passam. Se uma conexão for SSL, a exibição de dados
inclui registros SSL interpretados e handshaking
OPÇÕES
-f
Ative a impressão sofisticada. A saída é impressa em HTML colorido. Dados enviados do cliente
para o servidor está em azul; a resposta do servidor está em vermelho. Quando usado com o modo de loop,
as diferentes conexões são separadas por linhas horizontais. Você pode usar esta opção
para carregar a saída em um navegador.
-h
Ative a impressão hex / ASCII. Em vez de enviar dados brutos, o comando interpreta
cada registro como uma linha numerada de valores hexadecimais, seguidos pelos mesmos dados que ASCII
personagens. As duas partes são separadas por uma barra vertical. Os caracteres não imprimíveis são
substituído por pontos.
-l prefixo
Ative o loop; ou seja, continue a aceitar conexões em vez de parar depois de
a primeira conexão está completa.
-p porta
Altere a porta de rendezvous padrão (1924) para outra porta.
A seguir estão os números de porta conhecidos:
*HTTP80
*HTTPS 443
*SMTP25
*FTP 21
*IMAP 143
* IMAPS 993 (IMAP sobre SSL)
*NNTP 119
* NNTPS 563 (NNTP sobre SSL)
-s
Ative a análise e decodificação SSL. A ferramenta não detecta automaticamente sessões SSL.
Se você estiver interceptando uma conexão SSL, use esta opção para que a ferramenta possa detectar
e decodificar estruturas SSL.
Se a ferramenta detectar uma cadeia de certificados, ela salva os certificados codificados por DER em
arquivos no diretório atual. Os arquivos são nomeados cert.0x, onde x é a sequência
número do certificado.
Se a opção -s for usada com -h, duas partes separadas serão impressas para cada registro: o
saída hexadecimal / ASCII simples e a saída SSL analisada.
-v
Imprima uma string de versão para a ferramenta.
-x
Ative dumps hexadecimais SSL extras.
USO E EXEMPLOS
Você pode usar a ferramenta de depuração SSL para interceptar qualquer informação de conexão. Embora você
pode executar a ferramenta em sua forma mais básica, emitindo o comando ssltap sem outras opções
do que hostname: port, as informações que você obtém desta forma não são muito úteis. Por exemplo,
suponha que sua máquina de desenvolvimento seja chamada de interceptação. A maneira mais simples de usar a depuração
ferramenta é executar o seguinte comando em um shell de comando:
$ssltapwww.netscape.com
O programa aguarda uma conexão de entrada na porta padrão 1924. Em seu navegador
janela, insira o URL http://intercept: 1924. O navegador recupera a página solicitada de
o servidor em www.netscape.com, mas a página é interceptada e passada para o navegador
pela ferramenta de depuração na interceptação. No caminho para o navegador, os dados são impressos no
shell de comando a partir do qual você emitiu o comando. Dados enviados do cliente para o servidor
está rodeado pelos seguintes símbolos: -> [dados] Dados enviados do servidor para o
cliente está rodeado pelos seguintes símbolos: "seta para a esquerda" - [dados] O fluxo de dados brutos
é enviado para a saída padrão e não é interpretado de forma alguma. Isso pode resultar em peculiar
efeitos, como sons, flashes e até mesmo travamentos da janela do shell de comando. Para produzir
uma interpretação básica dos dados para impressão, use a opção -h ou, se você estiver procurando
em uma conexão SSL, a opção -s. Você notará que a página que você recuperou parece
incompleto no navegador. Isso ocorre porque, por padrão, a ferramenta fecha após o
a primeira conexão é concluída, então o navegador não é capaz de carregar imagens. Para fazer a ferramenta
continue a aceitar conexões, ative o modo de loop com a opção -l. A seguir
exemplos mostram a saída de combinações de opções comumente usadas.
Exemplo 1
$ ssltap.exe -sx -p 444 interzone.mcom.com:443> sx.txt
saída
Conectado a interzone.mcom.com:443
->; [
Alloclen = 66 bytes
[ssl2] ClienteHelloV2 {
versão = {0x03, 0x00}
comprimento das especificações de cifra = 39 (0x27)
comprimento lateral = 0 (0x00)
comprimento do desafio = 16 (0x10)
conjuntos de cifras = {
(0x010080) SSL2/RSA/RC4-128/MD5
(0x020080) SSL2/RSA/RC4-40/MD5
(0x030080) SSL2/RSA/RC2CBC128/MD5
(0x040080) SSL2/RSA/RC2CBC40/MD5
(0x060040) SSL2/RSA/DES64CBC/MD5
(0x0700c0) SSL2/RSA/3DES192EDE-CBC/MD5
(0x000004) SSL3/RSA/RC4-128/MD5
(0x00ffe0) SSL3/RSA-FIPS/3DES192EDE-CBC/SHA
(0x00000a) SSL3/RSA/3DES192EDE-CBC/SHA
(0x00ffe1) SSL3/RSA-FIPS/DES64CBC/SHA
(0x000009) SSL3 / RSA / DES64CBC / SHA
(0x000003) SSL3/RSA/RC4-40/MD5
(0x000006) SSL3/RSA/RC2CBC40/MD5
}
id da sessão = {}
challenge = { 0xec5d 0x8edb 0x37c9 0xb5c9 0x7b70 0x8fe9 0xd1d3
0x2592}
}
]
<- [
Registro SSL {
0: 16 03 00 03 e5 | .....
tipo = 22 (aperto de mão)
versão = {3,0}
comprimento = 997 (0x3e5)
aperto de mão {
0: 02 00 00 46 | ... F
tipo = 2 (server_hello)
comprimento = 70 (0x000046)
ServidorHello {
versão_do_servidor = {3, 0}
aleatório = {...}
0: 77 8c 6e 26 6c 0c ec c0 d9 58 4f 47 d3 2d 01 45 |
wn & l.ì..XOG .-. E
10: 5c 17 75 43 a7 4c 88 c7 88 64 3c 50 41 48 4f 7f |
\ .uC§L.Ç.d
ID da sessão = {
comprimento = 32
conteúdo = {..}
0: 14 11 07 a8 2a 31 91 29 11 94 40 37 57 10 a7 32 | ... ¨ * 1.) .. @ 7W.§2
10: 56 6f 52 62 fe 3d b3 65 b1 e4 13 0f 52 a3 c8 f6 | VoRbþ = ³e ± ... R £ È.
}
cipher_suite = (0x0003) SSL3 / RSA / RC4-40 / MD5
}
0: 0b 00 02 c5 | ... Å
tipo = 11 (certificado)
comprimento = 709 (0x0002c5)
Cadeia de certificados {
comprimento da cadeia = 706 (0x02c2)
Certificado {
tamanho = 703 (0x02bf)
dados = {salvo no arquivo 'cert.001'}
}
}
0: 0c 00 00 ca | ....
tipo = 12 (server_key_exchange)
comprimento = 202 (0x0000ca)
0: 0e 00 00 00 | ....
tipo = 14 (server_hello_done)
comprimento = 0 (0x000000)
}
}
]
-> [
Registro SSL {
0: 16 03 00 00 44 | .... D
tipo = 22 (aperto de mão)
versão = {3,0}
comprimento = 68 (0x44)
aperto de mão {
0: 10 00 00 40 | ... @
tipo = 16 (client_key_exchange)
comprimento = 64 (0x000040)
ClientKeyExchange {
mensagem = {...}
}
}
}
]
-> [
Registro SSL {
0: 14 03 00 00 01 | .....
tipo = 20 (change_cipher_spec)
versão = {3,0}
comprimento = 1 (0x1)
0:01 |.
}
Registro SSL {
0: 16 03 00 00 38 | .... 8
tipo = 22 (aperto de mão)
versão = {3,0}
comprimento = 56 (0x38)
<criptografado>
}
]
<- [
Registro SSL {
0: 14 03 00 00 01 | .....
tipo = 20 (change_cipher_spec)
versão = {3,0}
comprimento = 1 (0x1)
0:01 |.
}
]
<- [
Registro SSL {
0: 16 03 00 00 38 | .... 8
tipo = 22 (aperto de mão)
versão = {3,0}
comprimento = 56 (0x38)
<criptografado>
}
]
-> [
Registro SSL {
0: 17 03 00 01 1f | .....
tipo = 23 (application_data)
versão = {3,0}
comprimento = 287 (0x11f)
<criptografado>
}
]
<- [
Registro SSL {
0: 17 03 00 00 a0 | ....
tipo = 23 (application_data)
versão = {3,0}
comprimento = 160 (0xa0)
<criptografado>
}
]
<- [
Registro SSL {
0: 17 03 00 00 df | .... ß
tipo = 23 (application_data)
versão = {3,0}
comprimento = 223 (0xdf)
<criptografado>
}
Registro SSL {
0: 15 03 00 00 12 | .....
tipo = 21 (alerta)
versão = {3,0}
comprimento = 18 (0x12)
<criptografado>
}
]
Soquete do servidor fechado.
Exemplo 2
A opção -s ativa a análise SSL. Como a opção -x não é usada neste exemplo,
valores não codificados são produzidos como dados brutos. A saída é roteada para um arquivo de texto.
$ ssltap -s -p 444 interzone.mcom.com:443> s.txt
saída
Conectado a interzone.mcom.com:443
-> [
Alloclen = 63 bytes
[ssl2] ClienteHelloV2 {
versão = {0x03, 0x00}
comprimento das especificações de cifra = 36 (0x24)
comprimento lateral = 0 (0x00)
comprimento do desafio = 16 (0x10)
conjuntos de cifras = {
(0x010080) SSL2/RSA/RC4-128/MD5
(0x020080) SSL2/RSA/RC4-40/MD5
(0x030080) SSL2/RSA/RC2CBC128/MD5
(0x060040) SSL2/RSA/DES64CBC/MD5
(0x0700c0) SSL2/RSA/3DES192EDE-CBC/MD5
(0x000004) SSL3/RSA/RC4-128/MD5
(0x00ffe0) SSL3/RSA-FIPS/3DES192EDE-CBC/SHA
(0x00000a) SSL3/RSA/3DES192EDE-CBC/SHA
(0x00ffe1) SSL3/RSA-FIPS/DES64CBC/SHA
(0x000009) SSL3 / RSA / DES64CBC / SHA
(0x000003) SSL3/RSA/RC4-40/MD5
}
id da sessão = {}
desafio = {0x713c 0x9338 0x30e1 0xf8d6 0xb934 0x7351 0x200c
0x3fd0}
]
> - [
Registro SSL {
tipo = 22 (aperto de mão)
versão = {3,0}
comprimento = 997 (0x3e5)
aperto de mão {
tipo = 2 (server_hello)
comprimento = 70 (0x000046)
ServidorHello {
versão_do_servidor = {3, 0}
aleatório = {...}
ID da sessão = {
comprimento = 32
conteúdo = {..}
}
cipher_suite = (0x0003) SSL3 / RSA / RC4-40 / MD5
}
tipo = 11 (certificado)
comprimento = 709 (0x0002c5)
Cadeia de certificados {
comprimento da cadeia = 706 (0x02c2)
Certificado {
tamanho = 703 (0x02bf)
dados = {salvo no arquivo 'cert.001'}
}
}
tipo = 12 (server_key_exchange)
comprimento = 202 (0x0000ca)
tipo = 14 (server_hello_done)
comprimento = 0 (0x000000)
}
}
]
-> [
Registro SSL {
tipo = 22 (aperto de mão)
versão = {3,0}
comprimento = 68 (0x44)
aperto de mão {
tipo = 16 (client_key_exchange)
comprimento = 64 (0x000040)
ClientKeyExchange {
mensagem = {...}
}
}
}
]
-> [
Registro SSL {
tipo = 20 (change_cipher_spec)
versão = {3,0}
comprimento = 1 (0x1)
}
Registro SSL {
tipo = 22 (aperto de mão)
versão = {3,0}
comprimento = 56 (0x38)
> criptografado>
}
]
> - [
Registro SSL {
tipo = 20 (change_cipher_spec)
versão = {3,0}
comprimento = 1 (0x1)
}
]
> - [
Registro SSL {
tipo = 22 (aperto de mão)
versão = {3,0}
comprimento = 56 (0x38)
> criptografado>
}
]
-> [
Registro SSL {
tipo = 23 (application_data)
versão = {3,0}
comprimento = 287 (0x11f)
> criptografado>
}
]
[
Registro SSL {
tipo = 23 (application_data)
versão = {3,0}
comprimento = 160 (0xa0)
> criptografado>
}
]
> - [
Registro SSL {
tipo = 23 (application_data)
versão = {3,0}
comprimento = 223 (0xdf)
> criptografado>
}
Registro SSL {
tipo = 21 (alerta)
versão = {3,0}
comprimento = 18 (0x12)
> criptografado>
}
]
Soquete do servidor fechado.
Exemplo 3
Neste exemplo, a opção -h muda o formato hex / ASCII. Não há análise de SSL ou
decodificação. A saída é roteada para um arquivo de texto.
$ ssltap -h -p 444 interzone.mcom.com:443> h.txt
saída
Conectado a interzone.mcom.com:443
-> [
0: 80 40 01 03 00 00 27 00 00 00 10 01 00 80 02 00 | . @ ....'.........
10: 80 03 00 80 04 00 80 06 00 40 07 00 c0 00 00 04 | ......... @ ......
20: 00 ff e0 00 00 0a 00 ff e1 00 00 09 00 00 03 00 | ........uma.......
30: 00 06 9b fe 5b 56 96 49 1f 9f ca dd d5 ba b9 52 | ..þ [VI \ xd9 ... º¹R
40: 6f 2d | o-
]
<- [
0: 16 03 00 03 e5 02 00 00 46 03 00 7f e5 0d 1b 1d | ........ F .......
10: 68 7f 3a 79 60 d5 17 3c 1d 9c 96 b3 88 d2 69 3b | h.:y`..<..³.Òi;
20: 78 e2 4b 8b a6 52 12 4b 46 e8 c2 20 14 11 89 05 | xK¦R.KFè. ...
30: 4d 52 91 fd 93 e0 51 48 91 90 08 96 c1 b6 76 77 | MR.ý..QH ..... ¶vw
40: 2a f4 00 08 a1 06 61 a2 64 1f 2e 9b 00 03 00 0b | * ô..¡.a ¢ d ......
50: 00 02 c5 00 02 c2 00 02 bf 30 82 02 bb 30 82 02 | ..Å ...... 0 ... 0 ..
60: 24 a0 03 02 01 02 02 02 01 36 30 0d 06 09 2a 86 | $ ....... 60 ... *.
70: 48 86 f7 0d 01 01 04 05 00 30 77 31 0b 30 09 06 | H. ÷ ...... 0w1.0 ..
80: 03 55 04 06 13 02 55 53 31 2c 30 2a 06 03 55 04 | .U .... US1,0 * .. U.
90: 0a 13 23 4e 65 74 73 63 61 70 65 20 43 6f 6d 6d | .. # Netscape Comm
a0: 75 6e 69 63 61 74 69 6f 6e 73 20 43 6f 72 70 6f | unicações corpo
b0: 72 61 74 69 6f 6e 31 11 30 0f 06 03 55 04 0b 13 | ration1.0 ... U ...
c0: 08 48 61 72 64 63 6f 72 65 31 27 30 25 06 03 55 | .Hardcore1'0% .. U
d0: 04 03 13 1e 48 61 72 64 63 6f 72 65 20 43 65 72 | .... Hardcore Cer
e0: 74 69 66 69 63 61 74 65 20 53 65 72 76 65 72 20 | servidor de certificado
f0: 49 49 30 1e 17 0d 39 38 30 35 31 36 30 31 30 33 | II0 ... 9805160103
]
Soquete do servidor fechado.
Exemplo 4
Neste exemplo, a opção -s ativa a análise SSL e a opção -h ativa hex / ASCII
formato. Ambos os formatos são mostrados para cada registro. A saída é roteada para um arquivo de texto.
$ ssltap -hs -p 444 interzone.mcom.com:443> hs.txt
saída
Conectado a interzone.mcom.com:443
-> [
0: 80 3d 01 03 00 00 24 00 00 00 10 01 00 80 02 00 | . = .... $ .........
10: 80 03 00 80 04 00 80 06 00 40 07 00 c0 00 00 04 | ......... @ ......
20: 00 ff e0 00 00 0a 00 ff e1 00 00 09 00 00 03 03 | ........uma.......
30: 55 e6 e4 99 79 c7 d7 2c 86 78 96 5d b5 cf e9 | U..yÇ \ xb0, .x.] ΜÏé
Alloclen = 63 bytes
[ssl2] ClienteHelloV2 {
versão = {0x03, 0x00}
comprimento das especificações de cifra = 36 (0x24)
comprimento lateral = 0 (0x00)
comprimento do desafio = 16 (0x10)
conjuntos de cifras = {
(0x010080) SSL2/RSA/RC4-128/MD5
(0x020080) SSL2/RSA/RC4-40/MD5
(0x030080) SSL2/RSA/RC2CBC128/MD5
(0x040080) SSL2/RSA/RC2CBC40/MD5
(0x060040) SSL2/RSA/DES64CBC/MD5
(0x0700c0) SSL2/RSA/3DES192EDE-CBC/MD5
(0x000004) SSL3/RSA/RC4-128/MD5
(0x00ffe0) SSL3/RSA-FIPS/3DES192EDE-CBC/SHA
(0x00000a) SSL3/RSA/3DES192EDE-CBC/SHA
(0x00ffe1) SSL3/RSA-FIPS/DES64CBC/SHA
(0x000009) SSL3 / RSA / DES64CBC / SHA
(0x000003) SSL3/RSA/RC4-40/MD5
}
id da sessão = {}
desafio = {0x0355 0xe6e4 0x9979 0xc7d7 0x2c86 0x7896 0x5db
0xcfe9}
}
]
Soquete do servidor fechado.
USO DICAS
Quando o SSL reinicia uma sessão anterior, ele usa as informações armazenadas em cache para fazer um
aperto de mão. Se você deseja capturar um handshake SSL completo, reinicie o navegador para limpar o
cache de id de sessão.
Se você executar a ferramenta em uma máquina diferente do servidor SSL para o qual você está tentando
conectar, o navegador irá reclamar que o nome do host ao qual você está tentando se conectar é
diferente do certificado. Se estiver usando o retorno de chamada BadCert padrão, você pode
ainda se conectar por meio de um diálogo. Se você não estiver usando o retorno de chamada BadCert padrão, o
você fornece deve permitir essa possibilidade.
Use ssltap online usando serviços onworks.net