MAD-CAT(喵攻击数据损坏自动化工具)是一款全面的安全工具,旨在模拟针对多种数据库系统的数据损坏攻击。该工具支持单目标攻击和基于CSV的批量攻击,同时支持凭据认证和非凭据认证的攻击场景。
该工具目前支持以下数据库服务:
# 克隆仓库
git clone https://github.com/karlvbiron/MAD-CAT.git
# 进入工具目录
cd MAD-CAT
# 设置虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
python mad_cat.py -l
python mad_cat.py -t 192.168.1.11 -s mongodb -u root -pw example
python mad_cat.py -t 192.168.1.12 -s elasticsearch
python mad_cat.py -t 192.168.1.13 -s cassandra
python mad_cat.py -t 192.168.1.14 -s redis
python mad_cat.py -t 192.168.1.15 -s couchdb -u admin -pw password
python mad_cat.py -t 192.168.1.16 -s hadoop
使用CSV文件攻击多个目标:
python mad_cat.py -c list.csv
CSV文件每行应包含一个目标,格式如下:
192.168.1.11,mongodb,27017,"root","example"
192.168.1.12,elasticsearch,9200,"",""
192.168.1.13,cassandra,9042,"",""
192.168.1.14,redis,6379,"",""
192.168.1.15,couchdb,5984,"admin","password"
192.168.1.16,hadoop,9870,"",""
格式:ip,service,port,username,password
"")MAD-CAT/
├── __init__.py
├── core/
│ ├── __init__.py
│ ├── base_attacker.py # 所有攻击者的抽象基类
│ └── attack_factory.py # 工厂模式创建攻击者
├── attackers/
│ ├── __init__.py # 攻击者注册
│ ├── mongodb.py # MongoDB 攻击者实现
│ ├── elasticsearch.py # Elasticsearch 攻击者实现
│ ├── cassandra.py # Cassandra 攻击者实现
│ ├── redis.py # Redis 攻击者实现
│ ├── couchdb.py # CouchDB 攻击者实现
│ └── hadoop.py # Hadoop HDFS 攻击者实现
├── utils/
│ ├── __init__.py
│ └── logging.py # 日志配置
├── dockerized-database-infrastructure/
│ ├── docker-compose.yml # Docker Compose 配置
│ └── init-scripts/
│ ├── mongodb/
│ │ └── mongodb-init.js
│ ├── elasticsearch/
│ │ ├── es-custom-entrypoint.sh
│ │ └── es-bulk_data.json
│ ├── cassandra/
│ │ ├── cassandra-entrypoint.sh
│ │ └── cassandra-init.cql
│ ├── couchdb/
│ │ ├── couchdb-entrypoint.sh
│ │ └── couchdb-init.sh
│ ├── hadoop/
│ │ ├── hadoop-entrypoint.sh
│ │ └── hadoop-init.sh
│ └── redis/
│ ├── redis-entrypoint.sh
│ └── redis-init.sh
├── mad_cat.py # 主入口
├── fetch_data.py # 获取并验证数据库数据的工具
├── list.csv # 用于批量攻击的CSV示例文件
├── requirements.txt # Python 依赖
└── README.md # 本文件
logs/ 目录MAD-CAT 通过以下步骤模拟数据损坏攻击:
目标 → 连接 → 列出数据库 → 对于每个数据库:
├─ 列出集合
└─ 对于每个集合:
├─ 获取所有记录
├─ 将值替换为 {随机}-MEOW
└─ 更新记录
| 服务 |
|---|
一个用于从所有支持的数据库获取并显示数据的实用脚本:
# 从所有数据库获取并验证一致性
python fetch_data.py all
# 从特定数据库获取
python fetch_data.py mongo
python fetch_data.py elasticsearch
python fetch_data.py cassandra
python fetch_data.py redis
python fetch_data.py couchdb
python fetch_data.py hadoop
本工具仅供教育目的使用。它旨在在受控环境中演示一种网络攻击类型,以帮助提高安全意识和防御能力。在未经适当授权的情况下使用本工具攻击系统是非法且不道德的。作者和贡献者不对本软件的任何滥用负责。
本项目采用MIT许可证授权 - 详见LICENSE文件。
由 Karl Biron 创建
| 参数 | 描述 |
|---|
-l, --list | 列出支持的数据库服务 |
-c, --csv | 包含目标列表的CSV文件(格式:ip,service,port,username,password) |
-t, --target | 目标主机IP地址(单目标模式) |
-s, --service | 要攻击的数据库服务(例如 mongodb, elasticsearch, cassandra, redis, couchdb, hadoop) |
-p, --port | 端口号(如果不是默认端口) |
-u, --username | 用于认证的用户名 |
-pw, --password | 用于认证的密码 |
-v, --verbose | 启用详细输出 |
| 默认端口 |
|---|
| MongoDB | 27017 |
| Elasticsearch | 9200 |
| Cassandra | 9042 |
| Redis | 6379 |
| CouchDB | 5984 |
| Hadoop HDFS | 9870 |