Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3483 / 787 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 9:

Средства взлома/подбора паролей

Работает ли это на моей системе?

Самым серьезным показателем того, что John the Ripper работает на вашем компьютере, может быть значение загрузки центрального процессора. Вы можете просмотреть список активных процессов (команда ps ), но вы не обрадуетесь, увидев в списке эту программу. Если вы попытаетесь переименовать исполняемый модуль, к примеру "inetd " (обратите внимание на пробел после d ), то программа не будет работать, если не сделать несколько изменений в исходном коде.

Пример из жизни. Атака на политику паролей

Правила, которые вы можете определить в файле john.conf - это достаточно долгий путь к настройке словаря. Мы уже упоминали о простом правиле добавления числа в начало каждой строки.

# Prepend digits (adds 10 more passes through the wordlist)
^[0123456789]

Но что с другими сценариями? Что, если мы заметим тенденцию в схеме изменения паролей для конкретной системы в сети под управлением Unix? Например, что, если мы хотим создать список слов, в который входят все комбинации слова bank, написанного строчными и прописными буквами? Соответствующее правило в файле john.conf будет выглядеть примерно так.

# Permutation of "ban" (total of 8 passes)
i[0][bB]i[1][aA]i[2][nN]

Заметьте, что мы всего лишь поместили первые три буквы в правило. Это сделано потому, что john требуется список слов, чтобы им оперировать. Список слов, называемый password.lst, содержит три последних буквы.

k
K

Теперь если вы запустите john с новым правилом с использованием короткого файла password.lst, вы увидите нечто похожее на это.

$ ./john.exe -wordfile:password.lst -rules -stdout
bank
bank
bank
bank
bAnk
bAnK
bANk
bANK
Bank
BanK
BaNk
BaNK
Bank
BAnK
BANk
BANK
words: 16  time: 0:00:00:00 100%  w/s: 47.05  current: BANK

Ниже представлено еще одно правило, которое может атаковать политику поддержания паролей, требующую наличия специальных символов в третьей позиции и числа в последней позиции.

# Strict policy (adds 160 more passes through the word list)
i[2]['~!@#$%^&*()-_=+]$[0123456789]

Это сокращенный пример вывода манипуляции со словом password:

$ ./john.exe -wordfile:password.lst -rules -stdout
pa'ssword0
pa'ssword1
pa'ssword2
...
pa~ssword7
pa~ssword8
pa~ssword9
pa!ssword0
pa!ssword1
pa!ssword2
...

Вы можете увидеть, что вполне возможно создать правила для быстрого взлома правил создания сетевых паролей.

L0phtCrack

Сначала система Windows казалась более привлекательной с точки зрения безопасности паролей, чем Unix. Большинство Unix-систем никогда не создают пароли более восьми символов.

Windows NT допускает длину пароля до 14 символов, это почти удвоение длины! Mudge и Weld Pond от L0pht Heavy Industries занимаются усовершенствованием схемы шифрования LanMan. Компания последовательно выпускала средства, которые пользовались преимуществом неадекватности схемы шифрования паролей.

Мы уже кратко упоминали в этой лекции о системе шифрования LanMan. Мы знаем, что это система хранения шифрованных паролей, схожая с форматами Unix-файлов /etc/passwd или /etc/shadow. Что можно понять, внимательно изучая, как генерируется и хранится в LanMan шифрованная строка? Система Windows хранит две версии пользовательского пароля. Первая версия называется LanMan, или LM, хэш. Вторая версия - NT-хэш, который шифруется с использованием алгоритма MD5. Это односторонняя функция. Пароль шифруется, но никогда не расшифровывается. Строка LanMan также шифруется с помощью однопроходной функции, но в этом случае пароль разбивается на две части перед тем, как шифроваться с использованием алгоритма DES.

Посмотрим на содержимое трех строк паролей в LanMan. Они представлены в шестнадцатеричной записи и содержат 16 байт данных.

898f30164a203ca0    14cc8d7feb12c1db
898f30164a203ca0    aad3b435b51404ee
14cc8d7feb12c1db    aad3b435b51404ee

Не надо быть семи пядей во лбу, чтобы заметить некоторые совпадения в этих трех примерах. Последние 8 байт второго и третьего примера одинаковые: aad3b435b51404ee. Эти значения одинаковы для всех паролей длиной более восьми символов. Эта криптографическая ошибка возникает по двум причинам: вследствие того, что содержимое пароля составляет более восьми символов и показывает, что при генерации второй половины шифрованной строки не используется никакой информации о первой половине. Обратите внимание, что вторая половина первого примера ( 14cc8d7feb12c1db ) содержит первую часть третьего примера. Это, скорее, говорит о том, что пароль шифровался на основе двух независимых наборов символов (по семь каждый), чем о том, что вторая половина зависит от содержания первой части пароля.

В результате это превращает большой пароль из 14 символов в два коротких пароля по 7 символов. И в довершение всего, LanMan при шифровании игнорирует регистр символов, что резко сокращает время, затрачиваемое на взлом пароля перебором.

Реализация

L0phtCrack - инструмент для взлома паролей с развитым графическим интерфейсом для среды Windows NT и ее наследников Windows 2000 и XP. Попытка стащить пароль у Unix-системы обычно требует доступа к файлам /etc/passwd и /etc/shadow. И тот и другой представляют собой легко читаемый текст. Windows хранит пароли в Security Accounts Manager (SAM) - двоичном файле, который тяжело прочитать без специальных ухищрений. L0phtCrack не только подбирает пароли: он может извлекать шифрованные строки паролей из SAM-файла, локальной или удаленной системы и перехватывать пароли, когда они передаются по сети.

SAM-файл располагается в директории \WINNT\system32\config\. Если вы попытаетесь скопировать или открыть этот файл, получите сообщение об ошибке.

C:\WINNT\system32\configcopy SAM c:\temp
The process cannot access the file because it is being used by
another process.
        0 file(s) copied.

Не теряйтесь. Windows, к счастью, хранит резервную копию SAM файла в директории \WINNT\ repair\ или \WINNT\repair\RegBack\.

L0phtCrack может извлечь пароли локального или удаленного компьютера с помощью функции Dump Passwords From Registry.

Удаленное извлечение пароля требует доступа к общему ресурсу ADMIN$. Для этого необходим доступ к порту 39 NetBIOS TCP. L0phtCrack может создать для вас сессию, или вы можете сделать это вручную.

C:\>net use \\victim\admin$ * /u:Administrator
Type the password for \\localhost\admin$:
The command completed successfully.

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