Получаем историю запуска программ в Windows с помощью политик аудита

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

Сначала нужно включить политику аудита запуска/остановки процессов в Windows.

  1. Откройте редактор локальной групповой политики gpedit.msc ;
    Если вы хотите включить политику аудита процессов на компьютерах в домене Active Directory, нужно использовать редактор доменных GPO gpmc.msc .
  2. Перейдите в раздел GPO Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Audit Policy;
  3. Включите политику Audit process tracking и тип событий Success ;
    Мы показывали, как использовать эти события аудита для поиска источника блокировки учетной записи на компьютере .

  4. Сохраните изменения и обновите локальные политики на клиенте командой: gpupdate /force

Откройте Event Viewer ( eventvwr.msc ) и разверните раздел Windows Logs -> Security. Теперь при запуске любой программы (процесса) в этом журнале событий появляется событие Process Creation с EventID 4688 .

A new process has been created.

В информации о событии указан пользователь, запустивший программу ( Creator Subject ), имя исполняемого файла процесса ( New Process Name ) и родительский процесс, из которого было запущено приложение ( Creator Process Name ).

Событие завершения процесса (A process has exited) имеет EventID 4689. Ранее мы показывали как с помощью этих события и триггера планировщика можно выполнить скрипт (действие) при запуске/завершении определённой программы в Windows .

Обратите внимание, что при включении рассмотренной выше политики Audit process tracking в журнал Security начинают сохранятся все события, связанные с процессами. Если вы хотите уменьшить число событий в Event Viewer и сохранять только информацию о событиях запуска, можно отключить данную политику и включить только расширенную политику аудита Audit Process Creation (Windows Settings -> Security Settings -> Advanced Audit Policy Configurations -> System Audit Policy -> Detailed Tracking).

Чтобы в события аудита записывалась информация о параметрах запуска процессов (аргументы, с которыми запускаются программы), включите также параметр GPO Include command line in process creation events в Computer Configuration -> Administrative Templates -> System -> Audit Process Creation.

После включения этой политики в аргументе Process Command Line видно, с каким аргументом запускался тот или иной процесс.

Не забудьте увеличить размер журнала Security со стандартных 20 Мб. Это позволит хранить история запуска приложения за более длительный период. Для этого откройте свойства журнала Security и увеличьте значение параметра Maximum log size .

Для анализа программ, запущенных пользователем можно использовать фильтры Event Viewer. Но это не очень удобно. Ниже я покажу несколько PowerShell скриптов который позволят вам получить удобные списки событий с историей запуска приложений пользователями. Для получения событий из журнала Event Viewer мы будем использовать команду Get-WinEvent :

$processhistory = @()
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
$events=Get-WinEvent -FilterHashtable @{
LogName = 'Security'
starttime="$today"
ID = 4688
}
foreach ($event in $events){
$proc = New-Object PSObject -Property @{
ProcessName=$event.Properties[5].Value
Time=$event.TimeCreated
CommandLine=$event.Properties[8].Value
User=$event.Properties[1].Value
ParentProcess=$event.Properties[13].Value
}
$processhistory += $proc
}
$processhistory| Out-GridView

Данный PowerShell скрипт выберет все события запуска программ за сегодняшний день и выведет список процессов, времени запуска и пользователях в графическую таблицу Out-GridView .

Полученный массив объектов можно использовать для выполнения различных запросов.

Например,

  • Найти всех пользователей, которые запускали определённое приложение: $proc_name=”notepad++.exe”
    $processhistory | where-object {$_.ProcessName –like “*$proc_name*”}|out-gridview
  • Вывести список программ, которые запускал сегодня определенный пользователь:
    $username="aivanov"
    $processhistory | where-object {$_.User –like “*$username*”}|out-gridview

Такие скрипты часто используем для анализа запуска программ пользователей на серверах RDS фермы .

Также история запуска программ в Windows ведется в файле %SystemRoot%AppCompatPrograms Amcache.hve . Файл заблокирован Windows и прочитать его можно только, загрузившись с LiveCD или загрузочного/установочного диска. В файле есть метки запуска, установки/удаления программы, контрольные суммы исполняемого файла (SHA1). Для преобразования этого бинарного файла в текстовый формат нужно использовать сторонние утилиты (например, regripper).

Также напоминаю, что PowerShell также ведет собственную историю запущенных команд.
admin

Share
Published by
admin

Recent Posts

Apple: история логотипа

Как менялся логотип Apple на протяжении многих лет. Логотип Apple — это не просто символ,…

2 месяца ago

Security Boot Fail при загрузке Acer — решение проблемы

Security Boot Fail при загрузке Acer — решение проблемы При загрузке ноутбука Acer с флешки,…

2 месяца ago

Ноутбук не включается — варианты решения

Ноутбук не включается — варианты решения Если при попытке включить ноутбук вы обнаруживаете, что он…

2 месяца ago

The AC power adapter wattage and type cannot be determined — причины и решение

The AC power adapter wattage and type cannot be determined — причины и решение При…

2 месяца ago

Свистит или звенит блок питания компьютера — причины и решения

Свистит или звенит блок питания компьютера — причины и решения Некоторые владельцы ПК могут обратить…

2 месяца ago

Мигает Caps Lock на ноутбуке HP — почему и что делать?

Мигает Caps Lock на ноутбуке HP — почему и что делать? При включении ноутбука HP…

2 месяца ago