Хранить пароли используя обратимое шифрование что это
Скрипт обратимого шифрования на php, теория, пример,
Подробно об обратимом шифровании!
Что такое обратимое шифрование!?
Давайте сразу приступим к примеру шифрованного текста, обратимым шифрованием, попробуйте это расшифровать:
ᴸᴫᴔᴥ ᴣᴓᴰᴜᴬᴩᴔᴞᴓᴧᴧᴔᴙ ᴨᴔᴪᴥᴓᴧᴜᴙⵄ
Если вы не знаете, как это зашифровано, то практически невозможно. его расшивровать, ну, или потратить достаточное количество времни на расшифровку.
Копируем и вставляем в поле ввода текст.
Список видов обратимого шифрования
Пример обратимого шифрования онлайн
Мы сделали собственное обратимое шифрование! Данным шифрованием можно зашифровать русский и английский текст, и несколько десятков знаков, не могу гарантировать, что там все.
Как закодировать текст простым обратимым шифрованием!?
Набираем текст в форме и нажимаем закодировать!
Как расшифровать текст зашифрованный простым обратимым шифрованием!?
Вставляете ранее закодированный текст в поле для расшифровки и на нажимаете расшифровать!
Скрипт обратимого шифрования
Скрипт обратимого шифрования работает таким образом: каждой букве алфавита и знакам присваивается какой-то знак из другого массива.
И вы дается результат:
В обратную сторону, функция из второго массива выбирает знаки и присваивает им уже первоначальные буквы и знаки.
Далее пара строк, которые получают данные из формы.
И собственно форма отправки данных для обратимого шифрования.
Собственная функция обратимого шифрования
Зачем мне вообще нужно было собственная функция обратимого шифрования!? На самом деле, начиналось с банального, нужно было спрятать какие-то данные например емайл! Не думаю, что из-за этого, кто-то будет париться ломать ваш код!
Есть несколько причин почему! Когда я посмотрел на те предлагаемые способы кодирования, то у меня возникло, естественно, целая куча вопросов!
В чем прелесть данной функции!?
У него большие возможности!
Собираюсь сделать такое шифрование, обратимое, с паролем! В общем. интересная тема.
Хранение и шифрование паролей Microsoft Windows
Про взлом паролей windows было написано немало статей, но все они сводились к использованию какого-либо софта, либо поверхностно описывали способы шифрования LM и NT, и совсем поверхностно описывали syskey. Я попытаюсь исправить этот неодостаток, описав все подробности о том где находятся пароли, в каком виде, и как их преобразует утилита syskey.
Существует 2 возможности получения пароля — через реестр, или получив прямой доступ к файлам-кустам реестра. В любом случае нужны будут либо привелегии пользователя SYSTEM, либо хищение заветных файлов, например, загрузившись из другой ОС. Здесь я не буду описывать возможности получения доступа, но в целях исследования нагляднее будет выбрать первый вариант, это позволит не заострять внимание на структуре куста реестра. А запуститься от системы нам поможет утилита psExec от sysinternals. Конечно, для этих целей можно использовать уязвимости windows, но статья не об этом.
V-блок
Windows до версии Vista по умолчанию хранила пароль в двух разных хэшах — LM и NT. В висте и выше LM-хэш не хранится. Для начала посмотрим где искать эти хэши, а потом разберемся что из себя они представляют.
Пароли пользователей, а так же много другой полезной информации хранится в реестре по адресу HKLM\SAM\SAM\Domains\Account\users\[RID]\V
, известном как V-блок. Раздел SAM находится в соответствующем файле c:\Windows\System32\config\SAM. RID — уникальный идентификатор пользователя, его можно узнать, например заглянув в ветку HKLM\SAM\SAM\Domains\Account\users\names\ (параметр Default, поле — тип параметра). Например, RID учетной записи «Администратор» всегда 500 (0x1F4), а пользователя «Гость» — 501 (0x1f5). Доступ к разделу SAM по умолчанию возможен только пользователю SYSTEM, но если очень хочется посмотреть — запускаем regedit c правами системы:
Чтобы наблюдать 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#)
Алгоритмы
Теперь разберемся в алгоритмах шифрования.
Формирование 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 части и лежит в следующих разделах реестра:
HKLM\System\CurrentControlSet\Control\Lsa\JD
HKLM\System\CurrentControlSet\Control\Lsa\Skew1
HKLM\System\CurrentControlSet\Control\Lsa\GBG
HKLM\System\CurrentControlSet\Control\Lsa\Data
Раздел system находится в файле c:\Windows\System32\config\system
Следует отметить, что раздел CurrentControlSet является ссылкой на один из разделов controlset и создается в момент загрузки системы. Это значит что не получится его найти в файле system, если система неактивна. Если вы решили искать ключ в файле — необходимо узнать значение ContolSet по умолчанию в HKLM\SYSTEM\Select\default.
например если HKLM\SYSTEM\Select\default = 1 — вместо HKLM\System\CurrentControlSet\ ищем в HKLM\System\controlset001\
У каждого ключа реестра есть некий скрытый атрибут, известный как «class». Regedit его так просто не покажет, однако его можно увидеть, например, если экспортировать эти ключи реестра в текстовые файлы. В winapi для получения этого атрибута есть функция RegQueryInfoKey.
Фрагменты хранятся в строковом представлении шестнадцатеричных чисел, причем по принципу BIG ENDIAN (т.е не строка задом наперед, а число).
Например мы обнаружили вот такие записи:
Key Name: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\JD
Class Name: 46003cdb = <0xdb,0x3c,0x00,0x46>
Key Name: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Skew1
Class Name: e0387d24 = <0x24,0x7d,0x38,0xe0>
Key Name: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\GBG
Class Name: 4d183449 = <0x49,0x34,0x18,0x4d>
Key Name: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Data
Class Name: 0419ed03 =
Собраный из четырех частей ключ будет массивом байт:
Далее элементы этого массива переставляются на основе некоторого константного массива p
key[i] = scrambled_key[p[i]];
В нашем примере получится массив:
этот массив и есть так называемый bootkey. Только в шифровании паролей будет учавствовать не он а некий хэш на основе bootkey, фрагментов f-блока и некоторых констант. Назовем его Hashed bootkey.
Hashed bootkey
для получения Hashed bootkey нам понадобятся 2 строковые константы (ASCII):
string aqwerty = «!@#$%^&*()qwertyUIOPAzxcvbnmQQQQQQQQQQQQ)(*@&%\0»;
string anum = «0123456789012345678901234567890123456789\0»;
Также понадобится F-блок пользователя (HKLM\SAM\SAM\Domains\Account\users\\F), а именно его 16 байт: F[0x70:0x80]
На основе этих значений, склееных в один большой массив формируем MD5 хэш, который будет являться ключем для шифрования RC4
rc4_key = MD5(F[0x70:0x80] + aqwerty + bootkey + anum).
Последним шагом для получения hashed bootkey будет rc4 шифрование( или дешифрование — в rc4 это одна и та же функция) полученым ключем фрагмента F-блока 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, можно сказать, что самое сложное позади. Переходим к следующему шагу
На основе четырех байт 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) > 2));
key[2] = (byte)(((str[1] & 0x03) > 3));
key[3] = (byte)(((str[2] & 0x07) > 4));
key[4] = (byte)(((str[3] & 0x0F) > 5));
key[5] = (byte)(((str[4] & 0x1F) > 6));
key[6] = (byte)(((str[5] & 0x3F) > 7));
key[7] = (byte)(str[6] & 0x7F);
for (int i = 0; i
Ну здесь особо комментировать нечего, кроме функции des_set_odd_parity(ref key) — это одна из функций библиотеки openssl, задача которой добавить некоторые «биты нечетности», используется для повышения стойкости ключа к атакам.
Исследование проведено на основе исходного кода ophcrack-3.3.1, а так же статьи Push the Red Button:SysKey and the SAM
Хранить пароли, используя обратимое шифрование
Относится к:
Описывает наилучшие методы, расположение, значения и соображения безопасности для паролей Магазина с помощью параметра политики безопасности шифрования.
Справочники
Пароль Магазина с помощью параметра политики реверсивного шифрования поддерживает приложения, использующие протоколы, для проверки подлинности требуется пароль пользователя. Хранение зашифрованных паролей в обратимом виде означает, что зашифрованные пароли можно расшифровать. Затем знаюющий злоумышленник, который может нарушить это шифрование, может войти в сетевые ресурсы с помощью скомпрометированной учетной записи. По этой причине никогда не вводить пароль Store с помощью обратимого шифрования для всех пользователей домена, если требования к приложению не перевешивают необходимость защиты сведений о паролях.
Если вы используете протокол проверки подлинности вызова с помощью удаленного доступа или служб проверки подлинности в Интернете (IAS), необходимо включить этот параметр политики. CHAP — это протокол проверки подлинности, используемый при удаленном доступе и сетевых подключениях. Для проверки подлинности службы IIS (IIS) также требуется включить этот параметр политики.
Возможные значения
Рекомендации
Установите значение для пароля Store с помощью обратимого шифрования в Disabled. Если вы используете CHAP с помощью удаленного доступа или IAS или дайджест проверки подлинности в IIS, необходимо задать это значение включено. Это представляет угрозу безопасности при применении параметра с помощью групповой политики на основе пользователя, так как для этого необходимо открыть соответствующий объект учетной записи пользователя в Active Directory Users and Computers.
Примечание: Не вводить этот параметр политики, если требования бизнеса не перевешивают необходимость защиты сведений о паролях.
Location
Конфигурация компьютера\Windows Параметры\Security Параметры\Account Policies\Password Policy\
Значения по умолчанию
В следующей таблице приведены фактические и действующие значения по умолчанию для этой политики. Значения по умолчанию также можно найти на странице свойств политики.
Тип сервера или объект групповой политики (GPO) | Значение по умолчанию |
---|---|
Политика домена по умолчанию | Отключено |
Политика контроллера домена по умолчанию | Отключено |
Параметры по умолчанию отдельного сервера | Отключено |
Эффективные параметры контроллера домена по умолчанию | Отключено |
Параметры сервера-участника по умолчанию | Отключено |
Эффективные параметры по умолчанию GPO на клиентских компьютерах | Отключено |
Вопросы безопасности
В этом разделе описывается, каким образом злоумышленник может использовать компонент или его конфигурацию, как реализовать меры противодействия, а также рассматриваются возможные отрицательные последствия их реализации.
Уязвимость
Включение этого параметра политики позволяет операционной системе хранить пароли в формате, который может ослабить общую безопасность.
Противодействие
Отключать пароль Store с помощью параметра политики реверсивного шифрования.
При отключении параметров политики по умолчанию будут храниться только новые пароли с использованием однонаходящего шифрования. Существующие пароли будут храниться с помощью обратимого шифрования, пока они не будут изменены.
Возможное влияние
Если ваша организация использует CHAP с помощью удаленного доступа или IAS или дайджест проверки подлинности в IIS, необходимо настроить этот параметр политики на включенную. Это представляет угрозу безопасности при применении параметра через групповую политику на основе пользователя к пользователю, так как для этого требуется открыть соответствующий объект учетной записи пользователя в Active Directory Users and Computers.
«В современном мире слежка повсеместна»: 8 советов по защите личных данных
Специалист по безопасности приложений Омар Ганиев отвечает на вопросы читателей
В 21 веке информация — главная валюта, и ее надо уметь защитить.
Эксперт по безопасности приложений Омар Ганиев объяснил, где хранить пароли, как прятаться от вездесущих камер и какие смартфоны лучше покупать, если заботишься о приватности данных.
Как при потере симкарты не потерять заодно доступ ко всем счетам?
Доступы ко всем счетам и приложениям можно получить, украв симкарту. Что делать с этим? Как защититься?
Действительно, есть такая проблема — причем не только в России, как многие думают. Даже в США известны случаи хищений с перевыпуском симкарты — правда, сначала ее там мигрировали в мексиканского провайдера.
Но замечу, что некоторые сервисы сами сотрудничают с операторами, чтобы выявлять такое. Например, банки могут запретить операции в течение некоторого времени после перевыпуска. Кроме того, многие аккаунты вы можете дополнительно защитить паролем. Это касается аккаунтов, где пароль — второй фактор, в первую очередь в «Телеграме».
У большинства операторов также есть услуга по запрету действий по доверенности, поскольку это самый частый сценарий реализации такой схемы. Но часто в подобных схемах сотрудники оператора находятся в сговоре со злоумышленниками, и тогда они в принципе могут обойти даже такой запрет, рискуя при этом оказаться под следствием.
Еще недавно практически любые действия с правами сотрудника отделения сотовой связи можно было купить на форумах за сущие копейки. Конечно, ситуация на этом рынке меняется — так что, может, сейчас перевыпуск симки уже стал довольно дорогим.
В качестве дополнительной меры можно какие-то аккаунты привязать к номерам зарубежных операторов. Только это должен быть не единственный способ входа в аккаунт, поскольку доступ к номеру можно и потерять.
Безопасны ли ZIP-архивы?
Насколько безопасен запароленный ZIP-архив? А если архив в архиве?
В очень старых реализациях формата ZIP существовала уязвимость, которая позволяла расшифровать содержимое, если известна его часть. В таком случае, пожалуй, архив в архиве был даже менее защищен, поскольку кусок внутреннего архива заведомо известен — по крайней мере, заголовок.
Современные реализации более защищены, но в них нет поддержки шифрования имен файлов, которые есть в RAR, 7z, tar + bcrypt и других. И можно подменить часть файлов внутри архива: если для вас важна целостность, это критично.
В общем, конкретно ZIP — не самый безопасный формат. Но атакующим будет трудно получить содержимое файла в ZIP-архиве, созданном не в легаси-режиме и с хорошим паролем.
Насколько безопасны современные смартфоны?
Хранятся ли данные на телефоне в зашифрованном виде? Можно ли включить шифрование? Насколько это сейчас хорошо реализовано? Нужно ли как-то защищать загрузчик? Если нет шифрования, то как правильно готовить телефон к передаче в ремонт? Бонусный уровень: что делать, если телефон не включается?
В топовых устройствах падения производительности вы не заметите, потому что данные изначально будут зашифрованы.
Если телефон не включается, при этом на нем без шифрования сохранены чувствительные данные, придется довериться мастерам либо напроситься присутствовать при ремонте. Можно, конечно, попытаться предварительно выпаять память, чтоб потом запаять ее назад, но с такими навыками и упорством вам, скорее всего, и самостоятельный ремонт будет по силам.
На Айфонах все по умолчанию зашифровано, и шифрование обеспечено на аппаратном уровне: чуть подробнее — тут. На Андроиде все зависит от версии и производителя — в Pixel по умолчанию есть шифрование. В настройках в разделе «Безопасность» можно проверить, включено ли шифрование для устройства и для внешних карт.
Где хранить пароли от бирж?
Где хранить приватные ключи, пароли от бирж, чтобы они были под рукой?
Если суммы действительно большие, нужно их держать на «холодном» кошельке, ключ которого имеет смысл разделить и хранить фрагменты — части ключа или multisig-тени — физически на разных континентах. Так делают «киты» вроде Виталика Бутерина или братьев Уинклвоссов.
По отношению же к ключам «горячих» кошельков и тем более паролям от бирж, полагаю, достаточно применять стандартные подходы цифровой гигиены: проявлять бдительность, чтобы не попадаться на фишинг; использовать менеджеры паролей, а лучше — отдельное устройство только для работы с криптовалютами
Существует ли идеальная защита?
Были ли в твоей практике и практике твоей компании кейсы, когда ну совершенно ничего не нашлось у заказчика? Прямо идеально выверенные и вылизанные эшелоны защиты?
Нет, такого не бывает, разве что в совсем синтетических условиях — когда дают изолированную систему, в которой почти ничего не доступно. В норме же обязательно находим хотя бы недостатки среднего уровня риска. Но бывает, не получается, что называется, пробить, реализовать интересные угрозы.
Как спрятаться от камер с распознаванием лица?
Как спастись от детищ NtechLab — камер с распознаванием человека по лицу, походке, одежде и так далее, коими уже вся Москва усеяна?
Можно попытаться реализовать то, что называется adversarial attack, и обмануть нейросетку! Есть даже такие научные работы, вот пример.
А если серьезно, нам придется смириться с тем, что в современном мире слежка повсеместна, и надеяться на то, что хотя бы суммарный эффект этого явления будет положительным. Полагаю, пока он действительно положительный и искореняет преступность в крупных городах. Хотя огромный минус вносит использование технологии для преследования по политическим мотивам.
TOTP-аутентификаторы или USB-ключи?
Имеет ли смысл переходить с TOTP-аутентификаторов на USB-ключи?
При желании можно перейти на YubiKey, например. Вообще, USB тут — это просто транспорт, он может быть и через NFC, особенно в случае использования протокола WebAuthn. При этом в целом я не вижу большого смысла в массовом использовании USB-ключей. Они добавляют головняка, чтоб их не потерять, при этом защищают от довольно узкой категории атакующих, которые в состоянии удаленно взломать ваш телефон.
Как максимально обезопасить устройство на Виндоус?
Какие возможности шифрования данных есть для Виндоус? Безопасен ли BitLocker? Что сделать с устройством с точки зрения защиты перед передачей в ремонт? Если ценность в пароле на bios/UEFI?
BitLocker + TPM — нормальное решение, можно еще дополнительно защитить паролем или пин-кодом, помимо пароля в Виндоус. Восстанавливается по ключу, который создается при настройке шифрования. При этом понятно, что, если компьютер уже включен, потенциально можно применить DMA-атаки (Direct Memory Access), чтобы вытащить данные.
Еще возможна скрытая установка хардварных имплантов — такое любят проделывать с ноутбуками, оставленными в номерах отелей. Но подобные атаки относительно сложные и не массовые.
Пароль для BIOS или UEFI имеет смысл, потому что даже в случаях, когда его можно отломать — например, через отключение питания для некоторых чипов, — это все равно удорожает атаку. Ведь не каждый раз ваш потерянный ноутбук окажется в руках спецслужб. Чаще это будут случайные люди.
AMA. Эксперты и герои Т—Ж отвечают на вопросы о чем угодно
Настройка политики паролей в Active Directory используя GPO
Самым простым способом настроить требования к политике паролей в Active Directory является использование оснастки mmc «Управление групповой политикой». Для этого нам необходимо на контроллере домена выполнить следующую последовательность действий: Пуск — Администрирование — Управление групповой политикой.
Настроить политику паролей в Active Directory можно только в Default Domain Policy. Такова особенность, использование других специально созданных для этого политик вам не поможет, имейте это ввиду.
Выделим Default Domain Policy и нажмем правую кнопку мыши Изменить.
Откроется окно редактора групповой политики по умолчанию. Для внесения изменений в политику паролей необходимо открыть ветку: Конфигурация компьютера\Политики\Конфигурация Windows\Параметры безопасности\Политики учетных записей.
в окне слева вы можете изменить:
Настройка политики паролей
В данной секции вы можете настроить:
1-14
-не содержать имени учетной записи
— длина не менее 6 знаков
— содержать заглавные буквы (F, G,R)
— содержать строчные буквы (f,y,x)
— содержать спец знаки (#,@,$)
Настройка политики блокировки учетной записи
Доступно три варианта настройки блокировки учетной записи и время до сброса блокировки:
В этой политике есть один скользкий момент. Следует понимать, что если вы используете блокировку учетной записи при ошибке входа в сеть, злоумышленник, используя метод подбора паролей к вашим учетным записям, может заблокировать все аккаунты пользователей и блокировать работу ЛВС. Эту политику нужно использовать осторожно и помнить что она действует на все учетные записи в том числе и системные.
После внесения изменений в GPO, политики Default Domain Policy, необходимо подождать некоторое время, пока на клиенте произойдет применение изменений GPO. Как правило на клиента политики транслируются раз в четыре часа, на сервера сразу же. Для ускорения применения политик рекомендуется на клиенте используя интерфейс командной строки выполнить gpupdate /force и перезагрузиться.