Шпионы как мы (полная версия)
Всеинтернетовская мания преследования имеет под собой вполне конкретную почву: приемы и методы раскрытия паролей доступны практически любому. Полная версия статьи, опубликованной в журнале "Компьютерра".
Автор: Алексей Павленко | Раздел: | Дата: 13 апреля 2001 года
- Пароль?
- Да пошел ты!..
- Сколько лет стою, а пароль не меняется...
|
Пароли для ос, или я тучка-тучка-тучка...
То, что операционная система Windows 9x хранит зашифрованные пароли в файлах вида имя_пользователя.pwl в одном из своих каталогов, давным-давно не секрет. Расширение PWL как раз и означает PassWord List. Само собой, пароли в этом файле шифруются, но “на всякого мудреца довольно простоты”… Алгоритм шифрования в Windows 95 был очень слаб, да к тому же в Win API существовала недокументированная функция WNetEnumCachedPasswords, возвращающая ВСЕ пароли!
В Windows 95 OSR 2 способ шифрования поменяли, “недокументированную” функцию убрали, но в качестве алгоритма шифрования был выбран RC4. В отличие от DES и RSA, он работает очень быстро, но все пароли хранятся в верхнем регистре, то есть PassWoRd=PASSWORD. Поэтому пароль можно быстро найти… простым перебором! Для этого достаточно переписать с машины-жертвы файл с паролями и запустить программу типа RePwl. Если длина пароля мала, то на современной машине на его подбор уходит несколько часов (если не минут). Для длинных ключей, однако, на перебор потребуются месяцы и годы, что заставляет повторить набившую оскомину фразу: Люди! Будьте бдительны! Используйте длинные пароли с неалфавитными символами!
Windows NT — гораздо более защищенная операционная система. В ней и регистр паролей важен, да и виснет она редко… Но кто сказал, что в ней нельзя узнать пароли? Можно! И похоже, что не сложнее, чем в Windows 95. Для начала пароли надо найти. Раз они используются, значит, должны где-то храниться, но где? Оказывается, в некоем файле по имени SAM (Security Account Manager), находящемся в каталоге %systemroot%\system32\config. Точнее, в файле хранятся не сами пароли, а их хэши (hash), то есть пароли в зашифрованном виде.
Как уже говорилось, регистр пароля в NT важен, а его максимальная длина составляет 14 символов. Хэши паролей хранятся дважды в двух разных форматах: NT Hash и LanMan Hash. Каждая из семисимвольных половин пароля шифруется независимо от другой в LanMan Hash по алгоритму DES; NT Hash получается в результате шифрования всего пароля по алгоритму MD4. LanMan Hash содержит информацию о пароле без учета регистра (прописными буквами), а NT Hash — с учетом регистра. Поэтому взломщику проще работать с LanMan Hash, а потом уже перебором получать пароль с учетом регистра. Таким образом, если пароль состоит из четырнадцати символов, то придется узнавать два пароля по семь символов каждый, а не один четырнадцатисимвольный, что гораздо проще.
Однако для того, чтобы расшифровать хэши паролей, их нужно сначала заполучить. Дело осложняется тем, что к SAM-файлу доступ получить нельзя, если загружена операционная система. Но SAM-файл можно списать, загрузив другую операционку, к примеру DOS или Windows 9х. Скажете, что в качестве файловой системы в WinNT обычно используется NTFS? Правильно, но ведь есть прекрасно работающие драйверы NTFS for Windows 98 и NTFS for DOS. Кроме того, SAM-файл (именуемый “sam”, без расширения) можно найти на диске аварийного восстановления системы или резервном носителе.
Еще один способ получения парольных хэшей — из реестра (ветки HKLM\SAM\SAM и HKLM\SECURITY), но для этого необходимо иметь административные права. По умолчанию у администратора нет доступа к “секретным” данным, однако права можно изменить с помощью regedt32.exe и просмотреть всю информацию, хотя делать этого не советую, ели нет желания переустанавливать систему, — по любопытству и сам пострадал.
Понятно, что получить хэши непросто: надо иметь административный доступ или “физический контакт” с компьютером. И даже это иногда не работает, если активизирована программа SYSKEY, входящая в состав ServicePack. Но! Опять есть обходная тропка. Можно перехватывать аутентификационные пакеты по сети, когда машина-клиент обращается к другой машине, с помощью, скажем, программы L0phtCrack. Будучи запущенной, за день она собирает достаточно хэшей паролей. Правда, говорят, что в Microsoft научились бороться и с этим…
Ну а уж когда хэши будут на руках, с ними можно поступить так же, как и с паролями Windows 9x. С помощью L0phtCrack+ (обратите внимание на плюс) можно получить хэши паролей из реестра или импортированного файла SAM. В качестве примера: как-то я запустил эту программу на одном из предприятий. Более 40% паролей были получены через минуты (!) работы, а за несколько часов удалось узнать уже 84% всех паролей, включая администраторский. Что удивительно, у пользователей очень популярен пароль “123”:
Паролей.net
Сетевые пароли можно узнать двумя путями: или перебором, или перехватом. В первом случае вновь пригодится RePwl, позволяющая еще и подбирать пароли к ресурсам сети. Вначале она сканирует содержимое сетевого окружения, отыскивая сетевые ресурсы, затем фильтрует их и оставляет только запароленные, а далее все как обычно: полный перебор по алфавиту или использование словаря. Мой личный опыт показал, что определению пароля очень помогает человеческий фактор: людям обычно лень запоминать длинный пароль, кроме того, им кажется, что они поступят очень хитрО, введя комбинацию из нескольких цифр — злоумышленник ведь не знает, что в пароле одни цифры, а все варианты, мол, просто не сможет перебрать… Чтобы опровергнуть это заблуждение, отмечу, что при использовании 166-мегагерцового процессора и сети на 10 Мбит/с пароль из трех-четырех цифр подбирается за несколько минут. Как оказалось, подобные пароли составляют 90% выявленных:







