Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #48, НОЯБРЬ 2004 г.

Пароли и привилегии

coban2k (coban@pisem.net)

Спецвыпуск: Хакер, номер #048, стр. 048-008-1


Хранение, уязвимости, добывание

Пароли всегда являлись средством ограничения доступа к какой-либо информации, хотя особое распространение получили лишь с развитием компьютерной техники и интернета. Все чаще хранение конфиденциальных данных пользователи доверяют компьютеру, что приводит порой к печальным последствиям.

Пароли: с чем их едят

В настоящее время большая проблема - давно устаревшие стандарты (RFC), многие из которых утверждены еще в начале 90-х. К примеру, возьмем общеизвестный e-mail. Для получения почты необходимо указать пароль, значит, его надо либо каждый раз вводить при приеме, либо хранить где-то на диске. Введенная информация передается в открытом виде, то есть перехватить ее труда не составляет, так же, как и восстановление сохраненного пароля, имея физический доступ к компьютеру. Конечно, стандарты эти расширяются, вводятся сложные схемы аутентификации (для e-mail, например, CRAM-MD5), но то ли администраторы ленивые, то ли программисты - расширения эти не получили пока массового распространения.

Вообще, доступ необязательно должен ограничиваться кодовым словом - это могут быть и девайс вроде USB-token'а, смарт-карты, SSL-сертификата и т.п. Популярно при авторизации использование хешей. Хеш является неким большим числом, сгенерированным по определенному алгоритму, каждое такое число соответствует одному исходному значению. Простейший алгоритм - сложение ASCII-кодов всех символов строки (пароля): 1234 = код(1) + код(2) + код(3) + код(4) = 41+42+43+44 = 170 (170 хеш строки "1234"). Очевидно, что узнать по хешу исходную строку невозможно, кроме как полным перебором всех значений. Сервер хранит только хеш, а клиент формирует его из сохраненной/введенной строки либо хранит уже сформированным. При авторизации вместо сравнения строк происходит сравнение хешей - исключен перехват пароля как по сети, так и локально. Хотя для большинства популярных алгоритмов (MD5, SHA1, GOST) перебор всех вариантов строк длиной до 8 символов может быть выполнен за несколько часов, поэтому имеет смысл использовать в пароле не менее 12 символов.

Уязвимости локальных паролей

Можно выделить несколько групп уязвимостей:

- Слабые алгоритмы. 90% разработчиков программного обеспечения обладают нулевыми знаниями в области криптографии, поэтому придумывают крайне простые алгоритмы.

- Ошибки в софте. Был, к примеру, некий менеджер закачки, имя и пароль к сайтами шифровались одинаковым алгоритмом. Пароль не показывался, но выводилось имя пользователя. Так вот, если поменять местами имя и пароль в файле конфигурации, то на месте имени будет выведен расшифрованный пароль.

- Популярные алгоритмы. DES (3DES) в CBC-режиме с постоянным ключом и Base64. Приравнивается к "слабым" из-за легкого анализа. Иногда достаточно запустить PeID, который по общеизвестным константам и таблицам определит все используемые алгоритмы в программе.

- Необходимость обратного декрипта. Для почты и веба сколько бы ты ни шифровал пароль, его все равно придется расшифровать для передачи в открытом виде серверу.

Содержание  Вперед на стр. 048-008-2