首页 渗透工具 正文
  • 本文约2274字,阅读需11分钟
  • 60
  • 0

Hamster是基于mitmproxy开发的异步被动扫描框架

概述

Hamster是基于mitmproxy开发的异步被动扫描框架,基于http代理进行被动扫描,主要功能为重写数据包、签名、漏洞扫描、敏感参数收集等功能(开发中)。

Python 3.9 Mysql 8.0 RabbitMQ 3 Redis 3

模块

  1. 漏洞扫描:brower/burpsuite → server → rabbitmq ->agent → support → target
  2. 渗透测试辅助:brower/burpsuite → server → target

server:

  1. 被动扫描代理端口
  2. 管理控制台
  3. 推送流量到agent进行扫描
  4. 手工测试时进行签名、waf绕过。

agent

  1. 漏扫
  2. 扫描的poc发送到supprt进行签名、waf绕过等

supprt

  1. 代理端口。
  2. 给agent进行签名、waf绕过等。
  3. 手工测试时进行签名、waf绕过。

manager

  1. 管理控制台

安装

代码部署

# PIP安装依赖
python3.9 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

# 如没有conf文件夹,则需要先生成配置文件,先运行一次init.py,生成相关配置文件(默认是dev环境)
python init.py

# 通过修改 conf/online/*.conf 配置mysql,redis,rabbitmq,dnslog等, 可查看配置说明
vim conf/online/*.conf 

# 再一次运行,初始化数据库。
python init.py

# 运行server
nohup python server.py &

# 运行agent
nohup python agent.py  &

# 运行support
nohup python support.py &

# 运行manager(可选)
nohup python manager.py  &

Docker部署

# 通过dockerfile文件部署 mysql,redis,rabbitmq 
cd docker

# 通过修改 conf/online/*.conf 配置dnslog等, 可查看配置说明
vim conf/online/*.conf 

# 开始部署docker
docker-compose up -d

使用

设置代理

设置浏览器HTTP代理或者设置burpsuite二级代理upstream proxy servers, 代理认证请配置 conf/online/hamster_basic.conf.

burpsuite_proxy

  • host: localhost
  • port: 8000
  • authtype: basic
  • username: Hamster
  • password: Hamster@123

扫描

然后浏览器访问目标网站就可以进行漏洞扫描了。

查看扫描结果

可以随时通过访问控制台查看扫描结果(控制台有如下两种访问方式)

  1. 通过server代理访问,http://admin.hamster.com/hamster/online/login
  2. 通过manager直接访问,http://127.0.0.1:8002/hamster/online/login

访问凭据:

  • username: admin
  • password: Hamster@123

web

配置说明

因为有不少漏洞需要配合DNSLOG,因此需要配置dnslog,本项目默认使用oast.pro, oast.live, oast.site, oast.online, oast.fun, oast.me项目接口,同时内置DNSLogapi接口,当然也可以使用其他dnslog,不过需要编写接口,相关代码在/lib/core/api.py中的get_dnslog_recode函数。

  1. 通过修改 conf/online/hamster_basic.conf (第一次运行后生成) 配置mysql,redis,rabbitmq,dnslog,具体请看注释。

插件编写

插件目录为addon,具体功能如下(addon本后续不再更新):

  1. addon/agent agnet用, 主要存放扫描poc。
  2. addon/common server、support共用,可用于给数据包waf、sign等。
  3. addon/server server用,一般涉及数据包加解密时和supprt联用。
  4. addon/support support用,一般涉及数据包加解密时和server联用。

同目录下addon按照字母顺序加载,如果脚本之间存在运行先后逻辑,请合理安排脚本文件名。

PS: 参考插件模版目录test_addon即可。

关于缓存日志查询

为了覆盖延迟型的SSRF、Log4j2等漏洞,对于此类数据包进行了缓存,缓存日志保存天数,默认2天,数据库缓存默认1天。

  1. 如果dnslog告警了,请等待2分钟后,在漏洞中查看。
  2. 如果短时间内触发多个dnslog,且漏洞仅更新了1个的话,这是因为这几个dnslog的触发原因是一样的,漏洞已做了去重处理,忽略就行。
  3. 如果dnslog告警,且漏洞没有更新,表示这个漏洞是延迟触发的,且超过了数据库缓存天数,可以尝试在logs目录中查找,如果还是没找到,那就是说明延迟太久了,缓存已经没了。
find log/ -name "*" -print0 | xargs -0 grep -i -n "{dnslog}" 2>/dev/null

mysql binlog文件过大问题

编辑 my.cnf 并在[mysqld]下添加skip-log-bin关闭binlog,并重启mysql即可。

set global binlog_expire_logs_seconds=10;
set persist binlog_expire_logs_seconds=10;

xray poc 兼容

poc/xray/pocs 简单兼容了xray poc,目前这个模块写的比较糙,不建议放入全部poc。

温馨提示:本文最后更新于2024年4月2日 00:12,若内容或图片失效,请在下方留言或联系博主。
评论
更换验证码