Kali Linux(Debian)代理工具:ProxyChains使用教程

ProxyChains是一个开源代理工具,能够强制使任何应用的TCP连接使用SOCKS4,SOCKS或者HTTP(S)代理进行连接。首先简单介绍一下ProxyChains的具体操作流程,如下:

一、ProxyChains下载与安装

由于Kali Linux系统测试这个系统中已经自带了ProxyChains,因此就不多说了,简单说下:

ProxyChains下载地址:https://github.com/rofl0r/proxychains-ng

二、ProxyChains 配置

ProxyChains运行的所有配置都在“/etc/proxychains.conf ”文件中;

ProxyChains 配置文件

ProxyChains 配置文件

在 [ProxyList] 下面添加代理IP和端口,可以任意添加代理,一行一个记录。

例如,我添加代理IP和端口,如下图

其它配置项用法如下:

  • dynamic_chain:该配置项能够通过ProxyList中的每个代理运行流量,如果其中一个代理关闭或者没有响应,它能够自动选择ProxyList中的下一个代理;
  • strict_chain:改配置为ProxyChains的默认配置,不同于dynamic_chain,也能够通过ProxyList中的每个代理运行流量,但是如果ProxyList中的代理出现故障,不会自动切换到下一个。
  • random_chain:该配置项会从ProxyList中随机选择代理IP来运行流量,如果ProxyList中有多个代理IP,在使用proxychains的时候会使用不同的代理访问目标主机,从而使主机端探测流量更加困难。

三、ProxyChains 使用

大致了解了proxychains的配置项之后,可以测试一下proxychains使用代理访问的情况,proxychains使用起来也非常简单,命令形式为:

proxychains <运行的命令> <命令参数>

1、使用ProxyChains代理访问网站

root@kali:~# proxychains curl https://www.xxx.com

 

2、接下来,我们可以亲自实践一下sqlmap+proxychains代理的效果。

第一步:首先,直接运行sqlmap扫描目标地址,然后在某云上的WAF看到拦截日志及源IP:

 

第二步:接着,利用proxychains代理sqlmap扫描目标地址,然后在某云上的WAF上能过看到拦截日志及源IP已经变成了代理IP:

 

可以看到攻击IP已经变成了代理IP,所属地区也变成了代理IP的地区,试验成功。

四、ProxyChains自动添加代理

接下来就是说说,如何实现ProxyChains自动添加代理?大致分为以下几个步骤:

  1. 需要有一个提供免费代理的地址;
  2. 解析该地址提供的内容获取代理IP和端口;
  3. 将获取的代理IP和端口加入到proxychains.conf配置文件的ProxyList配置项中;

免费代理的网站百度或者谷哥就能得到很多答案,例如:

  • 快代理:https://www.kuaidaili.com/free/
  • ProxyList:https://proxy-list.org/english/index.php;PorxyList是国外的一个提供免费代理的网站,貌似需要翻墙访问,这里我使用快代理提供的IP和端口。

唯一需要注意的是:在使用proxychains代理转发过程中,如果目标对象为https,那么需要使用支持SSL/https协议的代理,快代理提供的免费代理均只支持http协议;Proxy List中有支持SSL/HTTPS协议且免费的代理。

ProxyChains自动添加代理具体步骤如下:

1、访问快代理并解析网页内容获取代理IP和端口;

 

2、将获取的代理IP和端口更新写入ProxyList配置项中;

 

3、查看代理IP是否写入配置文件成功?配置文件更新成功之后,就可以运行该脚本看看效果了,出现如下图结果,

 整个Python脚本代码如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import json

import requests

import time

import os

from bs4 import BeautifulSoup

url = "https://www.kuaidaili.com/free/"

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'}

  def get_proxy_datas():

    r = requests.get(url,headers=headers)

    content = r.content

    soup = BeautifulSoup(content,'lxml')

    ips =soup.find_all('td',attrs={'data-title':'IP'})

    ports = soup.find_all('td',attrs={'data-title':'PORT'})

    print('开始写入代理IP和端口......')

    write_conf(ips,ports)

    print("代理ID和端口写入完成,将退出......")

  def write_conf(ips,ports):

    for i in range(0,len(ips)):

      print("--->IP:"+ips[i].string+"PORT:"+ports[i].string+"<---")

      time.sleep(1)

      with open('/etc/proxychains.conf','a+') as f:

        f.write('http %s %s '%(ips[i].string,ports[i].string))

get_proxy_datas()

转载:https://www.fujieace.com/kali-linux/proxychains.html

原文地址:https://www.cnblogs.com/thespace/p/12492506.html