ตรวจสอบคือเมื่อบริการ windows ถูกลบ


9

มีวิธีการตรวจสอบเมื่อบริการ windows ถูกลบหรือไม่ ฉันได้ตรวจสอบบันทึกเหตุการณ์แล้ว แต่ไม่ได้เพิ่มการกระทำที่ถูกลบเท่านั้น

ฉันเชื่อว่าอาจมีวิธีการใช้บันทึกการตรวจสอบ แต่ฉันไม่แน่ใจว่าจะทำอย่างไร

ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

ขอบคุณ

คำตอบ:


6

ในขณะที่ไม่มีร่องรอยการลบบริการในบันทึกเหตุการณ์หรือตรวจสอบสิ่งที่คุณสามารถทำได้คือสร้างแอปคอนโซลขนาดเล็กที่ตรวจพบว่ามีบริการอยู่หรือไม่และแนบแอพนี้เข้าWindows Task Schedulerด้วยกันเพื่อกำหนดเวลาให้ทำงานตามความถี่หรือทริกเกอร์ที่คุณกำหนด สามารถปรับแต่งตามความต้องการของคุณเช่นที่คุณจะได้รับการแจ้งเตือนหากมีการเพิ่มหรือลบบริการฯลฯ

แอปคอนโซลได้รับการออกแบบเช่นนี้ในการเรียกใช้ครั้งแรกมันจะบันทึกบริการทั้งหมดในระบบและในการทำงานที่ตามมามันจะเป็นการติดตามการเปลี่ยนแปลงที่เกิดขึ้นกับบริการผ่านทางservicesRemovedและ servicesAddedด้วยสิ่งนี้เราสามารถตัดสินใจได้ว่า ได้รับการแก้ไข

แอพคอนโซล: ServiceDetector.exe

static void Main(string[] args)
{
    var path = @"C:\AdminLocation\ServicesLog.txt";

    var currentServiceCollection = ServiceController.GetServices().Select(s => s.ServiceName).ToList(); //Queries the most current Services from the machine

    if (!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 Log
    var 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 added
    if (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 requirements
    Console.WriteLine("One or more services has been removed");

}

งานการตั้งเวลา

Windows Start> Task Scheduler> สร้างงานขั้นพื้นฐาน> ตั้งค่าทริกเกอร์> แนบ exe ของคุณ> เสร็จสิ้น


ขอบคุณสำหรับคำแนะนำปัญหานี้คือบริการใด ๆ ที่ฉันไม่รู้จักชื่อบริการที่ถูกลบโดยเฉพาะ
BillyDay

@BillyDay อ่าฉันเข้าใจแล้วอัปเดตคำตอบ
Clint

ฉันคิดว่านี่เป็นวิธีที่ดีที่สุด ฉันจะสร้างบริการที่ทำงานในการเริ่มต้นและวนรอบและตรวจสอบเมื่อมีการลบบริการและเขียนไปยังไฟล์หรือเพิ่มและเหตุการณ์ ขอบคุณ
BillyDay

0

คุณถูกที่การลบบริการ Windows จะทำให้เหตุการณ์ถูกเพิ่มลงในบันทึกเหตุการณ์ของระบบ (ที่มา: /superuser/1238311/how-can-we-detect-if-a-windows-) service-is-delete-is-there-an-an-event-log-id-for-i )

AFAIK ไม่มีนโยบายการตรวจสอบเพื่อตรวจสอบการลบบริการและฉันคิดว่าถ้ามีฉันคิดว่ามันจะถูกระบุไว้ที่นี่: https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/ พื้นฐานการตรวจสอบกระบวนการติดตาม

ฉันคิดว่าการลงคะแนนไม่ServiceController.GetServices()เป็นปัญหาเพราะโปรแกรมของคุณอาจไม่ทำงานเมื่อถอนการติดตั้งบริการ


กระบวนการของฉันอาจไม่ทำงานแน่นอน
BillyDay

ตกลงฉันคิดว่าคุณไม่มีโชคแล้ว @BillyDay
simon-pearson

ทำไมไม่ลองตรวจสอบไฟล์ที่เกี่ยวข้องกับบริการนั้น ... เช่น myService.exe
johnny 5

คุณสามารถตรวจสอบรีจิสทรีเพื่อให้แน่ใจว่ามีบริการอยู่ HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services หากคุณต้องการตรวจสอบให้แน่ใจว่าบริการใดไม่ได้ถูกลบคุณจะต้องเพิ่มแคชของคุณเอง
johnny 5

0

มีหลายวิธีในการสร้างเครื่องมือวัดจนกว่าคุณจะเรียนรู้สิ่งที่ถือเป็นเครื่องมือที่ดี วิธีการจะนำมาเป็นหลักโดยตรงจากรายการวิกิพีเดียของฉันhttps://en.wikipedia.org/wiki/Instrumentation

การประพันธ์ดนตรีวิธีการ

http://www.powersemantics.com/e.html

  • ไม่รวม
  • ข้อมูลหลักเท่านั้น
  • ดึงไม่ผลัก
  • จัดโดยกระบวนการ
  • ไม่ออฟไลน์

วิธีการแก้ไขปัญหาของตัวบ่งชี้การวัดมีอยู่ แต่คุณกำลังติดแนวคิดว่าจะมีเครื่องมือวัด "แบบกด" ตามด้วยระบบอื่นได้อย่างไร ตามที่บทความ E ของฉันอธิบายเครื่องมือควรดึงข้อมูลไม่เคยดัน การส่งสัญญาณที่ขับเคลื่อนด้วยเหตุการณ์เป็นจุดที่อาจเกิดความล้มเหลวที่คุณไม่ต้องการ

ให้ชัดเจนขึ้นไม่กล้าตัดสินใจใด ๆ หรือข้อสงสัยของคุณอาจจะมีเกี่ยวกับการสร้างโปรแกรมแยกต่างหาก, จอภาพมีความเป็นอิสระตามปกติ ( ไม่รวมวิกิพีเดียกล่าวว่า) กระบวนการ ดังนั้นการบอกว่าจอภาพ "อาจไม่ทำงาน" หมายความว่าคุณยังไม่ได้เลือกที่จะสร้างจอภาพที่ไม่ได้ผสานรวมซึ่งเป็นจอภาพที่เปิดอยู่ตลอดเวลา ระบบผู้บริโภคของคุณสร้างแบบจำลองเครื่องมือไม่ถูกต้องเนื่องจากมันรวมการตรวจสอบในกระบวนการของตัวเอง

แยกความรับผิดชอบเหล่านี้และดำเนินการต่อ ตัดสินใจว่าเครื่องมือควรโพลที่เหมาะสมสำหรับการบริการที่ถูกลบและสำรวจข้อมูลด้วยตัวจับเวลา หากคุณใช้การแนะนำการเรียก API simon-pearson คุณสามารถตรวจจับได้เมื่อมีการเพิ่มบริการ แน่นอนจอภาพต้องแคชสำเนาของรายการบริการในเครื่องเพื่อให้ตัวบ่งชี้สามารถอนุมานว่ามีการเพิ่มหรือลบอะไรบ้าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.