声明
学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
✍🏻作者简介:致力于网络安全领域,目前作为一名学习者,很荣幸成为一名分享者,最终目标是成为一名开拓者,很有趣也十分有意义
🤵♂️ 个人主页: @One_Blanks
欢迎评论 💬点赞👍🏻 收藏 📂加关注+
目录
- Zmap
- 一、安装
- 二、全网爬取
- Python脚本筛选并构建实时代理池
- Burp插件使用
- 扩展
- 总结
Zmap
一、安装
- 更新系统和安装基础依赖
:使用包管理工具(如apt-get)更新系统并安装必要的基础依赖。例如,在Ubuntu上,您可以使用以下命令:
sudo apt-get updatesudo apt-get install -y build-essential cmake libgmp3-dev gengetopt libpcap-dev flex byacc libjson-c-dev pkg-config libunistring-dev
- 克隆ZMap项目仓库
:从GitHub克隆ZMap项目的源代码到本地。
git clone https://github.com/zmap/zmap.gitcd zmap
- 编译和安装ZMap
:进入ZMap目录后,执行以下命令来编译和安装ZMap。
mkdir build
cd build
cmake ..
make
sudo make install
此外,为了验证ZMap是否安装成功,您可以运行以下命令查看ZMap的版本信息:
zmap --version
二、全网爬取
zmap -p 80,443,1080 -o raw_ips.txt
- 先扫上几十万条
Python脚本筛选并构建实时代理池
- 先给数据洗一下,Zmap出来的都是逗号
Python脚本
# 读取文件并替换逗号为冒号
def replace_comma_with_colon(input_file, output_file):with open(input_file, 'r') as file:lines = file.readlines()# 替换逗号为冒号modified_lines = [line.replace(',', ':').strip() for line in lines]# 写入新的文件with open(output_file, 'w') as file:for line in modified_lines:file.write(line + '\n')# 指定输入和输出文件路径
input_file = 'raw_ips.txt'
output_file = 'ip.txt'# 调用函数
replace_comma_with_colon(input_file, output_file)print(f"处理完成,结果已保存到 {output_file}")
- 得到正常的ip就拿到验证脚本去验证
import requests# 代理IP文件路径
proxy_file_path = 'ip.txt'
# 可用代理IP输出文件路径
available_proxy_file_path = 'available_proxies.txt'# 测试URL,用于验证代理IP是否可用
test_url = 'http://www.baidu.com'# 可用代理IP列表
available_proxies = []# 读取代理IP文件
with open(proxy_file_path, 'r') as file:proxies = file.readlines()# 验证每个代理IP
for proxy in proxies:proxy = proxy.strip() # 移除行尾的换行符if not proxy: # 跳过空行continue# 设置代理proxies_dict = {'http': f'http://{proxy}','https': f'https://{proxy}'}try:# 发送请求,设置超时时间为5秒response = requests.get(test_url, proxies=proxies_dict, timeout=5)if response.status_code == 200:print(f'代理IP {proxy} 可用')available_proxies.append(proxy)except requests.RequestException as e:print(f'代理IP {proxy} 不可用: {e}')# 将可用代理IP写入文件
with open(available_proxy_file_path, 'w') as file:for ip in available_proxies:file.write(f'{ip}\n')print(f'\n可用代理IP已写入文件: {available_proxy_file_path}')
验证这里跑的会很慢,可以将输出的结果先全选复制拿过来
- 接下来就是对这些输出内容进行筛选的脚本
# 读取原始文件
input_file = 'RIP.txt'
output_file = 'IPP.txt'with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile:for line in infile:if '不可用' in line:continue # 跳过包含“不可用”的行elif '可用' in line:# 提取 IP:Port 部分parts = line.split()for part in parts:if ':' in part and part.count('.') == 3:outfile.write(part + '\n')break
然后 IPP.txt 文件中就是我们所需要使用的脚本了
Burp插件使用
github插件地址 :BurpAutoProxySwitcher
下载之后拿到py文件,如果没有下载jython包的话先下jython包,官网https://www.jython.org/download.html
- 然后再burp中载入
之后会出现一个 Proxy Switcher 选项,那就是插件了
先输入路径(主要文件中的数据需要是每行ip:port的形式否则解释失败),然后加载,最后启用,在后面有每次请求代理 1 就是请求一次换一个,后面还有HTTP、SOCKS5 协议,后面可以将1080端口的代理服务器筛出来用这个,我这里没筛还是比较杂。
- 来到Intruder爆破模块下,对一个外站发送请求进行测试,200都是请求成功的,50x就是服务器不让访问的(可能是地区问题),用这些筛出来的测试成功率还可以,但是可以筛的更精细,如根据站点所在地使用不同地点国家的代理服务器(这样请求质量就会更高)
像我上面这张图就是用日本的一个代理服务器请求成功的图(因为是用Zmap全网爬的嘛)
扩展
将我写的脚本进行整合,对代理池进行持久化更新,对代理池进行严选评级分类,利用字典炮轰。
总结
更高质量的代理需要我们去进行筛选和分类的,并且自动化脚本也是需要我们不断的去优化的,我上面说的各种脚本就是分开的(暂时还没有整合),那就可以整合到一起实现完全自动化,然后每个小时更新一次代理池,再对代理池持续进行筛选,并且将代理池按照不同地区进行分类,针对站点进行测试,越高质量的代理炮轰效果越好,否则会遗漏字典的爆破数据,后面就可以直接去炮轰了。