Хотя в журналах событий или аудита нет следов удаления службы , вы можете создать небольшое консольное приложение, которое обнаружит, существует ли служба, и подключить его к такому приложению Windows Task Scheduler, которое планируется запустить на основе частоты или триггера, который вы используете. можете настроить в соответствии с вашими требованиями , так что вы получите предупреждение, если служба была добавлена или удалена и т. д ..
Консольное приложение разработано таким образом, чтобы при первом запуске оно регистрировало все службы в системе, а при последующих запусках оно отслеживало изменения, внесенные в службы через него, servicesRemovedи
servicesAddedс помощью этого мы можем решить, какое действие предпринять, когда служба имеет был изменен
Консольное приложение: ServiceDetector.exe
staticvoidMain(string[] args){var path =@"C:\AdminLocation\ServicesLog.txt";var currentServiceCollection =ServiceController.GetServices().Select(s => s.ServiceName).ToList();//Queries the most current Services from the machineif(!File.Exists(path))//Creates a Log file with current services if not present, usually means the first run{// Assumption made is that this is the first run
using (var text =File.AppendText(path)){
currentServiceCollection.ForEach((s)=> text.WriteLine(s));}return;}// Fetches the recorded services from the Logvar existingServiceCollection =File.ReadAllLines(path).ToList();var servicesRemoved = existingServiceCollection.Except(currentServiceCollection).ToList();var servicesAdded = currentServiceCollection.Except(existingServiceCollection).ToList();if(!servicesAdded.Any()&&!servicesRemoved.Any()){Console.WriteLine("No services have been added or removed");return;}//If any services has been addedif(servicesAdded.Any()){Console.WriteLine("One or more services has been added");
using (var text =File.AppendText(path)){
servicesAdded.ForEach((s)=> text.WriteLine(s));}return;}//Service(s) may have been deleted, you can choose to record it or not based on your requirementsConsole.WriteLine("One or more services has been removed");}
Планирование задачи
Пуск Windows> Планировщик задач> Создать основную задачу> Установить триггер> Прикрепить свой exe> Готово
Спасибо за предложение, проблема в том, что это может быть любая служба, я не знаю имя службы, которая будет удалена.
BillyDay
@BillyDay, ааа, понятно, обновил ответ
Клинт
Я думаю, что это лучший подход. Я создам службу, которая запускается при запуске и зацикливается, и обнаруживает, когда служба удаляется, и либо записывает в файл, либо вызывает и событие. Спасибо
Почему бы просто не проверить файл, связанный с этой службой ... например, myService.exe
johnny 5
Вы также можете проверить реестр, чтобы убедиться, что сервис существует HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services, если вы хотите убедиться, что какой-либо сервис не был удален, вам нужно будет добавить собственный кеш
johnny 5
0
Есть много способов построить инструментарий, пока вы не узнаете, что такое хороший инструментарий. Мои инструкции по сути взяты непосредственно из записи в Википедии https://en.wikipedia.org/wiki/Instrumentation .
Решение проблемы измерения индикаторов существует, но вы застряли в концепции, как также использовать «нажимную» аппаратуру для сигнализации другой системы. Как объясняется в моей статье, инструменты всегда должны извлекать данные, а не выдвигать их. Сигнализация, управляемая событиями, является потенциальной точкой отказа, которая вам не нужна.
Чтобы устранить любые нерешительность или сомнения, которые могут возникнуть у вас по поводу создания отдельного приложения, мониторы обычно являются независимыми ( не интегрированными, как говорит Википедия) процессами. То есть, если вы говорите, что ваш монитор «может не работать», значит, вы не выбрали реальный неинтегрированный монитор, который всегда включен. Ваша потребительская система неправильно моделирует контрольно-измерительные приборы, потому что она интегрирует проверку в свой собственный процесс.
Разделите эти обязанности и продолжайте. Решите, как часто прибор должен разумно опрашивать удаленные сервисы и опрашивать данные с помощью таймера. Если вы используете вызов API, предложенный Саймон-Пирсоном, вы также можете определить, когда были добавлены сервисы. Конечно, монитор должен локально кэшировать копию списка услуг, чтобы индикаторы могли определить, что было добавлено или удалено.
Вы правы, что удаление службы Windows действительно приводит к добавлению события в системный журнал событий (источник: /superuser/1238311/how-can-we-detect-if-a-windows- служба-это-удалено-там-есть-log-id-for-i ).
AFAIK нет политики аудита для аудита удаления службы, и я думаю, что если бы там было, я думаю, что это будет указано здесь: https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/ базовый аудит-процесс отслеживания
Я предполагаю, что опрос
ServiceController.GetServices()
исключен, потому что ваша программа может не работать, когда служба удалена?источник
Есть много способов построить инструментарий, пока вы не узнаете, что такое хороший инструментарий. Мои инструкции по сути взяты непосредственно из записи в Википедии https://en.wikipedia.org/wiki/Instrumentation .
Инструментарий Инструкции
http://www.powersemantics.com/e.html
Решение проблемы измерения индикаторов существует, но вы застряли в концепции, как также использовать «нажимную» аппаратуру для сигнализации другой системы. Как объясняется в моей статье, инструменты всегда должны извлекать данные, а не выдвигать их. Сигнализация, управляемая событиями, является потенциальной точкой отказа, которая вам не нужна.
Чтобы устранить любые нерешительность или сомнения, которые могут возникнуть у вас по поводу создания отдельного приложения, мониторы обычно являются независимыми ( не интегрированными, как говорит Википедия) процессами. То есть, если вы говорите, что ваш монитор «может не работать», значит, вы не выбрали реальный неинтегрированный монитор, который всегда включен. Ваша потребительская система неправильно моделирует контрольно-измерительные приборы, потому что она интегрирует проверку в свой собственный процесс.
Разделите эти обязанности и продолжайте. Решите, как часто прибор должен разумно опрашивать удаленные сервисы и опрашивать данные с помощью таймера. Если вы используете вызов API, предложенный Саймон-Пирсоном, вы также можете определить, когда были добавлены сервисы. Конечно, монитор должен локально кэшировать копию списка услуг, чтобы индикаторы могли определить, что было добавлено или удалено.
источник