Exécuter un programme derrière un Proxy avec Proxychains

ProxyChains est un logiciel en ligne de commande permettant la création d'un tunnel pour les communications utilisant le protocole TCP. Il permet d’exécuter certains programmes derreière un Proxy et c'est utile dans la mesure ou beaucoup ne disposent pas d'une interface propre pour le faire.

Firewall qui ne bloque rien

Ce que Proxychains permet de faire

1. Proxychains prend en charge des serveurs proxy SOCKS5, SOCKS4 et HTTP.
2. Proxychains permet de créer des chaînes de proxys de taille et de type différents, par exemple : 2 SOCKS5 et 1 SOCKS4
3. Proxychains prend également en charge plusieurs types de méthodes d’enchaînement :

Option Action
random_chain Proxychains utilisera les proxys fournis dans un ordre aléatoire
strict_chain Proxychains utilisera les proxy dans l’ordre exact de la liste
dynamic_chain c’est l’équivalent de strict_chain mais Proxychains éliminera les proxys qui ne sont pas utilisables de la liste

4. Les chaînes de proxy peuvent être utilisées avec des serveurs, tels que squid, sendmail, etc.
5. Proxychains est capable d'effectuer la résolution DNS via un proxy.
6. Les chaînes de proxy peuvent gérer n’importe quelle application cliente TCP, c’est-à-dire nmap, telnet, spotify, firefox, chrome, etc …

Configurer Proxychains

Pour configurer Proxychains, il suffit d’éditer un fichier nommé proxychains.conf
Sur Ubuntu, le fichier se trouve dans le répertoire etc/
Pour sélectionner une option, il suffit de supprimer le dièse # qui la précède
Pour désactiver une option, il suffit de faire l’inverse, en ajoutant un dièse #
Pour ajouter un Proxy, il suffit d’ajouter son type, son adresse et son port, les trois éléments séparés par un espace, par exemple :

# je viens de le configurer pour utiliser Privoxy
HTTP 127.0.0.1 8118

Si je ne veux pas que mon proxy soit utilisé, il suffira de le faire précéder par un dièse
# HTTP 127.0.0.1 8118

Si je veux utiliser deux proxys
HTTP 127.0.0.1 8118
SOCKS5 10.10.2.1 3128

Voila un exemple d’un fichier de configuration :
# proxychains.conf  VER 4
#
#        HTTP, SOCKS4, SOCKS5 tunneling proxifier with DNS.
# 

# The option below identifies how the ProxyList is treated.
# only one option should be uncommented at time,
# otherwise the last appearing option will be accepted
#
#dynamic_chain
#
# Dynamic - Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# at least one proxy must be online to play in chain
# (dead proxies are skipped)
# otherwise EINTR is returned to the app
#
strict_chain
#
# Strict - Each connection will be done via chained proxies
# all proxies chained in the order as they appear in the list
# all proxies must be online to play in chain
# otherwise EINTR is returned to the app
#
#random_chain
#
# Random - Each connection will be done via random proxy
# (or proxy chain, see  chain_len) from the list.
# this option is good to test your IDS :)

# Make sense only if random_chain
chain_len = 2

# Quiet mode (no output from library)
#quiet_mode

# Proxy DNS requests - no leak for DNS data
proxy_dns 

# set the class A subnet number to usefor use of the internal remote DNS mapping
# we use the reserved 224.x.x.x range by default,
# if the proxified app does a DNS request, we will return an IP from that range.
# on further accesses to this ip we will send the saved DNS name to the proxy.
# in case some control-freak app checks the returned ip, and denies to 
# connect, you can use another subnet, e.g. 10.x.x.x or 127.x.x.x.
# of course you should make sure that the proxified app does not need
# *real* access to this subnet. 
# i.e. dont use the same subnet then in the localnet section
#remote_dns_subnet 127 
#remote_dns_subnet 10
remote_dns_subnet 224

# Some timeouts in milliseconds
tcp_read_time_out 15000
tcp_connect_time_out 8000

# By default enable localnet for loopback address ranges
# RFC5735 Loopback address range
localnet 127.0.0.0/255.0.0.0
# RFC1918 Private Address Ranges
# localnet 10.0.0.0/255.0.0.0
# localnet 172.16.0.0/255.240.0.0
# localnet 192.168.0.0/255.255.0.0


# Example for localnet exclusion
## Exclude connections to 192.168.1.0/24 with port 80
# localnet 192.168.1.0:80/255.255.255.0

## Exclude connections to 192.168.100.0/24
# localnet 192.168.100.0/255.255.255.0

## Exclude connections to ANYwhere with port 80
# localnet 0.0.0.0:80/0.0.0.0

# ProxyList format
#       type  host  port [user pass]
#       (values separated by 'tab' or 'blank')
#
#
#        Examples:
#
#             socks5 192.168.67.78 1080 lamer secret
#  http 192.168.89.3 8080 justu hidden
#   socks4 192.168.1.49 1080
#         http 192.168.39.93 8080 
#  
#
#       proxy types: http, socks4, socks5
#        ( auth types supported: "basic"-http  "user/pass"-socks )
#
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
# socks4  127.0.0.1 9050
HTTP 127.0.0.1 8118
SOCKS5 10.10.2.1 3128

Pour valider la nouvelle configuration, enregistrez le fichier.
Sur Ubuntu, la modification du fichier nécessite des droits d’administration.

Utiliser Proxychains

On fait précéder le programme qu’on veut lancer par proxychains
proxychains firefox

Pour nmap par exemple :
proxychains nmap -PN -sT -sV -n -p 80,21,146,111 adresse_ip

Aucun commentaire:

Fourni par Blogger.