Инструментальные средства обеспечения безопасности

       

Реализация


PassFilt.dll уже может быть в поставке системы NT, но для нее требуется произвести некоторые модификации в системном реестре.

  1. Убедитесь, что PassFilt.dll размещается в директории C:\WINNT\ System32 (или куда указывает переменная %SYSTEMROOT%).
  2. Воспользуйтесь редактором реестра (в данном случае regedt32.exe работает лучше, чем regedit.exe), чтобы открыть ключ HKEY_LOCAL_MACHINE\System\ CurrentControlSet\Control\Lsa.
  3. В правой панели выберите ключ Notification Packages.
  4. Выберите Edit/Multi String.
  5. Если значение уже установлено в FPNWCLNT, удалите его, если нет необходимости обеспечивать совместимость с Novell.
  6. Введите значение passfilt.
Примечание. Помните, что если вы используете PassFilt.dll на первичном контроллере домена, вы должны использовать его и на резервном контроллере.

Если все идет нормально, последовательность изменения пароля для любого пользователя, кроме администратора, будет определяться специальными правилами. Ограничения, накладываемые использованием PassFilt.dll - только маленький шажок к хорошим паролям. Итак, Windows проверяет каждый новый пароль на простоту, используя следующие правила.

  • Пароль не должен содержать часть имени пользователя.
  • Пароль должен содержать минимум шесть символов.
  • Пароль должен содержать символы следующих четырех видов:
    • английские прописные (от A до Z);
    • английские строчные (от a до z);
    • цифры (0 through 9);
    • нечисловые символы (символы пунктуации, комбинации с клавишей shift и т.д.).

Эти правила не могут быть изменены. Технически библиотека DLL может быть заменена на другую, созданную с использованием интерфейса программирования приложений от Microsoft (password application programming interface, API), но схема шифрования NT порождает достаточно устойчивые пароли. Тем не менее, не следует считать PassFilt.dll панацеей. Пользователь по-прежнему может воспользоваться простым паролем, который легко подсмотреть или подобрать. Ниже приведены примеры слабых паролей, полностью удовлетворяющих ограничениям PassFilt.dll.

  • Passw0rd
  • Password!
  • p4ssw0rd!
  • Pa55werd

Что происходит на самом деле. Пользователи любят заменять числа гласными (a это 4, e - 3, i - 1, o - 0) и добавлять восклицательный знак в свой пароль, чтобы удовлетворить ограничениям по созданию "хорошего" пароля. Словарь хороших паролей, которым владеет большинство взломщиков паролей, содержит различные перестановки обычных слов, которые содержат буквы и символы. И, наконец, пароли, которые основаны на именах спортивных команд, названиях городов, ругательствах и именах всегда относятся к множеству наиболее слабых паролей, поскольку пользователи предпочитают пароли, которые легко запомнить. Следовательно, вам захочется сфокусироваться на усилиях по защите списка паролей и защите служб (таких как электронная почта, система безопасности, Windows NetBIOS), которые опираются на пароли.


OpenBSD не использует PAM-архитектуру, но она также обладает качественной системой управления паролем. Файл /etc/login.conf содержит директивы для алгоритмов шифрования и управления, которым должен следовать пользователь системы. Строки в файле login.conf содержат больше инструкций по требованиям к пользователю, чем к политике управления паролями. Рассматриваемые здесь параметры должны добавляться к уже существующим. Первое значение каждой строки соответствует типу класса авторизации, заданному для пользователя. Имеется также специальная строка "default" для пользователей, у которых не задан класс авторизации.

Чтобы определить класс авторизации пользователя, или задать этот класс, откройте файл /etc/master.passwd с помощью утилиты vipw. Класс авторизации - пятый параметр в строке описания пользовательского пароля. Ниже приведен пример, где классы отображаются жирным шрифтом.

root:$2a$06$T22wQ2dH...:0:0:daemon:0:0:Fede:/root:/bin/csh bisk:$2a$06$T22wQ2dH...:0:0:staff:0:0::/home/bisk:/bin/csh

Некоторые строки в файле login.conf могут содержать следующее. (Символ \ обозначает переход на следующую строку).

default :\ :path=/usr/bin:\ :umask=027:\ :localcipher=blowfish,6 staff:\ :path=/usr/sbin:\ :umask=077:\ :localcipher=blowfish,8 daemon:\ :path=/usr/sbin:\ :umask=077:\ :localcipher=blowfish,8

Здесь помещены инструкции для системы: использовать алгоритм Blowfish для всех пользователей. Цифры 6 и 8 обозначают число циклов для работы алгоритма. Это замедляет работу алгоритма, поскольку требуется больше времени для шифрования пароля. Если пароль требует больше времени для шифрования, то соответственно потребуется и больше времени для его подбора. К примеру, понадобится значительно больше времени, чтобы перебрать словарь из 100000 слов, если вы используете 32 цикла (localcipher=blowfish,32), чем при использовании шести циклов.

Наиболее важными в файле login.conf являются строки: default, поскольку она используется для всех пользователей, и daemon - для пользователя root.






Во-первых, необходимо получить и скомпилировать программу. Последняя версия программы john-1.6.31-dev. Но вам понадобится загрузить и john-1.6.31-dev.tar.gz и john-1.6.tar.gz (или .zip-эквивалент для Windows). Версия 1.6.31-dev содержит не всю документацию и дополнительные файлы, которые есть в версии 1.6. После распаковки john-1.6.31-dev в выбранной директории, вам понадобится перейти в директорию /src.

[root@hedwig]# tar zxvf john-1.6.31-dev.tar.gz [root@hedwig]# tar zxvf john-1.6.tar.gz [root@hedwig]# cd john-1.6.31-dev [root@hedwig john-1.6.31-dev]# cd src

Следующая команда проста: make <OS name>. Например, для сборки программы под управлением Cygwin вам понадобиться набрать make win32-cygwin-x86-mmx. Для пользователей BSD, make freebsd-x86-mmx-elf. Просто наберите make без аргументов, чтобы посмотреть список поддерживаемых операционных систем и комбинаций процессоров.

[root@hedwig src]# make win32-cygwin-x86-mmx

Затем программа самостоятельно осуществит сборку версии для вашей платформы. Когда процесс закончится, исполняемые файлы и файлы конфигурации будут размещены в директории john-1.6.31-dev/run. Версия разработчика не содержит некоторые необходимые файлы. Вам понадобится распаковать эти файлы из архива john-1.6.tar.gz и поместить их в директорию /run.

[root@hedwig]# cd john-1.6.31-dev/run [root@hedwig run]# cp ../../john-1.6/run/all.chr . [root@hedwig run]# cp ../../john-1.6/run/alpha.chr . [root@hedwig run]# cp ../../john-1.6/run/digits.chr . [root@hedwig run]# cp ../../john-1.6/run/lanman.chr . [root@hedwig run]# cp ../../john-1.6/run/password.lst .

Если все прошло нормально, вы можете протестировать программу. Для остальных команд вам следует учитывать, что текущей директорией является john-1.6.31-dev/run. Во-первых, убедитесь, что программа работает, показывая базовую скорость работы для вашей системы.

[root@hedwig run]# ./john -test Benchmarking: Traditional DES [64/64 BS MMX]... DONE Many salts: 323175 c/s Only one salt: 279202 c/s

Benchmarking: BSDI DES (x725) [64/64 BS MMX]... DONE Many salts: 10950 c/s Only one salt: 10770 c/s

Benchmarking: FreeBSD MD5 [32/32]... DONE Raw: 2437 c/s

Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE Raw: 169 c/s

Benchmarking: Kerberos AFS DES [48/64 4K MMX]... DONE Short: 118816 c/s Long: 305669 c/s

Benchmarking: NT LM DES [64/64 BS MMX]... DONE Raw: 487689 c/s

Достойны внимания два теста: FreeBSD MD5 и NT LM DES. Количество взломов в секунду (c/s) отличается для этих двух методов в 200 раз. Это означает, что на полную атаку перебором для FreeBSD потребуется в 200 раз больше усилий, чем на аналогичную работу для Windows NT! Алгоритм OpenBSD Blowfish еще более трудоемок для взлома. Это говорит о том, насколько более устойчивым может быть алгоритм шифрования по сравнению с другими типами алгоритмов. Вместо того чтобы говорить, что один алгоритм безопасней другого, правильнее будет сказать, что алгоритм Blowfish более устойчив к атаке перебором.




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, можно извлечь строку аутентификации. Вы должны находиться в локальной сети и иметь возможность просматривать трафик, чтобы можно было ограничивать использование программы.

Скорость взлома пароля у L0phtCrack удовлетворительная, но не сравнится с последней версией john. При этом программа не предлагает возможностей гибкого изменения правил. Программа лишь допускает настройку списка символов из меню Options.




Программа должна запускаться локально. Это вторая версия утилиты, первоначально разработанной Джереми Алисоном в проекте Samba. В отличие от первой версии, для pwdump2 шифрование базы данных SAM с использованием SysKey не является препятствием. Шифрование SysKey было добавлено в Windows NT с целью увеличить безопасность базы данных SAM, но эффективность этого шага спорна, как мы убедимся с помощью pwdump2. Применение pwdump2 показано ниже.

C:\>pwdump2.exe /?

Pwdump2 - dump the SAM database. Usage: pwdump2.exe <pid of lsass.exe>

Для получения паролей утилита должна запускаться с полномочиями администратора.

C:\>pwdump2.exe Administrator:500:f1e5c5efbc8cfb7f18136fb05f77a0bf:55c77b761ffa46... Orc:501:cbc501a4d2227783cbc501a4d2227783:f523558e22c95c62a6d6d00c... skycladgirl:1013:aa5536a42ebe131baad3b235b51404ee:db31a1ee00bfbee...

Обычно у вас не было необходимости выяснять идентификатор ID (PID) для программы lsass.exe. Однако вы можете использовать один простой путь, чтобы найти его с помощью команд tlist или pulist и команды find (параметр /i указывает команде find игнорировать регистр).

C:\>tlist/find /i "lsass" 244 LSASS.EXE

C:\>pulist/find /i "lsass" LSASS.EXE 244 NT AUTHORITY\SYSTEM

C:\>pwdump2.exe 244 Administrator:500:f1e5c5efbc8cfb7f18136fb05f77a0bf:55c77b761ffa46... Orc:501:cbc501a4d2227783cbc501a4d2227783:f523558e22c95c62a6d6d00c... skycladgirl:1013:aa5536a42ebe131baad3b235b51404ee:db31a1ee00bfbee...

Данные, полученные утилитой pwdump2 нельзя напрямую использовать в L0phtCrack, поскольку он не может их читать. Причина в том, что алфавитные символы в шифрованной строке представлены в нижнем регистре; L0phtCrack читает на входе символы верхнего регистра. У John the Ripper нет таких проблем. К счастью, утилита tr (translate characters) может помочь тем, кто хочет использовать утилиту с графическим интерфейсом. Эта утилита работает как под Unix, так и под Cygwin, и была приспособлена под Windows, как часть набора утилит Resource Kit.

[user@hediwg ]$ cat pwdump.out/tr a-z A-Z ADMINISTRATOR:500:F1E5C5EFBC8CFB7F18136FB05F77A0BF:55C77B761FFA46... ORC:501:CBC501A4D2227783CBC501A4D2227783:F523558E22C95C62A6D6D00C... SKYCLADGIRL:1013:AA5536A42EBE131BAAD3B235B51404EE:DB31A1EE00BFBEE...




Для запуска Lsadump2 требуются полномочия администратора. Применение Lsadump2 показано ниже.

C:\>lsadump2.exe Lsadump2 - dump an LSA secret. Usage: lsadump2.exe pid of lsass.exe <secret>

Вам необходимо знать идентификатор (PID) процесса lsass (так же как и для pwdump2).

C:\>tlist/find /i "lsass" 244 LSASS.EXE Совет. Идентификатор процесса LSA (PID) также хранится в реестре в этом ключе:

HKLM\SYSTEM\ CurrentControlSet\Control\Lsa\LsaPid.

Эта утилита выводит текст "secret" для имеющих отношение к безопасности системы процессов, находящихся в памяти. Секретом может быть пароль, использованный для доступа к службе, номер телефона для службы RAS, или пароль удаленной службы резервирования. Вывод форматируется в две колонки.

aspnet_WP_PASSWORD

61 00 77 00 41 00 39 00 65 00 68 00 68 00 61 00 a.w.A.9.e.h.h.a. 4B 00 38 00 K.8.

Левая колонка содержит ряд шестнадцатеричных цифр, имеющих отношение к службе. Правая колонка содержит ASCII-представление данных. Если на вашей машине под управлением Windows 2000 установлена служба .NET, то, скорее всего, у вас есть пользователь с именем ASPNET. Lsadump2 частично нашел пароль для этого пользователя, показанный жирным шрифтом. Обратите внимание, что Windows сохраняет пароли в формате Unicode, чем и объясняется наличие символов (00) после каждой буквы. К счастью, настройки по умолчанию для этого пользователя не позволяют осуществлять удаленный доступ или выполнение команд.




Вдобавок к приобретению и установке комплекта CyberCop, вам понадобится только одно необходимое условие - создать файл для имен пользователей и паролей. Ниже показано применение утилиты.

C:\>smbgrind.exe -i 192.168.209.117 -u users.txt -p pass.txt -v

Host address : 192.168.209.117 Userlist : users.txt Passlist : pass.txt Cracking host 192.168.209.117 (*SMBSERVER) Parallel Grinders: 10 Percent complete: 0 Trying: domain\NetAdm administrator Trying: domain\NetAdm Pass!word1 Trying: domain\NetAdm password Trying: domain\NetAdm change%me Trying: administrator administrator Trying: administrator Pass!word1 Trying: administrator password Trying: administrator change%me Percent complete: 75 Trying: guest administrator Trying: guest Pass!word1 Trying: guest password Trying: guest change%me Percent complete: 100 Grinding complete, guessed 0 accounts

SMBGrind - достаточно быстрая программа, но склонная к ошибочным положительным решениям. Программа порождает пакеты со строкой CYBERCOP в качестве полезной нагрузки. Следовательно, деятельность программы может быть обнаружена системами IDS в сети, или строку CYBERCOP можно обнаружить в журнале событий, ведущемся для фиксирования неудавшихся попыток подбора пароля.

Другим недостатком является невозможность направить атаку против конкретных общих ресурсов. Инструмент, который направлен на взлом ресурсов ADMIN$ или C$, в Windows может поставить под угрозу целостность всей системы, но для хитрого взломщика более привлекательным может оказаться доступ к ресурсу "wwwroot".




Ниже приведен способ использования программы nbaudit.

usage: nbaudit [-o filename] [-u userlist] [-p passlist] <address>

Параметры userlist и passlist должны быть понятны без разъяснений. Параметр -o используется для задания выходного файла для сообщений о работе nbaudit. Параметр <address> может ввести вас в заблуждение. Он задает адрес или интервал адресов в следующем формате.

  • 192.168.0.1. Уникальный IP адрес.
  • 192.168.0.1-32. IP между 192.168.0.1 и 192.168.0.32, включая крайние адреса.
  • 192.168.0.1-32,200-244. То же самое, что и в предыдущем примере, но добавлены IP-адреса между 192.168.0.200 и 192.168.244.

Ниже приведен пример вывода программы nbaudit.

[*] --- Checking host: 192.168.1.1 [*] --- Obtaining list of remote NetBIOS names [*] --- Remote systems name tables: PRINTSERVER PRINTSERVER PRINTSERVER _MSBROWSE_ HOTEL HOTEL HOTEL HOTEL [*] --- Attempting to connect with name: * [*] --- CONNECTED with name: * [*] --- Attempting to connect with protocol: MICROSOFT NETWORKS 1.03 [*] --- Remote server wants us to encrypt, telling it not to [*] --- Attempting to connect with protocol: LM1.2X002 [*] --- Server time is Mon Jan 28 02:06:08 2002 [*] --- Timezone is UTC-8.0 [*] --- Attempting to establish session [*] --- Obtained server information: Server=[*] User=[administrator] Workgroup=[HOTEL] Domain=[HOTEL] [*]- Obtained listing of shares: Sharename Type Comment ------- --- ------ IPC IPC: IPC Service (PrintServer) Printer Printer: Hotel Public Printer printer$ Disk: [*] --- This machine has a browse list: Server Comment ---- ------ PRINTSERVER PrintServer [*] --- Attempting to access share: \\*\ [*] --- Unable to access [*] --- Attempting to access share: \\*\printer$ [*] --- WARNING: Able to access share: \\*\printer$ [*] --- Checking write access in: \\*\printer$ [*] --- Attempting to exercise .. bug on: \\*\printer$ [*] --- Attempting to access share: \\*\ADMIN$ [*] --- Unable to access [*] --- Attempting to access share: \\*\C$ [*] --- Unable to access [*] --- Attempting to access share: \\*\D$ [*] --- Unable to access [*] --- Attempting to access share: \\*\ROOT [*] --- Unable to access [*] --- Attempting to access share: \\*\WINNT$ [*] --- Unable to access

Nbaudit атакует все обнаруженные общие ресурсы. В этом примере программа успешно соединилась с ресурсом printer$ с нулевым паролем. Если программа осуществляет соединение по имени пользователя и паролю из списка, то на выход выдается информация об удачных соединениях. Это повышает их рейтинг, поскольку дает возможность осуществлять соединение с большим количеством общих ресурсов.

<

Содержание раздела