概述
Hamster是基于mitmproxy开发的异步被动扫描框架,基于http代理进行被动扫描,主要功能为重写数据包、签名、漏洞扫描、敏感参数收集等功能(开发中)。
模块
- 漏洞扫描:
brower/burpsuite → server → rabbitmq ->agent → support → target
- 渗透测试辅助:
brower/burpsuite → server → target
server:
- 被动扫描代理端口
- 管理控制台
- 推送流量到agent进行扫描
- 手工测试时进行签名、waf绕过。
agent
- 漏扫
- 扫描的poc发送到supprt进行签名、waf绕过等
supprt
- 给agent进行签名、waf绕过等。
安装
# 通过dockerfile文件部署 mysql,redis,rabbitmq
docker-compose up -d
# PIP安装依赖
python3.9 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
配置
为了覆盖延迟型的SSRF、Log4j2等漏洞,对于此类数据包进行了缓存,因此此类漏洞的扫描也需要配合DNSLog 。
- 建议先配置DNSLog ,并从DNSLog 项目中获取到API-Key等信息。
- 通过修改
conf/hamster.conf
(第一次运行后生成) 配置mysql,redis,rabbitmq,dnslog,具体请看注释。
运行
第一次运行需要先初始化数据库:
source venv/bin/activate
python init.py
- 运行server
source venv/bin/activate
python server.py
- 运行agent
source venv/bin/activate
python agent.py
- 运行support
source venv/bin/activate
python support.py
- 设置浏览器HTTP代理或者设置burpsuite二级代理
upstream proxy servers
, 代理认证请配置conf/hamster.conf
.
- host: localhost
- port: 8000
- authtype: basic
- username: hamster
- password: Hamster@123
-
然后浏览器访问目标网站就可以进行漏洞扫描了。
-
也可以查看访问控制台
http://admin.hamster.com/hamster/
查看扫描结果
- url: http://admin.hamster.com/hamster/
- username: admin
- password: hamster@123
插件编写
插件目录为addon
,具体功能如下(addon本后续不再更新):
addon/agent
agnet用, 主要存放扫描poc。addon/common
server、support共用,可用于给数据包waf、sign等。addon/server
server用,一般涉及数据包加解密时和supprt联用addon/support
support用,一般涉及数据包加解密时和server联用
同目录下addon按照字母顺序加载,如果脚本之间存在运行先后逻辑,请合理安排脚本文件名。
PS: 参考插件模版目录test_addon
即可。
关于缓存日志查询
日志保存天数,默认3天,数据库缓存默认1天。
- 如果dnslog告警了,请等待2分钟后,在漏洞中查看。
- 如果短时间内触发多个dnslog,且漏洞仅更新了1个的话,这是因为这几个dnslog的触发原因是一样的,漏洞已做了去重处理,忽略就行。
- 如果dnslog告警,且漏洞没有更新,表示这个漏洞是延迟触发的,且超过了数据库缓存天数,可以尝试在logs目录中查找,如果还是没找到,那就是说明延迟太久了,缓存已经没了。
find logs/ -name "*" -print0 | xargs -0 grep -i -n "{dnslog}" 2>/dev/null