Архивы: по дате | по разделам | по авторам

Шпионы как мы (полная версия)

АрхивСетевое окружение (архив)
автор : Алексей Павленко   13.04.2001

Всеинтернетовская мания преследования имеет под собой вполне конкретную почву: приемы и методы раскрытия паролей доступны практически любому. Полная версия статьи, опубликованной в журнале "Компьютерра".

- Пароль?
- Да пошел ты!..
- Сколько лет стою, а пароль не меняется...

Вместе с компьютерами, электронной почтой и Интернетом в нашу жизнь прочно вошло слово “пароль”. Еще в середине восьмидесятых годов прошлого века оно ассоциировалось лишь со шпионскими боевиками да анекдотами про Штирлица, но возникшая в последние годы с легкой руки масс-медиа паранойя компьютерной безопасности привела к тому, что термин сей утвердился в сознании обывателя, и на каждом шагу только и слышишь истории про злобного хакера, залезшего через Сеть в домашний холодильник и выпившего все пиво, защищенное, между прочим, весьма стойким криптоалгоритмом. Настало время разобраться в ситуации с паролями спокойно, без истерики, и постараться понять, так ли страшен черт, как его малюют.

Проведенные изыскания, к сожалению, подтвердили: черт действительно страшен. В проприетарных операционных системах и при сетевом взаимодействии узнать пароли даже взломщику средней руки не сложнее, чем опытному медвежатнику справиться с дверной щеколдой. Но виной тому в первую очередь беспечность самих пользователей, зачастую и не подозревающих, где и как их могут “расколоть”. В этой статье описаны технические приемы и методы “ловли” паролей, знание которых (приемов, разумеется, а не паролей) позволит вам обезопасить себя в работе, ибо “кто предупрежден — тот вооружен”.

Сергей Scout Кащавцев

Пароли для ос, или я тучка-тучка-тучка...

То, что операционная система 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 не стоит.

Вместо заключения

В общем, тяжела жизнь простого пользователя. А ведь рассмотренные методы взлома паролей — лишь малая толика в бесконечной череде приемов, использующихся при атаках компьютерных сетей. Есть лишь одно утешение, да и то весьма сомнительное: в реальной жизни все еще хуже — там не только воруют…

Обсуждение статьи - в форуме "Обсудим "СофтТерру"

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.