ProxyChains-NG ver 4.17 README
ProxyChains è un programma UNIX che aggancia le funzioni libc relative alla rete
nei programmi collegati DINAMICAMENTE tramite una DLL precaricata (dlsym(), LD_PRELOAD)
e reindirizza le connessioni attraverso proxy SOCKS4a/5 o HTTP.
Supporta solo TCP (niente UDP/ICMP, ecc.).
Il suo funzionamento è in pratica un HACK; quindi è possibile che non funzioni
con il tuo programma, soprattutto se è uno script, se avvia numerosi processi
come demoni in background o se usa dlopen() per caricare "moduli" (bug nel
dynlinker di glibc).
Dovrebbe comunque funzionare con semplici programmi compilati (C/C++) collegati
dinamicamente.
Se il tuo programma non funziona con proxychains, considera invece l'uso di una
soluzione basata su iptables; è molto più robusta.
Piattaforme supportate: Linux, BSD, Mac, Haiku.
*********** ATTENZIONE ***********
questo programma può essere usato per aggirare la censura.
farlo può essere MOLTO PERICOLOSO in alcuni paesi.
ACCERTATI SEMPRE CHE PROXYCHAINS FUNZIONI COME PREVISTO
PRIMA DI USARLO PER QUALSIASI COSA DI SERIO.
questo riguarda sia il programma sia il proxy che intendi
usare.
per esempio, puoi collegarti a un servizio "what is my ip"
come ifconfig.me per assicurarti che non stia usando il tuo ip reale.
USA PROXYCHAINS SOLO SE SAI QUELLO CHE STAI FACENDO.
GLI AUTORI E I MANUTENTORI DI PROXYCHAINS NON SI ASSUMONO
ALCUNA RESPONSABILITÀ PER ABUSI O USI IMPROPRI DI QUESTO SOFTWARE
E PER LE CONSEGUENZE CHE NE DERIVANO.
*** Installazione ***
needs a working C compiler, preferably gcc
./configure --prefix=/usr --sysconfdir=/etc
make
[optional] sudo make install
[optional] sudo make install-config (installs proxychains.conf)
se non installi, puoi usare proxychains dalla directory di build
in questo modo: ./proxychains4 -f src/proxychains.conf telnet google.com 80
Registro delle modifiche:
Versione 4.17
- aggiunto hook per la funzione close_range, correzione per le versioni più recenti di openssh
- opzione fat-binary-m1 per mac
- corretta la gestione degli errori DNS in proxy_dns_old
- semplificato il codice di inizializzazione
- corretto il preloading su openbsd
- corretto il doppio close nelle applicazioni multithread
- vari miglioramenti allo script configure
Versione 4.16
- corretta una regressione nel rilevamento dei linker flag nello script configure
- rimosso un workaround di 10 anni per la firma errata di getnameinfo in glibc
- supporto per il nuovo metodo di hooking DYLD per OSX Monterey
- correzione compilazione netbsd
- supporto per localnets IPv6
- messaggio di errore più user-friendly quando execvp fallisce
- proxy_getaddrinfo(): inserito ai_socktype se richiesto
Versione 4.15
- corretto lo script configure per versioni difettose di binutils
- inizializzato rand_seed con granularità al nanosecondo
- aggiunto supporto per indirizzi ipv6 numerici in getaddrinfo
- corretto bug in getaddrinfo quando node è null e !passive
- aggiunta funzionalità dnat
- aggiunto tipo di proxy raw
- aggiunto supporto haiku
- aggiunto proxy_dns_old per emulare il comportamento di proxychains 3.1
- aggiunta nuova funzionalità proxy_dns_daemon (sperimentale)
- varie altre correzioni
Versione 4.14
- consentita la sintassi alternativa proto://user:pass@ip:port per la proxylist
- corretto loop infinito in modalità round robin quando tutti i proxy sono giù (#147)
- corretta la compilazione su android (#265)
- corretto fd leak nei processi fork() (#273)
- saltato il tentativo di connessione a ip con nullroute
- consentiti hostname per la proxylist in circostanze specifiche
Versione 4.13
- migliorata la robustezza del thread di risoluzione DNS e un segfault
- corretta l'autenticazione user/pass socks5 su server non conformi
- corretto memory leak
- aggiunto supporto per Solaris
Versione 4.12
- corretti diversi problemi di build
- per MAC
- con -pie
- con CC personalizzato
- correzione di compatibilità per alcune app GUI (8870140)
- correzione di compatibilità per alcuni proxy HTTP (cf9a16d)
- corretti diversi warning per una build più pulita su debian
- corretto random_chain su OSX (0f6b226)
Versione 4.11
- supporto preliminare IPv6
- corretto bug in hostsreader
- supporto preliminare per l'uso su OpenBSD (caveat emptor)
Versione 4.10
- corretta una regressione nell'ordine di linking con LDFLAGS personalizzati
- corretto segfault nel codice di mapping DNS in programmi con > ~400 lookup diversi
Versione 4.9
- corretta una vulnerabilità di sicurezza CVE-2015-3887
- aggiunto hook per sendto per gestire il flag MSG_FASTOPEN
- sostituito il problematico hostentdb con hostsreader
- corretta la compilazione su OpenBSD (anche se lì non funziona)
Versione 4.8.1:
- corretta una regressione nel target Makefile install-config della 4.8
Versione 4.8:
- corretto uno strano caso limite in cui getaddrinfo veniva usato con AI_NUMERICHOST
per testare un ip numerico invece di risolverlo (corregge nmap).
- consentito l'uso con programmi che fanno affidamento su LD_PRELOAD
- rifiutate voci errate nel file di configurazione
- stampa il numero di versione all'avvio
Versione 4.7:
- nuovo tipo di chain round_robin di crass.
- corretto bug con lazy allocation quando il costruttore GCC non veniva usato.
- nuovo flag configure --fat-binary per creare un binario/libreria "fat" su OS X
- restituito EBADF invece di EINTR nell'hook di close.
è legittimo che un programma ritenti le chiamate close() quando riceve
EINTR, il che potrebbe causare un loop infinito, come visto in chromium.
Versione 4.6:
- alcune correzioni estetiche al Makefile, corretto un bug quando veniva usato un
ip non numerico come indirizzo del server proxy.
Versione 4.5:
- hook di close() per impedire a OpenSSH di interferire con l'infrastruttura interna.
questo causava il segfault del client ssh quando veniva proxificato.
Versione 4.4:
- porta FreeBSD
- corretti alcuni problemi di installazione su Debian e Mac.
Versione 4.3:
- corretti i programmi che eseguono dns-lookup nei processi figli (fork()ed),
come irssi. per ottenere questo, è stato sacrificato il supporto alla compilazione
senza pthreads.
- corretta la thread safety per le chiamate gethostent().
- migliorata la velocità di gestione DNS, poiché il db di hostent è in cache.
Versione 4.2:
- corretti problemi di compilazione con la toolchain di ubuntu 12.04
- corretto segfault in un raro codepath
Versione 4.1
- supporto per mac os x (tutte le architetture)
- tutte le funzioni interne sono thread-safe quando compilate con -DTHREAD_SAFE
(default).
Versione 4.0
- sostituito lo script dnsresolver (che richiedeva un binario "dig" collegato
dinamicamente) con una risoluzione DNS remota.
questo velocizza qualsiasi operazione che coinvolge il DNS, dato che il vecchio
script doveva usare TCP.
in più consente di usare URL .onion quando si usa TOR.
- rimosso il sistema di build autoconf rotto a favore di un semplice Makefile.
c'è comunque uno script ./configure per comodità.
aggiunge anche il supporto per un file di configurazione passato tramite opzioni
da riga di comando/variabili d'ambiente.
Versione 3.0
- supporto per la risoluzione DNS tramite proxy
supporta proxy SOCKS4, SOCKS5 e HTTP CONNECT.
Tipi di auth: socks - "user/pass" , http - "basic".
Quando usarlo?
- Quando l'unico modo per uscire "all'esterno" dalla tua LAN è attraverso un server proxy.
- Per uscire da un firewall restrittivo che filtra le porte in uscita.
- Per usare due (o più) proxy in catena:
come: tuo_host <--> proxy1 <--> proxy2 <--> host_destinazione
- Per "proxificare" un programma senza supporto proxy integrato (come telnet)
- Accedere all'intranet dall'esterno tramite proxy.
- Per usare il DNS dietro un proxy.
- Per accedere ai servizi onion nascosti di tor.
Alcune funzionalità interessanti:
- Questo programma può mescolare diversi tipi di proxy nella stessa catena
come: tuo_host <-->socks5 <--> http <--> socks4 <--> host_destinazione
- Supportate diverse opzioni di concatenamento
ordine casuale dalla lista (lunghezza della catena definita dall'utente).
ordine esatto (come appaiono nella lista)
ordine dinamico (esclusione intelligente dei proxy morti dalla catena)
- Puoi usarlo con la maggior parte delle applicazioni client TCP, possibilmente anche
scanner di rete, purché usino la funzionalità standard di libc.
la scansione basata su pcap non funziona.
- Puoi usarlo con server, come squid, sendmail, o qualsiasi altro.
- Risoluzione DNS tramite proxy.
Configurazione:
proxychains cerca il file di configurazione nel seguente ordine:
- file indicato nella variabile d'ambiente PROXYCHAINS_CONF_FILE o
fornito come argomento -f allo script o al binario di proxychains.
- ./proxychains.conf
- $(HOME)/.proxychains/proxychains.conf
- $(sysconfdir)/proxychains.conf **
** di solito /etc/proxychains.conf
Esempio di utilizzo:
$ proxychains telnet targethost.com
in questo esempio eseguirà telnet attraverso il proxy (o i proxy concatenati)
specificati da proxychains.conf
Esempio di utilizzo:
$ proxychains -f /etc/proxychains-other.conf telnet targethost2.com
in questo esempio userà un file di configurazione diverso da proxychains.conf
per connettersi all'host targethost2.com.
Esempio di utilizzo:
$ proxyresolv targethost.com
in questo esempio risolverà targethost.com attraverso il proxy (o i proxy concatenati)
specificati da proxychains.conf
Problemi noti:
-
le versioni più recenti di nmap cercano di determinare l'interfaccia di rete da usare
anche quando non serve (per esempio quando eseguono semplici scan syn che usano la
API socket POSIX standard. questo provoca errori quando proxychains assegna
un indirizzo IP a uno spazio di indirizzi riservato.
possibili workaround: disabilitare proxy_dns, usare un IP numerico, o usare il supporto
nativo di nmap per i proxy SOCKS.
-
Mac OS X 10.11 (El Capitan) include una nuova funzionalità di sicurezza chiamata SIP
che impedisce l'hooking delle app di sistema.
i workaround sono disabilitare parzialmente SIP eseguendo
csrutil enable --without debug in modalità recovery,
oppure copiare il binario di sistema nella home directory ed eseguirlo da lì.
vedi issue github #78 per i dettagli.
-
il dynlinker di glibc ha un bug o una funzionalità di sicurezza che impedisce ai moduli
caricati con dlopen() di essere soggetti agli stessi hook dlsym installati per il
programma principale. questo riguarda principalmente linguaggi script come perl o python
che fanno molto affidamento su dlopen() per i moduli scritti in C.
ci sono segnalazioni non confermate che come root funzioni comunque.
musl libc non è affetto da questo bug.
Link utili
i seguenti siti possono essere utili per verificare eventuali fughe di dati:
https://ipfighter.com/
https://browserleaks.com/webrtc
https://dnsleaktest.com
http://check.torproject.org - specifico per tor
http://ifconfig.me - può essere usato via curl
http://ifconfig.io/
#proxychains su irc.libera.chat
Donazioni:
sono gradite donazioni in bitcoin - inviale a questo indirizzo:
1C9LBpuy56veBqw5N33sZMoZW8mwCw3tPh