Полезного можно найти в системных логах
Пользовательская рабочая станция — самое уязвимое место инфраструктуры по части информационной безопасности. Пользователям может прийти на рабочую почту письмо вроде бы из безопасного источника, но со ссылкой на заражённый сайт. Возможно, кто-то скачает полезную для работы утилиту из неизвестно какого места. Да можно придумать не один десяток кейсов, как через пользователей вредоносное ПО может внедриться на внутрикорпоративные ресурсы. Поэтому рабочие станции требуют повышенного внимания, и в статье мы расскажем, откуда и какие события брать для отслеживания атак.
Для выявления атаки на самой ранней стадии в ОС Windows есть три полезных событийных источника: журнал событий безопасности, журнал системного мониторинга и журналы Power Shell.
Журнал событий безопасности (Security Log)
Это главное место хранения системных логов безопасности. Сюда складываются события входа/выхода пользователей, доступа к объектам, изменения политик и других активностей, связанных с безопасностью. Разумеется, если настроена соответствующая политика.
Перебор пользователей и групп (события 4798 и 4799). Вредоносное ПО в самом начале атаки часто перебирает локальные учетные записи пользователей и локальные группы на рабочей станции, чтобы найти учетные данные для своих тёмных делишек. Эти события помогут обнаружить вредоносный код раньше, чем он двинется дальше и, используя собранные данные, распространится на другие системы.
Создание локальной учётной записи и изменения в локальных группах (события 4720, 4722–4726, 4738, 4740, 4767, 4780, 4781, 4794, 5376 и 5377). Атака может также начинаться, например, с добавления нового пользователя в группу локальных администраторов.
Попытки входа с локальной учётной записью (событие 4624). Добропорядочные пользователи заходят с доменной учётной записью и выявление входа под локальной учётной записью может означать начало атаки. Событие 4624 включает также входы под доменной учетной записью, поэтому при обработке событий нужно зафильтровать события, в которых домен отличается от имени рабочей станции.
Попытка входа с заданной учётной записью (событие 4648). Такое бывает, когда процесс выполняется в режиме “Запуск от имени” (run as). В нормальном режиме работы систем такого не должно быть, поэтому такие события должны находиться под контролем.
Блокировка/разблокировка рабочей станции (события 4800-4803). К категории подозрительных событий можно отнести любые действия, которые происходили на заблокированной рабочей станции.
Изменения конфигурации файрволла (события 4944-4958). Очевидно, что при установке нового ПО настройки конфигурации файрволла могут меняться, что вызовет ложные срабатывания. Контролировать такие изменения в большинстве случаев нет необходимости, но знать о них точно лишним не будет.
Подключение устройств Plug’n’play (событие 6416 и только для WIndows 10). За этим важно следить, если пользователи обычно не подключают новые устройства к рабочей станции, а тут вдруг раз — и подключили.
Windows включает в себя 9 категорий аудита и 50 субкатегорий для тонкой настройки. Минимальный набор субкатегорий, который стоит включить в настройках:
Logon/Logoff
- Logon;
- Logoff;
- Account Lockout;
- Other Logon/Logoff Events.
Account Management
- User Account Management;
- Security Group Management.
Policy Change
- Audit Policy Change;
- Authentication Policy Change;
- Authorization Policy Change.
Системный монитор (Sysmon)
Sysmon — встроенная в Windows утилита, которая умеет записывать события в системный журнал. Обычно требуется его устанавливать отдельно.
Эти же события можно в принципе найти в журнале безопасности (включив нужную политику аудита), но Sysmon даёт больше подробностей. Какие события можно забирать из Sysmon?
Создание процесса (ID события 1). Системный журнал событий безопасности тоже может сказать, когда запустился какой-нибудь *.exe и даже покажет его имя и путь запуска. Но в отличие от Sysmon не сможет показать хэш приложения. Злонамеренное ПО может называться даже безобидным notepad.exe, но именно хэш выведет его на чистую воду.
Сетевые подключения (ID события 3). Очевидно, что сетевых подключений много, и за всеми не уследить. Но важно учитывать, что Sysmon в отличие от того же Security Log умеет привязать сетевое подключение к полям ProcessID и ProcessGUID, показывает порт и IP-адреса источника и приёмника.
Изменения в системном реестре (ID события 12-14). Самый простой способ добавить себя в автозапуск — прописаться в реестре. Security Log это умеет, но Sysmon показывает, кто внёс изменения, когда, откуда, process ID и предыдущее значение ключа.
Создание файла (ID события 11). Sysmon, в отличие от Security Log, покажет не только расположение файла, но и его имя. Понятно, что за всем не уследишь, но можно же проводить аудит определённых директорий.
А теперь то, чего в политиках Security Log нет, но есть в Sysmon:
Изменение времени создания файла (ID события 2). Некоторое вредоносное ПО может подменять дату создания файла для его скрытия из отчётов с недавно созданными файлами.
Загрузка драйверов и динамических библиотек (ID событий 6-7). Отслеживание загрузки в память DLL и драйверов устройств, проверка цифровой подписи и её валидности.
Создание потока в выполняющемся процессе (ID события 8). Один из видов атаки, за которым тоже нужно следить.
События RawAccessRead (ID события 9). Операции чтения с диска при помощи “\.”. В абсолютном большинстве случаев такая активность должна считаться ненормальной.
Создание именованного файлового потока (ID события 15). Событие регистрируется, когда создается именованный файловый поток, который генерирует события с хэшем содержимого файла.
Создание named pipe и подключения (ID события 17-18). Отслеживание вредоносного кода, который коммуницирует с другими компонентами через named pipe.
Активность по WMI (ID события 19). Регистрация событий, которые генерируются при обращении к системе по протоколу WMI.
Для защиты самого Sysmon нужно отслеживать события с ID 4 (остановка и запуск Sysmon) и ID 16 (изменение конфигурации Sysmon).
Журналы Power Shell
Power Shell — мощный инструмент управления Windows-инфраструктурой, поэтому велики шансы, что атакующий выберет именно его. Для получения данных о событиях Power Shell можно использовать два источника: Windows PowerShell log и Microsoft-WindowsPowerShell / Operational log.
Windows PowerShell log
Загружен поставщик данных (ID события 600). Поставщики PowerShell — это программы, которые служат источником данных для PowerShell для просмотра и управления ими. Например, встроенными поставщиками могут быть переменные среды Windows или системный реестр. За появлением новых поставщиков нужно следить, чтобы вовремя выявить злонамеренную активность. Например, если видите, что среди поставщиков появился WSMan, значит был начат удаленный сеанс PowerShell.
Microsoft-WindowsPowerShell / Operational log (или MicrosoftWindows-PowerShellCore / Operational в PowerShell 6)
Журналирование модулей (ID события 4103). В событиях хранится информация о каждой выполненной команде и параметрах, с которыми она вызывалась.
Журналирование блокировки скриптов (ID события 4104). Журналирование блокировки скриптов показывает каждый выполненный блок кода PowerShell. Даже если злоумышленник попытается скрыть команду, этот тип события покажет фактически выполненную команду PowerShell. Ещё в этом типе события могут фиксироваться некоторые выполняемые низкоуровневые вызовы API, эти события обычно записывается как Verbose, но если подозрительная команда или сценарий используются в блоке кода, он будет зарегистрирован как c критичностью Warning.
Обратите внимание, что после настройки инструмента сбора и анализа этих событий потребуется дополнительное время на отладку для снижения количества ложных срабатываний.
Расскажите в комментариях, какие собираете логи для аудита информационной безопасности и какие инструменты для этого используете. Одно из наших направлений — решения для аудита событий информационной безопасности. Для решения задачи сбора и анализа логов можем предложить присмотреться к Quest InTrust, который умеет сжимать хранящиеся данные с коэффициентом 20:1, а один его установленный экземпляр способен обрабатывать до 60000 событий в секунду из 10000 источников.
Для чего тестировщику менять ширину канала?
- Чтобы эффективно распределить траффик между всеми тестовыми устройствами
- Протестировать скорость передачи данных (ПРАВИЛЬНЫЙ)
- Моделировать проблемы с сетевым подключением
Что полезного можно найти в системных логах?
- Вывод данных
- Информацию о выполнении программ
- Сообщения об ошибках (ПРАВИЛЬНЫЙ)
Что такое Smoke test?
- Тестирование надежности и устойчивости системы при превышения пределов нормального функционирования
- Тестирование приложения без доступа к исходному коду
- Короткий цикл тестов для подтверждения работоспособности основных функций приложения (ПРАВИЛЬНЫЙ)
Какового режима видеодаптера НЕ существует?
- Графического
- Алфавитно-графического
- Текстового (правильный)
Что означает ADB в тестировании?
AdBlock
Apple Desktop Bus
Android Debug Bridge (правильный ответ)
Что подразумевает контроль качества (QC) в процессе разработки?
- Процесс анализа качества продукта
- Мониторинг процессов обеспечения качества продукта (правильный ответ)
- Превентивный процесс обеспечения качества программного продукта
Что является одним из признаков некачественного ПО?
- Несоответствие функциональным требованиям (правильный ответ)
- Код не поддается рефакторингу
- Невозможность проведения автоматического тестирования
Как называется программа, позволяющая отправлять сетевые запросы из интерфейса командной строки?
requestMaker
curl (правильный ответ)
grep
Что является одной из основных функциональных особенностей языка Kotlin по сравнению с языком Java?
- Null Safety (правильный ответ)
- Динамическая типизация
- Наличие словарей
Функция, которая вызывает сама себя, называется
- Регрессионной
- Циклической
- Рекурсивной (правильный ответ)
Что такое операционная оболочка?
- Программа, реализующая или расширяющая пользовательский интерфейс операционной системы (правильный ответ)
- То же самое, что и операционная система
- Программа, необходимая для запуска ОС
От чего зависит отображение сайта в браузере?
- Скорости загрузки (правильный ответ)
- Разрешения
- Масштаба
Как расшифровывается UEFI?
- United Extensible Firmware Interface (правильный ответ)
- United External Firmware interface
- United Extended Firmware Interface
Что такое операционная среда?
- Интерфейс операционной системы для прикладного программного обеспечения
- Среда для выполнения операционной системы (правильный ответ)
- То же самое, что и операционная система
Какой из этих IP адресов является невалидным?
- 137.284.20.0 (правильный)
- 255.255.255.255
- 192.168.1.1
Какой из фреймворков для автоматизации тестирования является самым популярным?
- Testium
- Selenium (правильный ответ)
- PyAutoTest
Чем POST отличается от GET?
- GET для получения, POST для обновления (ПРАВИЛЬНЫЙ)
- GET для получения, POST для создания
- GET для обновления, POST для создания
Чем тестирование отличается от отладки?
- Предметно: поиском бага и причины бага (ПРАВИЛЬНЫЙ)
- Объемом и глубиной
- Ничем
Какое минимальное количество тестовых конфигураций необходимо, если локалей две: ru и en, поддерживаемые браузеры Chrome и Safari, а поддерживаемые версии iOS 9 и 10?
- 6
- 8 (ПРАВИЛЬНЫЙ)
- 4
Зачем тестировщику консоль в браузере?
- Для запуска тестов
- Для дебага (ПРАВИЛЬНЫЙ)
- Для дополнительной информации
Как называется список рекомендаций от Apple, в котором содержатся советы по созданию приложений?
- UIKit Guidelines
- Design Guidelines
- Human Interface Guidelines (ПРАВИЛЬНЫЙ)
Какой из протоколов не является защищенным?
- HTTPS
- SSH
- FTP (ПРАВИЛЬНЫЙ)
Как можно посмотреть содержимое
icmp-пакетов?
- Используя веб-прокси
- С помощью tcpdump (ПРАВИЛЬНЫЙ)
- Через dumpcap
Что полезного для тестирования хранится в системных логах?
- Сообщения об ошибках (ПРАВИЛЬНЫЙ ОТВЕТ)
- Информация о выполнении программ
- Исходный код программ
В каких случаях тестирование является динамическим?
- В обоих перечисленных случаях (ПРАВИЛЬНЫЙ)
- При тестировании белого ящика
- При тестировании чёрного ящика
Что не используют для измерения объемов памяти?
- Кибибит
- Килобит (ПРАВИЛЬНЫЙ)
- Киобит
Что из перечисленного является устойчивым названием одного из элементов пользовательского интерфейса?
- TV button (ПРАВИЛЬНЫЙ)
- Radio button
- Music button
Какой из этих тестов негативный?
- Тестировщик заходит в бар и заказывает кружку пива
- Проникает в бар и заказывает 2 кружки пива
- Забегает в бар и заказывает 0 кружек пива (ПРАВИЛЬНЫЙ)
Чем тестирование производительности отличается от нагрузочного тестирования?
- Это одно и тоже
- Нагрузочное — при максимальных нагрузках, производительности — время отклика при различных нагрузках (ПРАВИЛЬНЫЙ)
- Тестирование производительности проводится при различных нагрузках, нагрузочное — при изменении нагрузки
Для чего нужно нагрузочное тестирование?
- Для анализа изменения состояния приложения под нагрузкой (ПРАВИЛЬНЫЙ)
- Для тестирования приложения во время его загрузки
- Для тестирования приложения во время загрузки данных с сервера
В чем отличие локализации от интернационализации?
- Интернационализация — поддержка стандартов, локализация — перевод на языки регионов
- Интернационализация — адаптация продукта для использования везде, локализация — в конкретных регионах (ПРАВИЛЬНЫЙ)
- Интернационализация — перевод строк на английский, локализация на другие языки
Что такое регрессионное тестирование?
- Тестирование, направленное на обнаружение вызванных внесенными изменениями багов в уже существующей функциональности (ПРАВИЛЬНЫЙ ОТВЕТ)
- Тестирование, направленное на обнаружение новых багов во всей функциональности продукта
- Тестирование, направленное на обнаружение ошибок в добавленной функциональности
На чьей стороне исполняется JavaScript?
Правильный ответ — Клиента
Чем отличаются браузеры?
Правильный ответ — Движком
Что такое UX?
Правильный ответ — Опыт взаимодействия пользователя с приложением
Что из этого не является частью тестирования производительности?
Правильный ответ — Функциональное тестирование
Что подразумевается под чек-листами в тестировании? —
Правильный ответ — Инструмент для пошагового тестирования приложения
Для чего нужен DNS?
Правильный ответ — Для преобразования доменов в IP-адреса
Какой термин используется для обозначения короткого цикла тестов для подтверждения работоспособности основных функций приложения?
Правильный ответ — Smoke test
Как тестовое покрытие влияет на качество продукта?
Правильный ответ — Не прямо пропорционально
Чем альфа-тестирование отличается от бета-тестирования?
Правильный ответ — Кругом лиц
Что такое FTP?
Правильный ответ — Протокол для передачи данных по сети, основан на TCP
Зачем тестировщику VPN?
Правильный ответ — Для защищенности тестовой среды
Какой из этих элементов присутствует в трехуровневой архитектуре программного комплекса?
Правильный ответ — Сервер базы данных
Объясните фразу «Я знаю отличную шутку про UDP, но не факт, что она до вас дойдет».
Правильный ответ — UDP предоставляет ненадёжный сервис
Расшифруйте аббревиатуру QA
Правильный ответ — Quality Assurance
Что означает буква S в HTTPS ?
Правильный ответ — Безопасный
Что или кто называется Linux?
Правильный ответ — Ядро ОС
Зачем ВКонтакте API?
Правильный ответ — Для предоставления сервисов и данных разработчикам приложений
Что такое тест-кейс?
Правильный ответ — Инструмент тестировщика, предназначенный для документирования и проверки одного или более ожидаемых результатов
Что такое XSS?
Правильный сайт — Межсайтовый скриптинг
Расшифруйте аббревиатуру MVP
Правильный ответ — Model-View-Presenter
Поздравляем!
Пять правильных ответов у Вас в кармане, добро пожаловать в Программу бета-тестирования ВКонтакте.
Пора поговорить про удобную работу с логами, тем более что в Windows есть масса неочевидных инструментов для этого. Например, Log Parser, который порой просто незаменим.
В статье не будет про серьезные вещи вроде Splunk и ELK (Elasticsearch + Logstash + Kibana). Сфокусируемся на простом и бесплатном.
До появления PowerShell можно было использовать такие утилиты cmd как find и findstr. Они вполне подходят для простой автоматизации. Например, когда мне понадобилось отлавливать ошибки в обмене 1С 7.7 я использовал в скриптах обмена простую команду:
findstr “Fail” *.log >> fail.txt
Она позволяла получить в файле fail.txt все ошибки обмена. Но если было нужно что-то большее, вроде получения информации о предшествующей ошибке, то приходилось создавать монструозные скрипты с циклами for или использовать сторонние утилиты. По счастью, с появлением PowerShell эти проблемы ушли в прошлое.
Основным инструментом для работы с текстовыми журналами является командлет Get-Content, предназначенный для отображения содержимого текстового файла. Например, для вывода журнала сервиса WSUS в консоль можно использовать команду:
Get-Content -Path ‘C:Program FilesUpdate ServicesLogFilesSoftwareDistribution.log’ | Out-Host -Paging
Для вывода последних строк журнала существует параметр Tail, который в паре с параметром Wait позволит смотреть за журналом в режиме онлайн. Посмотрим, как идет обновление системы командой:
>Get-Content -Path “C:WindowsWindowsUpdate.log” -Tail 5 -Wait
Смотрим за ходом обновления Windows.
Если же нам нужно отловить в журналах определенные события, то поможет командлет Select-String, который позволяет отобразить только строки, подходящие под маску поиска. Посмотрим на последние блокировки Windows Firewall:
Select-String -Path “C:WindowsSystem32LogFilesFirewallpfirewall.log” -Pattern ‘Drop’ | Select-Object -Last 20 | Format-Table Line
Смотрим, кто пытается пролезть на наш дедик.
При необходимости посмотреть в журнале строки перед и после нужной, можно использовать параметр Context. Например, для вывода трех строк после и трех строк перед ошибкой можно использовать команду:
Select-String ‘C:WindowsClusterReportsCluster.log’ -Pattern ‘ err ‘ ‑Context 3
Оба полезных командлета можно объединить. Например, для вывода строк с 45 по 75 из netlogon.log поможет команда:
Get-Content ‘C:Windowsdebugnetlogon.log’ | Select-Object -First 30 -Skip 45
Журналы системы ведутся в формате .evtx, и для работы с ними существуют отдельные командлеты. Для работы с классическими журналами («Приложение», «Система», и т.д.) используется Get-Eventlog. Этот командлет удобен, но не позволяет работать с остальными журналами приложений и служб. Для работы с любыми журналами, включая классические, существует более универсальный вариант ― Get-WinEvent. Остановимся на нем подробнее.
Для получения списка доступных системных журналов можно выполнить следующую команду:
Get-WinEvent -ListLog *
Вывод доступных журналов и информации о них.
Для просмотра какого-то конкретного журнала нужно лишь добавить его имя. Для примера получим последние 20 записей из журнала System командой:
Get-WinEvent -LogName ‘System’ -MaxEvents 20
Последние записи в журнале System.
Для получения определенных событий удобнее всего использовать хэш-таблицы. Подробнее о работе с хэш-таблицами в PowerShell можно прочитать в материале Technet about_Hash_Tables.
Для примера получим все события из журнала System с кодом события 1 и 6013.
Get-WinEvent -FilterHashTable @{LogName=’System’;ID=’1′,’6013′}
В случае если надо получить события определенного типа ― предупреждения или ошибки, ― нужно использовать фильтр по важности (Level). Возможны следующие значения:
- 0 ― всегда записывать;
- 1 ― критический;
- 2 ― ошибка;
- 3 ― предупреждение;
- 4 ― информация;
- 5 ― подробный (Verbose).
Собрать хэш-таблицу с несколькими значениями важности одной командой так просто не получится. Если мы хотим получить ошибки и предупреждения из системного журнала, можно воспользоваться дополнительной фильтрацией при помощи Where-Object:
Get-WinEvent -FilterHashtable @{LogName=’system’} | Where-Object -FilterScript {($_.Level -eq 2) -or ($_.Level -eq 3)}
Ошибки и предупреждения журнала System.
Аналогичным образом можно собирать таблицу, фильтруя непосредственно по тексту события и по времени.
Подробнее почитать про работу обоих командлетов для работы с системными журналами можно в документации PowerShell:
- Get-EventLog.
- Get-WinEvent.
PowerShell ― механизм удобный и гибкий, но требует знания синтаксиса и для сложных условий и обработки большого количества файлов потребует написания полноценных скриптов. Но есть вариант обойтись всего-лишь SQL-запросами при помощи замечательного Log Parser.
Утилита Log Parser появилась на свет в начале «нулевых» и с тех пор успела обзавестись официальной графической оболочкой. Тем не менее актуальности своей она не потеряла и до сих пор остается для меня одним из самых любимых инструментов для анализа логов. Загрузить утилиту можно в Центре Загрузок Microsoft, графический интерфейс к ней ― в галерее Technet. О графическом интерфейсе чуть позже, начнем с самой утилиты.
О возможностях Log Parser уже рассказывалось в материале «LogParser — привычный взгляд на непривычные вещи», поэтому я начну с конкретных примеров.
Для начала разберемся с текстовыми файлами ― например, получим список подключений по RDP, заблокированных нашим фаерволом. Для получения такой информации вполне подойдет следующий SQL-запрос:
SELECT
extract_token(text, 0, ‘ ‘) as date,
extract_token(text, 1, ‘ ‘) as time,
extract_token(text, 2, ‘ ‘) as action,
extract_token(text, 4, ‘ ‘) as src-ip,
extract_token(text, 7, ‘ ‘) as port
FROM ‘C:WindowsSystem32LogFilesFirewallpfirewall.log’
WHERE action=’DROP’ AND port=’3389′
ORDER BY date,time DESC
Посмотрим на результат:
Смотрим журнал Windows Firewall.
Разумеется, с полученной таблицей можно делать все что угодно ― сортировать, группировать. Насколько хватит фантазии и знания SQL.
Log Parser также прекрасно работает с множеством других источников. Например, посмотрим откуда пользователи подключались к нашему серверу по RDP.
Работать будем с журналом TerminalServices-LocalSessionManagerOperational.
Не со всеми журналами Log Parser работает просто так ― к некоторым он не может получить доступ. В нашем случае просто скопируем журнал из %SystemRoot%System32WinevtLogsMicrosoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx в %temp%test.evtx.
Данные будем получать таким запросом:
SELECT
timegenerated as Date,
extract_token(strings, 0, ‘|’) as user,
extract_token(strings, 2, ‘|’) as sourceip
FROM ‘%temp%test.evtx’
WHERE EventID = 21
ORDER BY Date DESC
Смотрим, кто и когда подключался к нашему серверу терминалов.
Особенно удобно использовать Log Parser для работы с большим количеством файлов журналов ― например, в IIS или Exchange. Благодаря возможностям SQL можно получать самую разную аналитическую информацию, вплоть до статистики версий IOS и Android, которые подключаются к вашему серверу.
В качестве примера посмотрим статистику количества писем по дням таким запросом:
SELECT
TO_LOCALTIME(TO_TIMESTAMP(EXTRACT_PREFIX(TO_STRING([#Fields: date-time]),0,’T’), ‘yyyy-MM-dd’)) AS Date,
COUNT(*) AS [Daily Email Traffic]
FROM ‘C:Program FilesMicrosoftExchange ServerV15TransportRolesLogsMessageTracking*.LOG’
WHERE (event-id=’RECEIVE’) GROUP BY Date ORDER BY Date ASC
Если в системе установлены Office Web Components, загрузить которые можно в Центре загрузки Microsoft, то на выходе можно получить красивую диаграмму.
Выполняем запрос и открываем получившуюся картинку…
Любуемся результатом.
Следует отметить, что после установки Log Parser в системе регистрируется COM-компонент MSUtil.LogQuery. Он позволяет делать запросы к движку утилиты не только через вызов LogParser.exe, но и при помощи любого другого привычного языка. В качестве примера приведу простой скрипт PowerShell, который выведет 20 наиболее объемных файлов на диске С.
$LogQuery = New-Object -ComObject “MSUtil.LogQuery”
$InputFormat = New-Object -ComObject “MSUtil.LogQuery.FileSystemInputFormat”
$InputFormat.Recurse = -1
$OutputFormat = New-Object -ComObject “MSUtil.LogQuery.CSVOutputFormat”
$SQLQuery = “SELECT Top 20 Path, Size INTO ‘%temp%output.csv’ FROM ‘C:*.*’ ORDER BY Size DESC”
$LogQuery.ExecuteBatch($SQLQuery, $InputFormat, $OutputFormat)
$CSV = Import-Csv $env:TEMP’output.csv’
$CSV | fl
Remove-Item $env:TEMP’output.csv’
$LogQuery=$null
$InputFormat=$null
$OutputFormat=$null
Ознакомиться с документацией о работе компонента можно в материале Log Parser COM API Overview на портале SystemManager.ru.
Благодаря этой возможности для облегчения работы существует несколько утилит, представляющих из себя графическую оболочку для Log Parser. Платные рассматривать не буду, а вот бесплатную Log Parser Studio покажу.
Интерфейс Log Parser Studio.
Основной особенностью здесь является библиотека, которая позволяет держать все запросы в одном месте, без россыпи по папкам. Также сходу представлено множество готовых примеров, которые помогут разобраться с запросами.
Вторая особенность ― возможность экспорта запроса в скрипт PowerShell.
В качестве примера посмотрим, как будет работать выборка ящиков, отправляющих больше всего писем:
Выборка наиболее активных ящиков.
При этом можно выбрать куда больше типов журналов. Например, в «чистом» Log Parser существуют ограничения по типам входных данных, и отдельного типа для Exchange нет ― нужно самостоятельно вводить описания полей и пропуск заголовков. В Log Parser Studio нужные форматы уже готовы к использованию.
Помимо Log Parser, с логами можно работать и при помощи возможностей MS Excel, которые упоминались в материале «Excel вместо PowerShell». Но максимального удобства можно достичь, подготавливая первичный материал при помощи Log Parser с последующей обработкой его через Power Query в Excel.
Приходилось ли вам использовать какие-либо инструменты для перелопачивания логов? Поделитесь в комментариях.