Тут общаясь с программистом, он оговорился, что у него есть пароль от учетной записи SQL Login: sa, на вопрос откуда, ой как он увиливал от ответа. Якобы всегда был, но это неправда, в последствии анализ показал, что наш исполняющий обязанности руководитель в дополнении программист 1С 7.7, прям явно в коде указала данные аутентификации. Ну тут, бессильны все. Ну пусть это будет на их совести, моего недочета тут нет. Это ладно, я решил, а можно ли узнать хеш SQL учетной записи Login: sa, плюс есть ли способ провести сопоставление хешу и составленной базе с используемые паролям. Так сказать, провести собственный анализ безопасности. К тому же не лишним будет оформить все это в виде заметки, как я на тот момент видел себе данную задачу.
В наличии есть
OS: Windows Server 2012 StdSQL: SQL Server 12.0.6372.1("Порядок поднятия SQL (srv-db02) как на работе")
Шаг №1: Подключаюсь к серверу по RDP, открываю оснастку SQL Management Studio, подключаюсь через Windows Authentications и формирую запрос:
File - New - Query with Current Connection — ниже текст запроса:
SELECT
name,
password_hash
FROM sys.sql_logins
WHERE name = 'sa';
или такой запрос:
SELECT
name, CAST(password AS varbinary(max)) AS PasswordHash
FROM sys.syslogins
WHERE name = 'sa'
Результат:
Name: sa
password_hash: 0x02008F845EFB7D3AE4B3D8C78B2CDCBAA55248C66D689C8D4380B8C0C44E57CB0AC87254173B322C382B272D303CA347575E801EC3B41CC0FE508C872C3A9E050897DD1F9764
изучение информации по полученному, вывело меня на информацию, что по выводу password_hash можно узнать какая версия SQL Server использовалась, т.е.

На заметку: А если используется SQL Server 13.0.5850.14, то в моем случае извлеченный хеш:
password_hash: 0x020068144730389848F4D959806C28D6EBF0E1CD7713EE6ECB87019E59CF0FFF572805E9759264FD87B8673064FBF6356DB1CA09D404D9F4B667691DD300566ED741FDF3FBB3
как видно у него совпадает ябы сказал префикс что ли 0x0200, но это не точно.
Шаг №2: Моя задумка, а могу ли я путем подбора с использованием hashcat извлечь пароль зная его hash?
Нашел таблицу по поддерживаемым Hash-Mode: https://gist.github.com/CalfCrusher/6b87a738d0fe7b88e04f4a36eb6d722d
Шаг №3: Произвожу установку утилиты hashcat из дефолтных репозитариев на операционную систему Ubuntu 22.04 Server которая развернута у меня на тестовом полигоне под управлением связки Debian 11 + Proxmox 7.4-3
Sockets: 1Type: Default (kvm64)Cores: 2

apt-cache show hashcat | grep Version
Version: 6.2.5+ds1-2
sudo apt-get install -y hashcat
hashcat
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...
Try --help for more help.
Шаг №4: Скачиваю словарь по которому будет производиться вычисление согласно используемому алгоритму для SQL Server зашифрованного пароля с последующим сравнением:
wget 'https://gitlab.com/kalilinux/packages/wordlists/-/raw/kali/master/rockyou.txt.gz'
file rockyou.txt.gz
rockyou.txt.gz: gzip compressed data, was "rockyou.txt", last modified: Sun Mar 3 13:09:37 2013, from Unix, original size modulo 2^32 139921507
gunzip rockyou.txt.gz
du -sh rockyou.txt
134M rockyou.txt
cat rockyou.txt | wc -l
14344392
На заметку: Размер словаря 134 мегабайт и очень много строк с различными наиболее часто используемыми паролями.
Шаг №5: Нацеливаю хеш на словарь, я знаю, что моего пароля нет в словаре, от слова как совсем, но если я его внесу в словарь где-нить в конце, то строка сопоставления будет выглядеть так:
hashcat -m 1731 -a 0 mssql_hash_pass.txt rockyou.txt --force
hashcat (v6.2.5) starting
You have enabled --force to bypass dangerous warnings and errors!
This can hide serious problems and should only be done when debugging.
Do not report hashcat issues encountered when using --force.
OpenCL API (OpenCL 2.0 pocl 1.8 Linux, None+Asserts, RELOC, LLVM 11.1.0, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=====================================================================================================================================
* Device #1: pthread-Common KVM processor, 1434/2933 MB (512 MB allocatable), 2MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Minimim salt length supported by kernel: 0
Maximum salt length supported by kernel: 256
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1
Optimizers applied:
* Zero-Byte
* Early-Skip
* Not-Iterated
* Single-Hash
* Single-Salt
* Raw-Hash
* Uses-64-Bit
ATTENTION! Pure (unoptimized) backend kernels selected.
Pure kernels can crack longer passwords, but drastically reduce performance.
If you want to switch to optimized kernels, append -O to your commandline.
See the above message to find out about the exact limits.
Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature abort trigger disabled.
Host memory required for this attack: 0 MB
Dictionary cache built:
* Filename..: rockyou.txt
* Passwords.: 14344393
* Bytes.....: 139921520
* Keyspace..: 14344386
* Runtime...: 1 sec
0x02008f845efb7d3ae4b3d8c78b2cdcbaa55248c66d689c8d4380b8c0c44e57cb0ac87254173b322c382b272d303ca347575e801ec3b41cc0fe508c872c3a9e050897dd1f9764:<password>
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 1731 (MSSQL (2012, 2014))
Hash.Target......: 0x02008f845efb7d3ae4b3d8c78b2cdcbaa55248c66d689c8d4...1f9764
Time.Started.....: Mon Feb 2 13:19:08 2026, (0 secs)
Time.Estimated...: Mon Feb 2 13:19:08 2026, (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 116.3 kH/s (0.28ms) @ Accel:256 Loops:1 Thr:1 Vec:2
Recovered........: 1/1 (100.00%) Digests
Progress.........: 7680/14344386 (0.05%)
Rejected.........: 0/7680 (0.00%)
Restore.Point....: 7168/14344386 (0.05%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#1....: droopy -> tyler2
Started: Mon Feb 2 13:18:39 2026
Stopped: Mon Feb 2 13:19:10 2026
и пароль найден, вот он, если к примеру вывод без служебной информации:
hashcat -m 1731 -a 0 mssql_hash_pass.txt rockyou.txt --show
0x02008f845efb7d3ae4b3d8c78b2cdcbaa55248c66d689c8d4380b8c0c44e57cb0ac87254173b322c382b272d303ca347575e801ec3b41cc0fe508c872c3a9e050897dd1f9764:<password>
Шаг №6: А если не указывать пароль в словаре rockyou.txt, то:
sudo apt-get remove --purge hashcat
sudo rm -rf /home/ekzorchik/.local/share/hashcat/
sudo rm -Rf /usr/share/doc/hashcat
sudo rm -Rf /usr/share/hashcat
rm -rf ~/.cache/hashcat/
rm rockyou.txt
sudo apt-get reinstall -y hashcat
wget 'https://gitlab.com/kalilinux/packages/wordlists/-/raw/kali/master/rockyou.txt.gz'
gunzip rockyou.txt.gz
hashcat -m 1731 -a 0 mssql_hash_pass.txt rockyou.txt --show
/usr/share/hashcat/OpenCL/: No such file or directory
Так разбираюсь, что есть OpenCL и как его переустановить.
На заметку: OpenCL (see https://en.wikipedia.org/wiki/OpenCL) is a programming language and a framework. Most modern CPUs and GPUs support OpenCL and have compilers and runtimes for the OpenCL kernels.
sudo apt install -y intel-opencl-icd ocl-icd-libopencl1 ocl-icd-opencl-dev pocl-opencl-icd
sudo usermod -aG video ekzorchik
sudo usermod -aG render ekzorchik
apt-cache search clinfo
clinfo - Query OpenCL system information
sudo apt-get install -y clinfo
sudo reboot
clinfo | head
Number of platforms 1
Platform Name Portable Computing Language
Platform Vendor The pocl project
Platform Version OpenCL 2.0 pocl 1.8 Linux, None+Asserts, RELOC, LLVM 11.1.0, SLEEF, DISTRO, POCL_DEBUG
Platform Profile FULL_PROFILE
Platform Extensions cl_khr_icd cl_pocl_content_size
Platform Extensions function suffix POCL
Platform Name Portable Computing Language
Number of devices 1
clinfo -l
Platform #0: Portable Computing Language
`-- Device #0: pthread-Common KVM processor
hashcat
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...
Try --help for more help.
Создаю файл с хешем:
nano mssql_hash_pass.txt
0x02008F845EFB7D3AE4B3D8C78B2CDCBAA55248C66D689C8D4380B8C0C44E57CB0AC87254173B322C382B272D303CA347575E801EC3B41CC0FE508C872C3A9E050897DD1F9764
после на забываем сохранить внесенные изменения.
hashcat -m 1731 -a 0 mssql_hash_pass.txt rockyou.txt --show
/usr/share/hashcat/OpenCL/: No such file or directory
ls /usr/share/hashcat/
modules
sudo apt-get reinstall -y hashcat-data
На заметку: кстати так сперва и происходит, зацепился взглядом что нет OpenCL и был невнимателен, уже полез в какие-то дебри что в системе этого нет, а оказалось, что нужно просто файлы данных hashcat переустановить. Делов то.
hashcat -m 1731 -a 0 mssql_hash_pass.txt rockyou.txt --force
hashcat (v6.2.5) starting
You have enabled --force to bypass dangerous warnings and errors!
This can hide serious problems and should only be done when debugging.
Do not report hashcat issues encountered when using --force.
OpenCL API (OpenCL 2.0 pocl 1.8 Linux, None+Asserts, RELOC, LLVM 11.1.0, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=====================================================================================================================================
* Device #1: pthread-Common KVM processor, 1434/2933 MB (512 MB allocatable), 2MCU
Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Minimim salt length supported by kernel: 0
Maximum salt length supported by kernel: 256
Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1
Optimizers applied:
* Zero-Byte
* Early-Skip
* Not-Iterated
* Single-Hash
* Single-Salt
* Raw-Hash
* Uses-64-Bit
ATTENTION! Pure (unoptimized) backend kernels selected.
Pure kernels can crack longer passwords, but drastically reduce performance.
If you want to switch to optimized kernels, append -O to your commandline.
See the above message to find out about the exact limits.
Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature abort trigger disabled.
Host memory required for this attack: 0 MB
Dictionary cache built:
* Filename..: rockyou.txt
* Passwords.: 14344392
* Bytes.....: 139921507
* Keyspace..: 14344385
* Runtime...: 1 sec
[s]tatus [p]ause [b]ypass [c]heckpoint [f]inish [q]uit => s
Session..........: hashcat
Status...........: Running
Hash.Mode........: 1731 (MSSQL (2012, 2014))
Hash.Target......: 0x02008f845efb7d3ae4b3d8c78b2cdcbaa55248c66d689c8d4...1f9764
Time.Started.....: Mon Feb 2 13:58:59 2026, (12 secs)
Time.Estimated...: Mon Feb 2 13:59:11 2026, (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 1161.9 kH/s (0.27ms) @ Accel:256 Loops:1 Thr:1 Vec:2
Recovered........: 0/1 (0.00%) Digests
Progress.........: 13830656/14344385 (96.42%)
Rejected.........: 0/13830656 (0.00%)
Restore.Point....: 13830656/14344385 (96.42%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#1....: 081952576670 -> 0819331452
Approaching final keyspace - workload adjusted.
Session..........: hashcat
Status...........: Exhausted
Hash.Mode........: 1731 (MSSQL (2012, 2014))
Hash.Target......: 0x02008f845efb7d3ae4b3d8c78b2cdcbaa55248c66d689c8d4...1f9764
Time.Started.....: Mon Feb 2 13:58:59 2026, (13 secs)
Time.Estimated...: Mon Feb 2 13:59:12 2026, (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 1149.9 kH/s (0.27ms) @ Accel:256 Loops:1 Thr:1 Vec:2
Recovered........: 0/1 (0.00%) Digests
Progress.........: 14344385/14344385 (100.00%)
Rejected.........: 0/14344385 (0.00%)
Restore.Point....: 14344385/14344385 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#1....: $HEX[206b72697374656e616e6e65] -> $HEX[042a0337c2a156616d6f732103]
Started: Mon Feb 2 13:58:57 2026
Stopped: Mon Feb 2 13:59:13 2026
Не находит сопоставление пароля с файлом паролей в словаре.
Шаг №7: Раз так, что мой используемый пароль устойчив к подбору, ну как устойчив, просто не содержится в файле с наиболее используемыми паролями я взял себе правило, прошерстить все свои отчеты, обращения ко мне на предмет ведения своего файла с паролями и на его основе делать прогон на подбор.
Шаг №8: Откроем самую последнюю строку файла с паролями и внесу свой пароль от учетной записи Login sa:
nano +$(wc -l < rockyou.txt) rockyou.txt
hashcat -m 1731 -a 0 mssql_hash_pass.txt rockyou.txt --force --show
0x020068144730389848f4d959806c28d6ebf0e1cd7713ee6ecb87019e59cf0fff572805e9759264fd87b8673064fbf6356db1ca09d404d9f4b667691dd300566ed741fdf3fbb3:<password>
и о чуда сопоставление хешу найдено.
На заметку: В справке по ключам натыкался что можно задействовать GPU (вычислительные мощности видеокарты), а сейчас я через CPU (вычислительные мощности процессора) взаимодействовал.
Ладно, короче, что хотел добиться заметкой того добился, вывод мой задействованный пароль не подбирается и теперь собираю свой собственный словарь.
На этом заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.