Процессы, потоки и задания:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
На первый взгляд понятия «программа» и «процесс» похожи, но между ними есть принципиальное различие. Программа — это статическая последовательность команд, в то время как процесс представляет собой контейнер для набора ресурсов, используемых для выполнения программы. На самом высоком уровне абстракции процесс Windows включает в себя следующее: - Уникальный идентификатор, который называется идентификатором процесса (PID). - Не менее одного работающего потока. Каждый поток в процессе имеет полный доступ ко всем ресурсам, на которые ссылается его процесс контейнер. - Закрытое виртуальное адресное пространство — набор адресов виртуальной памяти, используемых процессом для хранения информации и создания ссылок на данные и код. - Выполняемую программу — исходно запущенный код и данные, отображаемые в виртуальном адресном пространстве процесса. - Список открытых описателей различных системных ресурсов: семафоров, коммуникационных портов, файлов и пр. - Контекст безопасности, который называется маркером доступа, идентифицирующий пользователя, группы безопасности, привилегии, состояние виртуализации UAC, идентификатор сеанса входа LSA и идентификатор сеанса служб терминалов. Каждый процесс содержит также идентификатор своего родительского процесса, однако при завершении родительского процесса эта информация не удаляется. Следовательно, процесс может ссылаться на несуществующий родительский объект-процесс или даже на другой процесс, которому был присвоен исходный идентификатор родительского объекта. Словом, процесс хранит идентификатор своего родительского процесса только в информационных целях. В Windows модель процессов дополнена концепцией заданий. Основная функция объекта-задания в том, что он позволяет манипулировать группой |
Контейнер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Как сказано выше, процесс — это всего лишь контейнер. С технической точки зрения выполняются не процессы, а содержащиеся в них потоки. Поток — это объект внутри процесса, который Windows может планировать и выполнить. Он включает в себя следующие основные компоненты: - Содержимое регистров центрального процессора, т.е. состояние процессора. Оно включает указатель, идентифицирующий следующий машинный код, который будет выполнен потоком. - Два стека — для режима ядра и режима пользователя. - Закрытая область памяти, которая называется локальной памятью потока (TLS). Она предназначена для использования подсистемами, библиотеками исполняющей системы и динамически подключаемыми библиотеками (DLL). - Уникальный идентификатор, который называется идентификатором потока (TID). Идентификаторы процессов и потоков генерируются в одном пространстве имен, поэтому они никогда не перекрываются. - Иногда потоки имеют собственный контекст безопасности, например в случае многопоточных серверных приложений, олицетворяющих контекст безопасности клиентов, которых они обслуживают. |
Пользовательский режим и режим ядра:
1 2 3 4 5 6 7 8 9 10 11 |
Для предотвращения доступа к важнейшим данным операционной системы и их модификации пользовательскими приложениями Windows использует два режима доступа к процессору: пользовательский режим и режим ядра. Все процессы, кроме системных, работают в пользовательском режиме («кольцо 3» в терминах архитектуры Intel х8б и х64), в то время как драйверы устройств и компоненты операционной системы, в частности, исполнительная система и ядро, работают только в. режиме ядра. Режим ядра соответствует т.н. «кольцо 0» процессоров х86 и х64, поэтому в данном режиме доступна вся память системы и все команды процессора. Разрешая только низкоуровневым компонентам операционной системы с более высоким уровнем привилегий, чем у процессов пользовательского режима, процессор предоставляет разработчикам операционных систем необходимые им возможности, не позволяя приложениям, содержащим ошибки, нарушать стабильность системы в целом. - Примечание Не путайте различие между пользовательским режимом и режимом ядра с различием между правами пользователя и правами администратора. В данном контексте «пользовательский режим» не означает «режим с правами обычного пользователя». |
Функция ReadFile:
1 2 |
Операционная система выполняет соответствующую внутреннюю функцию, которой, в случае с ReadFile, является функция ядра NtReadFile. |
Окна в Process Explorer:
1 2 3 4 5 6 |
Таким образом, для потоков из процессов пользовательского режима характерна попеременная работа в пользовательском режиме и в режиме ядра. Более того, вследствие того, что большинство кода графической и оконной подсистем работает в режиме ядра, процессы приложений, интенсивно использующих графику, могут проводить больше времени в режиме ядра, чем в пользовательском режиме. Посмотреть эти два режима можно на графике использования центрального процессора программы Process Explorer: красная часть графика обозначает время, проведенное в режиме ядра, а зеленая часть графика — время, проведенное в пользовательском режиме. |
ядро Windows / Ntoskrnl.exe :
1 2 3 |
Код ядра Windows, содержащийся в файле в Ntoskrnl.exe и работающий, естественно, в режиме ядра, состоит из ряда подсистем, таких как диспетчер памяти (Memory Manager), диспетчер процессов (Process Manager), диспетчер ввода-вывода (I/O Manager) и диспетчер конфигураций (Configuration Manager) (реестр), являющихся компонентами исполняющей системы. Каждая из этих подсистем определяет с помощью диспетчера объектов один или несколько типов для ресурсов, предоставляемых приложениям. |
Типы объектов:
1 2 3 4 5 6 7 8 |
В каждой версии Windows добавляются новые типы объектов, например, в Windows 7 таковых 42. Типы объектов в той или иной версии Windows, можно посмотреть, запустив утилиту WinObj с правами администратора и перейдя в каталог ObjectTypes в пространстве имен диспетчера объектов. Если приложение захочет использовать один из этих ресурсов, оно должно сначала вызвать соответствующую API-функцию, чтобы создать или открыть ресурс. Например, функция CreateFile открывает или создает файл, функция RegOpenKeyEx открывает раздел реестра, a CreateSemaphoreEx открывает или создает семафор. Если функция выполняется успешно, Windows создает ссылку на объект в таблице описателей, которая ведется исполняющей системой, и возвращает приложению индекс новой записи в таблице описателей. |
Стек вызовов:
1 2 3 4 5 6 7 8 |
Благодаря стеку вызовов система «знает», какой функции следует возвращать управление после завершения последовательно вызванных функций, как передавать параметры от одной функции к другой и как хранить переменные локальных функций. Стек вызовов работает по принципу «первым вошел, последним вышел», т.е. элементы стека после завершения функций удаляются в порядке, обратном их добавлению при вызовах. Когда функция собирается вызвать другую функцию, она записывает адрес в памяти следующей команды, т.е. команды, которая будет выполняться при завершении вызываемой функции (т.н. «адрес возврата») в верхнюю часть стека. Если вызванная функция, в свою очередь, вызывает третью функцию, та тоже запишет в стек свой адрес возврата. При завершении функции система читает адрес из первого элемента стека и продолжает выполнять код с места, на которое указывает этот адрес. |
Элементы стека:
1 2 3 4 5 6 7 8 9 10 11 |
Элементы стека вызовов формируются по шаблону имя_модуля!имя_фуикции+смещение, где имя_модуля — это имя исполняемого файла, содержащего функцию, а смещение — это число (в шестнадцатеричной системе счисления) байтов перед началом функции. Если имя функции недоступно, адрес отображается просто как имя_модуля+смещение. В показанном выше +примере с malloc стек вызовов может выглядеть следующим образом: msvc rt!malloc+0x2a crypt32!CryptEncryptMessage+0x9f Helper Functions !EncryptThisText+0x43 MyApp.exe+0x25d8 В стеке видно, какой код исполняется, и какой путь прошла программа, чтобы запустить его. |
Исполняемые файлы:
1 2 3 4 5 6 7 8 9 10 11 12 |
Исполняемые файлы, загруженные в процессы пользовательского режима, как правило, являются ЕХЕ-файлами, позволяющими запускать новые процессы, либо DLL, загружаемыми в существующий процесс. Бывают исполняемые файлы и с другими расширениями. Так, файлы с расширениями СОМ или SCR фактически являются ЕХЕ-файлами, в то время как файлы с расширениями ACM, AX, CPL, DRV и OCX являются разновидностями DLL. Программы установки обычно распаковывают и запускают ЕХЕ-файлы с расширением ТМР. При создании исполняемых файлов компиляторы и компоновщики могут также генерировать соответствующие файлы символов (их расширение по умолчанию — PDB). Файлы символов содержат данные, которые не нужны при запуске исполняемого кода, но могут быть полезны при отладке. Это имена и смещения для точек входа функций, содержащихся в модуле. Имея эту информацию, отладчику легко, взяв адрес в памяти, найти соответствующую функцию по ближайшему предыдущему адресу. В отсутствие символов отладчику приходится пользоваться экспортируемыми функциями (если таковые есть), которые могут и не иметь никакого отношения к коду, который нужно исследовать. В целом, чем больше смещение адреса возврата, темменьше вероятность того, что вы нашли нужное имя функции. |
Средства отладки:
1 2 3 4 5 6 |
Средства отладки Windows позволяют загружать нужные файлы символов по требованию с веб-сервера. На сервере могут быть символьные файлы для множества версий данного исполняемого файла, и средства отладки загружают именно символы, подходящие к отлаживаемому файлу (При этом проверяется временная метка и контрольная сумма в заголовке исполняемого файла и уникально его идентифицирующие.) У Microsoft есть веб-сервер, с которого можно скачать открытые символьные файлы Windows. Установив средства отладки Windows и настроив утилиты Sysinternals для использования сервера символов Microsoft, вы без труда узнаете, какие функции Windows вызывают ваши процессы. |
Process Explorer steck
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
На рис. показан стек вызовов для события, захваченного утилитой Process Monitor. Присутствие в стеке MSVBVM60.DLL (фреймы 15 и 17-21) указывает на то, что это Visual Basic 6, поскольку MSVBVM60.DLL является библиотекой времени выполнения Visual Basic 6. Большие смещения фреймов MSVBVM60 говорят о том, что для этого модуля символы не доступны, а отображаемые имена не являются реальными именами вызываемых функций. Фрейм 14 отражает вызов функции Forml::cmdCreate. Щелкните главный исполняемый файл (LuaBugs_VB6.exe). Этот фрейм также содержит путь к исходному файлу. Это говорит о том, что перед нами полные данные символов для данного модуля, созданного сторонним разработчиком. Затем эта функция вызывает CWshShelbRegWrite из Wshom.ocx (фрейм 13), значит эта программа, написанная на Visual Basic 6, использует Windows Script Host и ActiveX для записи в реестр. CWshShelkRegWrite вызывает внутреннюю функцию из того же модуля (фрейм 12), а тот — документированную API-функцию Windows RegCreateKeyExA из Kernel32.dll (фрейм 11). Управление передается через внутренние функции Кегпе132 (фреймы 8-10) системной API-функции ZwCreateKey из Ntdll.dll (фрейм 7). Таким образом, все эти функции были выполнены в пользовательском режиме, о чем свидетельствует буква U в столбце фреймов, однако во фрейме 6 программа переключилась в режим ядра, о чем свидетельствует буква К. Двухбуквенные префиксы функций ядра (фреймы 0-6) обозначают компоненты исполняю щей системы, к которым они принадлежат. Например, Cm относится к диспетчеру конфигураций, отвечающему за реестр, а ОЬ — к диспетчеру объектов. Трассировка стека была записана во время обработки CmpCallCallBacks(фрейм 0). Обратите внимание, что символы в фреймах 0-13 были взяты исключительно из открытых символов Windows, загруженных по требованию программой Process Monitor с сервера символов Microsoft. |
Сеансы служб терминалов:
1 2 3 4 5 6 7 8 9 |
Сеансы служб терминалов идентифицируются порядковыми числовыми идентификаторами, начиная с сеанса 0. Windows определяет глобальное пространство имен в диспетчере объектов и «локальное» сеансовое пространство имен для каждого сеанса с номером 1 и выше для изоляции сеансов. Глобальное пространство имен служит в качестве локального для процессов сеанса 0 (WinObj дает графическое изображение пространства имен диспетчера объектов). Примечание: Термин «консольный сеанс» иногда ошибочно считается синонимом сеанса 0. Консольный сеанс — это сеанс служб терминалов, связанный с локально подсоединенными клавиатурой, видео и мышью. Если все активные сеансы системы представляют собой сеансы удаленного рабочего стола, то консольный сеанс остается подключенным и отображает экран входа в систему. Он может являться или не являться сеансом 0 в Windows XP/Windows 2003, однако никогда не является таковым в Windows Vista и более поздних версиях. |
Оконные станции:
1 2 3 4 5 6 7 8 9 |
Каждый сеанс служб терминалов содержит одну или несколько именованных оконных станций. Оконная станция — это защищаемый объект, содержащий буфер обмена, атомарную таблицу, а также не менее одного рабочего стола. Каждый процесс связан с одной оконной станцией. В сеансе терминальных служб только оконная станция с именем WinStaO может отображать пользовательский интерфейс и принимать ввод от пользователя. В сеансах терминальных служб с номерами 1 и выше Windows создает только оконную станцию WinStaO. (см. рис. 2-8). В сеансе 0 Windows создает, помимо WinStaO, отдельную оконную станцию для каждого сеанса LSA, связанного со службой. Такие сеансы имеют локально уникальный идентификатор (LUID), который добавляется к имени оконной станции. Например, процессы системных служб работают в оконной станции Service-0x0-Зе7$, в то время как процессы сетевых служб работают в окон ной станции Service - 0x0 -Зе4 $. Эти оконные станции не могут отображать пользовательский интерфейс. |
Рабочие столы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Каждая оконная станция имеет один или более рабочих столов. Рабочий стол — это защищаемый объект с логическим экраном, на котором приложения могут создавать пользовательский интерфейс в виде окон. Примечание: Рабочие столы, описываемые здесь, не имеют отношения к абстракции Рабочий стол (Desktop) наверху пространства имен командной оболочки Проводника (Explorer). Пользовательский интерфейс содержат многие рабочие столы, но только один из них может отображаться в данный момент. В интерактивной оконной станции обычно содержатся три рабочих стола: Default, Screen-saver и Winlogon. Default — это рабочий стол, где пользовательские приложения запускаются по умолчанию. Утилита Sysinternals Desktops создает до трех дополнительных рабочих столов для запуска приложений Screen-saver — это рабочий стол, на котором Windows запускает экранную заставку, если включена защита паролем. Winlogon - который так-же называют защищенным рабочим столом, — это рабочий стол, которому Windows передает управление при нажатии Ctrl+Alt+Del, а также по умолчанию место отображения диалоговых окон повышения привилегий UAC. Разрешения на рабочем столе Winlogon ограничивают доступ только к программам, работающим под системной учетной записью, что обеспечивает безопасность операций, связанных с вводом пароля. |
Оконные сообщения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
В отличие от консольных приложений, GUI-приложения Windows являются событийно-управляемыми. Каждый поток, создающий оконные объекты, имеет очередь, в которую отправляются сообщения. Потоки графического пользовательского интерфейса ожидают, а затем обрабатывают входящие оконные сообщения. Эти сообщения информируют окно о том, что следует сделать или что произошло. Например, сообщения могут передавать окну следующие команды: «обновиться», «переместиться в точку экрана с координатами (х, у)», «закрыться», «была нажата клавиша Enter», «был сделан щелчок правой кнопкой мыши в координатах (х, у)» или «пользователь вы ходит из системы». Оконные сообщения отправляются при помощи диспетчера окон. Сообщения могут отправляться любому окну из любого потока, работающего на том же рабочем столе. Диспетчер окон не позволяет программе отправлять оконное сообщение окну с другого рабочего стола. Команды программы Process Monitor /Terminate и /WaitForldle должны отправляться с того же рабочего стола, на котором работает адресат Procmon, поскольку они используют оконные сообщения для передачи существующему адресату команды закрытия, а также определять, готов ли адресат обрабатывать команды в виде оконных сообщений. Оконные сообщения могут использоваться для имитации действий мыши или клавиатуры. Именно этим занимаются программа Regjump и функция Jump To в Process Monitor и Autoruns, чтобы перейти к разделу в Regedit. Из-за уровней абстракции между физическим нажатием клавиши и появляющимися оконными сообщениями, принимаемыми GUI-программой, конечной программе практически невозможно отличить с абсолютной точностью, нажата ли клавиша на клавиатуре или это другая программа сымитировала нажатие клавиши, отправив оконное сообщение. Это справедливо не только для Windows, но и для других «оконных» систем. Данная архитектура оконных сообщений (за исключением внедрения многопоточной поддержки 32-разрядных версий Windows), восходит к Windows 1.0, и имеет множество унаследованных свойств. В частности, оконные объекты не имеют дескрипторов защиты и списков управления доступом. Именно поэтому разрешить службам отображение окон на пользовательском рабочем столе было плохой идеей, так как пользовательские программы могли отправлять ошибочные или злонамеренные сообщения окнам системных процессов и, при успешном использовании дыр в защите, управлять этими процессами (это т.н. shatter-атака). Если пользователь не был администратором, повышение привилегий очень простым было делом. Именно в этом заключается главная причина, по которой интерактивные пользователи больше не входят в систему в сеансе 0. При работе с пользовательскими правами (это режим по умолчанию в Vista и более поздних версиях Windows), а также при повышении привилегий UAC (оно нужно для работы приложений, требующих администраторских прав, на одном рабочем столе с процессами, обладающими пользовательскими правами), требовалась дополнительная защита от shatter-атак окон процессов с повышенными привилегиями. Результатом стала изоляция привилегий пользовательского интерфейса (UIPI). До Windows Vista любой процесс, работающий под пользовательской учетной записью, имел полный доступ к управлению любыми другими процессами, работающими под той же записью. При выключенном обязательном контроле целостности (Mandatory Integrity Control, MIC) процессы создаются и работают на определенном уровне целостности (Integrity Level, IL). IL представляет некоторое значение, связанное с относительным уровнем доверия к процессу. Приложения с повышенными привилегиями работают на высоком IL, стандартные пользовательские приложения — на среднем, а процессы с низким уровнем прав (например, Internet Explorer в безопасном режиме) — на низком IL. (Программа Process Explorer, описанная в главе 3, может отображать IL для каждого процесса). Когда передается оконное сообщение, которое может изменить состояние окна-адресата (например, сообщение о щелчке кнопкой мыши), при активной UIPI диспетчер окон сравнивает IL процесса, отправляющего сообщение, с IL процесса, владеющего окном-адресатом. Если IL отправителя ниже, чем у получателя, сообщение блокируется. По этой причине Regjump и аналогичные функции Jump To должны выполняться с IL не ниже уровня Regedit. Подробнее о MIC и UIPI см. по адресу: http://msdn.microsoft.com/en-us/library/bb625964.aspx |
Подсветка процессов (Process Explorer ):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Одна из важных функций списка процессов — разноцветная подсветка, выделяющая различные типы процессов. Можно самостоятельно задавать цвет подсветки для каждого типа процессов, по умолчанию установлены следующие цвета: - Голубой: Процессы, работающие под той же учетной записью пользователя, что и Ргосехр (т. н. «свои процессы»). Учтите, что, несмотря на это, процессы могут находиться в разных сеансах LS А, на разных уровнях целостности (IL) и сеансах терминалов. Поэтому процессы, запущенные из-под одной учетной записи могут функционировать в разных контекстах защит. Обратите внимание и на то, что при запуске Procmon из-под другой учетной записи остальные приложения, запущенные в этом сеансе, не будут подсвечиваться как «свои». - Фиолетовый: Упакованные образы. Ргосехр с помощью простых эвристических процедур определяет исполняемые файлы, содержащие код всжатом и (или) зашифрованном виде. Зачастую вредоносное ПО использует данную технологию, чтобы спрятаться от антивирусных программ, а затем распаковать свой код в памяти и выполнить его. Обратите внимание на то, что иногда эвристические процедуры вызывают ложные срабатывания. Чаще всего это происходит с отладочными сборками MicrosoftVisual C++. - Коричневый: Задания (процессы, связанные с заданиями). Задание — это объект Windows, позволяющий управлять процессами как единым целым. На задания могут налагаться ограничения, например по ] ной памяти или времени исполнения. Процесс может входить выделение более чем в одно задание. По умолчанию задания не подсвечиваются. - Желтый: Процессы .NET (процессы, использующие Microsoft .NET Framework). - Темно-серый: Приостановленные процессы. В этих процессах все потоки приостановлены и не могут быть запланированы для исполнения. Процессы, завершившиеся аварийно, могут отображаться как приостановленные, в отчетах об ошибках Windows при этом указывается аварийное завершение (не путайте темно-серый цвет со светло-серым, которым в цветовых схемах Windows по умолчанию подсвечивается выбранная строка, когда окно Ргосехр не активно). |
Столбцы по умолчанию (Process Explorer ):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Каждый столбец в списке процессов представляет тот или иной статический либо динамический атрибут процесса. Динамическиеnатрибуты обновляются при каждом автоматическом обновлении. Ргосехр по умолчанию отображает следующие столбцы: - Process (Процесс) Имя и значок исполняемого файла, если Ргосехр может идентифицировать полный путь к исполняемому файлу. Первые три строки списка представляют «псевдопроцессы», о которых будет сказано ниже. - PID (ID процесса) Идентификатор процесса. - CPU (ЦП) Время ЦП, затраченное в течение последнего интервала обновления (в процентах, округленное до двух десятичных знаков; подробнее см. ниже в описании вкладки Process Performance; о загруженности ЦП см. выше в этой главе). - Private bytes (Закрытая память) Число байтов памяти, выделенной и переданной процессу для монопольного (а не для совместного с другими процессами) использования. Закрытая память процесса включает его кучу и стек. Постоянный рост данной величины зачастую свидетельствует об утечках памяти. - Working Set (Рабочий набор) Объем физической памяти, выделенный процессу Диспетчером памяти. - Description and Company Name (Описание и название компании) Информация из образа исполняемого файла. Отображается, только если Ргосехр идентифицирует путь к файлу и сможет прочитать его. Если утилита Ргосехр работает без прав администратора, она не сможет получить информацию о процессах, не являющихся службами и работающих в другом контексте защиты. Возможно отображение и множества других атрибутов, о которых рассказывается ниже. |
Системные процессы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Первые три строки в режиме дерева — это System Idle (Бездействие системы), System (Система), Interrupts (Прерывания). System Idle и Interrupts не являются настоящими процессами операционной системы, а в процессе System не исполняется код пользовательского режима. Процесс System Idle (или просто Idle) включает по одному «потоку» на каждый ЦП, он служит для учета времени бездействия ЦП, т. е. времени, в течение которого Windows не исполняет код. Поскольку это не настоящий процесс, у него нет PID, так как в Windows на самом деле нет PID 0. И все же "Диспетчер задач" показывает «искусственный» процесс System Idle с идентификатором 0, поэтому Ргосехр по его примеру присваивает данному процессу PID 0. Процесс System содержит только системные потоки в режиме ядра, работающие, разумеется, в режиме ядра. Обычно эти потоки исполняют код операционной системы из Ntoskrnl.exe и код драйверов устройств. Псевдо процесс Interrupts — представление времени в режиме ядра, затраченное на обслуживание прерываний и вызовов отложенных процедур (DPC). Ргосехр отображает Interrupts как дочерний процесс System, поскольку он использует только время в режиме ядра. Windows не приписывает время, "затраченное" данным псевдо процессом, процессу System и другим процессам. "Диспетчер задач" ошибочно приписывает время обработки прерываний и DPC процессу System Idle. В результате "Диспетчер задач" отображает системы, обрабатывающие много прерываний, как бездействующие. Если ваша система сильно загружена обработкой прерываний и DPC, желательно выяснить причину этого с помощью утилиты Xperf, отслеживающей прерывания и DPC, либо Kernrate. |
Процессы загрузки и входа в систему:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
С момента загрузки Windows до входа в систему первого пользователя запускается целый ряд процессов. К тому моменту, как вы войдете в систему и увидите дерево процессов в Ргосехр, некоторые из них уже завершатся. Именно поэтому оболочка (обычно это Проводник — Explorer.exe) появляется в левой части окна как процесс без родителя. Подробнее о событиях во время загрузки и входа в систему также см. в книге «Внутреннее устройство Microsoft Windows». Процедура загрузки Windows ХР и Windows Vista различается. В WindowsХР, процесс System запускает Smss.exe (Session Manager, Диспетчер сеансов), а тот запускает Csrss.exe и Winlogon.exe. Далее Winlogon запускает Services.exe (Service Control Manager, Диспетчер управления сервисами), Lsass.exe (подсистему Локальных средств защиты), а также два процесса, которых нет на рисунке. Первый — LogonUl.exe, демон сатрирующий экран входа в системах, не присоединенных к домену, второй — Userinit.exe, запускаемый Windows после входа пользователя в систему. Userinit.exe запускает Explorer.exe (оболочку пользователя) и завершается. Большинство пользовательских приложений являются прямыми либо непрямыми потомками Explorer.exe. Процессы служб — почти всегда потомки Services.exe. Заметьте, что в Windows ХР процесс Services.exe содержит некоторые службы, и поэтому подсвечивается розовым. В Windows Vista и выше пользователь больше не входит в один сеанс терминальных служб со службами (сеанс 0), поэтому последовательность загрузки и входа изменилась. |
Smss.exe
1 2 3 4 5 6 7 8 9 |
Процесс System запускает экземпляр Smss.exe, который работает до выключения системы. Этот экземпляр Smss.exe запускает два новых экземпляра Smss.exe, один — в сеансе 0 и один — в сеансе 1, которые создают процессы в своих сеансах. Оба этих экземпляра завершаются перед входом пользователя, так что первоначальный экземпляр Smss.exe всегда отображается как не имеющий дочерних процессов. Экземпляр Smss.exe в сеансе 0 запускает экземпляр Csrss.exe в сеансе 0 и Wininit.exe. Wininit.exe запускает Services.ехе, Lsass.exe, и Lsm.exe (Диспетчер локальных сеансов). В сеансе 1 Smss.ехе запускает новый экземпляр Csrss.exe и Winlogon.exe. Winlogon запускает LogonUl.exe для запроса учетных данных интерактивного пользователя, а затем — Userinit.exe (который уже запускает Explorer после аутентификации пользователя). Как LogonUI так и Userinit обычно завершаются до инициализации оболочки, после чего пользователь может запустить Ргосехр. Как и в Windows XP, большинство служб являются потомками Services.exe, однако, в отличие от XP, Services.exe не содержит никаких служб. Полное дерево процессов для загрузки можно увидеть в главах, посвященных утилите Process Monitor. |
Привязка ЦП к процессам:
1 2 3 4 5 6 |
Set Affinity (Установить привязку) В многопроцессорных системах можно привязать процесс к ЦП, т. е. сделать так, чтобы потоки этого процесса исполнялись только на указанных вами ЦП. Это удобно, когда какой-либо процесс чрезмерно загружает ЦП, останавливать этот процесс нельзя, а нужно лишь вернуть контроль над системой для устранения неполадки. Командой Set Affinity можно временно запретить этому процессу работу на всех ЦП кроме одного, в результате систему станет отзываться на действия пользователя. Если требуется привязать процесс к ЦП, но нет возможности изменить его исходный код, используйте т.н. «прокладку совместимости» SingleProcAffinity Крайнее средство — внесение сведений о привязке в заголовок РЕ-файла. |
Завершение процесса:
1 2 3 4 |
Внимание! Принудительное завершение не даст процессу возможность корректно завершить работу и может привести к потере данных или нестабильности системы. Кроме того, Ргосехр не предупреждает о попытке завершения критических для системы процессов, например Csrss.exe. Остановка критического процесса приводит к немедленному краху Windows с «синим экраном». |
Suspend (Приостановить) / Resume (Возобновить):
1 2 3 4 5 6 7 |
Suspend (Приостановить) Чтобы процесс временно остановился и освободил системные ресурсы (сеть, ЦП или диск) для других процессов, можно приостановить потоки процесса. Для возобновления приостановленного процесса выберите команду Resume (Возобновить) из контекстного меню процесса. Совет: Приостановка полезна при обнаружении вредоносного ПО типа «buddy sys-ftern» (когда два или несколько процессов отслеживают друг друга, и после принудительной остановки одного процесса остальные вновь запускают его). Для устранения подобного вредоносного ПО нужно сначала приостановить все его процессы, а затем завершить их. |
NUMA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
Про NUMA существует достаточно много подробных статей, пересказывать эту информацию не вижу смысла, ограничусь лишь базовым описанием для целостности материала. Итак, NUMA - Non Uniform Memory Access. На русский язык это можно перевести как Неравноценный Доступ к Памяти. Современные многопроцессорные сервера, по сути, представляют собой несколько изолированных односокетных компьютеров, объединенных на одной материнской плате. Каждый процессор монопольно владеет своими слотами оперативной памяти, и только он имеет к ней доступ. Аналогично, каждый процессор имеет свои персональные PCI-E шины, к которым подключены различные устройства материнской платы, а так же слоты расширения PCI-E. Процессоры соединены между собой высокоскоростной шиной обмена данными, по которой они получают доступ к «чужим» устройствам, делая запрос на это соответствующему процессору-хозяину. По понятным причинам, доступ процессора к «своей» памяти происходит гораздо с меньшими накладными расходами, чем к «чужой». Пока это все, что необходимо знать о данной технологии. Пример: 1. Мы создаем виртуальную машину (ВМ) с одним виртуальным ядром (vCPU). Естественно, такую виртуальную машину сможет исполнить только один физический процессор. Рассмотрим ситуацию, когда ВМ надо дать 48 GB оперативной памяти. 32 GB памяти ВМ заберет у «своего» физического процессора, а еще 1 б ей вынужденно придется забрать у «чужого». И при доступе к этим «чужим» гигабайтам мы получаем гарантированно высокие задержки, что ощутимо снизит быстродействие виртуальной машины и увеличит нагрузку на шину передачи данных между физическими процессорами. Исправить ситуацию можно, если дать виртуальной машине 2 виртуальных сокета по 1 ядру каждый. Тогда vSphere распределит 2 vCPU ВМ по разным физическим процессорам, взяв у каждого по 24 GB оперативной памяти. Дав виртуальной машине 1 виртуальный сокет мы лишим её возможности грамотно использовать 2 физических процессора. 2. Вариант, когда мы создаем в плюс к первому пункту вторую ВМ на 10 GB оперативной памяти и один vCPU. Если бы эта ВМ была одна, то никаких проблем нет, она вполне умещается в одну NUMA ноду с 32 GB оперативной памяти. Но у нас уже есть первая машина, которая у обоих нод NUMA отъела по 24 GB памяти, и у каждой ноды осталось свободно всего по 8 GB. В данной ситуации либо первая, либо вторая ВМ начнут использовать часть «чужой» памяти, хотя вроде бы каждая из них сконфигурирована правильно с точки зрения NUMA. Это очень характерная ошибка и необходимо очень досконально просчитывать вашу виртуальную инфраструктуру при проектировании, а так же комплексно подходить к конфигурированию виртуальных машин при эксплуатации. Если у ВМ всего 1 виртуальный сокет, то при увеличении vCPU, исполнение машины будет производиться на одном физическом процессоре исключительно на его физических ядрах без использования технологии Hyperthreading. При превышении количества vCPU над количеством физических ядер процессора, ВМ продолжит исполняться в пределах этого физического процессора, но уже с использование Hyperthreading. Если количество vCPU превысило количество ядер процессора с учетом Hyperthreading, то начнут использоваться ядра соседних NUMA нод (других физических процессоров), что приведет к потере производительности (если указать неверное количество виртуальных сокетов). В случае, когда физический процессор сильно нагружен, и свободных физических ядер не осталось, то в любом случае будет использоваться технология Hyperthreading (если иное не указано в конфигурации виртуальной машины). Если посмотреть на цифры, то в среднем ВМ теряет порядка 30-40% производительности, если она работает на чистом Hyperthreading по сравнению с чистыми физическими ядрами. Но сам физический процессор имеет общую производительность примерно на 30% больше с технологией Hyperthreading, чем без нее (используя только физические ядра). Данный показатель очень зависит от типа нагрузки и оптимизации приложений ВМ к многопоточной работе. Виртуализация позволяет создать на хосте несколько виртуальных машин, и может сложиться ситуация, когда суммарное количество vCPU всех машин будет больше количества pCPU физического хоста. Это вполне нормальное явление, но нужно четко осознавать, что одновременно все vCPU не смогут получить 100% от своей завяленной мощности. Иными словами, если у вас на одном хосте виртуализации находятся несколько нагруженных машин и их общее количество vCPU больше чем pCPU хоста, то с высокой долей вероятности эти машины будут мешать друг другу, что снизит их суммарную производительность. Отдельно хотелось бы озвучить главное правило при сайзинге виртуальных машин: давайте виртуальной машине МИНИМАЛЬНО возможные ресурсы, при которых она сможет выполнять свои задачи. Не нужно давать ВМ 2 ядра, если хватает одного. Не нужно давать 4, если хватает 2-х (лишние ядра занимают место в таймслоте). Аналогично с памятью, не стоит выдавать машине лишнего. Возможно, другой машине может не хватить, не говоря уже о возникающих проблемах с живой миграцией (по сути копированием объема памятиВМ) и NUMA. Напоследок хотелось бы сказать о работе шедулера гипервизора с вводом-выводом. При обращении виртуальной машины к своему виртуальному аппаратному обеспечению, гипервизор приостанавливает работу ВМ, снимает её с pCPU и ставит в хранилище WAIT. В таком состоянии машина не работает, она просто ждет. В это время гипервизор трансформирует («подделывает») команды виртуального устройства гостевой машины в реальные команды, соответствующие командам гипервизора, после чего гипервизор возвращает виртуальную машину в конвейер READY. Аналогичная «заморозка» виртуальной машины происходит и при ответе виртуального устройства машине (гипервизору необходимо снова трансформировать ответ, но уже в обратную сторону). Чем больше команд ввода-вывода производит виртуальная машина, тем чаще она находится в «заморозке» WAIT, и тем меньше её производительность. Чем более «старые» виртуальные устройства ввода-вывода использует виртуальная машина, тем сложнее гипервизору трансформировать команды, и тем дольше ВМ находится в состоянии WAIT. VMWare прямо и официально не рекомендует виртуализовывать приложения с гиперактивным вводом-выводом. Уменьшить негативное влияние от состояния WAIT можно с помощью использования паравиртуальных устройств для виртуальной машины. Это 10-гигабитная сетевая карта VMXNET3 и паравиртуальный SCSI контроллер жесткого диска PVSCSI. Так же уменьшению влияния WAIT и общему повышению производительности способствует применение в физических серверах аппаратных устройств, предназначенных для ускорения работы виртуальных машин. Это различные сетевые и НВА адаптеры с поддержкой аппаратного iSCSI offload, прямого доступа к памяти, сетевые карты с поддержкой виртуализации и т.д. |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Integrity Level (Уровень целостности) В Windows Vista и выше показывает уровень целостности (IL) процесса. Службы работают на системном уровне (System), процессы с повышенными привилегиями — на высоком (High), стандартные пользовательские процессы — на среднем(Medium), а процессы с низким уровнем прав, например Internet Explorer в безопасном режиме — на низком (Low) IL. Virtualized (Виртуализация) В Windows Vista и выше показывает, включена ли виртуализация файла UAC и реестра. Виртуализация файлов и реестра — это технология обеспечения совместимости, которая при попытке унаследованных процессов среднего IL изменить защищенные области системы незаметно для процесса перенаправляет их в области, которые разрешено модифицировать пользователю. ASLR Enabled (Включена ASLR) В Windows Vista и выше показывает, включена ли функция ASLR (рандомизация адресного пространства) для процесса. ASLR — это средство эшелонированной защиты, препятствующее удаленным атакам через входные точки функций, расположенные постандартным адресам в памяти. |
Вкладка Process I/O ( Process Explorer ):
1 2 3 4 5 |
Вкладка Process I/O содержит сведения о файловом вводе-выводе и вводе-выводе на устройствах, в том числе через редиректоры LANMan и WebDAV. При отображении этих столбцов Ргосехр подсчитывает системные вызовы NtReadFile, NtWriteFile и NtDeviceloControlFile, представляющие операции чтения, записи и другие операции ввода-вывода (соответственно, категории Read, Write, Other), а также число байтов, переданных и полученных при этих вызовах. Счетчики, отображаемые Ргосехр, предназначены для «частного» ввода-вывода, то есть, однозначно связанных с процессом. Имейте в виду, что ввод-вывод проекции файла не всегда удается связать с одним процессом. |
Памяти (Process Explorer ):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Нижняя часть вкладки Memory отображает ряд показателей, относящихся к памяти: - Commit Charge (К) (Выделенная память (ядра)) Текущий объем переданной памяти; предел, свыше которого нельзя выделить закрытую память без увеличения размера файла подкачки, а также пиковое значение переданной памяти с момента последней загрузки системы. Здесь же отображается проценты пикового значения от предельного и текущего значения от предельного. - Physical Memory (К) (Физическая память (ядра)) Общий объем физической памяти (в Кб), доступный для Windows, доступная свободная оперативная память, а также размеры рабочих наборов кеша, ядра и драйверов. - Kernel Memory (К) (Память ядра (ядро)) Выгружаемый рабочий набор представляет собой объем выгружаемого пула в килобайтах, присутствующий в оперативной памяти. Paged Virtual (Выгружаемая виртуальная память) — общий объем памяти, переданной для выгружаемого пула, включая байты, сброшенные в файл подкачки. Paged Limit (Предел выгружаемого пула) — максимальный объем памяти, который система позволяет выделить для выгружаемого пула. Nonpaged (Невыгружаемый) — объем памяти, который может быть выделен для невыгружаемого пула. Ргосехр требует прав администратора и символов для правильного отображения значений Paged Limit и Nonpaged Limit. - Paging (Постраничная подкачка) Число страничных ошибок с момента предыдущего обновления данных, количество число операций чтения проецируемого или страничного файла при подкачке страниц, число операций записи в страничный файл или проецируемые файлы. - Paging Lists (К) (Списки подкачки (ядро)) (Только в Windows Vista и выше) Объем памяти (в килобайтах) в различных списках страниц, поддерживаемых Диспетчером памяти. Вкладка I/O показывает счетчик I/O Bytes и, если Ргосехр работает справами администратора, Network Bytes и Disk Bytes. Счетчик I/O Bytes показывает суммарную интенсивность ввода-вывода (файлового и на устройствах), Network Bytes отражает сетевой ввод-вывод, a Disk Bytes — трафик ввода-вывода на локальных дисках. Все они масштабируются по максимальному значению с начала мониторинга. Трафик операций записи обозначен красным, а общий трафик ввода-вывода — голубым. В отличие от графика выделения памяти, графики ввода-вывода учитывают события в период между обновлениями. Даже если приостановить обновление, при следующем обновлении на графике будет показана интенсивность ввода-вывода с учетом операций, выполненных во время паузы. При этом могут регистрироваться новые пики и даже меняться масштаб графика. |
Параметры командной строки (Process Explorer ):
1 2 3 4 5 6 7 8 9 10 11 |
/е В Vista и выше требует повышения привилегий UAC при запуске Ргосехр /x Запускает Ргосехр свернутым в области уведомлений («трее») /p:r Устанавливает приоритет процесса для Ргосехр / Realtime (Реального времени) /p:h Устанавливает приоритет процесса для Ргосехр / High (Высокий)) /p:n Устанавливает приоритет процесса для Ргосехр / Normal (Обычный) /р:1 Устанавливает приоритет процесса для Ргосехр / Low (Низкий). Если приоритет не выбран, то по умолчанию назначается приоритет High /s:PID Выбирает процесс с идентификатором, заданным в десятичной системе, например Procexp.exe /S:520 |
Восстановление настроек «Process Explorer» по умолчанию:
1 2 |
Procexp хранит все свои настройки конфигурации в разделе реестра «HKEY CURRENT USER\ Software\Sysinternals\Process Explorer». Простейший способ восстановления всех настроек конфигурации Procexp — закрыть программу, удалить из реестра ее раздел и снова запустить. |
Клавиатурные комбинации (Process Explorer ):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Ctrl+A Сохранить отображаемые данные в новый файл (эквивалент команды File | Save As) Ctrl+C Копировать текущую строку из главного окна или нижней панели Ctrl+D Войти в режим просмотра DLL Ctrl+F Найти описатель или DLL Ctrl+H Войти в режим просмотра описателей Ctrl+I Отобразить окно System Information Ctrl+L Показать или спрятать нижнюю панель Ctrl+M Искать в Интернете Ctrl+R Запустить новый процесс (эквивалент команды File | Run) Ctrl+S Сохранить показанные данные в файл (эквивалент команды File | Save) Ctrl+T Показать дерево процессов (эквивалент команды View | Show Process Tree) Ctrl+1, Ctrl+2 и т. д. Загрузить первый, второй и т. д. набор столбцов Space Приостановить или возобновить автоматическое обновление Del Уничтожить выбранный процесс Shift+Del Уничтожить дерево процессов (выбранный процесс с потомками) Fl Показать справку F5 Обновить данные однократно |
Строка состояния:
1 2 3 4 5 6 7 |
Строка состояния показывает, помимо прочего, число захваченных событий. Это число будет быстро расти, пока вы не выключите захват событий. Для включения или выключения захвата нажмите клавиши Ctrl + Е или щелкните значок Capture (Захват) на панели инструментов. Для удаления всех захваченных событий нажмите клавиши Ctrk+X или щелкните значок Clear (Очистить) на панели инструментов. События добавляются в конец списка в хронологическом порядке. Функция Auto Scroll (Автопрокрутка) (по умолчанию отключена) выполняет прокрутку списка по мере добавления событий, так чтобы были видны последние добавления. Для включения и выключения автопрокрутки нажмите клавиши Ctrl+A или щелкните соответствующий значок на панели инструментов. |
Кнопки:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Файл - Операции с реестром, в частности, создание, реестра перечисление, запросы, а также удаление параметров (Registry и значений File) Система - Операции в локальной памяти и удаленных файловых (System)системах, в том числе, в файловых системах или устройствах, добавленных во время работы Procmon Сеть - Сетевая активность (UDP и TCP), в том числе(Network) исходные и конечные адреса (но без переданных или полученных данных). Procmon также поддерживает разрешение адресов в доменные имена и отображение IP-адресов. Параметр Show Resolved Network Addresses (Показать найденные имена сетевых адресов) находится в меню Options. Можно также активировать ее с помощью клавиш Ctrl+N Процесс - События процесса и потоков, в частности, создание (Process) процесса родительским процессом, запуск процесса, создание потока, завершение потока или процесса, а также загрузка образов исполняемых файлов и файлов данных в адресное пространство процесса (обратите внимание па то, что Procmon не регистрирует загрузку этих образов) Трассировка - Создает и записывает событие для каждого процесса (Profiling) или потока в системе, регистрируя потраченное время в режимах ядра и пользователя, использование памяти и переключения контекстов с момента завершения предыдущей трассировки. По умолчанию включенные в трассировку события для процесса регистрируются всегда, а для потока — никогда. Трассировка вывода отладчика, также входит в данный класс событий. |
Переполнение буфера:
1 2 3 4 5 6 7 8 9 10 |
По мере учащения атак через Интернет термин «переполнение буфера» стал синонимом захвата вредоносными программами обеспечением несанкционированного контроля над удаленным компьютером. В этом контексте переполнение буфера происходит, когда программа копирует в буфер запоминающего устройства больше данных, чем он вмещает, что приводит к перезаписи кода программы и кодом, нужным злоумышленнику, который потом исполняется. Неудивительно, что начинающие пользователи Procmon пугаются надписи «BUFFER OVERFLOW» в поле «Результат», хотя оснований для беспокойства нет. Код STATUS BUFFER OVERFLOW (ПЕРЕПОЛНЕНИЕ БУФЕРА СОСТОЯНИЯ), как результат NTSTATUS регистрируется, когда программа запрашивает значение переменной длины, например, параметр реестра, но не предоставляет буфер достаточного размера для получения этой информации, так как «не знает» размер запрошенного значения заранее. Система сообщает программе необходимый размер буфера и копирует в буфер столько данных, сколько может, но фактически буфер не переполняется. Типичный прием при программировании таков: после получения BUFFER OVERFLOW программа выделяет буфер достаточного размера и снова запрашивает те же данные, в итоге операция завершается с кодом SUCCESS. |
Основные коды результатов:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
SUCCESS (УСПЕХ) - Операция успешно завершена ACCESS DENIED (ОТКАЗАНО В ДОСТУПЕ) - Операция не выполнена, так как дескриптор защиты объекта не дает программе необходимые права или целевой файл доступен только для чтения (редко знаменует фатальные события при отладке) SHARING VIOLATION - Операция не была выполнена, поскольку объект (НАРУТТТЕНИЕ СОВМЕСТНОГО ДОСТУПА К ФАЙЛУ) уже открыт и не поддерживает режим совместного использования ресурсов, запрашиваемый программой NAME COLLISION (КОНФЛИКТ ИМЕН) - Программа пыталась создать уже существующий объект NAME NOT FOUND (ИМЯ ФАЙЛА НЕ НАЙДЕНО) - Программа пыталась открыть несуществующий объект. Возврат такого кода возможен, когда PATH NOT FOUND - загрузчик ищет DLL в разных директориях (ПУТЬ НЕ НАЙДЕН) NO SUCH FILE (ФАЙЛ С ТАКИМ ИМЕНЕМ НЕ СУЩЕСТВУЕТ) NAME INVALID (НЕПРАВИЛЬНОЕ ИМЯ) - Программа запросила объект с неправильным именем, например, C:\Windows\wegedit.exe NO MORE ENTRIES (ЗАПИСИ ОТСУТСТВУЮТ) - Программа завершила перечисление содержимого папки или раздела реестра NO MORE FILES (ФАЙЛЫ ОТСУТСТВУЮТ) END OF FILE (КОНЕЦ ФАЙЛА) - Программа прочитала файл до конца BUFFER TOO SMALL (НЕДОСТАТОЧНЫЙ ОБЪЕМ БУФЕРА) - По сути то же, что и BUFFER OVERFLOW. При устранении неполадок, как правило, не несет существенной информации REPARSE (ПОВТОРНЫЙ РАЗБОР) - Программа запросила объект, который ссылается на другой объект. Например, \\HKLM\System\Cur-rentControlSet может перенаправить на \\HKLM\System\ControlSetOOl NOT REPARSE POINT (НЕТТОЧКИ ПОВТОРНОГО РАЗБОРА) - Запрашиваемый объект не ссылается на другой объект FAST 10 DISALLOWED (БЫСТРЫЙ ВВОД-ВЫВОД ЗАПРЕЩЕН) - Низкоуровневый оптимизированный механизм недоступен для запрашиваемого объекта файловой системы. Редко бывает важным при устранении неполадок FILE LOCKED WITH ONLY READERS (ФАЙЛ ДОСТУПЕН ТОЛЬКО ДЛЯ ЧТЕНИЯ) - Файл или проекция файла заблокирована и доступна только для чтения FILE LOCKED WITH WRITERS (ФАЙЛ ДОСТУПЕН ДЛЯ ЗАПИСИ) - Файл или проекция файла заблокирована, и минимум один пользователь может записывать в него данные IS DIRECTORY (ОБЪЕКТ ЯВЛЯЕТСЯ КАТАЛОГОМ) - Запрашиваемый объект является каталогом файловой системы INVALID DEVICE REQUEST (НЕДОПУСТИМЫЙ ЗАПРОС УСТРОЙСТВА) - Данный запрос не является допустимой операцией для целевого устройства INVALID PARAMETER (НЕВЕРНЫЙ ПАРАМЕТР) - Службе или функции был передан неверный параметр NOT GRANTED (HE ПРЕДОСТАВЛЕНО) - Запрашиваемая блокировка файла не может быть предоставлена из-за наличия других блокировок CANCELLED (ОТМЕНЕНО) - Запрос ввода-вывода, например, проверка каталога файловой системы на наличие изменений, был отменен BAD NETWORK PATH - Сетевой путь не удается найти (СЕТЕВОЙ ПУТЬ HE НАЙДЕН) BAD NETWORK NAME - Указанное сетевое имя не может быть найдено (СЕТЕВОЕ ИМЯ HE НАЙДЕНО) на удаленном сервере MEDIA WRITE - Носитель не может быть записан, так как защищен -PROTECTED (НОСИТЕЛЬ ЗАЩИЩЕН ОТ ЗАПИСИ) от записи KEY DELETED (РАЗДЕЛ УДАЛЕН) - Попытка несанкционированной операции с разделом реестра, который был подготовлен к удалению NOT IMPLEMENTED (HE РЕАЛИЗОВАНА) - Запрашиваемая операция не выполнена, т. к. не реализована в целевом объекте |
Атрибуты файлов в поле Details:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
А - Архивный файл или каталог. Приложения обычно используют данный атрибут для резервирования или удаления файлов С - Сжатый файл или каталог. Содержимое файлов сжато, новые файлы и вложенные каталоги в таких каталогах сжимаются по умолчанию D - Объект является каталогом или устройством Е - Зашифрованный файл или каталог. Потоки файлов зашифрованы, новые файлы и вложенные каталоги в таких каталогах шифруются по умолчанию Н - Скрытый файл или каталог. Не включен в стандартный список каталогов N - Файл, не имеющий других атрибутов. Используется только в одиночку NCI - Файл или каталог не индексируется службой индексирования 0 - Данные файла в настоящее время недоступны (файл перенесен в автономное хранилище). Используется программой Remote Storage R - Файл доступен только для чтения. Приложения могут читать его, но не могут записывать или удалять. Этот атрибут игнорируется для каталога RP - Файл или каталог, с которым связана точка повторного разбора либо файл с символической связью S - Файл или каталог, который сообща либо монопольно используется операционной системой SF - Разреженный файл T - Временный файл. Файловые системы не сбрасывают данные на накопитель при наличии достаточного объема кеш-памяти, т.к. приложение обычно удаляет временный файл после закрытия его описателя. При использовании временного файла система может обойтись вовсе без записи, в противном случае после закрытия описателя файла данные записываются |
Параметры командной строки (PROCMON):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
/OpenLog pm/-f//e - Открывает сохраненный ранее файл журнала (трассировку) Procmon. Обратите внимание: файл журнала должен экземпляром Procmon, совместимым с архитектурой ЦП системы, в которой он был записан /BackingFile pml-file - Сохраняет события в указанном файле. Размер файла ограничен размером свободного места на диске. Имейте в виду, что данный параметр во время работы программы изменить нельзя (подробнее см. выше) /PagingFile - Сохраняет события в виртуальной памяти, ограниченной системным файлом подкачки. Используется для восстановления для отмены параметра /BackingFile /NoConnect - Запускает Procmon, но не начинает автоматический захват данных (по умолчанию регистрация событий начинается при запуске программы) /No Filter - Сбрасывает фильтр при запуске. Все правила фильтра, кроме исключающих события трассировки, удаляются /AcceptEula - Подавляет вывод окна с лицензионным соглашением (подразумевает согласие с условиями лицензионного соглашения) /LoadConfig config-file- Загружает сохраненный ранее файл конфигурации /Profiling - Активирует функцию Thread Profiling /Minimized - Запускает Procmon в свернутом виде /WaitForldle - Ожидает готовности другого экземпляра Procmon на том же рабочем столе Win32 для приема команд. Пример использования данного параметра /Terminate - Прекращает работу всех экземпляров Procmon, работающих на одном рабочем столе Win32, а затем выполняет выход. Этот параметр использует оконные сообщения для отправки команды конечному экземпляру Procmon /Quiet - Не подтверждает установки фильтров во время запуска. По умолчанию, если правила фильтров были настроены, Procmon отображает диалоговое окно Filter позволяя изменять их перед записью данных /Run32 - Запускает 32-разрядную версию для загрузки 32-разрядных файлов журналов (только в х64) /HookRegistry -Только в 32-разрядной версии Windows Vista и выше позволяет Procmon использовать перехват системных вызовов вместо обратного вызова для мониторинга активности реестра, что дает возможность видеть виртуальные операции реестра Microsoft Application Virtualization (App-V, ранее Softgrid). Используется при первом запуске Process Monitor в сеансе и только для устранения неполадок в сериализованных приложениях App-V /SaveAspaf/ - При использовании параметра /OpenLog экспортирует записанный журнал в файл формата XML, CSV, или PML (определяется расширением заданного файла, .xml, .csv или .pml) /SaveAsl part - При использовании параметра /OpenLog экспортирует трассировку в XML вместе со стеком /SaveAs2 part - При использовании параметра /OpenLog экспортирует трассировку в XML вместе со стеком и символами Открытие 32-разрядного файла журнала в 64-разрядной версии Windows: Procmon.exe /Run32 /OpenLog c:\pmlLogs\logfile.pml Вот более сложный пример сценария, регистрирующего операции записи программой Notepad.exe в файле C:\notepad.pml: set PMExe="C:\Program Files\Sysinternals\Procmon.exe" set PMHide=/AcceptEula /Quiet / Minimized set PMCfg=/LoadConfig C:\TEMP\PmCfg.pmc set PMFile=/BackingFile C:\notepad.pml start <<>> %PMExe% %PMHide% %PMCfg% %PMFile% %PMExe% /WaitForldle notepad.exe %PMExe% /Terminate start «» %PMExe% /Pagi ngFile /NoConnect /Minimized /Quiet %PMExe% /WaitForldle %PMExe% /Terminate - Process Activity Summary (Сводка активности процесса) - File Summary (Сводка по файлам) - Registry Summary (Сводка по реестру) - Stack Summary (Сводка по стеку) - Network Summary (Сводка по сети) - Cross Reference Summary (Сводка по перекрестным ссылкам) - Count Occurences (Счетчик событий) Диалоговые окна Summary — не модальные, поэтому можно открывать несколько таких окон одновременно, продолжая при этом работать с главным ОКНОМ. |
Сводка по файлам:
1 2 3 4 5 |
Диалоговое окно File Summary, систематизирует информацию о каждой операции с файлами и папками, отображаемой текущим фильтром, и группирует результаты на отдельных вкладках по пути, папке и расширению файла. Для каждого уникального пути файловой системы диалоговое окно показывает полное затраченное время при выполнении файлового ввода-вывода, а также сколько раз файл был открыт, закрыт, прочитан и записан, получен и установлен ACL файла и пр. Кроме того, отображается общее число выполненных операций, а также число байтов, прочитанных и записанных в файл. |
Счетчик событий:
1 2 3 |
Выберите имя столбца в диалоговом окне Count Values Occurrences (Значения счетчика событий), и щелкните кнопку Count (Подсчитать). Procmon отображает все значения выбранного атрибута, а также число событий, в которое данное значение входит при использовании текущего фильтра. Допускается перетаскивание столбцов и сохранение данных CSV-файл. Двойной щелчок объекта добавляет в фильтр правило по данному полю и значению. |
Просмотр точек ASEP отключенной системы:
1 2 3 4 5 6 7 8 9 10 |
Autoruns позволяет просматривать точки AS ЕР отключенного экземпляра Windows из-под другой, стабильно работающей системы Windows. Это может быть полезно: - даже если эта система с Windows не работает, в ней можно обнаружить и удалить сбойные или неправильно настроенные точки ASEP; - вредоносные программы, в частности, руткиты, могут мешать Autoruns точно определять точки ASEP. Например, руткит, перехватывающий и изменяющий обращения к реестру, может скрывать содержимое некоторых разделов от Autoruns. Если завершить работу ОС и изучить ее точки ASEP в другой, не зараженной системе, эти элементы не будут скрыты; - вредоносные файлы могут имитировать подпись надежного издателя, на самом же деле корневой сертификат получен от злоумышленника. В стабильной системе, где нет поддельных сертификатов, проверка фальшивых подписей не пройдет. |
Категория Applnit:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Библиотеки DLL Applnit создавались разработчиками Windows NT 3.1 с исключительно благородной целью: укажите одну или несколько DLL в разделе реестра Appinit_Dlls, и эти DLL будут загружаться в каждый процесс, загружающий библиотеку user32.dll (т.е. практически в каждый процессWindows, работающий в режиме пользователя). Ну, и что же здесь не так? А вот что: - DLL загружаются в процесс во время инициализации User32, т.е. когда выполняется функция DllMain. Разработчикам же однозначно сказано, что нельзя загружать другие DLL при помощи DllMain. Это может приводить к взаимным блокировкам, неправильному порядку загрузки и, в итоге, к сбоям приложений. Однако Applnit DLL совершает именно этот грех, и действительно, он приводит к блокировкам и сбоям приложений - библиотека DLL, автоматически загружаемая в каждый процесс — мечта создателей вредоносных программ. Хотя библиотеки Applnit применяется в «законопослушных» (но неправильно написанных) приложениях, часто ими пользуются вредоносные программы. Из-за этих проблем библиотеки Applnit DLL не рекомендованы к использованию и по умолчанию отключены в Windows Vista и выше. Для обеспечения обратной совместимости их можно включить, но это не рекомендуется. Реестр: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\Appinit_Dlls HKLM\Software\Wow6432Node\Microsoft\ Windows NT\CurrentVersion\Windows\Appinit_Dlls |
Категория KnownDLLs:
1 2 3 4 5 6 |
Функция KnownDLLs помогает повысить производительность системы, гарантируя, что все процессы Windows используют одинаковые версии заданных DLL, а не загружают их из разных каталогов. Во время загрузки Диспетчер сеансов размещает библиотеки DLL, перечисленные в разделе HKLM\System\ CurrentControlSet\Control\Session Manager\KnownDlls, в памяти как именованные объекты-разделы. Когда загружается новый процесс, обращающийся к этим DLL, он использует существующие разделы, а не ищет их снова в файловой системе. На вкладке KnownDLLs (Известные DLL) должны отображаться только проверяемые DLL Windows. В 64-разрядных системах на этой вкладке указана одна точка ASEP, но файлы дублируются для 32- и 64-разрядных версий DLL и размещаются в папках, указанных значениями реестра DllDirectory и DllDirectory32. |
Категория Winlogon:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
На этой вкладке показаны элементы, связанные с процессом Winlogon.exe, который управляет пользовательским интерфейсом для входа в систему. В Windows ХР и Windows 2003 сюда входит интерфейс GIN A DLL и пакеты уведомлений Winlogon. В Windows Vista эти интерфейсы удалены, а вместо них предоставлен интерфейс Credential Provider (Поставщик учетных данных). На этой вкладке показана также выбранная пользователем экранная заставка, запускаемая Winlogon.exe после указанного периода бездействия. Ниже перечислены разделы реестра, отображающиеся на вкладке Winlogon. Пользовательская экранная заставка HKCU\Control Panel\Desktop\Scrnsave.exe Пользовательская экранная заставка, назначаемая через групповую политику HKCU\Software\Policies\Microsoft\Windows\Control Panel\Desktop\Scrnsave.exe GINA, пакеты уведомлений и т.д. (Windows XP и Windows Server 2003) HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\SaveDumpStart HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\System HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Taskman HKLM\Software\Microsoft\Windows NT\ Current Version\Winlogon\UI Host Точки ASEP интерфейса Credential Provider (Windows Vistaи последующие версии) HKLM\Software\Microsoft\Windows\CurrentVersion\Authentication\Credential Provider Filters HKLM\Software\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers HKLM\Software\Microsoft\Windows\CurrentVersion\Authentication\PLAP Providers Общесистемная идентификация программы для подтверждения успешной загрузки HKLM\System\CurrentControlSet\Control\BootVerificationProgram\lmagePath |
Категория Winsock:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Сокеты Windows (Winsock) — расширяемый интерфейс API, позволяющий сторонним производителям добавлять поставщиков служб передачи данных, взаимодействующих с Winsock по другим протоколам или уровням поверх существующих протоколов для обеспечения работы приложений посредников. Сторонние производители могут также добавлять поставщиков служб пространств имен, расширяя возможности Winsock по разрешению имен. Поставщики служб подключаются к Winsock посредством интерфейса поставщиков служб (Service Provider Interface, SPI). После регистрации в Winsock провайдер служб передачи используется для реализации функций сокетов, таких как connect и accept, для типов адресов, которые этот провайдер указал как обрабатываемые им. Нет никаких ограничений на то, как поставщик служб передачи реализует свои функции, но реализация обычно включает взаимодействие с драйвером передачи в режиме ядра. На вкладке Winsock перечислены поставщики, зарегистрированные в системе, включая встроенные в Windows. Последние можно скрыть, применив параметры Hide Windows Entries и Verify Code Signatures, чтобы выделить элементы, которые с большей вероятностью могут вызывать проблемы. Разделы элементов поставщика Winsock HKLM\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog5\CatalogEntrics HKLM\System\CurrentControlSet\Services\WinSock2\Parameters\NameSpace_Catalog5\Catalog_Entries64 HKLM\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entrics HKLM\System\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9 Catalog_Entries64 |
Категория Print Monitors:
1 2 3 4 5 6 7 8 |
Элементы, перечисленные на вкладке Print Monitors (Мониторы печати), являются библиотеками DLL, указанными в подразделах HKLM\System\CurrentControlSet\Control\Print\Monitors. Эти DLL загружаются в службу Spooler, которая запускается под учетной записью LocalSystem. Примечание: Одна из наиболее распространенных проблем спулера — некорректная реализация мониторов портов сторонними производителями. При решении проблем со спулером печати разумно начать с отключения мониторов портов сторонних производителей, а затем проверить, сохранилась ли проблема. |
Категория LSA Providers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Эта категория элементов автозапуска включает пакеты, определяющие или расширяющие средства аутентификации пользователей Windows при помощи подсистемы локального центра безопасности (Local Security Authority, LSA). Если не установлены сторонние пакеты аутентификации, в этот список должны входить только проверяемые элементы Windows. Библиотеки DLL, указанные этими элементами, загружаются процессом Lsass.exe или Winlogon.exe и выполняются под учетной записью LocalSystem. Точка AS ЕР Security Providers, также показанная на этой вкладке, содержит список зарегистрированных поставщиков средств шифрования. Библиотеки DLL из этой точки загружаются во многие процессы привилегированных и обычных пользователей, так что она часто подвергается атакам. (На самом деле, эта ASEP не имеет отношения к LSA, за исключением того, что, как и LSA, предоставляет функции, относящиеся к безопасности.) Разделы поставщиков средств аутентификации HKLM\System\CurrentControlSet\Control\Lsa\Authentication Packages HKLM\System\CurrentControlSet\Control\Lsa\Notification Packages HKLM\System\CurrentControlSet\Control\Lsa\Security Packages Keys Разделы зарегистрированных поставщиков средств шифрования HKLM\System\CurrentControlSet\Control\SecurityProviders\Security Providers |
Категория Network Providers:
1 2 3 4 5 6 |
На вкладке Network Providers (Поставщики сети) перечислены установленные поставщики, управляющие сетевым взаимодействием, указанные в разделе HKLM\System\CurrentControlSet\Control\NetworkProvider\Order. Например, в настольных ОС Windows эта вкладка включает стандартных поставщиков, предоставляющих доступ к серверам SMB (файловым и печати), серверам Microsoft RDP (службы терминалов и удаленный рабочий стол), а также доступ к серверам WebDAV. Дополнительные поставщики могут появляться, если сеть более разнородна и требуется подключаться к другим типам серверов. Все элементы из этого списка должны быть проверяемыми. |
Категория Sidebar Gadgets:
1 2 3 4 5 6 |
В Windows Vista и выше эта вкладка содержит список гаджетов боковой панели (в Windows 7 они стали называться гаджетами рабочего стола), появляющихся на рабочем столе пользователя. Хотя гаджеты часто (но не всегда) устанавливаются в системные папки, такие как %ProgramFiles%, конфигурация запускаемых гаджетов находится в файле %LOCALAPPDATA%\ Microsoft^Windows Sidebar\Settings.ini, который имеется у каждого пользователя и не передается на другие системы. При отключении и удалении гаджетов при помощи Autoruns изменяются параметры файла Settings.ini. Путь к образу обычно указывает на XML-файл. Гаджеты, входящие в составWindows, подписаны и могут быть проверены. |
Autoruns и вредоносное ПО:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Большинство вредоносных программ стремиться бесконечно оставаться на пораженной системе. Поэтому такое ПО всегда использовало точки ASEP. Сначала это были простые места, такие как раздел Run в ветви HKLM. Со временем вредоносные программы усложнялись, их становилось все труднее отследить, и способы использования ASEP тоже становились все более изощренными. Эти программы маскировались под поставщиков Winsock и мониторы печати. Такие точки ASEP не только сложно найти, но и программы, использующие их, не появляются в списке процессов, поскольку загружаются как DLL в существующие «нормальные» процессы. С ростом числа пользователей, имеющих ограниченный набор стандартных привилегий, вредоносное ПО приобретало все больше способностей к инфицированию и запуску без администраторских привилегий. Кроме того, вредоносные программы часто используют руткиты, разрушая целостность операционной системы. Руткиты перехватывают и изменяют системные вызовы, сообщая неверную информацию о состоянии системы приложениям, использующим документированные системные интерфейсы. Руткиты могут скрывать наличие разделов и значений реестра, файлов и папок, процессов, сокетов, учетных записей пользователей и других элементов системы, и наоборот, могут заставить приложения верить, что существуют элементы, которых нет. Проще говоря, если в системе есть вредоносная программа с администраторскими привилегиями, отчетам этой системы о ее состоянии нельзя доверять. Поэтому Autoruns не всегда может идентифицировать вредоносные элементы автозапуска. Однако не все вредоносные программы настолько сложны, и все равно остаются некоторые признаки, выдающие его присутствие: - элементы, для которых указан известный издатель, такой как Microsoft, не проходят проверку подписей (к сожалению, не все ПО от Microsoft подписано); - элементы, путь которых указывает на DLL- или ЕХЕ-файл без описания или информации об издателе (кроме случаев, когда целевой файл не найден); - обычные компоненты Windows запускаются из необычных мест; например, если svchost.exe запускается из C:\Windows или C:\System Volume Information, а не из System32; - элементы, для которых временная отметка файла запущенной программы совпадают с временем первого проявления проблем или обнаружения атаки; - элементы, которые после отключения или удаления и обновления экрана восстанавливаются и включаются. Вредоносное ПО часто отслеживает свои точки AS ЕР и восстанавливает их в случае удаления. |
PsTools от Sysinternals — набор из 12 утилит для управления Windows с общими характеристиками
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
- все они являются консольными, т.е. предназначены для запуска из командной строки или пакетного файла и выводят информацию в стандартные потоки вывода и сообщений об ошибках (которые могут отображаться в окне консоли или перенаправляться в файлы); - работают на локальном или удаленном компьютере. В отличие от большинства программ для удаленного управления, утилиты PsTools не требуют предварительной установки клиентского ПО на удаленных системах (разумеется, как и все утилиты Sysinternals, установки на локальном компьютере они тоже не требуют); - они поддерживают стандартный синтаксис для указания альтернативных учетных данных, так что все задачи можно выполнять от имени другого пользователя В пакет PsTools входят следующие утилиты: PsExec - выполняет процессы удаленно и (или) от имени локальной системы, перенаправляя выходные данные; PsFile - отображает список файлов, открытых удаленно, или закрывает их; PsGetSid - отображает идентификатор защиты (SID) компьютера, пользователя или группы; Pslnfo - отображает информацию о системе; PsKill - завершает процессы, заданные по имени или по идентификатору процесса (PID); PsList - отображает информацию о процессах; PsLoggedOn - перечисляет учетные записи, под которыми пользователи вошли в систему локально и удаленно; Есть два исключения: альтернативные учетные данные не принимает PsLoggedOn, а также PsPasswd при изменении пароля для доменной учетной записи. PsLogList - выгружает записи из журнала событий; PsPasswd - изменяет пароли учетных записей пользователей; PsService - отображает список служб Windows и управляет ими; PsShutdown - выключает компьютер, выходит из системы или изменяет состояние питания локальной или удаленной системы; PsSuspend - приостанавливает и возобновляет работу процессов. Кстати, этот набор называется PsTools, а все утилиты имеют префикс Ps в названии, потому что первую из этих утилит, PsList, отображающую список запущенных процессов, я назвал в честь ps, UNIX-утилиты со сходной функциональностью. |
Удаленные операции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Утилиты PsTools могут выполнять операции на локальном или удаленном компьютере. Каждая из этих утилит принимает необязательный параметр командной строки вида "\\имя_компьютера" либо "\\IP-адрес_компьютера", на котором должны выполняться операции. Например: psinfo \\srv2008r2 psinfo \\192.168.0.10 psinfo \\server1,server2,192.168.0.3,server4 - к нескольким ПК psinfo @computers.txt - из файла (ПК по строкам) psinfo \\* - ко всем ПК в домене psinfo \\server1 -u ИМЯД0МЕНА\AdminAcc -P Pass@word123 psinfo \\server1 -u "ИМЯДОМЕНА\Имя Пользователя" -P "Пароль с пробелами" Параметры -u и -p поддерживаются всеми утилитами PsTools, кроме PsLoggedOn. Некоторые из утилит для выполнения удаленных операций просто используют интерфейсы Windows API, позволяющие указывать удаленный компьютер. Другие извлекают для этого ЕХЕ-файл, внедренный в их исполняемый образ, копируют этот файл в общую папку Admin$ удаленного компьютера, регистрируют его на той системе как службу и запускают эту службу при помощи интерфейсов API Windows Service Control Manager, после чего взаимодействуют с ней по именованным каналам. Для создания удаленной службы требуется, чтобы на целевом компьютере был включен общий доступ к файлам и открыт доступ к папке Admin$. В конце главы приведена таблица со списком утилит PsTools, требующих включения этих функций для удаленной работы. |
Учетные записи пользователей:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Большинство утилит требует прав администратора. До выпуска Windows Vista и появления UAC с административными учетными записями было все просто. Если учетная запись входила в группу Администраторы (Administrators), все, что запускалось от имени этой учетной записи, получало администраторские права. После успешной аутентификации под учетной записью из группы администраторов предоставлялся полный доступ к системе. В Windows Vista появился контроль учетных записей пользователей(UAC), в котором, кроме всего прочего, была реализована концепция учетных записей, одновременно являющихся и административными, и обычными пользовательскими. Такие учетные записи иногда называют защищенными администраторскими. Идея заключается в том, что программы запускаются с привилегиями обычного пользователя, а если программа требует полных прав администратора, пользователь должен явно разрешить повышение привилегий. Программы, запускаемые от имени пользователя, не должны программно подтверждать повышение или другим способом обходить взаимодействие с пользователем. Если бы они могли это, разработчики применяли бы такие обходные пути и продолжали писать программы, требующие прав администратора, а не обычного пользователя. Интерфейс «обратная петля» (loopback) — один из путей автоматического повышения прав, который блокируется в Windows Vista. Как описано в статье 951016 базы знаний Knowledge Base, если устанавливается сетевое подключение к удаленному компьютеру с использованием локальной учетной записи из группы администраторов, предоставляются только привилегии обычного пользователя. Так как это не интерактивный вход, нет возможности повысить права до полных администраторских. К учетным записям домена это ограничение не применяется. Это значит, что, хотя утилиты PsTools замечательно подходят для удаленного администрирования Windows XP и Windows Server 2003 с использованием локальных учетных записей, такой подход не очень хорошо работает в Windows Vista и последующих версиях. Если нельзя использовать доменные учетные записи, прочитайте статью KB 951016, в которой рассказывается, как настроить параметр Local Account Token Filter Policy, чтобы убрать ограничения на использование локальных учетных записей. |
psexec
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
Команда для запуска процесса на удаленном компьютере имеет следующий синтаксис: psexec \\компьютер [параметры] программа [аргументы] Например, чтобы запустить на удаленной системе команду "ipconfig /all" и просмотреть ее выходные данные на локальном компьютере, выполните следующую команду: psexec \\server1 ipconfig /all Чтобы запустить процесс на локальном компьютере, просто опустите параметр \\computer Если имя программы (часть программа) содержит пробелы, необходимо заключить путь к программе в кавычки. Если удаленная командная строка содержит специальные знаки, такие как символы канала или символы перенаправления, используйте управляющий символ оболочки командной строки (^), чтобы локальная оболочка командной строки не обрабатывала эти специальные символы. Приведем пример выполнения команды ipconfig /all на компьютере server1 с перенаправлением стандартного выхода в файл "С:\ipconfig.out" на целевой системе: psexec \\server1 cmd.exe /с ipconfig /all ^> c:\ipconfig.out Перенаправление вывода консоли: Чтобы запустить оболочку командной строки на удаленной системе и работать с ней на локальном компьютере, просто выполните команду следующего вида: psexec \\server1 Cmd.exe При перенаправлении вывода консоли учитывайте следующее: - операции, требующие знания содержимого экрана консоли, такого как позиция курсора или цвет текста, не работают. Сюда входят команды els (очистка экрана) и more, а также табуляция имен файлов и папок; - если запустить программу в новом окне, например, использовать команду start или запустить любую программу с графическим интерфейсом, эта программа будет запущена на удаленном компьютере, но с ней нельзя будет взаимодействовать; - все утилиты Sysinternals, включая консольные утилиты, отображают диалоговое окно с лицензионным соглашением при первом запуске под новой учетной записью, если не добавить параметр командной строки /accepteula. С учетом того, что написано в предыдущем пункте, это диалоговое окно нельзя будет закрыть, а утилита будет ждать принятия соглашения, пока не будет закрыта нажатием Ctrl+C. При перенаправлении выходных данных утилит Sysinternals используйте параметр /accepteula; Параметры командной строки PsExec: -d - PsExec не ожидает завершения процесса Параметры производительности процесса: -background - Запускают процесс с указанным приоритетом -low -belownormal -abovenormal -high -realtime -a n,n... - Указывает процессоры, которые может использовать процесс Параметры удаленного подключения: -с [-f|-v] - Копирует указанную программу из локальной системы на удаленную. Если опустить этот параметр, приложение должно иметься в системном пути на удаленном компьютере. При добавлении параметра —f копирование выполняется принудительно. Если указать параметр —v, будет проверена версия или временной штамп, и копирование будет выполнено только в том случае, если источник новее. -п секунды - Указывает таймаут в секундах при подключении к удаленному компьютеру Параметры исполняющей среды: -s - Выполняет процесс от имени учетной записи SYSTEM -i [сеанс] - Выполняет программу на интерактивном рабочем столе -x - Выполняет процесс на безопасном рабочем столе Winlogon -w каталог - Определяет рабочий каталог процесса -e - Не загружает профиль указанной учетной записи -h - Использует повышенный контекст учетной записи, если тот доступен -1 - Выполняет процесс от имени ограниченной учетной записи |
Повышаем привилегии до SYSTEM:
1 2 3 4 5 6 |
Следующая команда запускает в текущем интерактивном сеансе стра, доступ к которым разрешен HKLM\Security): Regedit от имени учетной записи SYSTEM , что позволяет просмотреть те части рее-только системе (такие как HKLM\SAM) psexec -s -i Regedit.exe А эта команда запускает от имени системы на текущем рабочем столе оболочку командной строки psexec -s -i Cmd.exe |
PsFile:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Команда Windows NET FILE показывает список файлов, которые процессы с других компьютеров открыли в системе, на которой выполнена эта команда. Однако она обрезает длинные пути и не позволяет просматривать эту информацию для удаленных систем. PsFile показывает список файлов или именованных каналов системы, которые открыты удаленно через службу Server, а также позволяет закрывать файлы, открытые удаленно, по имени или номеру идентификатора. По умолчанию PSFile перечисляет файлы локальной системы, открытые с удаленных систем. Чтобы просмотреть файлы, открытые на удаленной системе, укажите имя удаленного компьютера (при необходимости предоставив альтернативные учетные данные), используя синтаксис, описанный в разделе «Общие функции» в начале главы. Число в скобках — идентификатор, предоставленный системой, за которым следует путь к открытому файлу и имя учетной записи, связанной с удаленным подключением. В списке файлов, открытых на удаленном компьютере, всегда будет именованный канал srvsvc, потому что PsFile устанавливает подключение к службе Server. Выходные данные можно фильтровать, добавив в командную строку номер идентификатора ресурса или путь. Следующая команда показывает только те сведения, которые относятся к ресурсу с идентификатором 340 на компьютере с именем Win7_vm: psfile \\Win7_vm 340 Следующая команда показывает только сведения, относящиеся к открытым файлам из папки C:\Users, т. е. все ресурсы, пути которых начинаются с C:\Users: psfile \\Win7_vm C:\Users Чтобы закрыть открытые файлы, добавьте в командную строку параметр -с после идентификатора или префикса пути. Следующая команда закрывает все файлы, открытые удаленно из папки C:\Users на локальном компьютере: psfile C:\Users -с Используя PsFile, закрывайте файлы с осторожностью, так как данные, копированные на клиентской системе, не записываются в файл перед его закрытием. |
PsGetSid:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
В Windows идентификаторы защиты (SID) уникальны для пользователей, группы, компьютеров и других сущности. Эти идентификаторы хранятсяв маркерах доступа и дескрипторах защиты и используются при проверке прав доступа. Имена, связанные с SID, нужны только для представления в пользовательском интерфейсе и могут изменяться на разных системах в результате локализации. Например, в англоязычных системах имеется группа Administrators, имеющая SID S-1-5-32-544, но в системах с интерфейсом на русском языке она называется Администраторы, на итальянском — Gruppo Administrators, а на финском — Jarjestelmanvalvojat. Каждый компьютер под управлением Windows имеет локальный SID, называемый также машинным SID, создающийся во время установки ОС. Каждая локальная группа и учетная запись на компьютере имеет SID, созданный из машинного SID с добавлением относительного идентификатора (Relative ID, RID). Точно так же, каждый домен Active Directory имеет SID, а сущности внутри этого домена (включая доменные группы, учетные записи пользователей и компьютеров) имеют идентификаторы SID, полученные на основе SID домена с добавлением RID. Кроме машинных и доменных SID, в Windows определен набор хорошо известных идентификаторов SID в доменах NT AUTHORITY и BULTIN. PsGetSid облегчает перевод идентификаторов SID в соответствующие имена и имен в идентификаторы SID, а также получение идентификаторов компьютеров и доменов. Чтобы перевести имя или SID, запустите PsGetSid с именем или идентификатором SID в командной строке. При запуске без параметров эта утилита отображает машинный SID локального компьютера. Например: psgetsid |
PsLogList:
1 2 3 4 5 6 7 8 |
PsLogList отображает записи из журналов событий локального или удаленных компьютеров. Можно фильтровать выходные данные по временным отметкам, источнику, идентификатору и другим условиям. Также эта утилита позволяет экспортировать записи журнала в evt-файл, прочитать записи из сохраненного evt-файла и очистить журнал событий. При запуске без параметров PsLogList выгружает все записи из журнала событий Система (System) локального компьютера. Чтобы просмотреть записи из другого журнала событий, укажите его имя в командной строке. Например, следующие команды выгружают записи из журнала Приложения (Application) и журнала PowerShell, соответственно: psloglist application psloglist "Windows Powershell" |
Примечание Сброс пароля локальной учетной:
1 2 |
Сброс пароля локальной учетной записи пользователя может при вести к безвозвратной потере зашифрованных данных, принадлежащих этой учетной записи, таких как файлы, защищенные шифрующей файловой системой (EFS). |
Пароль в домене:
1 2 3 4 |
Чтобы установить пароль в домене, просто укажите целевую учетную запись в формате домен\учетная запись и новый пароль. Если имя учетной записи или пароль содержат пробелы, заключайте их в кавычки. В следующем примере устанавливается очень сложный, но легко запоминаемый пароль длиной 28 символов для учетной записи MYDOMAIN\Toby: pspasswd mydomain\toby «Passphrase++ 99.9% more good» |
PsService
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
psservice [Удаленный Компьютер] [команда[параметры]] PsService поддерживает следующие команды и параметры: query [-g группа] [-t {driver|service|interactive!all}] [-s {active|inactive|all}] [служба] config [служба] depend служба security служба find служба [all] setconfig служба {auto|demand|disabled} start служба stop служба restart служба pause служба cont служба |
Утилиты Process Explorer и Process Monitor:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Утилиты Process Explorer и Process Monitor — основные утилиты для анализа поведения и динамики состояния процессов и системы в целом. В этой главе мы рассмотрим шесть дополнительных утилит Sysinternals, позволяющих просматривать сведения о состоянии процесса: VMMap — утилита с графическим интерфейсом, показывает информцию об использовании процессом виртуальной и физической памяти; ProcDump — консольная утилита, генерирующая дамп памяти процесса с заданным характеристиками, например, процесса резко увеличившего потребление ресурсов процессора или «зависшего»; DebugView — утилита с графическим интерфейсом, позволяющая просматривать вывод отладчиков, работающих в режиме пользователя или режиме ядра на локальном или удаленном компьютере; LiveKd — утилита, позволяющая запускать стандартный отладчик ядра на моментальном снимке работающей локальной системы без необходимости перезагружаться в режиме отладки; ListDlls — консольная утилита, отображающая информацию о загруженных библиотеках DLL; Handle — консольная утилита, отображающая информацию об описателях объектов, используемых системными процессами. Ad Explorer - усовершенствованная программа для просмотра и редактирования объектов Active Directory Adlnsight - программа для мониторинга вызовов API-интерфейсов протокола LDAP в реальном времени Ad Restore - средство для перечисления и восстановления случайно удаленных объектов Active Directory Bglnfo - Вспомните, сколько вам приходилось вводить консольных команд или просматривать окон диагностических программ для определения таких важных аспектов конфигурации ПК, как имя компьютера, его IP-адрес или версия оперативной системы. Bginfo.exe c:\programdata\bginfo.bgi /timer:0 /silent Streams - сообщает имена удаленных альтернативных потоков. Regjump - запускает RegEdit и переходит по указанному пути; Hex2Dec - преобразует числа из шестнадцатеричной системы счисления в десятичных и наоборот; RegDelNull - ищет и удаляет разделы реестра с Null-символами в именах; Хранитель экрана Bluescreen - реалистично имитирует «синийэкран смерти»; Ctrl2Cap - драйвер-фильтр клавиатуры, преобразующий нажатие Caps Lock в нажатие Ctrl. Предназначен для тех, кто использует клавиатуры, на которых клавиша Ctrl расположена слева от клавиши А. |
Инфо:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Разделяемая (Shareable) — такая память может сообща использоваться процессами и находится в ОЗУ или файле подкачки (если он имеется). Эта память обычно содержит данные, совместно используемые процессами посредством общих секций библиотек DLL или объекты, находящиеся в файле подкачки или проецируемом файле (такие файлы называюттакже секциями в файле подкачки). Куча (Heap) — закрытая память, распределяемая и управляемая диспетчером кучи пользовательского режима; обычно содержит данные приложений. Функции управления памяти приложений, использующие кучу, включают библиотечную функцию исполняющей среды С malloc, оператор C++ new, API-функции Windows Heap и устаревшие API-функции GlobalAlloc и LocalAlloc. Управляемая куча (Managed Heap) — представляет закрытую память, распределяемую и управляемую исполняющей средой .NET; обычно содержит данные приложений. Стек (Stack) — память в стеке выделяется каждому потоку в процессе для хранения параметров функций, локальных переменных и записей о вызовах. Обычно при создании потока ему выделяется и резервируется фиксированный объем памяти стека, но процессу передается только сравнительно малая ее часть. По мере надобности память из данной выделенной области передается, но не освобождается, пока поток не завершится. Закрытая память (Private Data) — эта память выделяется API-функцией VirtualAlloc и не обрабатывается диспетчером кучи или исполняющей средой .NET и не относится к категории памяти стека. Такая память обычно содержит данные приложений, а также блоки Process и Thread Environment. Закрытые данные не могут совместно использоваться разными процессами. |
Проверка подписи файла:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
sigcheck -a -l -h c:\windows\explorer.exe Проверка подписи: -i Отображает имя каталога и владельцев подписей образов -г Проверяет сертификат на отзыв -u Отображает только неподписанные файлы, включая файлы с недействительными подписями -c Выполняет поиск подписи в указанном файле Проверка файлов: -е Проверяет только исполняемые файлы (выявляются по заголовкам, а не по расширениям) -S Выполняет рекурсивный обход вложенных папок Дополнительная информация о файлах: -а Отображает дополнительную информацию о версиях файлов -h Отображает хеш файлов -m Отображает манифест -n Отображает только номер версии файла Формат вывода: -V Вывод данных в формате CSV (не совместим с -i и -т) -q «Тихий» режим (не выводит заголовок) Signers (Владельцы подписей) Subject (Субъект) сертификата Отображает общее имя (CN) в строке цифровой подписи и сертификатах ЦС в его цепочке. Signing date (Дата подписания) Отображает дату подписания файла. Если файл не подписан, отображается строка п/а. Publisher (Издатель) Название компании из внедренных сведений о версии файла (если есть). Description (Описание) с информацией из внедренных сведений о версии файла (если есть). Product (Продукт) Поле Product Name из внедренных сведений о версии файла (если есть). Version (Версия) Поле Product Version из внедренных сведений о версии файла (если есть). Заметьте, что эти данные берутся из строковых, а не двоичных данных, используемых для сравнения версий. File version (Версия файла) Поле File Version из внедренных сведений о версии файла (если есть). Обратите внимание на то, что эти данные также взяты из строкового раздела ресурса версии, а не из двоичного значения, используемого для сравнения версий. Original Name (Исходное имя) Поле Original Name из внедренных сведений о версии файла (если есть). Internal Name (Внутреннее имя) Поле Internal Name из внедренных сведений о версии файла (если есть). Copyright (Авторское праве) Поле Copyright из внедренных сведений о версии файла (если есть). Comments (Комментарии) Поле Comments из внедренных сведений о версии файла (если есть). Для поиска в иерархии папок добавьте в командную строку параметр -s. SigCheck будет проверять файлы, соответствующие параметру target, в папке, указанной данным параметром (либо в текущей папке, если параметр target не указывает папку) и во всех вложенных в нее папках. Приведенная ниже команда проверяет все файлы с расширением *.dll в папке C:\Program Files и ее вложенных папках: + sigcheck -s «c:\program files\*.dll» |
Хеш
1 2 3 4 5 |
Хеш — это статистически уникальное значение, сгенерированное по блоку данных с использованием такого криптографического алгоритма, который при малейшем изменении данных приводит к генерации совершенно иного хеша. При использовании надежного хеш-алгоритма на современном уровне технологий практически невозможно изменить данные, оставив неизменным хеш, поэтому хеш-значения применяют для выявлении случайных повреждений или несанкционированной модификации данных. При добавлении в командную строку параметра -h SigCheck вычисляет и отображает хеш для проверяемых файлов по алгоритму MD5, SHA1 или SHA256. Эти хеши можно сравнивать с хеш-значениями, рассчитанными для заведомо целых данных, чтобы убедиться в целостности проверяемого файла. С помощью хеш-значения можно проверить и неподписанные файлы при наличии заведомо целой версии последних. Некоторые системы проверки файлов проверяют именно хеш-значения, а не подписи. |
Манифест приложения
1 2 3 4 5 |
Манифест приложения — это документ в формате XML, который можно внедрять в файл программы. Впервые их использовали в Windows XP, где они помогали различать различные версии одних и тех е сборок. В Windows Vista и Windows 7 схема манифеста была дополнена возможностями про верки совместимости с разными версиями Windows, а также требования прав администратора. Наличие манифеста, совместимого с Windows Vista, также отключает виртуализацию файла и реестра для процесса. Для получения дампа внедренного в файл манифеста добавьте в командную строку параметр -m. |
AccessChk
1 2 3 4 |
AccessChk — это консольная программа, которая отображает действующие разрешения на доступ к защищенным объектам, права учетных записей пользователей и групп, а также подробности маркера процесса. Программа может просматривать вложенные папки и разделы реестра, содержащие объекты, для которых у пользователей или групп есть (или, наоборот, отсутствуют) разрешения на доступ для чтения или записи. Также программа может отображать неструктурированный список управления доступом к защищенным объектам. accesschk [параметры] [имя_пользователя_или_группы] имя_объекта |
SDelete
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Защита от повторного использования объектов является основой политики системы безопасности Windows. Это означает, что приложения, получившие место диске или в виртуальной памяти, могут прочитать данные, которые ранее хранились в этой области памяти. Перед тем, как предоставить приложению какой-либо ресурс, Windows выполняет очистку памяти и записывает нули в сектора диска, ранее содержавшие другие данные. Тем неменее, этот механизм не очищает место на диске при удалении файла, поскольку разработчики Windows полагали, что только операционная система будет управлять доступом к системным ресурсам. Но когда операционная система не загружена, с помощью простых редакторов диска и инструментов для восстановления и просмотра данных можно без труда просматривать данные, удаленные операционной системой. Даже если зашифровать файлы с помощью EFS, исходные незашифрованные данные могут оставаться на диске после создания зашифрованной версии файла. Временные файлы также могут не шифроваться. Единственным способом гарантировать невозможность восстановления удаленных файлов и файлов, зашифрованных EFS, является использование специальной программы. Такие программы перезаписывают данные удаленного файла на диске, используя приведенные ниже технологии, делая невозможным их восстановление. Даже при использовании технологий, способных считывать с магнитных носителей данные файлов, удаленных неделю назад, восстановить данные оказывается невозможно. Одной из таких программ является утилита SDelete (Secure Delete). Ее можно использовать как для гарантированного удаления существующих файлов, так и стирания любых данных в свободных областях диска (удаленных или зашифрованных файлов). SDelete соответствует стандарту удаления и очистки данных DOD 5220.22-М Министерства обороны США, так что можете быть уверены: файлы, стертые с помощью SDelete, исчезнут навсегда. Имейте в виду, что SDelete гарантированно удаляет только данные, но не имена файлов. sdelete [-Pчисло_проходов] [-a] [-s] [-q] файлы REM Secijrely deletes secret.txt in the current folder sdelete secret.txt REM Secijrely deletes all *.docx files in the current folder and subfolders sdelete -s *.docx REM Secijrely deletes the C:\Users\Bobfolderhierarchy sdelete -s C:\Users\Bob Для очистки свободного места на диске используется следующий синтаксис: sdelete [-р число_проходов] [-z|-c] [d:] |
Junction
1 2 3 4 5 6 7 8 9 10 |
Junction позволяет создавать, удалять, искать соединения и отображать ин-формацию о них. Если для работы с папкой, в которой создается или удаляется соединение, достаточно разрешений, Junction не требует административных прав и работает во всех поддерживаемых версиях Windows. Синтаксис для создания соединения: junction имя_соединения цель_соединения имя_соединения — имя пути нового соединения, цель соединения — существующая папка, на которую указывает соединение. Синтаксис для удаления соединения: junction -d имя_соединения |
FindLinks
1 2 |
FindLinks показывает жесткие ссылки, указывающие на данные файла. Просто выполните команду findlinks имя_файла; и если на указанный файл имеются другие жесткие ссылки, они будут показаны. |
MoveFile
1 2 3 4 5 6 |
MoveFile позволяет запланировать операции перемещения, переименования и удаления файлов на следующую перезагрузку системы. Просто укажите имя существующей папки или файла и имя цели. Если объект нужно удалить, используйте в качестве имени цели две двойные кавычки. При помощи MoveFile можно удалить только пустую папку. Перемещение можно выполнять только в пределах одного тома, и при этом целевая папка должна существовать. Заметьте, что переименование — это перемещение, при котором не изменяется папка. |
Disk2VHD:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Примечание: Средства переноса P2V Migration for Software Assurance преобразуют в виртуальный жесткий диск существующую клиентскую среду Windows XP и ОС следующих версий, используя Microsoft Deployment Toolkit, утилиту Disk2VHD и, при необходимости, System Center Configuration Manager 2007. Затем они автоматически устанавливают систему Windows 7, содержащую виртуальную машину с предыдущей средой Windows, приложениями и веб-обозревателем. Предыдущий виртуальный рабочий стол пользователя сохраняет имеющиеся компоненты управления, политики и членство в доменах. Кроме того, в процессе переноса приложения и обозреватель публикуются в меню Пуск (Start) Windows 7 для быстрого доступа. Disk2Vhd создает образ физического диска в формате Virtual Hard Disk, VHD. Формат VHD поддерживается виртуальными машинами (VM) Hyper-V, Virtual PC и Virtual Server. Разница между Disk2Vhd и другими утилитами для преобразования физического диска в виртуальный заключается в том, что Disk2Vhd может создать образ системы Windows во время ее работы. Disk2Vhd использует функцию Volume Snapshot (моментальный снимок тома), появившуюся в Windows XP для создания моментальных снимков дисков, подлежащих преобразованию. С помощью Disk2Vhd возможно даже создавать VHD-образы диска, записывая образ на тот же самый disk2vhd [-h] диски файл_vhd disk2vhd с: e:\vhd\snapshot.vhd |
Diskmon
1 2 3 4 5 |
Diskmon — приложение с графическим интерфейсом, записывающее в журнал и показывающее в реальном времени всю активность жестких дисков систем Windows на уровне секторов. В отличие от Process Monitor, перехватывающего логические события, имеющие отношения к файлам (включая запросы, удовлетворяемые из кэша или кэшируемые в памяти для дальнейшей записи на диск), Diskmon сообщает о событиях, имеющих отношение к физическому диску Для каждой операции чтения и записи на диск Diskmon показывает диск и номера секторов, объем прочитанных или записанных данных, а также длительность операции. Можно запустить Diskmon в виде значка в области уведомлений, который будет изменять цвет на зеленый, когда выполняется чтение, или красный, когда производится запись. |
Sync
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
В большинстве Unix-систем имеется утилита sync, которая приказывает операционной системе сбросить на диск все измененные данные из буферов файловой системы. Это гарантирует, что данные из кэша файловой системы не будут потеряны при сбое в системе. Я написал эквивалент, тоже назвав его Sync, работающий во всех версиях Windows. Sync требует разрешения Write на целевом устройстве тома. Разрешения на запись в большинстве случаев даются только администраторам. Примечание: После записи на съемный диск с файловой системой NTFS следует отключить том перед извлечением диска. По возможности, лучше использовать апплет Безопасное извлечение (Safe Removal), прежде чем извлекать какие-либо внешние запоминающие устройства. Синтаксис командной строки Sync: sync [-г |-е | буквы_дисков] При запуске без параметров командной строки Sync перечисляет несъемные диски и очищает их. Если указать параметр -г или -е, будут также перечислены и очищены съемные диски; при использовании параметра -е съемные диски отключаются. Чтобы очистить конкретные диски, укажите их буквы. Например, чтобы очистить диски С и Е, выполните команду: sync с е |
DiskView:
1 2 3 |
DiskView показывает графическую карту кластеров тома NTFS, позволяя выяснить, в каких кластерах находится файл и фрагментирован ли он, или определить, каким файлом занят определенный сектор. DiskView требует администраторских привилегий и работает во всех поддерживаемых версиях Windows. |
PageDefrag:
1 2 3 4 5 6 7 8 9 10 11 12 |
Одно из ограничений интерфейса дефрагментации Windows — невозможность дефрагментировать файл, открытый для эксклюзивного доступа. Таким образом, ульи реестра, файлы подкачки и файлы спящего режима нельзя дефрагментировать, пока Windows работает. Написанная мной утилита PageDefrag (PageDfrg.exe) обходит это ограничение. Она показывает текущий уровень фрагментации таких файлов и позволяет запланировать их дефрагментацию на начало цикла загрузки Windows. PageDefrag можно выполнять из сценариев: pagedfrg { -е | -о | -п } Параметр -е запускает дефрагментацию при каждой загрузке, -о один раз при следующей загрузке, -n (never, никогда) отменяет запланированную дефрагментацию. |
TCPView:
1 2 3 4 5 |
TCPView — программа с графическим интерфейсом, которая показывает и обновляет подробные сведения обо всех конечных точках TCP- и UDP- подключений системы, включая подключения по протоколам IPv4 и IPv6. Для каждой конечной точки выводится имя и идентификатор (PID) процесса-владельца, локальные и удаленные адреса и порты, а также состояния подключений TCP. При запуске с администраторскими правами TCPView показывает и число пакетов, отправленных и принятых через конечные точки. Можно щелкнуть по заголовку любого столбца, чтобы отсортировать данные по этому столбцу. |
Portmon:
1 2 3 4 |
Portmon записывает все управляющие команды ввода-вывода последовательных и параллельных портов и показывает их в реальном времени вместе с полезной информацией о связанных с ними параметрах. Для запросов чтения и записи Portmon показывает часть прочитанных или записанных данных. По умолчанию эти данные отображаются как символы ASCII (точка представляет непечатаемые символы), но возможен и вывод в шестнадцатеричном виде. Portmon работает во всех версиях Windows x86 и требует администраторских прав. |
WinObj:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
WinObj — утилита с графическим интерфейсом, которая позволяет просматривать пространство имен диспетчера объектов Windows и информацию о содержащихся в нем объектах. Диспетчер объектов поддерживает иерархию каталогов и общий интерфейс для создания, удаления и защиты объектов и обращения к ним. Подробнее о Диспетчере объектов. мьютексы (мутанты) — замок; разделы (объекты-проекции файлов) — чип памяти; события — треугольник с восклицательным знаком; события KeyedEvents — тот же значок, что и у событий, но с ключом; семафоры — значок, напоминающий дорожный знак; символьные ссылки — изогнутая стрелка; устройства — изображение компьютера; драйверы — стандартный значок .sys-файлов; оконные станции — монитор; таймеры — часы; другие объекты, такие как порты и задачи ALPC — шестеренки. имя и тип объекта; является ли объект «постоянным», т.е. объектом, который не удаляетсяавтоматически, когда ссылок на него не остается; счетчики ссылок и описателей. Поскольку каждый описатель включает ссылку на объект, счетчик ссылок никогда не бывает меньше счетчика описателей. Разница между этими двумя значениями — число прямых ссылок на структуру объекта из режима ядра, а не косвенных (через описатель); квота — объем пулов подкачиваемой и неподкачиваемой памяти, котрый добавляется в квоту процесса при создании объекта. \BaseNamedObjects — содержит объекты, создаваемые в глобальном пространстве имен, такие как события и семафоры, а также объекты, которые создаются в локальном пространстве имен процессами, работаю щими в нулевом сеансе служб терминалов. \Sessions\w — содержит закрытые данные сеансов быстрого переклю чения пользователей и служб терминалов, указанных номерами п, где n равно или больше 1. \Sessions\w\BaseNamedObjects — содержит объекты, такие как события и семафоры, созданные в локальном пространстве имен процессов, работающих в сеансах быстрого переключения пользователей и служб терминалов, указанных номерами n. \Sessions\0\DosDevices\Z, C//D — содержит закрытые данные сеансов LSA, указанного в имени каталога локально уникальным идентификатором (LUID), включая подключения SMB, буквы сетевых дисков и сопоставления SUBST. \GLOBAL?? — содержит символьные ссылки, связывающие с устройствами глобальные имена, включая глобально определенные буквы дисков и другие имена устройств MS-DOS, такие как AUX и NUL. \KnownDLLs и \KnownDlls32 — имена и пути разделов для библиотек DLL, проецируемых системой при загрузке. Каталог \KnownDlls32 существует только в 64-разрядных версиях Windows и содержит список 32-разрядных версий стандартных DLL. |
LoadOrder:
1 2 |
LoadOrder (Loadord.exe) — простая утилита, показывающая примерный порядок, в котором Windows загружает драйверы устройств и запускает службы. LoadOrder работает во всех версиях Windows и не требует администраторских прав. |
PipeList:
1 2 3 4 5 6 7 |
Именованные каналы реализованы в Windows через драйвер файловой системы NPFS.sys, имя которого расшифровывается как Named Pipe File System (файловая система именованных каналов). PipeList — консольная утилита, показывающая все именованные каналы на локальном компьютере, выполняя просмотр списка каталогов этой файловой системы. PipeList также показывает число экземпляров имен и максимальное разрешенное ] число экземпляров. Значение Max Instances (Макс. экземпляров), равное -1, означает, что число экземпляров не ограничено. PipeList работает во всех версиях Windows и не требует администраторских прав. |
ClockRes:
1 2 3 4 |
ClockRes — простая утилита командной строки, показывающая текущее разрешение системных часов, а также минимальный и максимальный интервалы между тактами часов. Она не требует администраторских прав. Текущий квант времени обычно бывает больше максимального, когда какой-либо процесс, например, хост-процесс мультимедийного приложения, повышает разрешение для передачи звука и видео. В Windows 7 HTML-список изменивших разрешение таймера процессов можно получить при помощи стандартной утилиты Powercfg.exe, запущенной с командной /energy. |
Autorun.inf
1 2 |
При вставке съемного носителя, такого как компакт-диск или флеш накопитель USB Windows обнаруживает новый диск и Проводник проверяет наличие файла Autorun.inf в корневой папке носителя. Autorun.inf — это текстовый файл в формате INI-файла (то есть, с именами разделов в квадратных скобках, содержащих пары «имя=параметр»). |