- •Уязвимость паролей.
- •Как придумать сложный пароль
- •Защита паролей
- •Шифрование
- •Функции хэширования
- •Взлом паролей
- •I Восстановление забытых/неизвестных паролей. Переход на новую систему.
- •Проверка сложности пароля
- •Не бывает маленьких ошибок
- •Типы атак
- •Перебор слов
- •Полный перебор вариантов
- •Комплексная атака
- •Социотехника
- •Подглядывание
Функции хэширования
Функции хэширования считаются односторонними, поскольку производится только одно необратимое преобразование информации. Получив строку данных, функция создает выходную строку определенной длины, по которой невозможно определить содержимое первоначальной строки.
Этот метод, если сравнивать его с предыдущими, вполне можно считать самым надежным способом хранения пароля в системе, поскольку не придется волноваться о сохранности ключа. Кроме того, процесс преобразования необратим, поэтому невозможно получить изначальный пароль. Вы, наверное, думаете: "Если процесс преобразования фиксирован, как же получить сам пароль, чтобы сравнить его с паролем пользователя при регистрации в системе?". На самом деле все просто. Каждый раз когда пользователь регистрируется в системе и набирает пароль, компьютер принимает этот текстовой пароль, вычисляет его хэш и сравнивает с тем, который уже хранится в системе. Если они совпадают, значит пароль правильный, и наоборот — если нет совпадения, то пароль неверный.
Однако у функции хэширования есть определенное ограничение, связанное с принципом ее работы. Для проверки пароля пользователя проверяется идентичность двух хеш-кодов. Проблема в том, что если у одного человека пароль 12345разз; и у другого такой же, то закодированное значение будет одинаково. Это дает возможность хакеру ускорить время взлома, одновременно декодируя оба пароля. Чтобы этого избежать, при хэшировании используется дополнительный параметр, который называется соль.
Назначение этого параметра состоит в преобразовании пароля случайным способом. При этом у двух пользователей с одинаковыми паролями будут разные варианты кодирования. Соль— это случайное число, которое объединяется с паролем и затем обрабатывается функцией хэширования. Так как число выбирается случайным перебором, пользователи получат разные зашифрованные пароли, хоть в оригинальном варианте они и были одинаковы.
Теперь рассмотрим, что происходит, когда пользователь пытается зарегистрироваться на сервере. Сначала он вводит пароль. Проверяя учетную запись, система находит зашифрованный пароль и значение соли пользователя. Затем пароль принимается, объединяется со значением соли, и с ним начинает работу функция хэширования. Полученный результат сравнивается с уже записанным, и в случае совпадения пользователь получает доступ (или, если результат не совпадает, в доступе будет отказано).
Атака на пароли
Теперь, зная принципы работы с паролями, рассмотрим конкретные способы и методы взлома паролей. В этом разделе мы сравним разные типы атак, равно как и варианты защиты вроде блокирования ввода. Узнаем также, как улучшить безопасность сети и каким образом хакеры могут использовать блокирование паролей для атаки DoS.
Взлом паролей
Не углубляясь в подробности, взломом можно считать угадывание пароля на основе его зашифрованного значения. Для этого есть несколько способов, например простое угадывание. Т.е. хакер попытается угадать пароль и затем напечатает его в поле регистрации. Чтобы такое сделать, нужно знать имя пользователя (ID) и получить доступ к запросу пароля в нужной хакеру сети. ID узнать несложно, так как большинство регистрационных записей — это имя и фамилия служащего компании, которые легко узнать. Кроме того, у многих компаний есть коммутируемый доступ ко внутренней сети, что позволяет с помощью сканера телефонных линий определить наличие там модемов.
Для ручного взлома понадобится выполнить ряд действий.
1. Найти регистрационное имя пользователя.
2. Создать список возможных паролей.
3. Подумать, какие пароли наиболее вероятны.
4. Начать их ввод.
5. Если допуск получен — поздравляю!
6. Если же нет, то постарайтесь не допустить блокирования пароля (т.е.превысить число возможных попыток регистрации, что приведет к блокированию дальнейшего ввода паролей).
С точки зрения сложности это самый простой технически, но самый долгий и утомительный метод подбора паролей. Если хакер пытается проникнуть "на авось", едва ли у него что-то выйдет, так как у большинства компаний установлено блокирование доступа к регистрационным записям. Если несколько попыток не увенчаются успехом, учетная запись будет закрыта. Как правило, это происходит после 5 попыток в течение двух часов, после чего учетная запись блокируется на три часа. В течение этого времени легитимный пользователь не сможет подключится к системе.
В некоторых компаниях установлено постоянное блокирование. Если 5 попыток за два часа были неудачными, учетная запись пользователя закрывается до тех пор, пока его не включит администратор. С одной стороны, это неплохой метод защиты, так как если кто-то будет пытаться проникнуть в систему, администратор это заметит. С другой стороны, блокирование происходит мгновенно и администратор может о нем не знать долгое время. Тем не менее таким образом можно определить, что систему пытались взломать, и принять соответствующие меры. Если же дождаться, пока хакер все же угадает пароль, обнаружить его будет крайне тяжело.
Еще одна проблема заключается в том, что постоянное блокирование используют для организации атак DoS. Например, если злоумышленник хочет запереть доступ к системе для всех пользователей, он будет пробовать пароли для каждой учетной записи, всегда делая при этом 5 попыток. Может, он случайно угадает пароль и получит доступ; в противном случае, все пользователи будут заблокированы. В любом случае хакер остается в выигрыше — получает доступ или нарушает работу системы. Я знаю несколько компаний, которые провели атаку DoS против самих себя (смотрите врезку).
К счастью, учетную запись администратора нельзя заблокировать. Даже если все пользователи не смогут подключиться, у администратора доступ останется. Поэтому очень важно, чтобы отвечающие за работу сети служащие всегда были на своих местах.
Взлом пароля можно провести автоматически, что подразумевает получение копии файла с зашифрованными паролями и его взлом уже вне сети. Для этого нужно приложить больше усилий, ведь копию файла паролей еще нужно достать, для чего понадобится доступ в систему.
Если хакер уже получил файл с паролями, то выследить и обнаружить его невозможно, так как взлом может происходить где угодно. Это метод удобный и быстрый, так как есть специальные программы, которые перебирают возможные варианты, а значит, можно взломать несколько паролей одновременно. Например, берется список слов и для каждого слова подсчитывается хэш-код пароля, который затем проверяется на каждой учетной записи. Таким вот образом взламываются очень многие пароли. Если у 10 пользователей одинаковый пароль, то можно получить все 10 паролей одновременно (если при хэшировании не используется соль).
Данный метод сейчас крайне популярен. Его же можно использовать и для проверки надежности паролей своей сети, ведь это быстро и удобно. Далее показан общий принцип действия автоматического взлома.
1. Найти имя пользователя.
2. Найти используемый алгоритм шифрования.
3. Получить зашифрованные пароли.
4. Создать список возможных паролей.
5. Зашифровать каждое слово.
6. Проверить, есть ли совпадение для каждого ID.
7. Повторять шаги 1-6 до получения результата.
Кто-то может сказать, что второй шаг, а именно выяснение алгоритма шифрования, вовсе не простое дело, но суть здесь— в принципе криптографии. Безопасность зашифрованного файла основана на его ключе, а не на методе кодирования. Компьютерными вычислениями эффективно проверить алгоритм "на прочность" едва ли получится, остается лишь отдать его на растерзание группе сообразительных пользователей; если они его не взломают, тогда все в порядке. Кроме того, алгоритмы кодирования почти всех операционных систем известны, информация о них общедоступна.
Важность взлома
С точки зрения безопасности взлом паролей позволит организовать более надежную защиту системы. Вот причины, по которым полезно провести тестовый взлом.
• Проверка сложности пароля.
