|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Разбор аудита SRP |
|
PowerShell - [решено] Разбор аудита SRP
|
Ветеран Сообщения: 992 |
Имеются логи аудита SRP, кто имел с ними дело сразу поймут что это за кака с маком и что читать их "вручную" просто нереально. Посему нужен скрипт на парсинг этого счастья хотя бы по упрощенной схеме: отображение (или пересылка в файл) строк НЕ попадающих в список исключений находящихся в текстовом файле.
Т.е.: Дано: куча логов вида
forfiles.exe (PID = 5112) identified \??\C:\Windows\system32\IMM32.DLL as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b}
services.exe (PID = 752) identified C:\Program Files\Common Files\Microsoft Shared\OfficeSoftwareProtectionPlatform\OSPPSVC.EXE as Unrestricted using path rule, Guid = {4a2371bb-8664-43de-a137-1aa6af4e215c} services.exe (PID = 752) identified C:\Windows\system32\sppsvc.exe as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} svchost.exe (PID = 1064) identified taskeng.exe as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} cmd.exe (PID = 4924) identified C:\Windows\sep_install.cmd as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} services.exe (PID = 752) identified C:\Windows\System32\svchost.exe as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} services.exe (PID = 752) identified taskhost.exe as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} svchost.exe (PID = 1064) identified taskeng.exe as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} cmd.exe (PID = 5784) identified C:\Windows\defrag_c.cmd as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} powershell.exe (PID = 5140) identified C:\Windows\SRP_LogRotation.ps1 as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} svchost.exe (PID = 1064) identified taskeng.exe as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\ktmw32.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\wevtapi.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\IMM32.DLL as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\CRYPTBASE.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\CRYPTSP.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\rsaenh.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\SspiCli.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\RpcRtRemote.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\tschannel.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\XmlLite.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified C:\Windows\SYSTEM32\cmd.exe as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} taskeng.exe (PID = 1696) identified \??\C:\Windows\system32\apphelp.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} cmd.exe (PID = 4592) identified \??\C:\Windows\SYSTEM32\WINBRAND.dll as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} cmd.exe (PID = 4592) identified \??\C:\Windows\system32\IMM32.DLL as Unrestricted using path rule, Guid = {b12c17a2-e0db-44c7-a400-a609e7da509b} Это маленький кусочек логов, на самом деле у отдельных людей они достигают 25 Mb в сутки. список исключений что-то вроде
C:\Windows\System32 C:\Program Files\ C:\Program Files x86\ c:\какая-нить_хитрая_софтина_которая_не_хочет_жить_в_programfiles Ну и хочется получить на выходе файл (или вывод в консоль) с теми строками, которые не попадают под список исключений. Начинал писать на cmd, но понял, что обрабатываться оно будет до второго пришествия, из-за того лучше обратиться к PS, в котором я, к сожалению, все еще как известное животное в известных фруктах, вот помощи и прошу. И если случайно у кого-то найдется готовое решение для парсинга логов SRP аудита то я буду просто в восторге. |
|
Отправлено: 17:17, 10-10-2016 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:32, 10-10-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Здорово. Спасибо, я, откровенно говоря, в select-string полез. А можно данные все же из файла брать? Пока отладка идет исключений чуть больше чем много, неудобно в самом теле скрипта держать.
|
Отправлено: 17:42, 10-10-2016 | #3 |
Старожил Сообщения: 231
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 22:50, 10-10-2016 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Elven:
|
||
Отправлено: 05:54, 11-10-2016 | #5 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Цитата y--:
Примерно так
d:\SRP_audit_logs>tree /f
Структура папок Серийный номер тома: 9847-DCE1 D:. ├───comp1 │ SRP_comp1_20161002.log │ SRP_comp1_20161003.log │ SRP_comp1_20161004.log │ SRP_comp1_20161005.log │ SRP_comp1_20161006.log │ SRP_comp1_20161007.log │ SRP_comp1_20161008.log │ SRP_comp1_20161009.log │ ├───comp2 │ SRP_comp2_20161002.log │ SRP_comp2_20161003.log │ SRP_comp2_20161004.log │ SRP_comp2_20161005.log │ SRP_comp2_20161006.log │ SRP_comp2_20161007.log │ SRP_comp2_20161008.log │ SRP_comp2_20161009.log │ └───comp3 SRP_comp3_20161002.log SRP_comp3_20161003.log SRP_comp3_20161004.log SRP_comp3_20161005.log SRP_comp3_20161006.log SRP_comp3_20161007.log SRP_comp3_20161008.log SRP_comp3_20161009.log Iska, если бы я знал PS хотя бы в той же степени что cmd/bat - возможно таких вопросов не возникло, пока же это для меня не столь очевидно, так что спасибо. на текущий момент финальная версия
cls
$ex = (Get-Content -Path 'ExcludeList.txt' | Foreach { [regex]::escape($_) }) -join "|" Get-Content *\*.log | Where {$_ -notmatch $ex} |
|
Последний раз редактировалось Elven, 11-10-2016 в 12:14. Отправлено: 11:36, 11-10-2016 | #6 |
Старожил Сообщения: 231
|
Профиль | Отправить PM | Цитировать Elven,
Цитата Elven:
Цитата Elven:
|
||
------- Отправлено: 12:14, 11-10-2016 | #7 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать y--, cmd я знаю в достаточной степени чтобы не городить "FOR по файловой системе" для findstr, для которого есть ключ /s, однако, мистер ироничный всезнайка, я не хочу использовать в данной задаче cmd, о чем можно судить хотя бы по названию темы.
|
Отправлено: 12:33, 11-10-2016 | #8 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Для упрощения работы решил цеплять данные из реестра (список исключений), но уперся после получения списка веток, в которых находятся нужные ключи.
$DLvl = (Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers -Name DefaultLevel).DefaultLevel $LvlPaths = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\' + $DLvl + '\Paths\*' Get-ChildItem -Path $LvlPaths | select Name Результат выполнения
Name
---- HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{2eb12496-9f40-4911-827b-7465e032ff5e} HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{4a2371bb-8664-43de-a137-1aa6af4e215c} HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{547b917c-8d3d-455e-9b74-5a151a296eee} HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\262144\Paths\{b12c17a2-e0db-44c7-a400-a609e7da509b} т.о. получаю список имен веток, в каждой из веток есть ключ ItemData, каждый ключ - строка в списке исключений. Собственно вопрос: как использовать эти ключи вместо списка исключений вот в таком скрипте: |
Отправлено: 14:28, 20-10-2016 | #9 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать Кажись сам допер, но не до конца:
$DLvl = (Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers -Name DefaultLevel).DefaultLevel $LvlPaths = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\' + $DLvl + '\Paths\*' $ex = (Get-ChildItem -Path $LvlPaths | ForEach-Object { $string = $_.Name $ItemDataPath = $string.Replace("HKEY_LOCAL_MACHINE","HKLM:") (Get-ItemProperty -Path $ItemDataPath -Name ItemData).ItemData }) -join "|" $ex = [regex]::escape($ex) Get-ChildItem *\*.log | ForEach-Object { $nname = $_.DirectoryName + '\' + $_.BaseName + '_Cut' + $_.Extension Get-Content $_.FullName | Where {$_ -notmatch $ex} >> $nname } upd Нашел где собака порылась, | при использовании [regex]::escape экранировался, и, т.о., появлялся лишний "\". $DLvl = (Get-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers -Name DefaultLevel).DefaultLevel $LvlPaths = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\' + $DLvl + '\Paths\*' $ex = ( Get-ChildItem -Path $LvlPaths | ForEach-Object { $string = $_.Name $ItemDataPath = $string.Replace("HKEY_LOCAL_MACHINE","HKLM:") (Get-ItemProperty -Path $ItemDataPath -Name ItemData).ItemData }) -join "|" $ex = [regex]::escape($ex).replace("\\\|","\\|") Get-ChildItem *\*.log -exclude *cut.log | ForEach-Object { $nname = $_.DirectoryName + '\' + $_.BaseName + '_Cut' + $_.Extension Get-Content $_.FullName | Where {$_ -notmatch $ex} >> $nname } |
Последний раз редактировалось Elven, 20-10-2016 в 16:09. Отправлено: 15:32, 20-10-2016 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Вопрос - Шифровальщики вымогатели и SRP | dislike | Защита компьютерных систем | 20 | 06-09-2016 14:53 | |
2008 R2 - Почему KmPlayer игнорирует SRP? | zionkv | Windows Server 2008/2008 R2 | 1 | 15-02-2016 11:12 | |
Вопрос - Домашний ПК: антивирус или SRP | VasylUA | Защита компьютерных систем | 131 | 06-12-2014 19:06 | |
2008 R2 - [решено] Подскажите по srp | nokogerra | Windows Server 2008/2008 R2 | 4 | 15-10-2012 15:34 | |
[решено] Пара вопросов про GPO и SRP. | PoliceMan | Microsoft Windows NT/2000/2003 | 1 | 29-10-2009 14:00 |
|