
Monitore tráfego TCP arbitrário usando seu proxy de interceptação HTTP de escolha.
Monitore tráfego TCP arbitrário usando seu proxy de interceptação HTTP de escolha
socksmon é um servidor SOCKSv4 baseado em Twisted, que faz túnel do tráfego TCP de entrada através de um proxy HTTP. socksmon faz isso iniciando um servidor web interno na porta 2357, posta o tráfego para usar o proxy man-in-the-middle para editá-lo e então o encaminha para o destino.
socksmon tem suporte preliminar para interceptação SSL, ou seja, tráfego TCP criptografado SSL arbitrário pode ser analisado usando seu proxy de interceptação de escolha.
Primeiro, você precisa criar um certificado que deseja usar com socksmon no formato PEM e colocá-lo em /tmp/server.pem. Se você usa BURP, exporte a chave privada e o certificado e depois os concatene. (ex.: cat server.crt server.key > /tmp/server.pem)
Segundo, inicie seu proxy de interceptação na porta 8080 em localhost.
Terceiro, envie tráfego SOCKSv4 para yourip:9050. Certifique-se de usar SOCKSv4, SOCKSv5 não funcionará devido à implementação do servidor SOCKS do Twisted. Para redirecionar tráfego, recomendo Proxifier1 no Windows e Redsocks2 ou Proxychains3 no Linux.
Patches / PRs são bem-vindos.
Atualmente, nenhum certificado é gerado para endpoints específicos, por exemplo, a chave especificada é usada diretamente para todos os sites. Isso é problemático com clientes que verificam o nome comum (common name) ou a lista de revogação no certificado.
Proxies upstream devem ser suportados para todo o tráfego. HTTP deve receber tratamento especial, para que proxies que não permitem CONNECT possam ser usados também.
Opções de linha de comando devem ser usadas para definir a porta do proxy, certificados e portas do servidor web.
Implementar um framework modular que permita o processamento de tráfego TCP. Deve ser fácil implementar decodificadores e recodificadores para diferentes protocolos e formatos (ex.: desserializar objeto Java para XML).