RequestShield是一款HTTP请求威胁识别与检测工具,旨在帮助广大安全分析人员更好地分析和识别HTTP请求中的潜在安全威胁。
RequestShield是一款 100% 免费的开源工具,旨在分析 HTTP access.log 并识别可疑的 HTTP 请求和潜在的安全威胁。它使用地理位置、滥用历史、请求量和可疑请求路径等因素为每个 IP 分配风险评分,为安全监控提供可操作的见解。
RequestShield可以通过实时分析访问日志帮助安全团队检测和缓解威胁。它非常适合下列场景:
1、入侵检测(未经授权的访问尝试);
2、速率限制(检测 DoS/DDoS 流量);
3、滥用监控(识别标记的 IP);
1、日志解析:分析常见日志格式的访问日志;
2、风险评分:考虑的因素包括地理位置(危险国家)、滥用历史(根据 AbuseIPDB 检查 IP)、请求量(标记高请求率)和可疑路径(检测有风险的请求路径,例如/admin);
3、HTML 报告:生成总结风险和异常的详细报告;
colorama==0.4.6
geoip2==4.8.0
pyfiglet==1.0.2
Requests==2.32.3
由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。
接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
git clone https://github.com/osintmatter/RequestShield.git
然后切换到项目目录中,使用pip命令和项目提供的requirements.txt安装该工具所需的其他依赖组件:
cd RequestShield
pip install -r requirements.txt
工具使用GeoLite2 数据库对 IP 进行地理定位,并且使用ABUSEIPDB API来评估 IP 滥用和相关的安全威胁。因此,在使用该工具之前我们还需要准备好这两部分内容。
编辑config.py,并完成下列内容的配置:
1、日志文件路径
2、GeoIP 数据库路径
3、滥用ABUSEIPDB的API密钥
4、请求量阈值
配置样例如下:
config_file["DEFAULT"] = {
"geoip_db": str(path / "GeoLite2-Country.mmdb"),
"log_file": str(path / "./logs/access.log"),
"max_requests_per_minute": int(changeme),
"risky_country": str("changeme"),
"unusual_status_codes": str("changeme")
}
config_file["API"] = {
"abuseipdb_api_key": "changeme"
}
config_file["WHITELIST"] = {
"ips": "changeme"
}
配置完成后,请运行下列命令:
python3 config.py
使用以下命令运行该工具:
python3 requestshield.py
它处理日志并生成一份报告(RequestShield_Report.html),总结可疑活动和风险。输出
1、风险评分:每个 IP 根据各种风险因素获得一个分数。
2、报告:包含标记的 IP 和异常摘要的 HTML 报告。
RequestShield:
https://github.com/osintmatter/RequestShield