В каком файле содержится пароль windows

Пожалуй, сегодня каждый пользователь сталкивался с проблемой, когда пароль к какому-либо аккаунту или сервису, созданный ранее, был им забыт. Всегда, конечно, присутствует возможность его восстановления, однако иногда, когда пароль был ранее сохранен и отображается пользователю «спрятанным» за точками или звездочками, существует и другая возможность его просмотра. Об этом мы сегодня и поговорим.
Где хранятся сетевые пароли в Windows 7
Для начала предлагаем разобраться с местом, где можно просмотреть актуальные сетевые пароли, которые зачастую используются пользователями, находящимися в локальной сети с другими компьютерами. Именно эти данные позволяют автоматически авторизоваться в общих папках, хранящихся на других компьютерах или серверах. Кроме того, в разделе сетевых паролей находятся и данные для авторизации в интерфейсе удаленных рабочих столов.
Найти месторасположения данных паролей достаточно просто:
- Нажмите на «Пуск».
- Перейдите в раздел «Панель управления».
- Из доступных в меню разделов выберите пункт «Учетные записи пользователей и семейная безопасность».
- Переместитесь в раздел «Диспетчер учетных данных».
- Ознакомьтесь с учетными данными для «залогиненных» удаленных устройств и серверов.
В данном меню в интерфейсе Windows 7 пользователям предоставляется возможность изменения и просмотра данных для удаленного входа.
Пароли администратора и пользователей ПК
Если же вы желаете узнать, где хранится пароль администратора и пользователей в Windows 7, то ответ на данный вопрос предельно прост – в реестре операционной системы. Однако если говорить о том, чтобы достать эти данные и просмотреть их, то такая возможность для абсолютного большинства юсеров будет недоступной.
Объяснить это можно тем, что разработчики из Microsoft серьезно потрудились над защитой и шифрованием в системе, чтобы пароли нельзя было достать «голыми руками». Даже при использовании специального софта просмотреть данную информацию будет достаточно сложно.
Если перед вами стоит задача изменения пароля администратора компьютера, который вы не знаете, реализовать её можно только с использованием дополнительного ПО в виде Live CD, загружая компьютер с предустановленной на диск системы с оболочкой для произведения системных конфигураций.
В свою очередь, если вы являетесь администратором компьютера, изменить пароли пользователей можно следующим образом:
- Нажмите на ярлык «Компьютер» правой кнопкой мыши, чтобы вызвать контекстное меню проводника.
- Выберите параметр «Управление».
- Перейдите в раздел «Локальные пользователи и группы», после чего сразу выберите папку «Пользователи».
- Найдите в списке пользователей интересующий вас аккаунт локального юсера компьютера и нажмите на него правой кнопкой мыши.
- Нажмите на кнопку «Задать пароль».
- Введите новый пароль для выбранного аккаунта и продублируйте его в окне ниже для подтверждения.
- Нажмите на кнопку «Ок».
- Изменения будут сохранены, и с этого момента вход в аккаунт будет осуществляться по новым авторизационным данным.
Где хранятся пароли Skype в Windows 7
Следующий вопрос, который также систематически возникает у современных пользователей ПК под управлением операционных систем семейства Windows, касается восстановления пароля от Skype. Зачастую пароль сохраняется на компьютере, и спустя какое-то время, это может быть через день, а может быть – через год, у пользователя появляется необходимость перенесения или установки мессенджера на другом компьютере или гаджете. Разумеется, пароль уже давно был забыт, а на компьютере он надежно скрыт за звездочками. К сожалению, а может и к счастью, разработчики из Microsoft также хорошо поработали и над безопасностью своего мессенджера, в котором узнать пароль не так просто, даже если он сохранен в системе.
Идеальным способом получения данных о пароле в данной ситуации является инициирование процедуры его восстановления. Производится данная процедура так:
- Разлогиньтесь в Скайпе (выйдите из ПО).
- В окне авторизации нажмите на кнопку «Не можете войти в Skype?».
- В веб-браузере откроется страница для восстановления доступа к мессенджеру.
- Введите в соответствующее поле ваш адрес электронной почты, на который был зарегистрирован аккаунт.
- Выберите пункт «Я не помню свой пароль».
- Укажите адрес email или контактный номер телефона, подтвердите введенные данные кодом с капча-картинки и нажмите на кнопку «Далее».
- Получите письмо с инструкцией дальнейших действий и измените пароль на новый, который вы не забудете (либо запишите его).
Пароли в браузерах на Windows 7
Последний вопрос, который мы хотели сегодня рассмотреть, касается того, где хранятся пароли в «Опере», «Хроме» и «Мозиле» на Windows 7. Это наиболее популярные сегодня веб-браузеры, повсеместно используемые пользователями. Именно поэтому вопрос восстановления и просмотра паролей к различным веб-сервисам является таким актуальным.
Если говорить о браузере от Google, о Chrome, то здесь просмотреть данные обо всех сохраненных паролях очень просто. Для этого следуйте такой инструкции:
- Зайдите в настройки браузера.
- Спуститесь по списку настроек вниз до пункта «Показать дополнительные настройки» и нажмите на него.
- Найдите подкатегорию «Пароли и формы» и нажмите на кнопку «Настроить», находящуюся рядом с предложением о сохранении паролей.
- Перед вами откроется список интернет-ресурсов и сохраненных для них учетных данных. Все, что вам требуется – это найти интересующий вас сайт и нажать на кнопку «Показать» в окошке пароля к нему.
Если же вас интересует, где хранятся пароли в «Мозиле» на Windows 7, то здесь инструкция по их поиску выглядит примерно аналогично. С целью получения актуальной информации необходимо выполнить перечень следующих действий:
- Зайдите в настройки браузера, нажав соответствующую кнопку в интерфейсе домашней начальной страницы Firefox.
- Переместитесь в раздел «Защита».
- Нажмите на кнопку «Сохраненные логины».
- Нажмите на кнопку «Отобразить пароли».
- Подтвердите ваши намерения, нажав на кнопку «Да».
- Поле с паролями появится в окне рядом с логинами к каждому из интернет-сервисов.
Нам осталось узнать только то, где хранятся пароли в «Опере» на Windows 7. Для просмотра информации о сохраненных авторизационных данных в этом веб-браузере, необходимо выполнить следующие действий:
- Кликните на ярлык «Опера» в верхней части интерфейса браузера.
- В отобразившемся меню найдите подпункт «Настройки» и нажмите на него.
- В меню настроек найдите и кликните на пункт «Безопасность».
- Нажмите на кнопку «Управление сохраненными паролями».
- Вы увидите аналогичное меню, которое было отображено в браузере Google Chrome. В нем можно будет найти соответствующий веб-ресурс и просмотреть пароль для него, нажав на кнопку «Показать».
Это была вся информация о том, где хранятся пароли в Windows 7. Мы же советуем вам никогда не забывать авторизационные данные и использовать только надежные коды доступа к системе и веб-ресурсам.
Источник
Сначала отступление
Сбросить пароль или изменить его в системе Windows легко — школьники уже наснимали свои стопятьсот видео как это сделать.
Продвинутые школьники используют ПРО версию программы ElcomSoft System Recovery, которая «за пол минуты взламывает пароль» (на самом деле, ищет по словарю наиболее популярные пароли, сравнивает их с ранее рассчитанными хэшами и, если школьник задал пароль что-нибудь вроде «1», «1111», «123», «admin», «password», то программа его отображает).
Продвинутые пользователи снимают видео как сбросить пароль с помощью Kali Linux. Причём, Kali Linux используется для 1) монтирования диска с ОС Windows, 2) переименование одного файла для запуска командной строки… Я думаю, в свободное время эти люди колют орехи айфонами.
На самом деле, я шучу. В 99.99% случаев именно это и нужно — сбросить пароль школьника или бухгалтера, которые зачем-то его поставили и благополучно забыли.
Если вам именно это и нужно, то загрузитесь с любого Live-диска (это может быть и Linux – что угодно). В каталоге C:WindowsSystem32 переименуйте файл cmd.exe в sethc.exe или в osk.exe. Понятно, что нужно сделать бэкап файла sethc.exe (или osk.exe), а файл cmd.exe копировать с присвоением нового имени.
Если вы переименовали файл в sethc.exe, то при следующей загрузке Windows, когда у вас спросят пароль, нажмите пять раз кнопку SHIFT, а если в osk.exe, то вызовите экранную клавиатуру. И в том и в другом случае у вас откроется командная строка (cmd.exe) в которой нужно набрать:
net user имя_пользователя *
Т.е. если имя пользователя admin, то нужно набрать:
net user admin *
Узнаём пароль Windows с помощью Kali Linux
Теория: где Windows хранит свои пароли?
Windows размещает пароли в файле реестра SAM (System Account Management) (система управления аккаунтами). За исключением тех случаев, когда используется Active Directory. Active Directory — это отдельная система аутентификации, которая размещает пароли в базе данных LDAP. Файл SAM лежит в C:<systemroot>System32config (C:<systemroot>sys32config).
Файл SAM хранит пароли в виде хэшей, используя хэши LM и NTLM, чтобы добавить безопасности защищаемому файлу.
Отсюда важное замечание: получение пароля носит вероятностный характер. Если удастся расшифровать хэш — то пароль наш, а если нет — то нет…
Файл SAM не может быть перемещён или скопирован когда Windows запущена. Файл SAM может быть сдамплен (получен дамп), полученные из него хэши паролей могут быть подвержены брут-форсингу для взлома оффлайн. Хакер также может получить файл SAM загрузившись с другой ОС и смонтировав C:. Загрузиться можно с дистрибутива Linux, например Kali, или загрузиться с Live-диска.
Одно общее место для поиска файла SAM это C:<systemroot>repair. По умолчанию создаётся бэкап файла SAM и обычно он не удаляется системным администратором. Бэкап этого файла не защищён, но сжат, это означает, что вам нужно его разархивировать, чтобы получить файл с хэшами. Для этого можно использовать утилиту expand. Команда имеет вид Expand [FILE] [DESTINATION]. Здесь пример раскрытия файла SAM в файл с именем uncompressedSAM.
C:> expand SAM uncompressedSAM
Чтобы улучшить защиту от оффлайн хакинга, Microsoft Windows 2000 и более поздние версии включают утилиту SYSKEY. Утилита SYSKEY зашифровывает хэшированные пароли в файле SAM используя 128-битный ключ шифрования, который разный для каждой установленной Windows.
Атакующий с физическим доступом к системе Windows может получить SYSKEY (также называемый загрузочный ключ) используя следующие шаги:
- Загрузиться с другой ОС (например, с Kali).
- Украсть SAM и хайвы SYSTEM (C:<systemroot>System32config (C:<systemroot>sys32config)).
- Восстановить загрузочный ключ из хайвов SYSTEM используя bkreg или bkhive.
- Сделать дамп хэшей паролей.
- Взломать их оффлан используя инструмент, например такой как John the Ripper.
Ещё одно важное замечание. При каждом доступе к файлам в Windows изменяется MAC (модификация, доступ и изменение), который залогирует ваше присутствие. Чтобы избежать оставления криминалистических доказательств, рекомендуется скопировать целевую систему (сделать образ диска) до запуска атак.
Монтирование Windows
Есть доступные инструменты для захвата Windows-файлов SAM и файла ключей SYSKEY. Один из методов захвата этих файлов — это монтирование целевой Windows системы так, чтобы другие инструменты имели доступ к этим файлам в то время, пока Microsoft Windows не запущена.
Первый шаг — это использование команды fdisk -l для идентификации ваших разделов. Вы должны идентифицировать Windows и тип раздела. Вывод fdisk показывает NTFS раздел, например так:
Device Boot Start End Blocks Id System
/dev/hdb1* 1 2432 19535008+ 86 NTFS
/dev/hdb2 2433 2554 979965 82 Linux swap/Solaris
/dev/hdb3 2555 6202 29302560 83 Linux
Создаёте точку монтирования используя следующую команду:
mkdir /mnt/windows
Монтируете системный раздел Windows используя команду, как показано в следующем примере:
mount -t <WindowsType> <Windows partition> /mnt/windows
Теперь, когда целевая система Windows смонтирована, вы можете скопировать файлы SAM и SYSTEM в вашу директорию для атаки следующей командой:
cp SAM SYSTEM /pentest/passwords/AttackDirectory
Доступны инструменты для дампа файла SAM. PwDumpand Cain, Abel и samdump — это только немногие примеры.
Обратите внимание, вам нужно восстановить оба файла — загрузочного ключа и SAM. Файл загрузочного ключа используется для доступа к файлу SAM. Инструменты, используемые для доступа к файлу SAM будут требовать файл загрузочного ключа.
bkreg и bkhive — популярные инструменты, которые помогут получить файл загрузчика ключа, как показано на следующем скриншоте:
Как защититься от кражи пароля для входа в Windows:
- Во-первых, не нужно надеяться на этот пароль. Этот пароль не спасёт вас даже от вашего сына-школьника. Этот пароль не поможет вам защитить данные, а также бесполезен при краже компьютера. (Ситуация с паролем на BIOS примерно такая же — не предоставляет никакой реальной защиты, время от времени портит жизнь бухгалтерам и людям с плохой памятью).
- Если вам важно ограничить доступ к данным или ко всей системе, используйте такие программы шифрования как VeraCrypt и TrueCrypt (но если уж вы в этом случае забудете пароль, то данные будут безвозвратно утеряны).
- Чтобы ваш пароль на вход в Windows не могли расшифровать школьники, придумывайте сложный, длинный пароль с разными регистрами, цифрами и буквами (в том числе русскими) и т. д. Но ещё раз повторю — этот пароль не защищает ничего.
Источник
Про взлом паролей 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
Источник