
proxychains - uma ferramenta que força qualquer conexão TCP feita por qualquer aplicação a passar através de um proxy como TOR ou qualquer outro proxy SOCKS4, SOCKS5 ou HTTP(S). Tipos de autenticação suportados: "user/pass" para SOCKS4/5, "basic" para HTTP.
ProxyChains é um programa UNIX que intercepta funções da libc relacionadas à rede em programas vinculados dinamicamente por meio de uma DLL pré-carregada e redireciona as conexões através de proxies SOCKS4a/5 ou HTTP.
AVISO: este programa funciona apenas com programas vinculados dinamicamente. Além disso, tanto o proxychains quanto o programa a ser chamado devem usar o mesmo vinculador dinâmico (ou seja, a mesma libc).
Quando um processo faz fork, realiza uma consulta de DNS no processo filho e depois usa o IP no processo pai, o mapeamento de IP correspondente não será encontrado, pois o fork não pode gravar de volta na tabela de mapeamento do pai. O IRSSI apresenta esse comportamento, portanto você precisa passar o endereço IP resolvido para ele. (você pode usar o script proxyresolv (requer "dig") para fazer isso)
Isso significa que você não pode usar URLs .onion do Tor para o irssi atualmente. Para resolver esse problema, um armazenamento de dados externo (arquivo, pipe, ...) precisa gerenciar o mapeamento dns <-> ip. É claro que deve haver um bloqueio adequado. shm_open, mkstemp são possíveis candidatos para uma abordagem baseada em arquivo; a outra opção é iniciar algum tipo de processo servidor que gerencie as consultas de mapeamento. como connect() etc. são interceptados, isso não deve ser um servidor TCP.
Estou relutante em fazer essa alteração, porque o comportamento descrito parece bastante idiota (fazer um fork apenas para uma consulta de DNS), e o irssi é atualmente o único programa afetado conhecido.
Proxychains-4.3.0 está disponível via pkgsrc para todos que o utilizam em Linux, NetBSD, FreeBSD, OpenBSD, DragonFlyBSD ou Mac OS X. Você só precisa instalar o repositório pkgsrc-wip e executar make install em um diretório wip/proxychains.
Você pode saber mais sobre pkgsrc em link:http://www.pkgsrc.org[pkgsrc] e sobre pkgsrc-wip em link:https://pkgsrc.org/wip[Página inicial do Pkgsrc-wip]
Você pode instalar o proxychains atual no Mac OS X com o homebrew. Você precisa baixar a link:https://gist.github.com/3792521[fórmula homebrew] não oficial para o seu BREW_HOME, por padrão /usr/local/Library/Formula/, e executar
$ brew install proxychains
# needs a working C compiler, preferably gcc
./configure
make
sudo make install
Versão (4.x) remove o script dnsresolver, que exigia um binário "dig" vinculado dinamicamente para consulta de DNS remota. isso acelera qualquer operação que envolva DNS, pois o script antigo tinha que usar TCP. além disso, permite usar URLs .onion quando usado com TOR. também substituiu o sistema de build autoconf quebrado por um Makefile simples. no entanto, há um script ./configure por conveniência. também adiciona suporte a um arquivo de configuração passado por meio de opções de linha de comando/variáveis de ambiente.
Versão (3.x) introduz suporte para resolução de DNS através de proxy. Suporta servidores proxy SOCKS4, SOCKS5 e HTTP CONNECT.
like: your_host <--> proxy1 <--> proxy2 <--> target_host
like: your_host <-->socks5 <--> http <--> socks4 <--> target_host
proxychains nmap -sT -PO -p 80 -iR (find some webservers through proxy)
O proxychains procura a configuração na seguinte ordem:
veja mais em /etc/proxychains.conf
$ proxychains4 telnet targethost.com
neste exemplo, ele executará o telnet através do proxy (ou proxies em cadeia) especificado por proxychains.conf
$ proxychains4 -f /etc/proxychains-other.conf targethost2.com
neste exemplo, ele usará um arquivo de configuração diferente de proxychains.conf para conectar-se ao host targethost2.com.
$ proxyresolv targethost.com
neste exemplo, ele resolverá targethost.com através do proxy (ou proxies em cadeia) especificado por proxychains.conf
$ ssh -fN -D 4321 some.example.com
$ PROXYCHAINS_SOCKS5_HOST=127.0.0.1 PROXYCHAINS_SOCKS5_PORT=4321 proxychains zsh
neste exemplo, ele executará um shell com todo o tráfego passando pelo "proxy dinâmico" do OpenSSH (proxy SOCKS5) na porta 4321 do localhost.
$ export PROXY_DNS_SERVER=8.8.8.8
$ proxychains4 telnet targethost.com
neste exemplo, ele fará telnet para targethost.com usando o servidor de nomes 8.8.8.8 fornecido pelo usuário por meio da variável PROXY_DNS_SERVER