윈도우에서는 이벤트 뷰어로 해당 윈도우 계정에서 일어났던 이벤트들을 확인하고 어떤 계정에서 어떤 이벤트가 발생하였는지 추적 확인을 해볼 수 있다. 계정을 생성하고 로그인을 하거나 비밀번호를 잘못 쳐서 로그인에 실패했던 행위까지 하나하나 이벤트 로그에 기록이 된다.
윈도우가 대표적으로 감사하는 항목은 다음과 같다.
이 중에서 내가 보고싶은 특정 이벤트들만 필터링을 하여 볼 수도 있다.
어떤 정책을 감시할것인지는 로컬 보안 정책에서 정할 수 있다.
계정을 임시로 생성하여 로그인 시도를 한 뒤, 이벤트 뷰어에 해당 내용들이 기록이 되는지 간단히 테스트를 진행 해볼 수 있다.
CMD를 열고 계정 관리 명령을 무심코 실행시키면 "액세스가 거부되었습니다."라는 오류가 발생할 수 있는데 계정을 만들기 위해서는 관리자 권한이 필요하므로 반드시 CMD를 관리자 권한으로 열어주어야 한다.
계정 생성은 net user [계정명] [계정 비밀번호] /add 로 만들어준다.
(생성한 계정을 관리자 그룹에 추가하는 것은 net localgroup administrators [계정명] /add 로 진행한다.)

그런다음 의도적으로 로그인 후 비밀번호를 틀리고, 재로그인하여
Win+R > eventvwr.msc> Windows로그 > 보안 에 들어가 4625 이벤트가 발생하였는지 확인 해볼 수 있다.

참고로 4732을 필터링하면 그룹 추가에 대한 이벤트로그도 확인 할 수 있다.

다음 스크립트는 최근 10회의 로그인 실패 이벤트를 출력한다.
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4625
} -MaxEvents 10 | ForEach-Object {
$xml = [xml]$_.ToXml()
$eventData = $xml.Event.EventData.Data
[PSCustomObject]@{
TimeCreated = $_.TimeCreated.ToString("yyyy-MM-dd HH:mm:ss")
TargetUser = ($eventData | Where-Object { $_.Name -eq 'TargetUserName' }).'#text'
LogonType = ($eventData | Where-Object { $_.Name -eq 'LogonType' }).'#text'
IpAddress = ($eventData | Where-Object { $_.Name -eq 'IpAddress' }).'#text'
Status = ($eventData | Where-Object { $_.Name -eq 'Status' }).'#text'
SubStatus = ($eventData | Where-Object { $_.Name -eq 'SubStatus' }).'#text'
}
} | Format-Table -AutoSize

LogonType 은 '로그인 접근 방식'이다.
(2는 키보드로 직접 입력, 3은 네트워크 파일 공유, 10은 원격 데스크톱)
대부분 2로 표기된다.