ProxyChains-NG ver 4.17 LEIA-ME
ProxyChains é um programa UNIX que intercepta funções libc relacionadas à rede
em programas DINAMICAMENTE LINKADOS através de uma DLL pré-carregada (dlsym(), LD_PRELOAD)
e redireciona as conexões através de proxies SOCKS4a/5 ou HTTP.
Suporta apenas TCP (sem UDP/ICMP etc).
A forma como funciona é basicamente um HACK; portanto, é possível que não
funcione com seu programa, especialmente se for um script, ou iniciar
vários processos como daemons em segundo plano ou usar dlopen() para carregar
"módulos" (bug no dynlinker do glibc).
Deve funcionar com programas compilados simples (C/C++) dinamicamente linkados.
Se seu programa não funcionar com proxychains, considere usar uma
solução baseada em iptables; esta é muito mais robusta.
Plataformas suportadas: Linux, BSD, Mac, Haiku.
*********** ATENÇÃO ***********
este programa pode ser usado para contornar censura.
fazê-lo pode ser MUITO PERIGOSO em certos países.
CERTIFIQUE-SE SEMPRE DE QUE O PROXYCHAINS FUNCIONA COMO ESPERADO
ANTES DE USÁ-LO PARA ALGO SÉRIO.
isso envolve tanto o programa quanto o proxy que você vai
usar.
por exemplo, você pode conectar a algum serviço "qual é o meu ip"
como ifconfig.me para garantir que não está usando seu ip real.
USE PROXYCHAINS APENAS SE VOCÊ SABE O QUE ESTÁ FAZENDO.
OS AUTORES E MANTENEDORES DO PROXYCHAINS NÃO ASSUMEM QUALQUER
RESPONSABILIDADE POR ABUSO OU USO INDEVIDO DESTE SOFTWARE E
AS CONSEQUÊNCIAS RESULTANTES.
*** Instalação ***
precisa de um compilador C funcional, de preferência gcc
./configure --prefix=/usr --sysconfdir=/etc
make
[opcional] sudo make install
[opcional] sudo make install-config (instala proxychains.conf)
se você não instalar, pode usar o proxychains a partir do diretório de build
assim: ./proxychains4 -f src/proxychains.conf telnet google.com 80
Histórico de alterações:
Versão 4.17
- adicionado hook para a função close_range, corrigindo versões mais recentes do openssh
- opção fat-binary-m1 para mac
- corrigido tratamento de erro DNS no proxy_dns_old
- simplificado código de inicialização
- corrigido pré-carregamento no openbsd
- corrigido double-close em aplicações multithread
- várias melhorias no script configure
Versão 4.16
- corrigida regressão na detecção de flags do linker no script configure
- removida solução alternativa de 10 anos para assinatura errada do glibc getnameinfo
- suporte para novo método de hook DYLD no OSX Monterey
- correção de compilação no netbsd
- suporte a IPv6 localnets
- mensagem de erro mais amigável quando execvp falha
- proxy_getaddrinfo(): preenche ai_socktype se solicitado
Versão 4.15
- corrigido script configure para versões problemáticas do binutils
- inicializado rand_seed com granularidade de nanossegundos
- adicionado suporte para ipv6 numérico no getaddrinfo
- corrigido bug no getaddrinfo quando node é nulo e !passive
- adicionada funcionalidade dnat
- adicionado tipo de proxy raw
- adicionado suporte a haiku
- adicionado proxy_dns_old para emular comportamento do proxychains 3.1
- adicionada nova funcionalidade proxy_dns_daemon (experimental)
- várias outras correções
Versão 4.14
- permitida sintaxe alternativa proto://user:pass@ip:porta para lista de proxies
- corrigido loop infinito no modo round robin quando todos os proxies estão inativos (#147)
- corrigida compilação no android (#265)
- corrigido vazamento de fd em processos forkados (#273)
- ignorada tentativa de conexão com ips nullrouted
- permitidos nomes de host para lista de proxies em circunstâncias específicas
Versão 4.13
- corrigida robustez da thread de consulta DNS e um segfault
- corrigida autenticação socks5 user/pass em servidores não conformes
- corrigido vazamento de memória
- adicionado suporte para Solaris
Versão 4.12
- corrigidos vários problemas de build
- para MAC
- com -pie
- com CC customizado
- correção de compatibilidade para alguns apps GUI (8870140)
- correção de compatibilidade para alguns proxies HTTP (cf9a16d)
- corrigidos vários avisos para build mais limpo no debian
- corrigido random_chain no OSX (0f6b226)
Versão 4.11
- suporte preliminar a IPv6
- corrigido bug no hostsreader
- suporte preliminar para uso no OpenBSD (caveat emptor)
Versão 4.10
- corrigida regressão na ordem de linkagem com LDFLAGS customizados
- corrigido segfault no código de mapeamento DNS em programas com > ~400 consultas diferentes
Versão 4.9
- corrigido problema de segurança CVE-2015-3887
- adicionado hook sendto para lidar com flag MSG_FASTOPEN
- substituído problemático hostentdb por hostsreader
- corrigida compilação no OpenBSD (embora não funcione lá)
Versão 4.8.1:
- corrigida regressão no alvo install-config do Makefile na versão 4.8
Versão 4.8:
- correção para caso extremo onde getaddrinfo era usado com AI_NUMERICHOST
para testar um ip numérico em vez de resolvê-lo (corrige nmap).
- permitido uso com programas que dependem do LD_PRELOAD por conta própria
- rejeitadas entradas incorretas no arquivo de configuração
- exibido número da versão na inicialização
Versão 4.7:
- novo tipo de cadeia round_robin por crass.
- corrigido bug com alocação preguiçosa quando o construtor GCC não era usado.
- nova flag configure --fat-binary para criar um binário/biblioteca "fat" no OS X
- retornado EBADF em vez de EINTR no hook de close.
é legal um programa tentar novamente chamadas close() quando recebem
EINTR, o que poderia causar um loop infinito, como visto no chromium.
Versão 4.6:
- algumas correções cosméticas no Makefile, corrigido bug quando ip não numérico era
usado como endereço do servidor proxy.
Versão 4.5:
- hook close() para impedir que o OpenSSH bagunce a infraestrutura interna.
isso causava segfault no cliente ssh quando proxificado.
Versão 4.4:
- port para FreeBSD
- corrigidos alguns problemas de instalação no Debian e Mac.
Versão 4.3:
- corrige programas que fazem consultas DNS em processos filhos (fork()),
como irssi. para isso, o suporte a compilação sem pthreads foi sacrificado.
- corrige segurança de thread para chamadas gethostent().
- melhorada velocidade de tratamento DNS, pois o banco hostent é armazenado em cache.
Versão 4.2:
- corrigidos problemas de compilação com toolchain do ubuntu 12.04
- corrigido segfault em caminho de código raro
Versão 4.1
- suporte para mac os x (todas as arquiteturas)
- todas as funções internas são thread-safe quando compiladas com -DTHREAD_SAFE
(padrão).
Versão 4.0
- substituído script dnsresolver (que exigia um binário "dig" linkado dinamicamente)
por consulta DNS remota.
isso acelera qualquer operação envolvendo DNS, já que o script antigo tinha que usar TCP.
adicionalmente permite usar URLs .onion quando usado com TOR.
- removido sistema de build autoconf problemático por um Makefile simples.
há um script ./configure por conveniência.
também adiciona suporte a arquivo de configuração passado via argumentos de linha de comando/
variáveis de ambiente.
Versão 3.0
- suporte para resolução DNS através de proxy
suporta servidores proxy SOCKS4, SOCKS5 e HTTP CONNECT.
Tipos de autenticação: socks - "user/pass", http - "basic".
Quando usar?
- Quando a única maneira de sair da sua LAN para "fora" é através de um servidor proxy.
- Para sair de trás de um firewall restritivo que filtra portas de saída.
- Para usar dois (ou mais) proxies em cadeia:
como: seu_host <--> proxy1 <--> proxy2 <--> host_destino
- Para "proxificar" algum programa sem suporte a proxy embutido (como telnet)
- Acessar intranet de fora através de proxy.
- Para usar DNS atrás de proxy.
- Para acessar serviços ocultos tor onion.
Alguns recursos interessantes:
- Este programa pode misturar diferentes tipos de proxy na mesma cadeia
como: seu_host <-->socks5 <--> http <--> socks4 <--> host_destino
- Diferentes opções de encadeamento suportadas
ordem aleatória da lista (comprimento da cadeia definido pelo usuário).
ordem exata (como aparecem na lista)
ordem dinâmica (exclui proxies mortos da cadeia de forma inteligente)
- Você pode usá-lo com a maioria dos aplicativos cliente TCP, possivelmente até scanners
de rede, desde que usem funcionalidades padrão da libc.
scan baseado em pcap não funciona.
- Você pode usá-lo com servidores, como squid, sendmail, ou qualquer outro.
- Resolução DNS através de proxy.
Configuração:
proxychains procura o arquivo de configuração na seguinte ordem:
- arquivo listado na variável de ambiente PROXYCHAINS_CONF_FILE ou
fornecido como argumento -f para o script ou binário proxychains.
- ./proxychains.conf
- $(HOME)/.proxychains/proxychains.conf
- $(sysconfdir)/proxychains.conf **
** geralmente /etc/proxychains.conf
Exemplo de uso:
$ proxychains telnet targethost.com
neste exemplo, executará telnet através do proxy(ou proxies encadeados)
especificados no proxychains.conf
Exemplo de uso:
$ proxychains -f /etc/proxychains-other.conf telnet targethost2.com
neste exemplo, usará um arquivo de configuração diferente do proxychains.conf
para conectar ao host targethost2.com.
Exemplo de uso:
$ proxyresolv targethost.com
neste exemplo, resolverá targethost.com através do proxy(ou proxies encadeados)
especificados no proxychains.conf
Problemas conhecidos:
-
versões mais recentes do nmap tentam determinar a interface de rede a usar
mesmo quando não é necessário (como ao fazer scans syn simples que usam a
API POSIX padrão de sockets. isso resulta em erros quando proxychains fornece
um endereço IP para um espaço de endereço reservado.
possíveis soluções: desabilitar proxy_dns, usar um IP numérico, ou usar o suporte
nativo do nmap para proxies SOCKS.
-
Mac OS X 10.11 (El Capitan) vem com um novo recurso de segurança chamado SIP
que impede o hook de aplicativos do sistema.
soluções alternativas são desabilitar parcialmente o SIP executando
csrutil enable --without debug no modo de recuperação,
ou copiar o binário do sistema para o diretório home e executá-lo de lá.
veja issue #78 no github para detalhes.
-
o dynlinker do glibc tem um bug ou recurso de segurança que impede que módulos
carregados via dlopen() sejam submetidos aos mesmos hooks dlsym instalados para o
programa principal. isso afeta principalmente linguagens script como perl ou python
que dependem fortemente de dlopen() para módulos escritos em C funcionarem.
há relatos não confirmados de que funciona como root.
musl libc não é afetado por esse bug.
Links úteis
os seguintes sites podem ser úteis para verificar vazamentos:
https://ipfighter.com/
https://browserleaks.com/webrtc
https://dnsleaktest.com
http://check.torproject.org - específico para tor
http://ifconfig.me - pode ser usado via curl
http://ifconfig.io/
Comunidade:
#proxychains on irc.libera.chat
Doações:
doações em bitcoins são bem-vindas - por favor envie para este endereço:
1C9LBpuy56veBqw5N33sZMoZW8mwCw3tPh