Прочитано:
5 499
Нужно проработать пошаговые действия для сброса пароля на установленную систему Windows 10 Pro amd64. Просто порой попадается, что придя на новое место работы коллектив просит сделать какую либо настройку и когда берешь ноутбук для ее выполнения сталкиваешься что никто (что очень странно) сразу же не знает пароль на вход. Я бы сказал, что это своего рода подстава. Просто он же лежит с ними в кабинете и получается без надобности и т. д.
Вариант №1:
Скачиваю образ Hiren’s.BootCD.15.2.iso на свою систему и через программу UltraISO записываю его на USB Flash носитель, затем в настройках BIOS ноутбука или стационарного ПК выставляю что первым следует загрузиться с USB, а уже потом с HDD.
Выбираю меню загрузки, как «Mini Windows XP» (Это LiveCD образ операционной системы плюс набор дополнительных программ которые нужны каждому системному администратору если он хочет быть системным администратором).
Итак система загрузилась, перехожу:
Start — Programs — и запускаю «HBCD Menu», затем щелкаю на элемент Programs и выбираю подменю «Passwords/Keys» — Windows Login — NTPWedit (Reset XP/Vista/7 User Password) следом запуститься программа, по умолчанию она выглядит так:
Здесь в этой программе следует поменять путь до файла SAM где хранятся логины и пароли установленные в системе Windows 10, а узнать какой путь правильный можно следующим образом:
Start — Run — explorer.exe — перехожу на каталог в левой части окна именуемый как «Desktop» — «My Computer» — и вижу все логические диски системы которые определил LiveCD, из списка понятно, что системный диск без загрузки с LiveCD это логический диск D: на котором и установлена операционная система:
Зная это изменяю путь до файла SAM, получается и сразу же программа выводит весь список учетных записей присутствующих в системе:
Чтобы поменять пароль на учетную запись с логином ekzorchik нужно выделить ее и нажать на сделавшуюся активной кнопку «Unlock» → «Change password», затем указываю новый пароль к примеру:
New password:
Aa1234567Verify:
Aa1234567
и нажимаю кнопку OK, затем сохраняю внесенные изменения в базу SAM нажатием на кнопку Save changes и Exit.
Закрываю все открытые окна, вынимаю USB носитель из ноутбука/компьютера и отправляю систему находящуюся сейчас в загрузке, как LiveCD в перезагрузку:
Start — Shut Down -
What do you want the computer to do?
Выбираю Restart и нажимаю кнопку OK.
Когда система загрузится и остановится на этапе авторизации авторизуюсь с новыми идентификационными данными:
и я успешно авторизуюсь с новым паролем в системе. Итого все выше указанное полностью работоспособно.
Вариант №2:
Запись на USB накопитель установочный образ Windows системы, пусть это будет Windows 10 Pro x64 Rus, впрочем это не имеет какого либо значения и в момент когда компьютер/ноутбук будет грузиться с него выбрать на этапе мастера «Установка Windows»
Устанавливаемый язык:
Русский (Россия)Формат времени и денежных единиц:
Русский (Россия)Метод ввода (раскладка клавиатуры):
выбираю США
и нажимаю «Далее» — затем на кнопку «Установить» не нажимаю, а обращаюсь свое внимание на элемент перехода с именем «Восстановление системы» щелкаю по нему левой кнопкой мыши, перехожа на «Поиск и устранение неисправностей» — «Командная строка» и передо мной окно командной строки:
Заменяю следующий файл в системе на cmd.exe:
X:Sources> cd /d d:WindowsSystem32
d:WindonwsSystem32>copy Utilman.exe Utilman_backup.exe
d:WindonwsSystem32>copy cmd.exe Utilman_backup.exe /y
Извлекаю USB носитель и отправляю систему в перезагрузку:
d:WindonwsSystem32>shutdown /r /t 3
На заметку: Исполняемый файл utilman.exe — это оснастка которую можно запустить до ввода логина и пароля в систему и что самое интересное получается, что она работает с правами системы.
Когда система загрузится, я еще пока не могу в ней авторизоваться мне нужно на этом этапе обратить свой взор на правый нижний угол и щелкнуть по иконке второй справа:
и вместо дефолтной программы utilman запуститься консоль командной строки с правами системы, а имя эти права можно делать с системой (работает как в Windows 7,10,Server2008R2/Server2012/R,Server2016 — это те с которыми я имею дело постоянно и проверял на них):
Проверяю какие у меня права в открытой консоли командной строки:
C:Windowssystem32whoami
nt authorityсистема
c:Windowssystem32>net users
c:Windowssystem32>net user ekzorchik Bb1234567
c:Windowssystem32>exit
и после авторизуюсь в системе с новыми идентификационными данными, система же успешно пропускает меня, теперь либо оставляем такой backdoor либо же грузимся к образа и заменяем Utilman_backup.exe на Utilman.exe
На заметку: Из этой заметки становится наглядно понятно почему защита от физического доступна к железу и осью на нем имеет принципиально важное значение, спасет или как-то затруднит взлом это пароль на BIOS или установка на зашифрованный раздел систему.
Итого: оба рассмотренных варианта имеют решение как задача по восстановлению доступа к Windows системе установленной как на компьютер или ноутбук, впрочем и для виртуальных систем работает все выше указанное.
На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.
Содержание
- Что такое хэш паролей и база данных SAM?
- Шаг 1. Первый шаг: установите системный раздел Windows
- Шаг 2: Сбросьте загрузочный ключ
- Шаг 3: Дама хэшей паролей
- IШаг 4: John the Ripper средство взлома пароля
Что такое хэш паролей и база данных SAM?
SAM предназначен для диспетчера учетных записей безопасности.
База данных SAM является частью Windows.
Операционная система состоит из имени пользователя и пароля в зашифрованном формате, называемом хэшем пароля.
Файл SAM существует в C:/Windows/System32/config в Windows 7/8 / 8.1 / 10.
Если пользователь хочет войти в компьютер, имя пользователя и пароль должны совпадать для аутентификации, введенной пользователем.
Если пользователь набрал неправильное имя пользователя и пароль, аутентификация не удалась.
Алгоритм шифрования при этом NTLM2.
Основная цель SAM – сохранить компьютер и данные перед неавторизованным человеком, например, хакерами.
Но это не полностью работает против профессионального хакера.
Здесь я расскажу вам, как хакер сбрасывает эти хэши паролей из базы данных и узнает пароль, взламывая эти хеши.
Шаг 1. Первый шаг: установите системный раздел Windows
Кликните на Places > Filesystem.
Когда вы щелкнете по файловой системе, раздел windows будет автоматически установлен в каталог /media.
Откройте терминал и введите следующую команду, чтобы достичь местоположении, где была сохранена база данных SAM.
# cd /media/Mounting Point value/Windows/System32/config
В приведенном выше монтировании значение будет изменено в соответствии с системой, вы можете увидеть это значение, выполнив следующую команду:
# ls /media
Шаг 2: Сбросьте загрузочный ключ
# bkhive SYSTEM /root/Desktop/system.txt
System.txt – это файл, в котором хранится ключ загрузки и / root / Desktop – это место для сохранения файла system.txt.
Шаг 3: Дама хэшей паролей
Хэши паролей извлекаются с комбинацией bootkey и базы данных SAM, этот процесс завершается с помощью утилиты samdump2, найденной в kali linux по умолчанию.
Команда дает следующее:
# samdump2 SAM /root/Desktop/system.txt > /root/Desktop/hashes.txt
В реализованной команде база данных SAM и файл system.txt были объединены и создали новый файл hashes.txt
Чтобы увидеть хэши паролей, сдампенные в файл hashes.txt, используйте указанную команду
# cat /root/Desktop/hashes.txt
Измените каталог на /root/Desktop, используя следующую команду:
# cd /root/Desktop
IШаг 4: John the Ripper средство взлома пароля
По достижении каталога для хэшей используйте выполните john с помощью данной команды
# john -format = nt2 -users = vijay hashes.txt
Загрузить PDF
Загрузить PDF
Мы расскажем вам, как взламывать Windows с помощью SAM-файла. Эта процедура может занять некоторое время, но она эффективна.
Шаги
-
1
Ну, прежде всего, вы должны иметь представление о том, как хранятся все пароли. Во-первых, при вводе пароля он стает зашифрованным и очень длинным, до неузнаваемости. Пароль хранится в файле под названием «SAM».
-
2
Где вы можете найти этот SAM-файл? Ну, если по простому, то он здесь: Windows/system32/config/SAM. Но, вы пока не переходите туда! Он стает заблокированным для всех учетных записей во время запуска компьютера. Также файл можно найти в реестре в разделе HKEY_LOCAL_MACHINE -> SAM.
-
3
Если файл заблокирован, то как его можно открыть? Самый простой способ, это перейти на другую операционную систему, например Linux и скопировать файл. Это легко. Вы также можете использовать программу под названием «pwdump2», которая поможет вам получить файл.
-
4
Теперь у вас есть файл, но пароль зашифрован! Мы переходим к самому интересному, взлома пароля. Существуют многочисленные программы, которые это делают, одна из лучших программ называется Cain и может быть загружена с www(dot)oxid(dot)it/cain(dot)html.
-
5
Программа выдаст вам пароль и все готово!
-
6
Еще одна уловка, которую можно использовать для ввода паролей непосредственно в SAM-файл.
-
7
Самый простой способ получить доступ к паролю является использование инструмента под названием «chntpw», чтобы изменить пароль в SAM-файле, после создания резервной копии, используя Linux.
-
8
Готово! Теперь вы знаете, как взломать пароли.
Реклама
Советы
Предупреждения
- Кстати, если вас поймают, это незаконно.
Реклама
Об этой статье
Эту страницу просматривали 47 883 раза.
Была ли эта статья полезной?
Про взлом паролей windows было написано немало статей, но все они сводились к использованию какого-либо софта, либо поверхностно описывали способы шифрования LM и NT, и совсем поверхностно описывали syskey. Я попытаюсь исправить этот неодостаток, описав все подробности о том где находятся пароли, в каком виде, и как их преобразует утилита syskey.
Существует 2 возможности получения пароля — через реестр, или получив прямой доступ к файлам-кустам реестра. В любом случае нужны будут либо привелегии пользователя SYSTEM, либо хищение заветных файлов, например, загрузившись из другой ОС. Здесь я не буду описывать возможности получения доступа, но в целях исследования нагляднее будет выбрать первый вариант, это позволит не заострять внимание на структуре куста реестра. А запуститься от системы нам поможет утилита psExec от sysinternals. Конечно, для этих целей можно использовать уязвимости windows, но статья не об этом.
V-блок
Windows до версии Vista по умолчанию хранила пароль в двух разных хэшах — LM и NT. В висте и выше LM-хэш не хранится. Для начала посмотрим где искать эти хэши, а потом разберемся что из себя они представляют.
Пароли пользователей, а так же много другой полезной информации хранится в реестре по адресу HKLMSAMSAMDomainsAccountusers[RID]V
, известном как V-блок. Раздел SAM находится в соответствующем файле c:WindowsSystem32configSAM. RID — уникальный идентификатор пользователя, его можно узнать, например заглянув в ветку HKLMSAMSAMDomainsAccountusersnames<имя пользователя> (параметр Default, поле — тип параметра). Например, RID учетной записи «Администратор» всегда 500 (0x1F4), а пользователя «Гость» — 501 (0x1f5). Доступ к разделу SAM по умолчанию возможен только пользователю SYSTEM, но если очень хочется посмотреть — запускаем regedit c правами системы:
PsExec.exe -s -i -d regedit.
Чтобы наблюдать V-блок в удобном виде можно, например, экспортировать его в текстовый файл (File-Export в Regedit).
Вот что мы там увидим:
От 0x0 до 0xCC располагаются адреса всех данных, которые находятся в V-блоке, их размеры и некоторая дополнительная информация о данных. Чтобы получить реальный адрес надо к тому адресу, что найдем прибавить 0xCC. Адреса и размеры хранятся по принципу BIG ENDIAN, т.е понадобится инвертировать байты. На каждый параметр отводится по 4 байта, но фактически все параметры умещаются в одном-двух байтах. Вот где искать:
Адрес имени пользователя — 0xС
Длина имени пользователя — 0x10
Адрес LM-хэша — 0x9с
Длина LM-хэша — 0xa0
Адрес NT-хэша — 0xa8
длина NT-хэша — 0xac
В данном случае имя пользователя найдется по смещению 0xd4 + 0xcc и его длина будет 0xc байт.
NT-хэш будет располагаться по смещению 0x12c + 0xcc и его размер (всегда один и тот же) = 0x14.
Еще одна деталь, касающаяся хранения паролей — как к NT- так и к LM-хэшу всегда добавляются спереди 4 байта, назначение которых для меня загадка. Причем 4байта будут присутствовать даже если пароль отключен. В данном случае видно, что длина LM хэша =4 и если посмотреть на его адрес, можно эти 4 байта увидеть несмотря на то что никакого LM-хэша нет.
Поэтому при поиске смещений хэшей смело прибавляем 4 байта к адресу, а при учете размеров — вычитаем. Если удобнее читать код — вот примерно так будет выглядеть поиск адресов с учетом инверсии, лишних четырех байтов и прибавления стартового смещения 0xcc (код C#)
int lmhashOffset = userVblock[0x9c] + userVblock[0x9d] * 0x100 + 4 + 0xcc;
int nthashOffset = userVblock[0xa8] + userVblock[0xa9] * 0x100 + 4 + 0xcc;
int lmhashSize = userVblock[0xa0] + userVblock[0xa1] * 0x100 - 4;
int nthashSize = userVblock[0xac] + userVblock[0xad] * 0x100 - 4;
int usernameOffset = userVblock[0xc] + userVblock[0xd] * 0x100 + 0xcc;
int usernameLen = userVblock[0x10] + userVblock[0x1a] * 0x100;
userVblock — значение HKLMSAMSAMDomainsAccountusers\V в виде массива байт.
Еще про V-блок можно почитать тут.
Алгоритмы
Теперь разберемся в алгоритмах шифрования.
Формирование NT-хэша:
1. Пароль пользователя преобразуется в Unicode-строку.
2. Генерируется MD4-хэш на основе данной строки.
3. Полученный хэш шифруется алгоритмом DES, ключ составляется на основе RID пользователя.
Формирование LM-хэша:
1. Пароль пользователя преобразуется в верхний регистр и дополняется нулями до длины 14 байт.
2. Полученная строка делится на две половинки по 7 байт и каждая из них по отдельности шифруется алгоритмом DES. В итоге получаем хэш длиной 16 байт (состоящий из двух независимых половинок длиной по 8 байт).
3. Полученный хэш шифруется алгоритмом DES, ключ составляется на основе RID пользователя.
4. В windows 2000 и выше оба полученых хэша дополнительно шифруются алоритмом RC4 с помощью ключа, известного как «системный ключ» или bootkey, сгенерированого утилитой syskey, и шифруются довольно хитрым образом.
Рассмотрим общую последовательность действий для получения исходного пароля и каждый шаг в отдельности
1. Получаем bootkey, генерируем на его основе ключи для RC4, расшифровываем хэши с помощью RC4
2. Получаем ключи для DES из RID’ов пользователей, расшифровываем хэши DES’ом
3. Полученые хэши атакуем перебором.
Bootkey
Системный ключ (bootkey) разбит на 4 части и лежит в следующих разделах реестра:
HKLMSystemCurrentControlSetControlLsaJD
HKLMSystemCurrentControlSetControlLsaSkew1
HKLMSystemCurrentControlSetControlLsaGBG
HKLMSystemCurrentControlSetControlLsaData
Раздел system находится в файле c:WindowsSystem32configsystem
Следует отметить, что раздел CurrentControlSet является ссылкой на один из разделов controlset и создается в момент загрузки системы. Это значит что не получится его найти в файле system, если система неактивна. Если вы решили искать ключ в файле — необходимо узнать значение ContolSet по умолчанию в HKLMSYSTEMSelectdefault.
например если HKLMSYSTEMSelectdefault = 1 — вместо HKLMSystemCurrentControlSet ищем в HKLMSystemcontrolset001
У каждого ключа реестра есть некий скрытый атрибут, известный как «class». Regedit его так просто не покажет, однако его можно увидеть, например, если экспортировать эти ключи реестра в текстовые файлы. В winapi для получения этого атрибута есть функция RegQueryInfoKey.
Фрагменты хранятся в строковом представлении шестнадцатеричных чисел, причем по принципу BIG ENDIAN (т.е не строка задом наперед, а число).
Например мы обнаружили вот такие записи:
Key Name: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaJD
Class Name: 46003cdb = {0xdb,0x3c,0x00,0x46}
Key Name: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaSkew1
Class Name: e0387d24 = {0x24,0x7d,0x38,0xe0}
Key Name: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaGBG
Class Name: 4d183449 = {0x49,0x34,0x18,0x4d}
Key Name: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaData
Class Name: 0419ed03 = {0x03,0xed,0x19,0x04}
Собраный из четырех частей ключ будет массивом байт:
scrambled_key = {0xdb,0x3c,0x00,0x46,0x24,0x7d,0x38,0xe0,0x49,0x34,0x18,0x4d,0x03,0xed,0x19,0x04};
Далее элементы этого массива переставляются на основе некоторого константного массива p
int[] p = { 0xb, 0x6, 0x7, 0x1, 0x8, 0xa, 0xe, 0x0, 0x3, 0x5, 0x2, 0xf, 0xd, 0x9, 0xc, 0x4 };
Элементы в этом массиве определяют позиции для перестановок, т.е.
key[i] = scrambled_key[p[i]];
В нашем примере получится массив:
key[] = {0x4d,0x38,0xe0,0x3c,0x49,0x18,0x19,0xdb,0x46,0x7d,0x00,0x04,0xed,0x34,0x03,0x24 };
этот массив и есть так называемый bootkey. Только в шифровании паролей будет учавствовать не он а некий хэш на основе bootkey, фрагментов f-блока и некоторых констант. Назовем его Hashed bootkey.
Hashed bootkey
для получения Hashed bootkey нам понадобятся 2 строковые константы (ASCII):
string aqwerty = "!@#$%^&*()qwertyUIOPAzxcvbnmQQQQQQQQQQQQ)(*@&%";
string anum = "0123456789012345678901234567890123456789";
Также понадобится F-блок пользователя (HKLMSAMSAMDomainsAccountusers\F), а именно его 16 байт: F[0x70:0x80]
На основе этих значений, склееных в один большой массив формируем MD5 хэш, который будет являться ключем для шифрования RC4
rc4_key = MD5(F[0x70:0x80] + aqwerty + bootkey + anum).
Последним шагом для получения hashed bootkey будет rc4 шифрование( или дешифрование — в rc4 это одна и та же функция) полученым ключем фрагмента F-блока F[0x80:0xA0];
hashedBootkey = RC4(rc4_key,F[0x80:0xA0])
Hashed bootkey у нас в руках, осталось научиться с ним правильно обращаться.
Дешифруем пароли с помощью Hashed Bootkey
для паролей LM и NT нам понадобятся еще 2 строковые константы —
string almpassword = "LMPASSWORD";
string antpassword = "NTPASSWORD";
а так же RID пользователя в виде 4х байт (дополненый нулями) и первая половина Hashed Bootkey (hashedBootkey[0x0:0x10]);
Все это склеивается в один массив байт и считается MD5 по правилам:
rc4_key_lm = MD5(hbootkey[0x0:0x10] +RID + almpassword);
rc4_key_nt = MD5(hbootkey[0x0:0x10] +RID + antpassword);
полученый md5 хэш — ключ для rc4, которым зашифрованы LM и NT хэши в V-блоке пользователя
userLMpass = RC4(rc4_key_lm,userSyskeyLMpass);
userNTpass = RC4(rc4_key_lm,userSyskeyNTpass);
На этом этапе мы получили пароли пользователя в том виде в каком они хранились бы без шифрования syskey, можно сказать, что самое сложное позади. Переходим к следующему шагу
DES
На основе четырех байт RID’а пользователя с помощью некоторых перестановок и побитовых операций создаем 2 ключа DES. Вот функции, которые осуществляют обфускацию (С#):
private byte[] str_to_key(byte[] str) {
byte[] key = new byte[8];
key[0] = (byte)(str[0] >> 1);
key[1] = (byte)(((str[0] & 0x01) << 6) | (str[1] >> 2));
key[2] = (byte)(((str[1] & 0x03) << 5) | (str[2] >> 3));
key[3] = (byte)(((str[2] & 0x07) << 4) | (str[3] >> 4));
key[4] = (byte)(((str[3] & 0x0F) << 3) | (str[4] >> 5));
key[5] = (byte)(((str[4] & 0x1F) << 2) | (str[5] >> 6));
key[6] = (byte)(((str[5] & 0x3F) << 1) | (str[6] >> 7));
key[7] = (byte)(str[6] & 0x7F);
for (int i = 0; i < 8; i++) {
key[i] = (byte)(key[i] << 1);
}
des_set_odd_parity(ref key);
return key;
}
private byte[] sid_to_key1(byte[] rid) {
byte[] s = new byte[7];
s[0] = (byte)(rid[0] & 0xFF);
s[1] = (byte)(rid[1] & 0xFF);
s[2] = (byte)(rid[2] & 0xFF);
s[3] = (byte)(rid[3] & 0xFF);
s[4] = s[0];
s[5] = s[1];
s[6] = s[2];
return str_to_key(s);
}
private byte[] sid_to_key2(byte[] rid) {
byte[] s = new byte[7];
s[0] = (byte)((rid[3]) & 0xFF);
s[1] = (byte)(rid[0] & 0xFF);
s[2] = (byte)((rid[1]) & 0xFF);
s[3] = (byte)((rid[2]) & 0xFF);
s[4] = s[0];
s[5] = s[1];
s[6] = s[2];
return str_to_key(s);
}
Ну здесь особо комментировать нечего, кроме функции des_set_odd_parity(ref key) — это одна из функций библиотеки openssl, задача которой добавить некоторые «биты нечетности», используется для повышения стойкости ключа к атакам.
Далее разбиваем NT (или LM) хэш на 2 части по 8 байт и дешифруем DES’ом -одна половина зашифрована ключем сформированым функцией sid_to_key1, вторая — sid_to_key2.
obfskey_l = userNTpass[0x0:0x7]
obfskey_r = userNTpass[0x8:0xF]
byte[] deskey1 = sid_to_key1(RID);
byte[] deskey2 = sid_to_key2(RID);
byte[] md4hash_l = DES(obfskey_l, deskey1);
byte[] md4hash_r = DES(obfskey_r, deskey2);
После склеивания двух половин мы получим md4 хэш -в случае NT, или LanMan (DES) — в случае LM. Полученый хэш полностью готов к атаке перебором.
Кстати, md4 Хэш от пустого пароля — 31d6cfe0d16ae931b73c59d7e0c089c0
Исследование проведено на основе исходного кода ophcrack-3.3.1, а так же статьи Push the Red Button:SysKey and the SAM
До
сих пор мы рассматривали процесс
восстановления паролей по известным
хэш-функциям, но не ответили на самый
главный вопрос: где эти хэш-функции
паролей хранятся и каким образом можно
получить доступ к базе учетных записей
пользователей? Все учетные записи
пользователей вместе с соответствующими
им хэш-функциями паролей хранятся в так
называемой базе SAM (Security Accounts Manager). Она
представляет собой одноименный файл,
который не имеет расширения. SAM-файл
является составной частью реестра и
хранится в каталоге %systemroot%system32config
(под %systemroot% понимается каталог с
операционной системой — по умолчанию
соответствует каталогу C:WINDOWS). Кроме
того, резервная копия этого файла имеется
на диске аварийного восстановления
системы, а также в каталоге
%systemroot%repair. Однако при использовании
резервной копии SAM-файла необходимо
иметь в виду, что пароли могли измениться
с момента последнего сеанса создания
резервной копии. Кроме того, недавно
заведенных учетных записей пользователей
в резервной копии может и не оказаться.
Практические примеры
Говоря
о паролях и получении доступа к ПК,
необходимо рассмотреть два принципиально
разных сценария: первый — это получение
доступа к отдельному ПК, который не
входит в локальную сеть, а второй —
получение доступа к ПК в составе локальной
сети, то есть получение сетевого доступа.
При этом под локальной сетью мы будем
в дальнейшем понимать полноценную сеть
с выделенным контроллером домена.
С
программной точки зрения способы
получения доступа к локальному и сетевому
ПК ничем не отличаются друг от друга.
Разница заключается лишь в способе
получения SAM-файла, который в первом
случае хранится на локальном ПК, а во
втором — на контроллере домена сети.
Кроме
того, доступ к ПК можно реализовать за
счет как сброса пароля, так и его подбора.
Причем порядок действий различен,
поэтому мы детально рассмотрим оба
способа сброса.
Сброс пароля Windows
Как
уже отмечалось в первой части статьи,
существует два типа паролей: локальные
и сетевые. Хэш-функции локальных паролей
хранятся на самом ПК, а хэш-функции
сетевых паролей — на контроллере домена.
Поскольку процедура сброса пароля
подразумевает редактирование SAM-файла,
что принципиально невозможно реализовать
удаленно (то есть по сети), и требует
перезагрузки ПК, то сброс пароля
используется преимущественно для
получения доступа к локальному ПК. Если
же требуется сбросить именно сетевой
пароль пользователя, а администраторский
сетевой пароль утерян, то ту же самую
процедуру придется проделать для
сетевого контроллера домена, но нужно
понимать, что для этого необходимо иметь
физический доступ к серверу и процедура
его остановки и перезагрузки не останется
незамеченной.
Для
сброса пароля необходимо внести изменения
в SAM-файл, который хранится в директории
%systemroot%system32config. Однако при загруженной
операционной системе доступ к этому
файлу заблокирован, то есть его невозможно
ни скопировать, ни просмотреть, ни
подменить. Поэтому для получения доступа
к SAM-файлу прежде всего необходимо
загрузить компьютер не с жесткого диска,
а с дискеты, компакт-диска или с флэш-памяти
с использованием другой операционной
системы.
При
этом если на жестком диске компьютера
установлена файловая система NTFS, то
необходимо, чтобы загрузочная операционная
система понимала ее. К примеру, можно
подготовить системную дискету DOS и
разместить на ней драйвер NTFS, называемый
NTFSDOS. C помощью этого драйвера все разделы
NTFS будут смонтированы в качестве
логических дисков DOS, после чего доступ
к ним станет возможным.
Кроме
того, нам понадобится утилита, позволяющая
производить изменения в SAM-файле. Сегодня
наиболее популярными из подобных утилит
являются две: Active Password Changer 3.0 и Offline
NT/2K/XP Password Changer & Registry Editor.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Забыли пароль? Нет проблем!
Теоретические основы
Понятие хэш-функции пароля
Взлом пароля
LM- и NT-хэши
Количество возможных паролей
Месторасположение SAM-файла
Практические примеры
Сброс пароля Windows
Подбор пароля
Рекомендации по защите паролей
Сначала мы хотели назвать данную статью иначе, например «Взлом паролей Windows» или что-то этом роде, поскольку такое название как нельзя лучше отражает ее суть. Однако слово «взлом» уж больно отдает чем-то криминальным, чем-то, за что в приличном обществе бьют по рукам (и не только по рукам), а в цивилизованных странах могут и в тюрьму посадить. А вот восстановление или обнуление забытого пароля — это уже сродни гуманитарной помощи, что может только приветствоваться. Правда, суть от этого не меняется. Взлом — он и в Африке взлом, как его ни называй. Процедура восстановления или обнуления забытого пароля и самый что ни на есть криминальный взлом системы отличаются разве что нравственными аспектами, но никак не последовательностью выполняемых действий.
Мы не будем вдаваться в подробности, зачем пользователю может понадобиться узнать пароль или обнулить его для получения доступа к системе. Оставляя за рамками повествования нравственную сторону вопроса, расскажем о том, каким образом можно обнулить или восстановить свой локальный пароль доступа к ПК, а также узнать сетевые пароли пользователей домена, если речь идет о локальной сети. Мы не станем изобретать велосипед и, поскольку тема эта отнюдь не нова, опишем лишь некоторые утилиты, с помощью которых можно легко обойти систему безопасности компьютера.
Для того чтобы понять, как взламываются пароли, читателям придется сначала усвоить, каким образом происходит аутентификация пользователей, где и в каком виде хранятся их пароли и как их можно узнать. В дальнейшем мы будем основываться на операционной системе Windows XP, хотя вскрытие паролей таких операционных систем, как Windows 2000/2003, от рассмотренного случая ничем не отличается, а в Windows 95/98/Mе те же действия выполнить еще проще.
Теоретические основы
Понятие хэш-функции пароля
Процесс локальной или сетевой аутентификации пользователя довольно прост: пользователь вводит пароль, соответствующий его учетной записи, и если пароль верен, то пользователь получает доступ в систему. Проверка пароля реализуется средствами операционной системы путем его сравнивания с паролем, хранящимся в компьютере. При этом разница между локальной и сетевой аутентификацией заключается лишь в том, что при локальной аутентифкации база учетных записей пользователей с их паролями хранится на самом компьютере, а при сетевой аутентификации — на специальном сервере, называемом контроллером домена.
Казалось бы, что может быть проще? Ведь нужно только знать, где именно хранится учетная база пользователей с их паролями, и подсмотреть нужную информацию. Но это слишком просто, чтобы оказаться правдой. Конечно же, все пароли сохраняются в зашифрованном виде. Зашифрованный пароль именуется хэшем (hash) или хэш-функцией пароля. Причем в данном случае речь идет о довольно хитром методе шифрования, особенность которого заключается в том, что зашифрованный таким образом пароль… принципиально невозможно расшифровать! Дело в том, что алгоритм шифрования (хэширования) является односторонним. Фактически любой алгоритм хэширования представляет собой подсчет контрольной суммы от исходного текста, при котором используются необратимые логические операции над исходным сообщением, такие как AND, OR и др.
Таким образом, по паролю можно вычислить его хэш-функцию, но, зная хэш-функцию, принципиально невозможно вычислить пароль, которому она соответствует. Сама хэш-функция представляет собой числовую последовательность длиной 16 байт.
Для справки: существует огромное количество различных алгоритмов вычисления хэш-функций, и соответственно хэш-функции могут быть разных типов. В дальнейшем мы будем говорить только о хэш-функциях паролей, создаваемых операционной системой Windows при локальной или сетевой аутентификации пользователей (LM- или NT-хэш).
Естественно, возникает вопрос: если знание хэш-функции не позволяет выяснить пароль пользователя, то как же в таком случае происходит процесс аутентификации? Дело в том, что при аутентификации сравниваются не сами пароли, а их хэш-функции. В процессе аутентификации пользователь вводит пароль в привычном для него виде, а операционная система рассчитывает его хэш-функцию и сравнивает с хэшем, хранящимся в компьютере. В случае их совпадения аутентификация считается успешной.
Взлом пароля
Процесс взлома, или подбора, пароля банален и представляет собой обычный перебор возможных паролей. Для этого нужно знать хэш-функцию пароля, хранимую в компьютере, и уметь вычислять хэш по паролю. Тогда, перебирая различные варианты паролей и сравнивая расчетные хэши с тем, что хранится в компьютере, можно подобрать правильный пароль.
Казалось бы, такой перебор никогда не закончится — вариантов паролей существует бесконечное множество. Однако не стоит торопиться с выводами. Во-первых, количество возможных паролей все-таки конечно, а во-вторых, современные компьютеры позволяют перебирать миллионы паролей в секунду. Кроме того, имеются различные методы атак на пароли (об этом речь пойдет далее), которые в большинстве случаев приводят к положительному результату в считаные минуты. Прежде чем от теории перейти к практике, рассмотрим смысл понятия «хэш» и выясним, сколько вариантов паролей реально существует.
LM- и NT-хэши
В операционных системах Windows NT/2000/2003/XP существует два типа хэш-функций паролей: LM-хэш (LanMan-хэш) и NT-хэш. Хэш LM достался нам в наследство от сетей Lan Manager и используется в операционных системах Windows 9x. Поэтому, несмотря на то, что все современные операционные системы поддерживают новый тип хэширования (NT-хэш), чтобы обеспечить совместимость с клиентами Windows 9x, операционная система вынуждена хранить вместе с новым NT-хэшем и старый LM-хэш.
При применении LM-хэширования длина пароля ограничена 14 символами. Самым большим недостатком алгоритма получения LM-хэша является разделение пароля на две части, каждая из которых состоит из семи символов. Если вводимый пользователем пароль менее 14 символов, то при преобразовании к нему добавляются нулевые символы, то есть символы с кодом 0, чтобы получить строку, состоящую из 14 символов. Если же пароль пользователя превышает 14 символов, то LM-хэш соответствует пустому паролю. Каждая из 7-символьных половин пароля шифруется независимо от другой по алгоритму DES (бывший федеральный стандарт США), причем поскольку процесс шифрования каждой из 7-символьных половин пароля независим, то и подбор этих половин можно производить независимо, что значительно упрощает и ускоряет процесс вскрытия пароля. Другой серьезный недостаток LM-хэша связан с тем, что в процессе шифрования все буквенные символы пароля переводятся в верхний регистр. А поскольку LM-хэш содержит информацию о пароле без учета регистра, то LM-хэши для паролей ALLADIN, alladin, Alladin и aLLadin будут совершенно одинаковыми. Это существенно ограничивает количество возможных комбинаций пароля и, как следствие, ускоряет процесс вскрытия.
NT-хэш лишен недостатков, присущих LM-хэшу. Во-первых, при NT-хэшировании используется алгоритм шифрования MD4, при котором пароль не разбивается на две 7-символьные части. Во-вторых, при NT-хэшировании нет ограничения по длине пароля в 14 символов. В-третьих, NT-хэш является регистрозависимым, то есть NT-хэши для паролей ALLADIN и alladin будут совершенно разными.
Как мы уже отмечали, размер хэш-функций (и LM, и NT) независимо от длины вводимого пароля составляет 16 байт. Если длина пароля менее 14 символов, то для каждого пароля имеются и LM-, и NT-хэши. Если же длина пароля превышает 14-символов, то существует только NT-хэш.
Подобрать правильный пароль к известному NT-хэшу значительно сложнее, чем к LM-хэшу. Если известны и LM-, и NT-хэши, то сначала осуществляется подбор пароля по LM-хэшу, а после нахождения LM-пароля (все буквы верхнего регистра) используется NT-хэш для определения NT-пароля с учетом регистра. Правда, в данном случае есть одна тонкость: для пароля не всегда существует LM-хэш, для которого нужно, чтобы длина пароля была меньше или равной 14 символам. Но даже в случае, если длина пароля меньше 14 символов, LM-хэш можно удалить из базы. О том, как это сделать, мы еще расскажем, а пока приведем практические примеры LM- и NT-хэшей различных паролей.
Рассмотрим для начала 7-символьный пароль alladin, которому соответствует 16-байтный LM-хэш a01fad819c6d001aaad3b435b51404ee, записанный в шестнадцатеричной системе счисления. Далее рассмотрим 14-символьный пароль alladinalladin, для которого LM-хэш будет таким: a01fad819c6d001aa01fad819c6d001a. Обратите внимание, что первая половина (8 байт: a01fad819c6d001a) этого хэша полностью совпадает со второй. Кроме того, первая половина данного хэша совпадает с первой половиной LM-хэша пароля alladin. Такое совпадение отнюдь не случайно, если вспомнить, что каждые семь символов пароля кодируются независимо и определяют 8 байт итогового LM-хэша.
Интересно также отметить, что вторая половина LM-хэша пароля (aad3b435b51404ee) должна соответствовать символам с кодом 0, поскольку в том случае, если пароль меньше 14 символов, к нему добавляются пустые символы. То есть ad3b435b51404ee — это шифрование семи пустых символов. Поэтому можно предположить, что для любого другого 7-символьного пароля вторая половина LM-хэша окажется точно такой же. Действительно, для пароля tornado хэш LM равен 1e1e25e2f871d8dfaad3b435b51404ee, и, как нетрудно заметить, вторая половина этого хэша точно такая же, как и для пароля alladin. Для пароля ALLADIN значение LM-хэша точно такое же, как и для пароля alladin. Учитывая, что при LM-кодировании все буквы переводятся в верхний регистр, слово ALLADIN называют LM-паролем.
Если же рассмотреть NT-хэши для различных вариантов паролей (alladin, alladinalladin, tornado), то никакой закономерности не обнаружится (табл. 1). Кроме того, как уже отмечалось, NT-хэш является регистрозависимым, а сам NT-пароль соответствует истинному паролю.
Таблица 1. Пароли и соответствующие им хэш-функции
Количество возможных паролей
Итак, мы разобрались с алгоритмом, который используется для взлома пароля. Единственный способ, реализованный во всех программах, которые предназначены для подбора пароля, — это перебор всех возможных комбинаций. Естественно, возникает вопрос, а сколько вообще возможно комбинаций и так ли легко подобрать пароль методом перебора?
Что ж, давайте попробуем сосчитать. В операционных системах Windows 2000, 2003 и XP длина пароля может достигать 127 символов. При этом в качестве парольного символа можно использовать любой из 256 кодов ASCII. В таком случае при длине пароля в n символов количество возможных комбинаций будет равно 256n. Общее количество возможных паролей при этом составит 2561 + 2562 + … + 256127~~21024 = 1,8·10308. Это число астрономически огромно, и ни один современный компьютер не сможет перебрать все возможные комбинации за разумное время. Предположим, что имеется компьютер, который способен реализовать алгоритм перебора со скоростью 10 млн паролей в секунду. Для перебора всех паролей ему потребуется порядка 10293 лет! Для справки укажем, что возраст планеты Земля оценивается всего-навсего в 4,5 млрд лет (4,5·109). Практически это означает, что взломать пароль методом перебора невозможно! Что ж, «броня крепка, и танки наши быстры», однако не стоит делать поспешных выводов.
Прежде всего, приведенные нами выкладки не совсем корректны. Дело в том, что хотя количество всех возможных паролей и составляет 21024, но число возможных хэш-функций существенно меньше. Действительно, как мы уже отмечали, независимо от длины пароля длина хэш-функции составляет 16 байт, или 128 бит. Соответственно количество возможных вариантов хэш-функций равно 2128. Ну а поскольку для аутентификации применяются не сами пароли, а их хэш-функции, то и ориентироваться нужно именно на это количество возможных комбинаций. Фактически это означает, что одна и та же хэш-функция может соответствовать огромному количеству различных паролей и для успешной аутентификации можно использовать любой из них. Отсюда следует важный вывод: какой бы уникальный пароль вы ни придумали, существует огромное количество других комбинаций символов, которые можно применить в качестве правильного пароля.
Второй важный вывод заключается в том, что не имеет смысла использовать пароли длиннее 16 символов. Действительно, при длине пароля в 16 символов мы имеем 2128 возможных комбинаций, то есть ровно столько же, сколько и возможных комбинаций хэш-функций, а дальнейшее увеличение длины пароля не приведет к увеличению числа хэш-функций.
Теперь давайте попробуем сосчитать, сколько же времени потребуется для последовательного перебора всех наших 2128 хэш-функций. Учитывая, что скорость перебора составляет 107 паролей в секунду, получим, что для перебора всех комбинаций потребуется 1024 лет! Казалось бы, можно спать спокойно, но опять-таки не будем спешить с выводами.
Как мы уже отмечали, основную угрозу представляют не NT-, а LM-хэши. Количество доступных символов в данном случае уже не 256, а всего 197, поскольку все буквенные символы в пароле приводятся к верхнему регистру, следовательно, 26 символов строчных букв латинского алфавита и 33 символа строчных букв русского алфавита надо исключить из 256 вариантов ASCII-символов. Поэтому при длине пароля в 14 символов количество возможных вариантов составляет всего 19714=1,3·1032. Однако и эта цифра явно завышена. Вспомним, что при LM-кодировании пароль разбивается на две 7-символьные части, каждая из которых кодируется независимо. Поэтому в действительности количество возможных комбинаций определяется всего семью символами и составляет 1977=11,5·1016. При скорости перебора 107 паролей в секунду для перебора всех возможных комбинаций потребуется 37 лет. Конечно, и эта цифра достаточно велика и заставляет усомниться в том, что кто-то захочет заниматься подбором пароля. Однако здесь есть одно «но» — так называемый человеческий фактор. Попробуйте найти такого пользователя, который при наборе пароля переключает раскладку клавиатуры! А это значит, что реальное количество символов не 197, а 64. В этом случае число возможных вариантов уменьшается уже до значения 647 (рассматриваются LM-хэши), а для перебора всех паролей потребуется всего 5 дней!
К тому же в подавляющем большинстве случаев пароли представляют собой осмысленные слова или фразы, причем не очень большой длины. Ну а с учетом того, что количество слов исчисляется всего-навсего сотнями тысяч, то перебор по словарю окажется не слишком длительным.
Отсюда следует очень важный вывод: чаще всего подобрать пользовательский пароль не составляет труда — это вопрос времени. Далее на конкретном примере мы покажем вам, как можно быстро подобрать пароли по известным хэш-функциям, а пока рассмотрим, где хранятся хэш-функции и каким образом их можно заполучить.
Месторасположение SAM-файла
До сих пор мы рассматривали процесс восстановления паролей по известным хэш-функциям, но не ответили на самый главный вопрос: где эти хэш-функции паролей хранятся и каким образом можно получить доступ к базе учетных записей пользователей? Все учетные записи пользователей вместе с соответствующими им хэш-функциями паролей хранятся в так называемой базе SAM (Security Accounts Manager). Она представляет собой одноименный файл, который не имеет расширения. SAM-файл является составной частью реестра и хранится в каталоге %systemroot%system32config (под %systemroot% понимается каталог с операционной системой — по умолчанию соответствует каталогу C:WINDOWS). Кроме того, резервная копия этого файла имеется на диске аварийного восстановления системы, а также в каталоге %systemroot%repair. Однако при использовании резервной копии SAM-файла необходимо иметь в виду, что пароли могли измениться с момента последнего сеанса создания резервной копии. Кроме того, недавно заведенных учетных записей пользователей в резервной копии может и не оказаться.
Практические примеры
Говоря о паролях и получении доступа к ПК, необходимо рассмотреть два принципиально разных сценария: первый — это получение доступа к отдельному ПК, который не входит в локальную сеть, а второй — получение доступа к ПК в составе локальной сети, то есть получение сетевого доступа. При этом под локальной сетью мы будем в дальнейшем понимать полноценную сеть с выделенным контроллером домена.
С программной точки зрения способы получения доступа к локальному и сетевому ПК ничем не отличаются друг от друга. Разница заключается лишь в способе получения SAM-файла, который в первом случае хранится на локальном ПК, а во втором — на контроллере домена сети.
Кроме того, доступ к ПК можно реализовать за счет как сброса пароля, так и его подбора. Причем порядок действий различен, поэтому мы детально рассмотрим оба способа сброса.
Сброс пароля Windows
Как уже отмечалось в первой части статьи, существует два типа паролей: локальные и сетевые. Хэш-функции локальных паролей хранятся на самом ПК, а хэш-функции сетевых паролей — на контроллере домена. Поскольку процедура сброса пароля подразумевает редактирование SAM-файла, что принципиально невозможно реализовать удаленно (то есть по сети), и требует перезагрузки ПК, то сброс пароля используется преимущественно для получения доступа к локальному ПК. Если же требуется сбросить именно сетевой пароль пользователя, а администраторский сетевой пароль утерян, то ту же самую процедуру придется проделать для сетевого контроллера домена, но нужно понимать, что для этого необходимо иметь физический доступ к серверу и процедура его остановки и перезагрузки не останется незамеченной.
Для сброса пароля необходимо внести изменения в SAM-файл, который хранится в директории %systemroot%system32config. Однако при загруженной операционной системе доступ к этому файлу заблокирован, то есть его невозможно ни скопировать, ни просмотреть, ни подменить. Поэтому для получения доступа к SAM-файлу прежде всего необходимо загрузить компьютер не с жесткого диска, а с дискеты, компакт-диска или с флэш-памяти с использованием другой операционной системы.
При этом если на жестком диске компьютера установлена файловая система NTFS, то необходимо, чтобы загрузочная операционная система понимала ее. К примеру, можно подготовить системную дискету DOS и разместить на ней драйвер NTFS, называемый NTFSDOS. C помощью этого драйвера все разделы NTFS будут смонтированы в качестве логических дисков DOS, после чего доступ к ним станет возможным.
Кроме того, нам понадобится утилита, позволяющая производить изменения в SAM-файле. Сегодня наиболее популярными из подобных утилит являются две: Active Password Changer 3.0 и Offline NT/2K/XP Password Changer & Registry Editor.
Утилита Active Password Changer 3.0
Данную программу можно скачать с сайта www.password-changer.com/download.htm. Существует несколько вариантов ее загрузки: c установкой на компьютере (Windows Installer) в виде исполняемого файла под DOS (DOS Executable), загрузочная дискета с интегрированным приложением (Bootable Floppy Creator) и ISO-образ для создания загрузочного CD-диска с интегрированным приложением.
Вариант утилиты с установкой на компьютер подразумевает установку исполняемого файла под DOS, установку мастера создания загрузочной дискеты или флэш-диска USB с интегрированным приложением (рис. 1) и утилиту для записи ISO-образа загрузочного диска с интегрированным приложением.
Рис. 1. Мастер создания загрузочной дискеты или флэш-диска USB
с интегрированным приложением Active Password Changer 3.0
Пользоваться данной утилитой независимо от того, применяется ли для загрузки CD-диск, флэш-диск USB или дискета, очень просто. Для этого потребуется лишь минимальное знание английского языка.
Какой именно вариант предпочесть — создание загрузочной дискеты, флэш-диска USB или CD-диска — зависит от конкретной ситуации. К примеру, если на компьютере нет флопповода, что встречается довольно часто, то вариант с загрузочной дискетой отпадает. Использование загрузочного CD-диска тоже не всегда подходит, к примеру на новых материнских платах PATA-контроллер, к которому прицеплен оптический привод, может быть реализован посредством контроллера типа JMicron и в этом случае воcпользоваться загрузочным CD-диском с интегрированной утилитой Active Password Changer 3.0 не удастся по причине отсутствия драйверов контроллера. То есть загрузиться с такого диска можно, но приложение работать не будет.
Вариант с флэш-диском USB практически всегда срабатывает, но только в том случае, если материнская плата поддерживает на уровне BIOS возможность загрузки с флэш-диска. У всех новых моделей материнских плат данная функция предусмотрена, но бывают и исключения. Так, некоторые модели материнских плат (особенно на чипсетах NVIDIA) хотя и позволяют реализовать загрузку системы с флэш-диска USB, но не дают возможности запустить саму утилиту.
Поэтому целесообразно обеспечить возможность использования всех трех способов применения утилиты Active Password Changer 3.0.
Как мы уже отмечали, работа с самой утилитой не вызывает проблем. На первом этапе необходимо выбрать логический диск, на котором размещена операционная система. Далее программа находит SAM-файл на данном логическом диске и выводит учетные записи пользователей, которые можно редактировать.
Редактированию подлежат те же пункты, что и при редактировании из операционной системы Windows пользователем, имеющим статус администратора. Таким образом, используя утилиту Active Password Changer 3.0, можно сбросить пароль любого пользователя (Clear this User’s Password), блокировать (Account is disabled) или разблокировать (Account is locked out) учетную запись, указать необходимость смены пароля при следующей загрузке пользователя (User must change password at next logon) или задать опцию бессрочного пароля (Password never expires). Кроме того, с ее помощью можно задать расписание (по дням недели и часам), когда данному пользователю разрешен вход в систему.
Вообще, редактирование учетных записей пользователя с применением утилиты Active Password Changer 3.0 занимает буквально считаные секунды. Огорчает лишь одно — на официальном сайте www.password-changer.com/download.htm бесплатно можно скачать лишь демо-версию программы, которая имеет существенные ограничения по функциональности и, по сути, абсолютно бесполезна. Поэтому имеет смысл найти ее «правильный» вариант — Active Password Changer 3.0 Professional. К примеру, полнофункциональная версия этой утилиты входит в состав довольно известного загрузочного диска Hiren‘s Boot CD (текущая версия 8.6), который можно легко найти в Интернете. Правда, в данном случае подразумевается загрузка именно с CD-диска.
Offline NT/2K/XP Password Changer & Registry Editor
Утилиту Offline NT/2K/XP Password Changer & Registry Editor можно абсолютно бесплатно скачать с сайта http://home.eunet.no/pnordahl/ntpasswd. Имеются два ее варианта: ISO-образ для создания загрузочного CD-диска и утилита для создания загрузочной дискеты.
Использование данной утилиты вкупе с загрузочным флэш-диском USB в принципе возможно, но создавать такую дискету и интегрировать в нее утилиту придется самостоятельно.
Применение Offline NT/2K/XP Password Changer & Registry Editor не вызывает сложностей. На первом этапе выбираем логический диск с инсталлированной операционной системой. Далее необходимо указать местоположение файла SAM (по умолчанию предлагается windows/system32/config) и выбрать функцию редактирования SAM-файла. Если операционная система устанавливалась по умолчанию, то можно даже не вчитываться в вопросы, которые появляются в каждом новом диалоговом окне, а все время нажимать Enter.
После выбора конкретной учетной записи можно сбросить пароль, задать новый пароль, заблокировать или разблокировать учетную запись пользователя, задать опцию бессрочного пароля и т.д.
В заключение отметим, что утилита Offline NT/2K/XP Password Changer & Registry Editor также входит в состав диска Hiren‘s Boot CD.
Другие варианты
Кроме рассмотренных утилит Active Password Changer 3.0 и Offline NT/2K/XP Password Changer & Registry Editor существуют подобные утилиты для сброса пароля, которые обычно включаются в загрузочные диски Live CD, то есть в диски, с помощью которых можно загрузить операционную систему без ее инсталляции на жесткий диск компьютера. Различных дисков Live CD предлагается достаточно много, но, как правило, все они построены на основе различных клонов Linux-систем. Если же говорить о дисках Live CD на основе Windows XP с интегрированным инструментом для смены пароля, то их мало. Можно назвать диск iNFR@ CD PE 6.3, представляющий собой урезанную копию Windows XP, для работы которой не требуется инсталляция на жесткий диск. В комплект также входит множество утилит и пакетов, в том числе пакет ERD Commander, который позволяет сбрасывать пароль и создавать нового пользователя. Загрузочный диск Live CD урезанной версии Windows XP с использованием хорошо известного пакета PE Builder можно изготовить и самостоятельно, а затем интегрировать в него утилиту для смены пароля (ERD Commander). Однако если такие диски предполагается применять исключительно для смены пароля, то это не самый лучший вариант. Куда практичнее использовать описанные выше методы. Дело в том, что диски Live CD на основе урезанной версии OC Windows XP обладают одним серьезным недостатком: время загрузки компьютера с такого диска составляет более 5 минут, что, конечно же, крайне неудобно.
Подбор пароля
Подбор пароля — задача отнюдь не тривиальная. Основная проблема заключается в том, каким образом получить SAM-файл. Кроме того, одного SAM-файла для этого недостаточно. Дело в том, что для усиления безопасности компания Microsoft в свое время добавила в операционную систему утилиту SYSKEY, которая первоначально входила в Service Pack 3 для Windows NT 4.0. Данная утилита позволяет дополнительно зашифровывать хэши паролей учетных записей пользователей с применением 128-битного ключа, что делает невозможным процесс извлечения хэшей из SAM-файла некоторыми программами, например программой SAMDump. В операционных системах Windows 2000/2003/XP утилита SYSKEY активирована по умолчанию, а дополнительное шифрование не может быть заблокировано.
При активированном режиме SYSKEY ключ шифрования паролей, который кодируется с помощью системного ключа, может храниться как локально (при этом возможна его дополнительная защита паролем), так и отдельно — на дискете, что встречается крайне редко.
Впервые способ преодоления защиты SYSKEY был предложен Тоддом Сабином (Todd Sabin) в его программе pwdump2. Данный способ может быть реализован только на локальной машине, и для создания дампа паролей методом pwdump2 необходимо иметь права администратора. Работа утилиты pwdump2 основана на внедрении библиотеки samdump.dll, посредством которой она записывает свой код в пространство другого процесса (lsass.exe), обладающего более высоким уровнем привилегий. Загрузив библиотеку samdump.dll в процесс lsass (системная служба Local Security Authority Subsystem, LSASS), программа использует те же самые внутренние функции интерфейса API, чтобы обратиться к хэшам паролей. Это означает, что утилита получает доступ к зашифрованным паролям без их расшифровки.
Кроме метода внедрения библиотеки, существуют и другие способы обойти ограничения защиты SYSKEY. К примеру, если имеется доступ к самому ключу, который может храниться на локальной машине, то ничто не мешает расшифровать данные SAM-файла. Ключ является составной частью реестра, и информация о нем может быть извлечена из файла SYSTEM, который сохраняется в той же директории, что и файл SAM. При загруженной операционной системе Windows файл SYSTEM, так же как и файл SAM, является заблокированным, то есть его нельзя ни скопировать, ни переименовать, ни подменить.
Далее мы расскажем о наиболее популярных утилитах, позволяющих подобрать пароль методом перебора по его хэш-функциям, но прежде рассмотрим основные способы получения SAM-файла и системного ключа шифрования.
Получение SAM-файла и системного ключа шифрования
Для локального ПК
Если речь идет о локальном ПК, то при использовании утилит подбора паролей по их хэш-функциям необходимо прежде всего получить SAM-файл и файл SYSTEM. В принципе, некоторые утилиты (в частности, SAMinside), если они установлены на том самом ПК, где хранится учетная запись пользователей, позволяют сделать это и при загруженной операционной системе. Однако в данном случае есть одно серьезное ограничение: эта операция возможна только при условии, что компьютер загружен под учетной записью пользователя, имеющего права администратора. Но тогда возникает резонный вопрос: если компьютер загружен под учетной записью пользователя с правами администратора, зачем вообще подбирать пароль? Поэтому наиболее типичной является ситуация, когда учетная запись с правами администратора неизвестна и нужно как раз подобрать пароль администратора или любого пользователя данного ПК с правами администратора.
В этом случае необходимо предварительно скопировать два файла: SAM и SYSTEM, которые, как уже отмечалось, расположены в директории %systemroot%system32config (по умолчанию это директория СWindowssystem32config).
Для осуществления данной процедуры требуется загрузить компьютер с помощью альтернативной операционной системы, то есть не с жесткого диска. Самый простой вариант — создать загрузочный диск Live CD или даже флэш-диск USB (если компьютер поддерживает загрузку с USB-носителя) с урезанной версией Windows XP. Это легко сделать посредством утилиты PE Builder (более подробно о создании таких дисков можно прочитать в отдельной статье в этом номере журнала). Кроме того, если для загрузки используется CD-диск, то перед загрузкой в компьютер необходимо также вставить флэш-диск USB, чтобы иметь возможность скопировать на него нужные файлы (если флэш-диск вставить после загрузки ОС, то он не инициализируется).
Итак, после загрузки компьютера с помощью альтернативной операционной системы нужно скопировать на флэш-диск или на дискету два файла: SAM и SYSTEM. Далее можно приступать к подбору пароля с применением утилиты LCP 5.04 или SAMinside. Естественно, данная процедура производится уже на другом компьютере.
Рассмотренный способ получения файлов SAM и SYSTEM применяется в тех случаях, когда имеется локальный доступ к компьютеру и необходимо получить учетную базу пользователей вместе с хэш-функциями паролей, хранящимися на самом компьютере. Если же речь идет о получении сетевого пароля, то используется несколько иная процедура.
Для сетевого компьютера
В случае локальной сети файлы SAM и SYSTEM хранятся на контроллере домена и получить доступ к ним не так-то просто. В принципе, можно использовать тот же самый способ, что и для локального ПК, но с сервером, выполняющим роль контроллера домена, правда такая процедура не останется незамеченной. Кроме того, некоторые утилиты (например, LCP 5.04) поддерживают возможность удаленного (то есть по сети) получения SAM-файла с контроллера домена. Однако для реализации такого способа нужно обладать правами доступа администратора сети или контроллера домена. Кроме того, на контроллере домена можно легко заблокировать возможность удаленного доступа к реестру — в этом случае все попытки извлечь SAM-файл по сети будут заблокированы.
Утилита LCP 5.04
Итак, настало время перейти к практическим примерам и рассмотреть программы, которые позволяют эффективно восстанавливать пароли пользователей по известным хэш-функциям. Начнем с утилиты LCP 5.04 (www.lcpsoft.com; рис. 2), которая является очень мощным средством восстановления паролей по LM- и NT-хэшам. Эта утилита бесплатна и имеет русскоязычный интерфейс.
Рис. 2. Главное окно утилиты LCP 5.04
Для того чтобы начать работу с данной утилитой, прежде всего требуется импортировать в нее учетную базу пользователей. Программа LCP 5.04 поддерживает импорт учетных записей пользователей с локального и удаленного компьютеров, импорт SAM-файла, импорт Sniff-файлов, а также импорт файлов, созданных другими утилитами (в частности, файлов LC, LCS и PwDump).
Импорт учетных записей пользователей с локального компьютера подразумевает два варианта операционной системы: Windows NT/2000/2003/XP без Active Directory и то же самое, но с Active Directory (рис. 3).
Рис. 3. Окно импорта учетных записей пользователей
с локального компьютера
Однако, как показывает практика, если применяется операционная система Windows XP SP2, то импорт с локального компьютера невозможен. При выборе любого из вариантов срабатывает защита операционной системы и компьютер, предварительно уведомив об этом пользователя, перезагружается.
Импорт учетной базы пользователей с удаленного ПК позволяет выбрать компьютер в составе локальной сети, указать тип импорта (импорт из реестра или из памяти) и, в случае необходимости, ввести имя пользователя и пароль при подключении к удаленному ПК (рис. 4). Понятно, что при использовании удаленного подключения пользователь должен иметь права администратора.
Рис. 4. Окно настройки импорта учетных записей
пользователей с удаленного ПК
При импорте SAM-файла необходимо указать путь к нему, а также к файлу SYSTEM (рис. 5). При этом предполагается, что файлы SAM и SYSTEM предварительно скопированы описанным выше способом.
Рис. 5. Окно настройки импорта SAM-файла
После того как в программу LCP 5.04 произведен импорт учетных записей пользователей, содержащих имя пользователя, LM- и NT-хэши, можно приступать к процедуре восстановления паролей (рис. 6). Утилита поддерживает подбор как по LM-, так и по NT-хэшу. Понятно, что при наличии LM-хэша атака будет направлена именно на него.
Рис. 6. Главное окно утилиты LCP 5.04 с импортированными
данными учетных записей пользователей
В утилите LCP 5.04 реализовано три типа атак для подбора паролей по их хэшам: атака по словарю, гибридная атака по словарю и атака методом последовательного перебора.
При атаке по словарю последовательно вычисляются хэши для каждого слова из словаря или для его модификации и сравниваются с хэшами паролей пользователей. Если хэши совпадают, то пароль найден. Преимуществом данного метода является его высокая скорость, а недостатком — большая вероятность отсутствия пароля в словаре. Для увеличения эффективности атаки по словарю утилита позволяет производить дополнительные настройки (рис. 7). В частности, к словарю можно добавлять имена пользователей, учитывать возможность использования соседних клавиш (типа последовательностей qwert и др.), повтора слова (например, useruser), обратного порядка символов в словах (например, resu), конкатенации с обратным порядком символов (в частности, userresu), применения усеченных слов, слов без гласных, транслитерации (типа parol). Кроме того, можно проверять изменение раскладки на латинскую (слово «пароль» в латинской раскладке будет выглядеть как «gfhjkm») или на локализованную (слово «password» в русской раскладке превратится в «зфыыцщкв»). Кроме того, для атаки по словарю можно подключать разные словари, даже сразу несколько. В утилите LCP 5.04 есть собственные словари, но мы рекомендуем использовать более емкие словари, которые можно найти в Интернете, например отличная подборка находится на сайте www.insidepro.com.
Рис. 7. Настройка атаки по словарю в утилите LCP 5.04
При восстановлении паролей методом гибридной атаки по словарю к каждому слову либо к его модификации справа и/или слева добавляются символы. Для каждой получившейся комбинации вычисляется хэш, который сравнивается с хэшами паролей пользователей. В программе LCP 5.04 можно задать количество символов, добавляемых слева или справа от слова (его модификации) (рис. 8).
Рис. 8. Настройка гибридной атаки в утилите LCP 5.04
При атаке методом последовательного перебора (brute force) из указанного набора символов составляются случайные слова, а потом для них (точнее, для последовательностей символов) вычисляются хэш-функции. При использовании данного метода пароль будет определен, если символы, содержащиеся в пароле, есть в указанном наборе символов. Однако этот метод отнимает очень много времени, и чем больше символов в выбранном наборе, тем дольше будет продолжаться перебор комбинаций. При использовании данного метода можно указывать набор символов, применяемых для подбора, из нескольких предопределенных наборов (рис. 9), задавать набор символов вручную. Кроме того, можно указывать длину пароля и ограничивать минимальную и максимальную длину. Если известны некоторые символы пароля или хотя бы регистр символов, то можно дополнительно указывать, какие символы должны присутствовать в пароле (и их местоположение) (рис. 10), а также определять для каждого неизвестного символа его регистр (верхний, нижний, неизвестно). Разумеется, задавать длину пароля более семи символов имеет смысл только в том случае, когда производится атака на NT-хэш. Это касается и маски регистров символов — использовать ее целесообразно только при подборе NT-хэша. Естественно, маска символов и регистров применяется только в том случае, когда требуется подобрать пароль для конкретной учетной записи, а не множество паролей для всех учетных записей.
Рис. 9. Окно настройки атаки методом последовательного
перебора в утилите LCP 5.04
Еще одной интересной особенностью утилиты LCP 5.04 является возможность разбиения атаки последовательным перебором на части (с их последующим объединением). Каждая часть задачи может независимо от других частей выполняться на отдельном компьютере. Соответственно чем больше задействуется компьютеров для перебора, тем выше скорость выполнения задачи.
Рис. 10. Настройка маски известных символов пароля
Утилита LCP 5.04 поддерживает экспорт результатов (найденных паролей) в текстовый файл и добавление паролей в словарь, что в дальнейшем позволяет более эффективно подбирать пароли пользователей.
Утилита SAMinside
Утилита SAMinside (www.insidepro.com) тоже предназначена для подбора паролей по хэш-функциям, однако по функциональности она несколько отличается от утилиты LCP 5.04. Текущая версия утилиты SAMinside — 2.5.8.0, на официальном сайте можно скачать лишь ее демо-версию, которая имеет некоторые функциональные ограничения. Так, в демо-версии программы не поддерживается настройка маски при подборе пароля. Но, думается, наши читатели знают, как поступать в этом случае.
Утилита SAMinside поддерживает несколько языков, в частности интерфейс утилиты можно настроить на русский язык (рис. 11).
Рис. 11. Главное окно утилиты SAMinside
Перед началом работы с данной утилитой необходимо импортировать в нее учетную базу пользователей. Программа SAMinside обеспечивает импорт файлов реестров SAM и SYSTEM, импорт файла реестра SAM и файла с ключом SYSKEY, импорт учетных записей пользователей с локального компьютера с применением процедур LSASS и Sheduler. Кроме того, предусмотрен импорт базы учетных записей пользователей из других программ (в частности, файлов LCP, LCS, LC, LST и PwDump).
Сравнивая возможности утилит SAMinside и LCP 5.04, нужно отметить, что утилита SAMinside не поддерживает импорт учетной базы пользователей с удаленного ПК, но в то же время может импортировать ее с локального компьютера с использованием процедур LSASS и Sheduler, чего не способна делать утилита SAMinside. Естественно, для этого нужно иметь права администратора на локальном ПК.
При импорте SAM-файла необходимо указать путь к нему, а также к файлу SYSTEM. При этом предполагается, что оба файла предварительно скопированы с нужного компьютера.
После того как произведен импорт учетных записей пользователей в программу SAMinside, можно приступать к процедуре восстановления паролей. Утилита поддерживает подбор как по LM-, так и по NT-хэшу. Но, как мы уже неоднократно отмечали, если пароль имеет LM-хэш, то подбирать нужно именно его.
В утилите SAMinside реализовано несколько типов атак для подбора паролей по их хэшам: атака по словарю, гибридная атака по словарю, атака по маске, атака методом последовательного перебора и атака по Rainbow-таблицам.
При атаке по словарю предусмотрены гибкие возможности по настройке. Так, к словарю можно добавлять имена пользователей, проверять дважды записанные слова, слова, записанные в обратном порядке, последовательности соседних клавиш и повторы одинаковых символов (рис. 12). Однако в настройках атаки по словарю не предусмотрена возможность проверять замену раскладки на латинскую или на локализованную.
Рис. 12. Настройка атаки по словарю в утилите SAMinside
Кроме того, при атаке по словарю можно подключать различные словари, даже несколько сразу (рис. 13). Подборку словарей можно найти на официальном сайте программы www.insidepro.com.
Рис. 13. Подключение словарей в утилите SAMinside
При восстановлении паролей методом гибридной атаки по словарю к каждому слову словаря либо к его модификации справа и/или слева добавляются символы. С помощью настроек программы можно указать количество таких символов (рис. 14).
Рис. 14. Настройка гибридной атаки в утилите SAMinside
При атаке методом последовательного перебора (рис. 15) возможно указывать набор символов, используемых для подбора, из нескольких предопределенных наборов или задавать набор символов вручную. Кроме того, можно указывать длину пароля и ограничивать минимальную и максимальную длину.
Рис. 15. Окно настройки атаки методом перебора в утилите SAMinside
К тому же имеется возможность выполнять подбор методом последовательного перебора на нескольких компьютерах.
Атака по маске применяется при наличии определенной информации о пароле. К примеру, может быть известно, что пароль начинается с комбинации символов «123» или что первые три символа пароля цифровые, а остальные — латинские буквы.
При настройке атаки по маске (рис. 16) можно задать максимальную длину пароля и для каждого символа настроить маску. Если точно известен символ в пароле и его позиция, то можно указать данный символ. Кроме того, для каждого символа в качестве маски можно использовать предопределенный набор символов.
Рис. 16. Окно настройки атаки по маске в утилите SAMinside
Еще одна возможность атаки, реализованная в программе SAMinside, — это атака по Rainbow-таблицам (применяется только для LM-хэшей). Программа поддерживает таблицы, сгенерированные утилитой rainbowcrack версии 1.2 (www.antsight.com/zsl/rainbowcrack). Для генерации таблиц используется файл rtgen.exe. В утилите rainbowcrack имеется подробный учебник, освоив который можно научиться создавать Rainbow-таблицы.
Идея Rainbow-таблиц заключается в следующем: атака методом последовательного перебора занимает чрезвычайно много времени, для ускорения процесса можно воспользоваться предварительно сформированными таблицами, в которых сохранялись бы сгенерированные наборы символов и соответствующие им LM-хэши.
Отметим, что процесс генерации Rainbow-таблиц может занять от нескольких дней до нескольких лет в зависимости от применяемых настроек. Однако если такие таблицы созданы, то их использование существенно повышает скорость подбора паролей, который в этом случае занимает несколько минут. Пожалуй, сегодня Rainbow-таблицы являются наиболее эффективным и быстрым средством для восстановления паролей.
Утилита Proactive Password Auditor
Еще одна популярная утилита, позволяющая восстанавливать пароли по их хэш-функциям, — это Proactive Password Auditor от компании Elcomsoft (http://www.elcomsoft.com). Правда, в отличие от LCP 5.04, она стоит немалых денег, а на сайте компании можно скачать лишь ее 60-дневную демо-версию с ограниченным числом поддерживаемых учетных записей пользователей, пароли которых необходимо подобрать.
Текущая версия программы Proactive Password Auditor — 1.7, однако, как выяснилось в ходе тестирования, она оказалась нестабильной и постоянно приводила к ошибке, после чего просто закрывалась. Поэтому мы перешли на проверенную и стабильную в работе версию 1.5.
Программа Proactive Password Auditor (рис. 17) поддерживает русскоязычный интерфейс и очень проста в эксплуатации.
Рис. 17. Главное окно программы Proactive Password Auditor
Перед началом работы с данной утилитой необходимо импортировать в нее учетную базу пользователей. Утилита Proactive Password Auditor поддерживает импорт учетной базы пользователей как с локального, так и с удаленного ПК. При этом независимо от того, идет ли речь о локальном или удаленном ПК, импорт учетных записей пользователей может быть реализован через доступ к файлам реестра (SAM, SYSTEM), которые нужно скопировать из соответствующей директории вышеописанными способами. Кроме того, поддерживается импорт учетных записей пользователей из файла PwDump.
Импорт учетных записей пользователей с локального ПК может быть реализован за счет доступа к памяти локального компьютера или реестра.
Импорт учетных записей пользователей с удаленного компьютера осуществляется только за счет доступа к памяти удаленного компьютера. При этом предварительно нужно выбрать сетевой компьютер (рис. 18), к которому необходимо подключиться для доступа к памяти. Естественно, подобная процедура возможна только при наличии администраторских привилегий.
Рис. 18. Получение учетной базы пользователей с удаленного ПК
После того как произведен импорт учетных записей пользователей, можно приступать непосредственно к процедуре восстановления паролей. Утилита поддерживает подбор как по LM-, так и по NT-хэшу. Но, как мы уже неоднократно отмечали, если пароль имеет LM-хэш, то подбирать нужно именно его.
В утилите Proactive Password Auditor реализовано несколько типов атак для подбора паролей по их хэшам: атака по словарю, атака по маске, атака методом последовательного перебора и атака по Rainbow-таблицам.
При атаке по словарю каких-либо настроек не предусматривается. Возможно лишь одновременное подключение множества словарей.
При атаке методом последовательного перебора можно указывать набор символов, применяемых для подбора из нескольких предопределенных наборов, или задавать набор символов вручную. Кроме того, можно указывать длину пароля и ограничивать минимальную и максимальную длину.
При настройке атаки по маске можно задать максимальную длину пароля и, если точно известен символ в пароле и его позиция, указать данный символ в маске. Кроме того, при атаке по маске, как и в случае атаки методом перебора, имеется возможность указывать набор символов, используемых для подбора, из нескольких предопределенных наборов или задавать набор символов вручную.
Рис. 19. Настройка режима генерации Rainbow-таблиц
в программе Proactive Password Auditor
Как и в случае утилиты SAMinside, программа Proactive Password Auditor поддерживает атаку по Rainbow-таблицам (как для LM-, так и для NT-хэшей). Причем уникальной особенностью данной программы является генерация Rainbow-таблиц с гибкими возможностями по настройке (рис. 19 и 20).
Рис. 20. Генерация Rainbow-таблиц в программе
Proactive Password Auditor
Сравнение утилит SAMinside, LCP 5.04 и Proactive Password Auditor
В заключение отметим, что утилиты SAMinside, LCP 5.04 и Proactive Password Auditor представляют собой весьма эффективные инструменты для подбора паролей. У каждой из них есть свои преимущества, поэтому для практического применения лучше иметь все утилиты. Основные их характеристики приведены в табл. 2.
Таблица 2. Основные характеристики утилит SAMinside, LCP 5.04
и Proactive Password Auditor
Рекомендации по защите паролей
Как показывает практика, уязвимость паролей обычно обусловлена беспечностью пользователей. Операционные системы Windows NT/2000/2003/XP предоставляют в распоряжение пользователей достаточно средств для построения мощной системы безопасности — нужно только не пренебрегать этими возможностями.
Для предотвращения получения учетных записей пользователей с локального компьютера рекомендуется запретить в настройках BIOS возможность загрузки с дискеты и с других носителей, кроме жесткого диска, и защитить BIOS паролем.
Если речь идет о контроллере домена, то дополнительно рекомендуется выполнить следующие настройки:
- запретить удаленное управление реестром, остановив соответствующую службу;
- запретить использовать право отладки программ, для чего в оснастке безопасности нужно выбрать элемент Computer ConfigurationSecurity SettingsLocal PoliciesUser Right Assignment, а в свойствах политики Debug programs удалить из списка всех пользователей и все группы;
- отменить возможность применения специальных общих папок ADMIN$, C$ и т.д., предназначенных для нужд операционной системы, но также позволяющих пользователю с административными правами подключаться к ним через сеть. Для блокирования данных разделяемых ресурсов необходимо в разделе реестра HKEY_LOCAL_MACHINE SYSTEMCurrent-ControlSetServices LanmanServerParame-ters добавить параметр AutoShareWks (для версий Windows NT, 2000 Professional и XP) или AutoShareServer (для серверных версий) типа DWORD и установить его значение равным 0;
- заблокировать анонимный сетевой доступ, позволяющий получать информацию о пользователях, о политике безопасности и об общих ресурсах. С этой целью нужно добавить в раздел реестра HKEY_LOCAL_MACHINESYSTEM Current-ControlSetControlLsa параметр Restrict-Anonymous типа DWORD, установив его равным 2;
- запретить сетевой доступ нежелательных пользователей к вашему ПК. Для этого в оснастке безопасности в разделе Computer ConfigurationSecurity SettingsLocal PoliciesUser Right Assignment в свойствах политики Access this computer from the network откорректируйте список пользователей, которым разрешен сетевой доступ к компьютеру. Дополнительно в политике Deny Access to this Computer from the network можно указать список пользователей, которым запрещен удаленный доступ к данному компьютеру.
- Чтобы усложнить процесс восстановления паролей по их хэш-функциям, рекомендуется:
- запретить хранение уязвимых LM-хэшей, для чего в раздел реестра HKEY_LOCAL_MACHINESYSTEMCurrent-ControlSetControlLsa следует добавить параметр NoLMHash типа DWORD. При его значении, равном 1, LM-хэши не хранятся. Именно данный способ является наиболее эффективным средством для защиты паролей, поскольку их подбор по NT-хэшам — задача безнадежная;
- выбирать пароли с минимальной длиной в 10 символов;
- не применять для паролей исключительно цифровые символы. Целесообразно выбирать символы из возможно большего символьного набора. Как показывает практика, плохо поддаются подбору русские слова и предложения, которые набираются при латинской раскладке клавиатуры. Еще более эффективным средством является использование пароля, одна часть которого набирается при английской раскладке клавиатуры, а другая — при русской. Как правило, такие пароли подобрать невозможно.
КомпьютерПресс 3’2007
Эффективное получение хеша паролей в Windows. Часть 1
Менеджер учетных записей безопасности (Security Accounts Manager — SAM) – это файл реестра в Windows, начиная с Windows NT вплоть до самых последних версий Windows 7.
Автор:Bernardo Damele A. G.
Слегка измененное определение из Википедии:
Менеджер учетных записей безопасности (Security Accounts Manager — SAM) – это файл реестра в Windows, начиная с Windows NT вплоть до самых последних версий Windows 7. В SAM хранятся хешированные пароли пользователей (в формате LM-хеш или NTLM-хеш). Благодаря тому, что хеш-функция однонаправленная, пароли находятся в относительной безопасности.
Вообще, получение хеша паролей пользователей операционной системы, как правило, один из первых шагов, ведущий к компрометации системы в дальнейшем. Доступ к хешированным паролям дает “зеленый свет” различным атакам, к примеру: использование хеша для SMB-аутентификации в других системах с тем же паролем, анализ парольной политики и распознавание структуры пароля, взлом пароля и.т.п.
Способов получения хешированных паролей из SAM множество, и выбор конкретного способа будет зависеть от того, каким именно доступом к компьютеру жертвы вы обладаете.
Физический доступ
При получении физического доступа к системе, например, когда у вас в руках оказался чужой ноутбук, или когда социальная инженерия закончилась успешно, лучше всего слить хеши паролей следующим образом: во время перезагрузки войти в меню BIOS, изменить приоритет загрузки, так чтобы вначале запускался оптический или USB-привод, сохранить изменения и загрузиться с вашего любимого live CD c дистрибутивом GNU/Linux или с флешки. Есть две широко известные утилиты для дампа хешированных паролей из SAM: bkhive и samdump2:
- bkhive — получает syskey bootkey из куста системы
- samdump2 – получает хеши паролей в Windows 2k/NT/XP/Vista
Вышеназванные утилиты, как правило, поставляются со многими дистрибутивами GNU/Linux. Перед получением дампа хешей убедитесь, что вы располагаете этими утилитами.
Использование:
# bkhive
bkhive 1.1.1 by Objectif Securite
http://www.objectif-securite.ch
original author: ncuomo@studenti.unina.it
bkhive systemhive keyfile
# samdump2
samdump2 1.1.1 by Objectif Securite
http://www.objectif-securite.ch
original author: ncuomo@studenti.unina.it
samdump2 samhive keyfile
Пример получения хешей SAM из Windows-раздела /dev/sda1:
# mkdir -p /mnt/sda1
# mount /dev/sda1 /mnt/sda1
# bkhive /mnt/sda1/Windows/System32/config/SYSTEM /tmp/saved syskey.txt
# samdump2 /mnt/sda1/Windows/System32/config/SAM /tmp/saved-syskey.txt > /tmp/hashes.txt
Если же bkhive и samdump2 у вас нет, то можно скопировать SYSTEM и SAM файлы из /mnt/sda1/Windows/System32/config себе на флешку, а затем импортировать файлы с флешки в любую утилиту, позволяющую извлечь хеши SAM: например, Cain & Abel, creddump,mimikatz и.т.п.
Обход приглашения на ввод пароля
Если вы вместо того, чтобы получать хешированные пароли пользователей, думаете, как обойти приглашение на ввод пароля, воспользуйтесь следующими оригинальными решениями:
- BootRoot – проект, представленный на конференции Black Hat USA 2005 исследователями Дереком Сёдером (Derek Soeder) и Райаном Пермехом (Ryan Permeh). С помощью технологии BootRoot можно в стандартном загрузочном секторе выполнить код, который во время загрузки уронит ядро Windows. eEye BootRootKit – это NDIS бэкдор, который работает по типу boot-вируса и демонстрирует использование технологии BootRoot.
- SysRQ2 – загрузочный CD-образ, позволяющий пользователю в любое время после загрузки нажатием клавиш Ctrl-Shift-SysRq вызвать командную строку с полными привилегиями (привилегии SYSTEM). SysRQ2 работает на системах Windows 2000, Windows XP и Windows Server 2003. SysRQ2 впервые был продемонстрирован на конференции Black Hat USA 2005 исследователями Дереком Сёдером и Райаном Пермехом в качестве примера использования технологии eEye BootRootKit. Для создания диска с SysRq выберите опцию “создать CD из ISO-образа” в предпочтительном ПО для прожига дисков.
- Kon-Boot – прототип программы, благодаря которой на лету (во время загрузки) можно менять содержимое ядра Linux или Windows. В текущей сборке Kon-Boot позволяет войти в linux-систему под root’ом без ввода пароля или повысить привилегии текущего пользователя до root’а. В случае с Windows-системами с помощью Kon-Boot можно войти в любой защищенный паролем профиль без знания самого пароля.
Сброс пароля
Как вариант, можно загрузиться с live CD или флешки с bootdisk, и с помощью утилиты chntpw сбросить пароль любого локального пользователя Windows.
Использование пост-эксплойтов
В этой ситуации, как правило, система уже скомпрометирована, и вы получили доступ к командной строке с административными правами. Далее нужно повысить свои привилегии до пользователя SYSTEM. Например, с помощью утилиты PsExec из пакета SysInternals:
C:>psexec.exe -i -s cmd.exe
Есть и другие способы повышения привилегии, но их описание останется вне рамок этого поста.
Методы, основанные на унаследованных возможностях Windows
В системах Windows NT и Windows 2000 можно воспользоваться утилитой Ntbackup из подсистемы MS-DOS: сохраните бэкап состояния системы в локальном файле на скомпрометированной машине, а затем снова используйте Ntbackup и восстановите состояние системы в локальном каталоге без сохранения настроек безопасности. По окончании описанной процедуры вы будете обладать файлами SAM и SYSTEM. Первоначальный бэкап Windows 2000 c последними пакетами обновлений и исправлений занимает около 280МБ. Для более современных версий Windows вместо Ntbackup подойдет утилита Wbadmin.
Также стоит упомянуть утилиту regback.exe из пакета Windows 2000 Resource Kit Tools. Утилита слегка упрощает процесс, так как сливаются только нужные файлы:
C:>regback.exe C:backtempSAM machine sam
C:>regback.exe C:backtempSYSTEM machine system
Если regback.exe не срабатывает, то на системах Windows XP и выше можно воспользоваться утилитами regedit.exe и reg.exe:
Использование reg.exe:
C:>reg.exe save HKLMSAM sam
The operation completed successfully
C:>reg.exe save HKLMSYSTEM sys
The operation completed successfully
Использование regedit.exe:
- Выполнить regedit.exe в Start/Run.
- Открыть ветку ComputerHKEY_LOCAL_MACHINE, правой кнопкой мыши щелкнуть по секции SAM и выбрать “Export” (“Экспортировать”).
- Установить значение параметра “Save as type” (“Тип файла”) в “Registry Hive Files” (“Файлы кустов реестра”).
- Проделать то же самое для куста SYSTEM.
И, наконец, еще один способ: файлы SAM и SYSTEM можно достать из каталога C:Windowsrepair. Но существует вероятность, что в каталоге содержаться устаревшие копии нужных файлов, информация о пользователях в которых неактуальна.
Метод, использующий теневое копирование томов
Метод стал известен относительно недавно, и впервые его использование продемонстрировал Тим Томс (Tim Tomes). Метод эксплуатирует функционал теневого копирования томов в современных операционных системах Windows для того, чтобы получить доступ к заблокированным ранее системным файлам, таким как файлы SAM и SYSTEM в каталоге C:WindowsSystem32config.
Для выполнения метода, вы можете воспользоваться cкриптом vssown, который дает возможность управлять теневым копированием.
Список теневых копий:
C:>cscript vssown.vbs /list
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
SHADOW COPIES
=============
Как и ожидалось, сначала никаких теневых копий нет.
Проверим статус службы теневого копирования (VSS):
C:>cscript vssown.vbs /status
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Stopped
C:>cscript vssown.vbs /mode
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] VSS service set to 'Manual' start mode.
Если тип запуска службы “Вручную”, то нам нужно установить тип запуска в первоначальное состояние (“Остановлена”).
Создадим теневую копию:
C:>cscript vssown.vbs /create
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Attempting to create a shadow copy.
Проверим, что теневая копия создалась:
C:>cscript vssown.vbs /list
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
SHADOW COPIES
=============
[*] ID: {D79A4E73-CCAB-4151-B726-55F6C5C3A853}
[*] Client accessible: True
[*] Count: 1
[*] Device object: \?GLOBALROOTDeviceHarddiskVolumeShadowCopy1
[*] Differnetial: True
[*] Exposed locally: False
[*] Exposed name:
[*] Exposed remotely: False
[*] Hardware assisted: False
[*] Imported: False
[*] No auto release: True
[*] Not surfaced: False
[*] No writers: True
[*] Originating machine: LAPTOP
[*] Persistent: True
[*] Plex: False
[*] Provider ID: {B5946137-7B9F-4925-AF80-51ABD60B20D5}
[*] Service machine: LAPTOP
[*] Set ID: {018D7854-5A28-42AE-8B10-99138C37112F}
[*] State: 12
[*] Transportable: False
[*] Volume name: \?Volume{46f5ef63-8cca-11e0-88ac-806e6f6e6963}
Обратите внимание на значение параметров Deviceobject и ID. Значение первого параметра понадобиться для осуществления следующего шага, а значение второго – для очистки.
Достанем следующие файлы из теневой копии:
C:>copy \?GLOBALROOTDeviceHarddiskVolumeShadowCopy1WindowsSystem32configSYSTEM .C:>copy \?GLOBALROOTDeviceHarddiskVolumeShadowCopy1WindowsSystem32configSAM .
Таким образом, мы только что скопировали файлы SAM и SYSTEM из теневой копии в папку C:root.
Очистка:
C:>cscript vssown.vbs /delete {D79A4E73-CCAB-4151-B726-55F6C5C3A853}
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Attempting to delete shadow copy with ID: {D79A4E73-CCAB-4151-B726-55F6C5C3A853}
И, наконец, остановим службу теневого копирования:
C:>cscript vssown.vbs /stop
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
[*] Signal sent to stop the VSS service.
Методы, основанные на внедрении в память процессов
В основе подобных методов получения SAM-хешей из памяти лежит внедрение DLL в системный процесс LSASS, или, в общем случае, разбиение памяти на отдельные участки и изучение содержимого полученных участков. Манипуляции с памятью могут привести к падению процесса LSASS и Синему Экрану Смерти (BSoD), поэтому предпочтительнее использовать методы, основанные на копировании кустов реестра (regback.exe и reg.exeregedit.exe), либо теневое копирование томов. Тем не менее, в некоторых особых случаях внедрение в память все-таки требуется.
Наиболее известным инструментом для получения хешей SAM, вероятно, является утилита fgdump – улучшенная версия pwdump6; обе утилиты разработаны командой foofus. Основное преимущество fgdump над pwdump заключается в возможности работать на системах Windows Vista и выше. Хотя пару раз я видел, как падали обе утилиты. Среди более стабильных и надежных инструментов можно выделить pwdump7 от Андреса Тараско (Andres Tarasco) и gsecdump от TrueSec. Обе утилиты работают на всех версиях Windows, как 32- так и 64-битных. Нужно отметить, что с контроллеров домена слить хеши паролей с помощью утилиты pwdump7 не получится, так как эта утилита вместо внедрения в LSASS читает хеши SAM из реестра. Еще одна надежная и популярная утилита – это PWDumpX, разработанная Ридом Арвином (Reed Arvin), хотя работает PWDumpX только на 32х разрядных системах.
Ниже на скриншоте показан дамп информации из SAM, полученной утилитой gsecdump на Windows Server 2003 SP2 32-bit:
Дамп информации о локальных пользователях после внедрения кода в процесс LSASS
В Metasploit Framework также имеются собственные модули пост-эксплойта, встроенные команды и скрипты для Meterpreter, позволяющие получить хеши SAM. Подробнее о работе кода и о том, какие идеи лежат в его основе можно прочитать в этих постах.
Разумеется, существует и множество других инструментов и методов, и важно знать, какой именно метод подходит для конкретной системы. Чтобы облегчить выбор, я создал сводную электронную таблицу, в которой перечислены нужные утилиты, их возможности и принципы работы, и, что самое важное, возможные проблемы при использовании таких утилит.
Изменения на 4 января 2012 г.
- Дэвид Мэлони (David Maloney) добавил в Metasploit Framework модули, позволяющие работать с процессом теневого копирования томов.
- TrueSec обновил gsecdump до версии v.2.0b5. Последняя версия стабильно работает на всех версиях Windows (как на 32х-, так и на 64х-разрядных).
Представим ситуацию, вы забыли пароль от своей учетной записи. Как быть? Разберем способ сброса пароля учетной записи Windows без применения стороннего ПО.
На страницах моего блога уже присутствует обзор мультизагрузочных WinPE-сборок. Вся их прелесть в том, что они содержат в себе большое количество различных программ на все случаи жизни. И сброс пароля, является одним из этих случаев.
Сброс Пароля
В качестве подопытного кролика будет выступать операционная система Windows 10, установленная в виртуальной машине VirtualBox. В ней будет присутствовать учетная запись с намеренно забытым паролем.
Наша цель, получить доступ к данной учетной записи.
В общем берем в руки установочный Windows-диск и читаем дальше.
Среда Предустановки
Загружаемся с установочного диска Windows. Запустится среда предустановки, на экране появится окно мастера установки.
Нажимаем на клавиатуре сочетание клавиш Shift+F10. Запустится окно командной строки.
По приветствию ввода команд видно, что текущей рабочей директорией является X:Sources. Нам же нужно перейти в директорию файла SAM, но прежде нужно понять под какой буквой расположен диск с установленной операционной системой Windows. Выполним команду mountvol, чтобы определить все подключенные диски.
В моем случае, в системе подключено четыре диска С, D, X и E. Диск X сразу исключаем, так как он принадлежит среде предустановки. Остальные проверяем командой dir.
В ходе поисков, целевым диском в моем случае, оказался диск D:. Выполняем смену рабочего диска командной строки на диск D:, и переходим в каталог WindowsSystem32config.
Проверим содержимое папки на наличие файла SAM командой dir.
Создадим копию данного файла. Выполним для этого команду copy SAM SAM.bkp.
Теперь перейдем на уровень выше, в директорию System32. Команда cd ... Переименуем исполняемый файл Utilman.exe в _Utilman.exe (ren Utilman.exe _Utilman.exe). Скопируем исполняемый файл cmd.exe в эту же директорию, указав в качестве нового имени имя Utilman.exe (copy cmd.exe Utilman.exe). То есть, выполним подмену файла.
Перезагружаем компьютер с жесткого диска. На экране входа в учетную запись, нажимаем на кнопку специальных возможностей.
Вместо привычного окна запуска специальных возможностей, запустится окно командной строки.
Запущена она будет от имени пользователя SYSTEM. В этом можно убедиться выполнив команду echo %USERNAME%.
Выполним в консоли команду lusrmgr.msc. Запустится оснастка Локальные пользователи и группы. Через нее, можно будет без каких либо затруднений выполнить сброс, либо изменение пароля необходимого пользователя.
Сброс осуществляется установкой пустого пароля.
На этом сброс пароля можно считать завершенным. Остается только вернуть все как было, то есть переименовать обратно файл _Utilman.exe, предварительно удалив ненастоящий Utilman.exe. Сделать все это, можно уже в работающей основной системе, не обязательно грузиться снова с установочного диска.
Не Utilman’ом Единым
Чуть выше, был применен трюк с переименованием системной программы Utilman.exe. Отвечает она за панель специальных возможностей, вызывается сочетанием клавиш Win+U. Это не единственная программа подлог которой можно совершить. Ниже я перечислю перечень системных программ:
osk.exe — экранная клавиатура, вызывается из меню специальных возможностей.
Magnify.exe — экранная лупа, тоже является частью специальных возможностей. Может вызываться сочетанием клавиш Win++.
sethc.exe — программа запускающаяся при пятикратном нажатии клавиш Shift. В Windows 10, на экране входа, она не работает. Но зато в ее предшественниках, должна.
Бэкап Файла SAM
В процессе описания процедуры сброса пароля, было произведено резервное копирование файла SAM в файл SAM.bkp. После данный файл больше никак не использовался. Зачем нужна резервная копия файла SAM? С помощью резервной копии файла SAM, можно выполнить откат к состоянию до сброса пароля, то есть вернуть сброшенный пароль обратно. Рассмотрим данный процесс более подробно.
Возврат Сброшенного Пароля
Как говорилось ранее, для осуществления отката к состоянию до сброса пароля, потрербуется резервная копия файла SAM, созданная до сброса пароля.
Необходимо снова загрузиться с установочного Windows-диска, войти в командную строку и перейти в ней папку WindowsSystem32config целевой операционной системы. То есть все то, что мы делали в начале процедуры сброса пароля.
Выполняем копирование, текущего файла SAM (сброшенный пароль) в файл _SAM, а файл SAM.bkp (несброшенный пароль) копируем в файл SAM. Делается это все командами copy SAM _SAM и copy SAM.bkp SAM.
Выполняем удаление файлов SAM.LOG* командой del /A SAM.LOGx, где x это цифра. Список всех файлов SAM.LOG можно получить командой dir /A SAM.LOG*. Удалять каждый придется по отдельности (команда del не понимает файловые маски к сожалению). Если этого не сделать, могут иногда возникнуть вот такие ошибки.
Перезагружаем компьютер, и проверяем результат.
Пароль запрашивается. В завершении, не забываем удалить бэкапы файла SAM, а именно SAM.bkp и _SAM. Делать это нужно естественно загрузившись в среде предустановки.
Итог
Мы рассмотрели, ручной способ сброса пароля локальной учетной записи Windows, без применения стороннего программного обеспечения. Все что требуется, это установочный диск Windows.
Сама идея данного способа, хороша тем, что с ее помощью мы получаем в свое распоряжение командную строку с правами системы. Что в свою очередь очень сильно развязывает руки. Хоть Explorer запускай.
Надеюсь данная информация будет полезна вам. А на этом у меня все 😉.