Deteksi adalah ketika layanan windows telah dihapus
9
Apakah ada cara untuk mendeteksi kapan layanan windows telah dihapus? Saya telah memeriksa log peristiwa tetapi tidak mengambil tindakan yang dihapus hanya ditambahkan.
Saya percaya mungkin ada cara menggunakan log audit tapi saya tidak yakin bagaimana melakukan ini?
Meskipun tidak ada jejak penghapusan layanan di log Peristiwa atau Audit , yang dapat Anda lakukan adalah membuat aplikasi konsol kecil yang mendeteksi jika ada layanan dan melampirkan aplikasi ini Windows Task Schedulersedemikian rupa sehingga dijadwalkan untuk dieksekusi berdasarkan frekuensi atau Pemicu yang Anda gunakan. dapat menyesuaikan dengan kebutuhan Anda sehingga Anda akan menerima peringatan jika layanan telah ditambahkan atau dihapus dll.
Aplikasi konsol dirancang sedemikian rupa sehingga pada saat dijalankan pertama, ia mencatat semua layanan pada sistem dan pada menjalankan selanjutnya akan melacak perubahan yang dibuat pada layanan melalui servicesRemoveddan
servicesAdded, dengan ini kita dapat memutuskan tindakan apa yang harus diambil ketika layanan memiliki telah dimodifikasi
Aplikasi Konsol: 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");}
Tugas Penjadwalan
Windows Mulai> Penjadwal Tugas> Buat Tugas Dasar> Atur Pemicu> Pasang exe Anda> Selesai
Terima kasih atas sarannya, Masalahnya adalah ini bisa berupa layanan apa pun yang saya tidak tahu nama layanan yang dihapus.
BillyDay
@ BillyDay, ahh begitu, memperbarui jawabannya
Clint
Saya pikir ini adalah pendekatan terbaik. Saya akan membuat layanan yang berjalan saat startup dan loop dan mendeteksi ketika layanan dihapus dan baik menulis ke file atau meningkatkan dan acara. Terima kasih
Ok, saya pikir Anda kurang beruntung maka @BillyDay
simon-pearson
Mengapa tidak memeriksa file yang terkait dengan layanan itu ... mis. MyService.exe
johnny 5
Anda juga dapat memeriksa registri untuk memastikan layanan tersebut ada layanan HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \, jika Anda ingin memastikan layanan apa pun tidak dihapus Anda harus menambahkan cache Anda sendiri
johnny 5
0
Ada banyak cara untuk membangun instrumentasi, sampai Anda mengetahui apa yang merupakan instrumentasi yang baik. Cara saya pada dasarnya diambil langsung dari entri Wikipedia https://en.wikipedia.org/wiki/Instrumentation .
Solusi untuk masalah indikator pengukuran ada, tetapi Anda terjebak membuat konsep bagaimana juga memiliki "berbasis push" sinyal sistem lain. Seperti yang dijelaskan dalam artikel E saya, instrumen harus selalu menarik data, jangan pernah mendorongnya. Pensinyalan berbasis peristiwa adalah titik kegagalan potensial yang tidak Anda butuhkan.
Untuk menjernihkan keraguan atau keraguan yang mungkin Anda miliki tentang membangun aplikasi terpisah, monitor biasanya independen ( tidak terintegrasi seperti yang dikatakan Wikipedia). Jadi mengatakan monitor Anda "mungkin tidak berjalan" berarti Anda belum memilih untuk membangun monitor yang tidak terintegrasi, yang selalu menyala. Sistem konsumen Anda tidak memodelkan instrumentasi dengan benar, karena mengintegrasikan pemeriksaan dalam prosesnya sendiri.
Pisahkan tanggung jawab ini dan lanjutkan. Putuskan seberapa sering instrumen harus melakukan polling untuk layanan yang dihapus dan polling data dengan timer. Jika Anda menggunakan panggilan API simon-pearson yang disarankan, Anda juga dapat mendeteksi kapan layanan telah ditambahkan. Tentu saja, monitor perlu menyimpan salinan daftar layanan secara lokal sehingga indikator dapat menyimpulkan apa yang telah ditambahkan atau dihapus.
Anda benar bahwa menghapus Layanan Windows tidak menyebabkan suatu peristiwa ditambahkan ke System Event Log (sumber: /superuser/1238311/how-can-we-detect-if-a-windows- service-is-delete-is-there-an-event-log-id-for-i ).
AFAIK tidak ada kebijakan audit untuk mengaudit penghapusan layanan dan saya pikir jika ada, saya pikir itu akan terdaftar di sini: https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/ dasar-audit-proses-pelacakan
Saya menganggap jajak
ServiceController.GetServices()
pendapat tidak mungkin karena program Anda mungkin tidak berjalan ketika layanan dihapus?sumber
Ada banyak cara untuk membangun instrumentasi, sampai Anda mengetahui apa yang merupakan instrumentasi yang baik. Cara saya pada dasarnya diambil langsung dari entri Wikipedia https://en.wikipedia.org/wiki/Instrumentation .
Cara Instrumentasi
http://www.powersemantics.com/e.html
Solusi untuk masalah indikator pengukuran ada, tetapi Anda terjebak membuat konsep bagaimana juga memiliki "berbasis push" sinyal sistem lain. Seperti yang dijelaskan dalam artikel E saya, instrumen harus selalu menarik data, jangan pernah mendorongnya. Pensinyalan berbasis peristiwa adalah titik kegagalan potensial yang tidak Anda butuhkan.
Untuk menjernihkan keraguan atau keraguan yang mungkin Anda miliki tentang membangun aplikasi terpisah, monitor biasanya independen ( tidak terintegrasi seperti yang dikatakan Wikipedia). Jadi mengatakan monitor Anda "mungkin tidak berjalan" berarti Anda belum memilih untuk membangun monitor yang tidak terintegrasi, yang selalu menyala. Sistem konsumen Anda tidak memodelkan instrumentasi dengan benar, karena mengintegrasikan pemeriksaan dalam prosesnya sendiri.
Pisahkan tanggung jawab ini dan lanjutkan. Putuskan seberapa sering instrumen harus melakukan polling untuk layanan yang dihapus dan polling data dengan timer. Jika Anda menggunakan panggilan API simon-pearson yang disarankan, Anda juga dapat mendeteksi kapan layanan telah ditambahkan. Tentu saja, monitor perlu menyimpan salinan daftar layanan secara lokal sehingga indikator dapat menyimpulkan apa yang telah ditambahkan atau dihapus.
sumber