๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project

[SCP PROJECT] Windows Event Loger Develop 02

by STUDY SOOHYUN 2021. 3. 1.
728x90

 

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ

 

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์ •๋ง ํ•„์ž๊ฐ€ ์–ด๋ ค์›Œํ•˜๊ณ  ํž˜๋“ค์–ด ํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค.

 

์ •๋ง ์ •๋ง ๋จธ๋ฆฌ๋ฅผ ๊นŠ๊ฒŒ ์จ์•ผ ํ•˜๊ณ  ๋ชจ๋“  ์ง‘์ค‘๋ ฅ์„ ์Ÿ์•„๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ฒ˜์Œ์—๋Š” "ํŒŒ์ผ์ด ์ˆ˜์ • ์‚ญ์ œ ๋ณ€์กฐ ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ์ฐ์–ด๋‚ผ๊นŒ?"  ๊ณ ๋ฏผ ํ–ˆ๋‹ค.

 

์ด ๊ณ ๋ฏผ์„ ๋„ˆ๋ฌด ์˜ค๋ž˜ ํ•˜๋‹ค๋ณด๋‹ˆ

 

ํŒŒ์ผ ์‚ญ์ œ, ์ˆ˜์ • ๋“ฑ๋“ฑ ์œˆ๋„์šฐ ์ด๋ฒคํŠธ ๋กœ๊ฑฐ์— ๋‚จ๋Š”๋‹ค๊ณ  ํžŒํŠธ๋ฅผ ์ฃผ์…จ๋‹ค.

 

๊ทธ๋ž˜์„œ ์ด ์ •๋ณด๋ฅผ ํŒŒ์‹ฑํ•˜๋ฉด ์–ด๋– ๋ƒ๊ณ  ํžŒํŠธ๋ฅผ ์ฃผ์…จ๊ณ , 

 

"์ด๋ฒคํŠธ ๋กœ๊ฑฐ๋Š” ์–ด๋””์„œ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ์ฝ์–ด ์˜ค๋Š”๊ฑฐ์•ผ? ์•„๋‹ˆ๋ฉด ๋กœ๊ฑฐ ์ž์ฒด์—์„œ ๋ฐ–์— ๋ชป ๋ด?"

๋‚˜๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์„œ.."

 

์ด๋Ÿฐ ์‹์œผ๋กœ ํžŒํŠธ ์ฃผ์…จ๋‹ค. ์ •๋ง ์ •๋ง ๊ฐ์‚ฌํ–ˆ๋‹ค.

 

ํ•„์ž๋Š” ์œˆ๋„์šฐ ์ด๋ฒคํŠธ ID์˜ ๋Œ€ํ•˜์—ฌ ๊ณต๋ถ€ํ•˜๊ณ  ์ด๋ฒคํŠธ ๋กœ๊ฑฐ๊ฐ€

 

์–ด๋А ์œ„์น˜์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๋Š”์ง€ ๊ณ„์† ์ฐพ์•„๋ดค๋‹ค.

 

์œˆ๋„์šฐ ์ด๋ฒคํŠธ ๋ทฐ์–ด๊ฐ€ ์–ด๋А ๊ฒฝ๋กœ์— ์žˆ๋Š” ํŒŒ์ผ์„ ๋„์›Œ์ฃผ๋Š”์ง€ ์ฐพ์•„๋ƒˆ๊ณ ,

 

ํŒŒ์ผ์ด ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ๋˜์—ˆ์„ ๋•Œ ๋กœ๊ทธ๋ฅผ ๋น„๊ตํ–ˆ๋‹ค. 

 

๋กœ๊ทธ ๋ถ„์„

 

์œ„ ์‚ฌ์ง„์€ ๋กœ๊ทธ ๋ถ„์„ ํ•œ ์‚ฌ์ง„์ด๋‹ค.

 

ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ ํ•˜๋ฉฐ ์–ด๋–ค ์‹์œผ๋กœ ๋กœ๊ทธ๊ฐ€ ๊ธฐ๋ก๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ž‘์—…์ด๋‹ค.

 

๊ฐ์‚ฌ์ •์ฑ…์„ ๊ถŒํ•œ์„ ์ด๊ฒƒ ์ €๊ฒƒ ์ฒดํฌํ•ด๊ฐ€๋ฉฐ ๋ถ„์„ํ–ˆ๋‹ค.

 

ํŒŒ์‹ฑ ํŒŒ์ผ

 

์‹ค์ œ๋กœ ์ด๋ฒคํŠธ ๋ทฐ์–ด๊ฐ€ ์–ด๋–ค ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•˜๋Š”์ง€ ์ฐพ์•˜๋‹ค.

 

ํ•˜์ง€๋งŒ, ์ด๋ฒคํŠธ ๋กœ๊ทธ๊ฐ€ ๋ฐœ์ƒ๋  ๋•Œ ์ƒํ™ฉ์„ ์ฝ”๋“œ๋กœ ๋„์›Œ์ฃผ๋Š” python ๋ชจ๋“ˆ์„ ์ฐพ์•˜๊ณ ,

 

์šฐ๋ฆฌํŒ€์€ ์ข€ ๋” ์‰ฝ๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

server = 'localhost'
    logtype = 'Security'

    hand = wevt.OpenEventLog(server,logtype)
    flags = wevt.EVENTLOG_FORWARDS_READ|wevt.EVENTLOG_SEQUENTIAL_READ
    total = wevt.GetNumberOfEventLogRecords(hand)

    i = 0
    j = 0
    k = 0

    while True:
        events = wevt.ReadEventLog(hand, flags,0)
        
        if events:
            for evt in events:
                today = datetime.datetime.now().date()
                day_ago = today - datetime.timedelta(days=1)
                if evt.EventID == 4660:
                    i = i + 1  
                    DeleteLog_Notepad()
                    DetailLog_Notepad()
                if evt.EventID == 4663:
                    j = j + 1
                    k = k + 1
                    ReadChangeLog_Notepad()
                    DetailLog_Notepad()

 

์œ„ ์ฝ”๋“œ๋Š” ์ด๋ฒคํŠธ ID๊ฐ€ 4660 / 4663์ผ๋•Œ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•˜๊ฒŒ ํ•˜๋Š” ๋ฉ”์ธ ํ•จ์ˆ˜์ด๋‹ค.

 

import winsound
import win32evtlog as wevt
import datetime
import Evtx.Evtx as evtx
import time
import os
import win32gui
import win32console

def Forder_Check():
    Forder_Check = os.path.exists("SCB_Log")
    if Forder_Check == False:
        dir_path = "./"
        dir_name = "SCB_Log"
        os.mkdir(dir_path + "/" + dir_name + "/")
        DeleteLog_txt()
        ReadChangeLog_txt()
        DetailLog_txt()

def DeleteLog_txt():
    f = open("./SCB_Log\\DeleteLog(4660).txt", "w")
    f.write("\t\t<< Delete Log >>\n\n")
    f.write("*" * 50)
    f.close()

def ReadChangeLog_txt():
    f = open("./SCB_Log\\ReadChangeLog(4663).txt", "w")
    f.write("\t\t<< Read, Change Log >>\n\n")
    f.write("*" * 50)
    f.close()

def DetailLog_txt():
    f = open("./SCB_Log\\DetailLog.txt", "w")
    f.write("\t\t<< Detail Log >>\n\n")
    f.write("*" * 50)
    f.close()

def DeleteLog_Notepad():
    destFile = r"./SCB_Log\\DeleteLog(4660).txt"
    with open(destFile, 'a') as f:
        winsound.PlaySound('sound.wav', winsound.SND_FILENAME)
        print("\nLog Number     : {}".format(i), file=f)
        print("\nEvent ID       : {}".format(evt.EventID), file=f)
        print("\nTime Generated : {}".format(evt.TimeGenerated), file=f)
        f.write('\nํŒŒ์ผ ๋˜๋Š” ํด๋”๊ฐ€ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.\n')
        f.write('\nThe file or folder has been deleted.\n')
        f.write('*' * 50)

def ReadChangeLog_Notepad():
    destFile = r"./SCB_Log\\ReadChangeLog(4663).txt"
    with open(destFile, 'a') as f:
        print("\nLog Number     : {}".format(j), file=f)
        print("\nEvent ID       : {}".format(evt.EventID), file=f)
        print("\nTime Generated : {}".format(evt.TimeGenerated), file=f)
        f.write("\nํŒŒ์ผ ๋ฐ ํด๋”๊ฐ€ ์—ด๋ ธ๊ฑฐ๋‚˜ ์ˆ˜์ •๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.\n")
        f.write("\nThe files and folders may have been opened or modified.\n")
        f.write('*' * 50)

def DetailLog_Notepad():
    destFile = r"./SCB_Log\\DetailLog.txt"
    with open(destFile, 'a') as f:
        print("\nLog Number     : {}".format(k), file=f)
        print("\nEvent Category : {}".format(evt.EventCategory), file = f)
        print("\nEvent Type     : {}".format(evt.EventType), file = f)
        print("\nEvent ID       : {}".format(evt.EventID), file = f)
        print("\nTime Generated : {}".format(evt.TimeGenerated), file = f)
        print("\nSource Name    : {}".format(evt.SourceName), file = f)
        data = evt.StringInserts
        
        if data:
            f.write("\nEvent Data :")
            for msg in data:
                f.write("\n")
                f.write(msg)
                            
        
        f.write('*' * 50)

if __name__ == "__main__":
    Forder_Check()
    win32gui.ShowWindow(win32console.GetConsoleWindow(), 0)
    
    server = 'localhost'
    logtype = 'Security'

    hand = wevt.OpenEventLog(server,logtype)
    flags = wevt.EVENTLOG_FORWARDS_READ|wevt.EVENTLOG_SEQUENTIAL_READ
    total = wevt.GetNumberOfEventLogRecords(hand)

    i = 0
    j = 0
    k = 0

    while True:
        events = wevt.ReadEventLog(hand, flags,0)
        
        if events:
            for evt in events:
                today = datetime.datetime.now().date()
                day_ago = today - datetime.timedelta(days=1)
                if evt.EventID == 4660:
                    i = i + 1  
                    DeleteLog_Notepad()
                    DetailLog_Notepad()
                if evt.EventID == 4663:
                    j = j + 1
                    k = k + 1
                    ReadChangeLog_Notepad()
                    DetailLog_Notepad()

์œ„ ์ฝ”๋“œ๋Š” ์ „์ฒด ๊ฐœ๋ฐœ ์†Œ์Šค์ฝ”๋“œ์ด๋‹ค.

728x90

'Project' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[SCP PROJECT] Windows Event Loger Develop 03  (0) 2021.03.02
[SCP PROJECT] Windows Event Loger Develop 01  (0) 2021.03.01

๋Œ“๊ธ€