MSDAT
MSDAT (Microsoft SQL Database Attacking Tool) est un outil de test d'intrusion open source qui teste la sécurité des bases de données Microsoft SQL à distance.
Exemples d'utilisation de MSDAT :
- Vous avez une base de données Microsoft qui écoute à distance et vous souhaitez trouver des identifiants valides pour vous connecter à la base de données
- Vous avez un compte Microsoft SQL valide sur une base de données et vous souhaitez élever vos privilèges
- Vous avez un compte Microsoft SQL valide et vous souhaitez exécuter des commandes sur le système d'exploitation hébergeant cette base de données (par exemple xp_cmdshell, OLE Automation, Agent Jobs)
Testé sur les bases de données Microsoft SQL 2005, 2008, 2012, 2014, 2016 et 2019.
Journal des modifications
- Version 2.4 (2022/12/28) :
- 2 nouvelles options dans le module search : --privs et --privs-full pour obtenir les rôles et privilèges de l'utilisateur courant (par exemple privilèges de connexion et de base de données)
- 1 nouvelle option dans le module search : --config pour obtenir les configurations et informations de la base de données (version, bases de données, utilisateurs, utilisateurs désactivés, procédures stockées, etc)
- Version 2.3 (2022/12/18) :
- compatible avec Microsoft SQL Server 2019
- nouvelle option --schema-dump dans le module search pour extraire le schéma et le sauvegarder dans un fichier (sauf pour les bases de données par défaut)
- nouvelle option --table-dump dans le module search pour extraire toutes les tables et les sauvegarder dans un fichier (sauf pour les bases de données par défaut)
- nouvelle option --sql-shell dans le module search pour obtenir un pseudo shell SQL minimal
- Version 2.2 (2022/04/29) :
- --nmap-file et -l peuvent maintenant être utilisés dans le module all et le module passwordguesser. Vous pouvez fournir une liste de cibles avec -l ou un fichier nmap avec --nmap-file.
- Plusieurs corrections de bogues
- Version 2.1 (2020/03/04) :
- Option --nmap-file pour charger tous les services mssql à partir d'un fichier XML nmap (python-libnmap doit être installé)
- Version 2.0 (2020/03/04) :
- Passage de Python 2 à Python 3 : MSDAT est désormais compatible uniquement avec Python 3. Python 2 n'est pas supporté.
- Option de séparateur dans le module de devine-mot de passe
- Améliorations de la capture d'erreurs dans l'option --put-file du module xpcmdshell
- Améliorations de l'option de reverse shell du module jobs
- Module OLE automation - améliorations de l'exécution de commandes
- Module OLE automation - implémentation du reverse shell Powershell
- nouvelle option pour imprimer la liste des jobs agents et leur code : --print-jobs
- Version 1.2 (2020/02/26) :
- Nouvelle méthode dans le module xpCmdShell : Téléverser un fichier binaire avec powershell (--put-file)
- Amélioration dans oleAutomation : téléverser le fichier en mode binaire au lieu d'un fichier texte
- Version 1.1 (2019/07/12) :
- Version 1.0 (2017/02/15) :
Fonctionnalités
Grâce à MSDAT (Microsoft SQL Database Attacking Tool), vous pouvez (liste non exhaustive) :
- obtenir des informations techniques (ex : version de la base de données) d'une base de données MSSQL sans être authentifié
- charger un fichier nnmap pour analyser toutes les cibles MSSQL
- rechercher des comptes MSSQL avec une attaque par dictionnaire
- tester chaque login comme mot de passe (authentification requise)
- obtenir un shell Windows sur le serveur de base de données avec
- xp_cmdshell
- OLE Automation
- Jobs
- télécharger des fichiers à distance avec :
- OLE Automation
- bulkinsert
- openrowset
- téléverser des fichiers sur le serveur avec :
- OLE Automation
- openrowset
- capturer une authentification SMB grâce à :
- bulkinsert
- openrowset
- xp_dirtree
- xp_fileexist
- xp-getfiledetails
- voler les mots de passe hachés MSSQL, sur n'importe quelle version MSSQL
- scanner des ports à travers la base de données :
- exécuter des requêtes SQL sur un serveur MSSQL distant à travers la base de données (cible) avec :
- lister les fichiers/répertoires avec :
- lister les disques/supports avec :
- xp_fixeddrives
- xp_availablemedia
- créer un dossier avec :
- rechercher des données sensibles dans les tables (par exemple des identifiants)
- obtenir la configuration de la base de données (bases de données, utilisateurs, procédures stockées, etc.)
- extraire le schéma et les informations de toutes les tables
- exécuter des commandes SQL de base dans un pseudo shell SQL
Installation
Certaines dépendances doivent être installées pour exécuter MSDAT.
Sous ubuntu :
sudo apt-get install freetds-dev
ou téléchargez freetds sur http://www.freetds.org/
Installer les dépendances Python :
sudo pip3 install -r requirements.txt
sudo activate-global-python-argcomplete
ou
sudo pip3 install cython colorlog termcolor pymssql argparse python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete
Ajoutez "use ntlmv2 = yes" dans votre fichier de configuration freetds (ex : /etc/freetds/freetds.conf ou /usr/local/etc/freetds.conf).
Exemple :
[global]
# TDS protocol version
tds version = 8.0
use ntlmv2 = yes
Pour commencer
python3 msdat.py -h 2 ⨯
usage: msdat.py [-h] [--version]
{all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
...
_ _ __ __ _ ___
| \_/ |/ _|| \ / \|_ _|
| \_/ |\_ \| o ) o || |
|_| |_||__/|__/|_n_||_|
------------------------------------------------------
_ _ __ __ _ ___
| \_/ |/ _| | \ / \ |_ _|
| \_/ |\_ \ | o ) o | | |
|_| |_||__/icrosoft |__/atabase |_n_|ttacking |_|ool
-------------------------------------------------------
By Quentin Hardy ([email protected])