반응형

 

안녕하세요 유똥입니다.

오늘은 파워쉘 GUI 프로그래밍을 이용하여 나만의 이벤트 뷰어 로그 추출 및 분석 도구에 대하여 포스팅 진행하겠습니다!

 

이벤트 뷰어 로그 분석 도구를 만들기 전에 앞서, 이벤트 뷰어 로그에 관련하여 말씀드리겠습니다.

 

 이벤트 뷰어 로그란?

윈도우에서 컴퓨터의 사용 기록을 이벤트 뷰어라는 곳에 항상 기록을 하게 됩니다.

시스템에서 발생하는 각종 로그를 남기기 때문에 무슨 일이 발생하면 참고하여 오류를 확인하여야 합니다.

 

[ 보안 ] 유효하거나 유효하지 않은 로그온 시도 및 파일 생성, 열람, 삭제 등의 리소스 사용에 관련된 이벤트를 기록합니다. 감사로그 설정을 통해 다양한 보안 이벤트 저장이 가능합니다.

 

이번 장에서는 보안 이벤트 뷰어 로그를 추출하는 GUI 프로그래밍을 만들려고 합니다!

아래의 내용을 토대로 참고 부탁드리겠습니다.

 

 사용방법

기본 UI

내 컴퓨터에 접근이 많이 출력되는 아이피를 추출할 수 있습니다.


 소스코드

 

Add-Type -AssemblyName System.Windows.Forms # 필요한 .net 라이브러리로드 (출력을 억제하기 위해 void 사용)
Add-Type -AssemblyName System.Drawing


$window = New-Object System.Windows.Forms.Form
$window.Width = 1200
$window.Height = 700
$window.Text = '이벤트 뷰어 로그 확인'

$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Multiline = $true
$textBox.Width = 650
$textBox.Height = 450
$textBox.location = new-object system.drawing.point(10,10)
$textBox.Font = "Microsoft Sans Serif,8"
$TextBox.Scrollbars = "both"
$TextBox.WordWrap = $false 
$window.controls.Add($textBox)

$label5 = new-object system.windows.forms.label
$label5.text = "▼"
$label5.Location = New-Object System.Drawing.Size 770,60
$label5.Size = New-Object Drawing.Point 30,10
$label5.hide()
$window.controls.add($label5)

$label6 = new-object system.windows.forms.label
$label6.text = "▼"
$label6.Location = New-Object System.Drawing.Size 770,130
$label6.Size = New-Object Drawing.Point 30,10
$label6.hide()
$window.controls.add($label6)

#$button_click1 = {write-host "hi security"}
$button_click1 = {$textBox.Text = "hi security"}
#$button_click1 = {$label.Text = "hi security"}
$windowButton1 = New-Object System.Windows.Forms.Button
$windowButton1.Location = New-Object System.Drawing.Point(240,500)
$windowButton1.size = New-Object System.Drawing.Size(180,50)
$windowButton1.BackColor ="White"
$windowButton1.ForeColor ="Black"

$windowButton1.Text = "보안"
$windowButton1.Add_Click($button_click1)

$windowButton1.Add_Click({hide1_button})
Function hide1_button(){
$windowButton11.show()
$windowButton12.show()
$windowButton13.show()
$label5.show()
$label6.show()

}

$button_click11 = {
  cd c:\
  Get-EventLog -LogName security | Select-Object -Property EntryType,TimeGenerated,Source,EventID,Category,Message | Export-CSV -Path c:\events.csv -NoClobber -Encoding UTF8
  Import-Csv "C:\events.csv" | Where-Object -Property Message -Like '*원본 네트워크 주소*' > test1.csv
   $CSV = Import-Csv "C:\test1.csv" -Header A | Where {$_ -match "원본 네트워크 주소"}
   $data_array = @{}
   $a = 0

   foreach($LINE in $CSV)
{
  $data_array[$a] = $LINE.A.Substring(12)
  #$data_array = $LINE.A.Substring(12)
  $data_array[$a] | Out-File -Append c:\result.txt
  $a++
}
}

$windowButton11 = New-Object System.Windows.Forms.Button
$windowButton11.Location = New-Object System.Drawing.Point(680,10)
$windowButton11.size = New-Object System.Drawing.Size(180,50)
$windowButton11.BackColor ="White"
$windowButton11.ForeColor ="Black"
$windowButton11.hide()
#$windowButton5.Scrollbars = "both"


$windowButton11.Text = "CSV 파일 설치"
$windowButton11.Add_Click($button_click11)

$button_click12 = {
 $commandResult11 = Get-Content c:\result.txt | Group-Object -noelement | Out-String
 $textBox.Text = $commandResult11
}

$windowButton12 = New-Object System.Windows.Forms.Button
$windowButton12.Location = New-Object System.Drawing.Point(680,80)
$windowButton12.size = New-Object System.Drawing.Size(180,50)
$windowButton12.BackColor ="White"
$windowButton12.ForeColor ="Black"
$windowButton12.hide()

$windowButton12.Text = "이벤트 뷰어 접근 IP"
$windowButton12.Add_Click($button_click12)

$button_click13 = {
 cd c:\
 del result.txt
 del test1.csv
 del events.csv
}

$windowButton13 = New-Object System.Windows.Forms.Button
$windowButton13.Location = New-Object System.Drawing.Point(680,150)
$windowButton13.size = New-Object System.Drawing.Size(180,50)
$windowButton13.BackColor ="White"
$windowButton13.ForeColor ="Black"
$windowButton13.hide()

$windowButton13.Text = "CSV 파일 삭제"
$windowButton13.Add_Click($button_click13)

$window.Controls.Add($windowButton1)
$window.Controls.Add($windowButton11)
$window.Controls.Add($windowButton12)
$window.Controls.Add($windowButton13)
[void]$window.ShowDialog() # 폼 활성화


여기까지 완료되었으면, 이벤트 뷰어 로그 - 보안 분석 관련하여 알아보았습니다.

다음장에는 이어서, 이벤트 뷰어 로그 - 시스템에 관련하여 알아보겠습니다.

 

도움이 되셨다면 구독 좋아요

궁금하신 내용이 있으시면 댓글 부탁드리겠습니다.

 

이벤트뷰어 로그_보안.ps1
0.00MB

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
});