
MAD-CAT (Meow Attack Data Corruption Automation Tool) è uno strumento di sicurezza completo progettato per simulare attacchi di corruzione dei dati contro molteplici sistemi di database. Lo strumento supporta sia attacchi a bersaglio singolo che campagne di attacco in massa basate su CSV, con supporto per scenari di attacco sia con credenziali che senza credenziali.
MAD-CAT (Meow Attack Data Corruption Automation Tool) è uno strumento di sicurezza completo progettato per simulare attacchi di corruzione dei dati su più sistemi di database. Lo strumento supporta sia attacchi a bersaglio singolo che campagne di attacco di massa basate su file CSV, con supporto per scenari di attacco con e senza credenziali.
Lo strumento attualmente supporta i seguenti servizi di database:
# Clone the repository
git clone https://github.com/karlvbiron/MAD-CAT.git
# Navigate to the tool directory
cd MAD-CAT
# Set up the virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
| Argument | Description |
|---|---|
-l, --list | Elenca i servizi di database supportati |
-c, --csv | File CSV contenente l'elenco dei bersagli (formato: ip,service,port,username,password) |
-t, --target | Indirizzo IP del host bersaglio (per la modalità bersaglio singolo) |
-s, --service | Servizio di database da attaccare (es. mongodb, elasticsearch, cassandra, redis, couchdb, hadoop) |
-p, --port | Numero di porta (se non predefinita) |
-u, --username | Nome utente per l'autenticazione |
-pw, --password | Password per l'autenticazione |
-v, --verbose | Abilita l'output dettagliato |
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
Attacca più bersagli utilizzando un file CSV:
python mad_cat.py -c list.csv
Il file CSV deve contenere un bersaglio per riga con il seguente formato:
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,"",""
Formato: ip,service,port,username,password
"") per attacchi senza credenzialiMAD-CAT/
├── __init__.py
├── core/
│ ├── __init__.py
│ ├── base_attacker.py # Abstract base class for all attackers
│ └── attack_factory.py # Factory pattern for attacker creation
├── attackers/
│ ├── __init__.py # Attacker registration
│ ├── mongodb.py # MongoDB attacker implementation
│ ├── elasticsearch.py # Elasticsearch attacker implementation
│ ├── cassandra.py # Cassandra attacker implementation
│ ├── redis.py # Redis attacker implementation
│ ├── couchdb.py # CouchDB attacker implementation
│ └── hadoop.py # Hadoop HDFS attacker implementation
├── utils/
│ ├── __init__.py
│ └── logging.py # Logging configuration
├── dockerized-database-infrastructure/
│ ├── docker-compose.yml # Docker Compose configuration
│ └── 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 # Main entry point
├── fetch_data.py # Utility to fetch and verify database data
├── list.csv # Example CSV file for bulk attacks
├── requirements.txt # Python dependencies
└── README.md # This file
logs/MAD-CAT simula un attacco di corruzione dei dati:
Target → Connect → List Databases → For Each Database:
├─ List Collections
└─ For Each Collection:
├─ Fetch All Records
├─ Replace Values with {random}-MEOW
└─ Update Records
| Servizio | Porta predefinita |
|---|---|
| MongoDB | 27017 |
| Elasticsearch | 9200 |
| Cassandra | 9042 |
| Redis | 6379 |
| CouchDB | 5984 |
| Hadoop HDFS | 9870 |
Uno script di utilità per recuperare e visualizzare i dati da tutti i database supportati:
# Fetch from all databases and verify consistency
python fetch_data.py all
# Fetch from specific database
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
Questo strumento è fornito SOLO A SCOPO EDUCATIVO. È progettato per dimostrare un tipo di attacco informatico in un ambiente controllato per aiutare a migliorare la consapevolezza sulla sicurezza e le misure difensive. L'uso di questo strumento contro sistemi senza la dovuta autorizzazione è illegale e contrario all'etica. Gli autori e i collaboratori non sono responsabili di qualsiasi uso improprio di questo software.
Questo progetto è concesso in licenza sotto la Licenza MIT - vedere il file LICENSE per i dettagli.
Creato da Karl Biron