Шпионы как мы (полная версия)
АрхивСетевое окружение (архив)Всеинтернетовская мания преследования имеет под собой вполне конкретную почву: приемы и методы раскрытия паролей доступны практически любому. Полная версия статьи, опубликованной в журнале "Компьютерра".
- Пароль?
- Да пошел ты!..
- Сколько лет стою, а пароль не меняется...
|
Пароли для ос, или я тучка-тучка-тучка...
То, что операционная система 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% выявленных:
Кроме RePwl, есть программа NetPasswords Cracker моего написания. Она работает быстрее RePwl и может производить атаку по русскому словарю.
Кстати, недавно услышал, что нашли большой глюк в безопасности сети под Windows 95 при распределении на уровне ресурсов. Вроде пароль можно узнать перебором не по всему слову, а по каждой букве, но пока сам не увижу, ничего утверждать не буду.
Метод перехвата пароля основан на том, что пользователь, обращаясь к серверу (для прочтения почты, подключения к личной папке и т. д.), должен передать ему свой пароль, который, естественно, идет по самому обычному кабелю в виде самых обычных электрических импульсов. По идее, третья сторона должна быть не в состоянии узнать содержимое пакетов, которыми пользователь обменивается с сервером. Но это только по идее… На самом же деле из-за особенностей архитектуры локальной сети пакеты поступают на все сетевые карты, а затем каждая из них определяет, не к ней ли, случаем, пришел запрос? Если к ней, она принимает данные. Подобная реализация сети позволяет при некотором навыке свободно читать чужие пакеты, например, с помощью утилиты Network Spy.
Что можно обнаружить в пойманном пакете? Да все, что душа пожелает! Теоретически многие сетевые пароли передаются в открытом виде, и, заинтересовавшись этой проблемой, я решил проверить сей факт на практике. Поменяв пароль в домене на 123 и используя при этом Alex в качестве имени пользователя, я сел за другой компьютер в сети и запустил на нем “шпиона”, а затем с первого компьютера обратился к почтовому серверу. Network Spy тут же стал показывать пакеты, помеченные как “POP3”, то бишь отловил операцию проверки почты. Практически сразу я поймал имя пользователя:
и… пароль:
На рисунках показано содержимое сетевых пакетов: в начале идет служебная информация — длина пакета, IP-адреса (откуда пришел и куда направляется), контрольная сумма и т. д. А после этого располагаются… искомые имя пользователя и пароль.
Думаю, не стоит объяснять, что дает знание почтового пароля злоумышленнику, стоит лишь отметить, что на многих предприятиях пароль на почтовый ящик обычно совпадает с паролем для входа в домен.
Затем я попытался забрать почту по протоколу IMAP. Тут идентификатор (login) и пароль вообще обнаружились в одном сетевом пакете:
При заходе на FTP-сайт пароль оказалось выявить не сложнее:
Вас еще не хватил удар? Я, например, испытал легкий шок, увидев это в первый раз. В качестве небольшого утешения могу отметить, что почтовые пароли относительно безопасно передавать с помощью Secure Password Authentification. В Outlook Express это делается так:
После выбора этой опции пароли уже не передаются в открытом виде. К сожалению, у популярного в России The Bat! есть проблема с реализацией защищенной аутентификации.
Кроме рассмотренных популярных протоколов, по которым могут идти конфиденциальные данные, в принципе можно перехватывать что угодно: файлы, которые вы передаете по сети, сообщения на коммуникационную программу, аутентификационные пакеты к серверу (вспомните L0phtCrack), данные с Proxy-сервера и многое другое.
Pass Word, Excel, ets…
Согласитесь, неприятно, когда кто-то садится на ваш компьютер и начинает лазить по каталогам. Если вы где-то рядом, то наверняка сумеете вежливо и научно объяснить, что поступать так некультурно. Если же вы отсутствуете, то ничего из этого не получится. Приходится шифровать особо важные файлы. В наше время это – информация, то есть письма, тексты договоров, исходники программ. Большинство из перечисленного хранят в документах Microsoft Word. С помощью этой программы относительно удобно закрыть документ от чужих глаз по паролю. После этого можно облегченно вздохнуть и встать из-за компьютера со спокойной совестью – врагам ничего не достанется. Однако рано успокаиваться – хакеры не спят! Небольшая история на эту тему.
Где-то с год назад дома я работал на ноутбуке, написал небольшой рассказик и поставил на пароль, потому что файл должен был попасть во вторые руки через третьи. Пароль я перед этим заблаговременно сообщил, но человек или забыл его или просто пропустил сообщение. Так или иначе, рассказ дошел до адресата. Он (она, точнее ;)) воспользовался программой MSOFPASS Дмитрия Сумина. Но на ноутбуке был Word 6, программа не находила пароли к файлам Word 97.
Если посмотреть на формат хранения паролей в старых файлах формата .doc и .xls, то для определения пароля необходимо знать только 16 байт, после чего перебрать небольшое количество вариантов. В новых версиях алгоритм шифрования значительно улучшили, но ... остался MS Access 97. В нем шифруются не данные, а пароль при помощи операции XOR с фиксированной константой (!).
Не так давно я поставил другую программу: Advanced Office 97 Password Recovery разработки небезызвестной фирмы Elcom Ltd. Так вот, эта программа прекрасно справляется с документами Word 2000. Файл, запороленный словом из 4 букв, при полном переборе был открыт за 7 минут и 40 секунд.
Так что если вы действительно хотите быть уверены, что никто кроме вас не прочитает документы, то надеяться на MS Office не стоит.
Вместо заключения
В общем, тяжела жизнь простого пользователя. А ведь рассмотренные методы взлома паролей — лишь малая толика в бесконечной череде приемов, использующихся при атаках компьютерных сетей. Есть лишь одно утешение, да и то весьма сомнительное: в реальной жизни все еще хуже — там не только воруют…
Обсуждение статьи - в форуме "Обсудим "СофтТерру"