Более подробную информацию о Лэнсе Спицнере вы можете найти по следующим ссылкам:
• Honeypots: Tracking Hackers: https://www.amazon.com/Honeypots-Tracking-Hackers-Lance-Spitzner/dp/0321108957;
• Лэнс Спицнер в Twitter: https://twitter.com/lspitzner;
• курсы Лэнса Спицнера в SANS: https://www.sans.org/instructors/lance-spitzner;
• доклад Know Your Enemy: http://old.honeynet.org/papers/enemy/;
• серия докладов Know Your Enemy: http://www.honeynet.org/papers.
Взлом паролей всегда был популярным видом деятельности кибератакующих, хотя новые методы эволюционировали из простого подбора паролей. В голливудском представлении хакер – это человек, который сидит перед монитором и подбирает правильный пароль, хотя в реальности такое случается довольно редко. Реальный взлом пароля обычно строится на догадках или их отсутствии.
Чтобы понять принцип работы паролей, вы должны понимать аутентификацию системы в целом. Пользователь (или устройство), также известный как субъект безопасности, должен отправить что-то (например, текстовую метку, сертификат и т. д.), однозначно идентифицирующее их и вход в систему службы аутентификации. Для большинства традиционных сценариев паролей это метка, известная как имя пользователя. Затем субъект должен быть в состоянии доказать право собственности, что обычно делается путем предоставления другой информации, которую знает только субъект и система аутентификации. Это то, что мы называем паролем. Когда пользователь вводит правильный пароль, соотносящийся с именем пользователя, это доказывает, что субъект контролирует имя пользователя, и система разрешает доступ (другими словами, аутентифицируется) и может отслеживать пользователя во время доступа к системе (что зовется учетом или аудитом). Большинство операционных систем также обеспечивает субъекту доступ к необходимым объектам (процесс, называемый контролем доступа). Таким образом, вы можете проследить весь процесс, известный как четыре аспекта – аутентификация, доступ, аудит и учет. Они связаны, но обычно рассматриваются отдельно.
Пароль может быть любым допустимым набором символов, который принимает система аутентификации. Например, в Microsoft Windows локальная база данных SAM или сетевая база данных NTDS могут принимать тысячи различных символов, для создания многих из которых требуются специальные комбинации клавиш (например, Alt+0128).
Пароли хранятся в локальной и/или сетевой базе данных, известной как «база данных проверки подлинности». Обычно она защищена или зашифрована и редко доступна напрямую непривилегированным пользователям. Пароли также часто хранятся в локальной и/или удаленной памяти, когда пользователь или устройство активны.
Большинство введенных паролей преобразуются в какую-либо другую промежуточную форму по соображениям безопасности. В традиционных операционных системах пароли нередко преобразуются в криптографический хэш. Он может быть использован в самой последовательности аутентификации или просто сохранен для последующих входов. Общие хэши паролей в системах Windows – это LANManager (LM), NTLANManager (NT) и PBKDF2 для локального хранилища кэша паролей. Системы Linux часто используют MD5, Blowfish (созданный Брюсом Шнайером и описанный в главе 3), SHA-256 или SHA-512. Лучшие хэши создают и используют случайное значение во время создания и хранения хэша пароля. Это затрудняет хакеру его получение, чтобы преобразовать пароль обратно в исходное значение открытого текста.
Это безопасный способ аутентификации, который не передает пароль или его хэш по сетевому соединению. Вместо этого выполняется вызов-ответ. Обычно удаленный сервер, который уже знает пароль клиента или хэш пароля, создает случайное значение и выполняет криптографическую операцию, которую может также правильно выполнить только законный клиент с тем же самым законным паролем или хэшем. Сервер отправляет клиенту случайное значение, а тот использует пароль (или промежуточное представление) для выполнения ожидаемых вычислений и отправляет результат обратно на сервер. Сервер сравнивает результат, отправленный клиентом, с его собственным внутренне ожидаемым результатом, и, если они совпадают, клиент успешно аутентифицируется. Таким образом, если злоумышленник захватывает пакеты, используемые при сетевой аутентификации, у него не сразу будет пароль или хэш, хотя часто с помощью криптографического анализа можно вернуться к одному или другому с течением времени.
Поскольку пароли могут быть легко украдены (а иногда и подобраны), системы аутентификации все чаще запрашивают дополнительные «факторы» для субъекта, чтобы доказать право собственности на вход в систему. Существуют три основных типа факторов: то, что вы знаете (например, пароль, PIN-код или шаблон), то, что у вас есть (такие как маркер безопасности, мобильный телефон или смарт-карты), или информация о вас (биометрические данные, такие как отпечатки пальцев, сетчатки или геометрия руки). В общем, чем больше факторов требуется для аутентификации, тем лучше. Идея в том, что злоумышленнику труднее украсть два или более факторов, чем заполучить один. Использование двух факторов называется двухфакторной аутентификацией (или 2FA), а использование дополнительных факторов – многофакторной аутентификацией (или MFA). Использование двух или более одинаковых факторов не так сильно, как комбинирование различных типов.