Bir kullanıcı bir Windows bilgisayarda oturum açtığında 4624 olay kaydı oluşur. Ancak ağ üzerinden bağlanma, uzak masaüstü bağlantısı ve kilitli bilgisayarı açmak da dahil olmak üzere birçok durumda yine 4624 olayı kaydedilir. Oturum açma çeşitleri (Logon Type) olarak şu tabloya bakılabilir:
Logon Type |
Logon Title |
Description |
0 |
System |
Sadece "System" hesabı için kullanılır.
|
2 |
Interactive |
Gerçek oturum açma olayı. RunAs de olabilir. [1]
|
3 |
Network |
Ağ üzerinden oturum açma. Paylaşımlara erişme, IIS (integrated auth), Powershell Remoting [1]
|
4 |
Batch |
Genellikle zamanlanmış görevlere aittir.
|
5 |
Service |
Service Control Manager tarafından başlatılan bir hizmete ait kayıt.
|
7 |
Unlock |
Kilitli bilgisayarın kilidinin açılmasına ait kayıt. |
8 |
NetworkCleartext |
Bir kullanıcı ağ üzerinden oturum açmış, ama parola hash olarak değil, açık şekilde gönderilmiş.
|
9 |
NewCredentials |
Oturum açılırken üretilen token tekrar kullanıldı ama yeni oturum açma bilgileri (kullanıcı adı ve parola) belirtti. RunAs /NetOnly [1]
|
10 |
RemoteInteractive |
Uzak masaüstü, uzaktan yardım, terminal hizmetleri.
|
11 |
CachedInteractive |
Oturum açma sırasında parolayı doğrulamak için etki alanı sunucusuna (DC) danışılmadı, yerel kayıt bilgileri (cache) kullanıldı.
|
12 |
CachedRemoteInteractive |
RemoteInteractive ile aynı, iç izleme için denmiş (?)
|
13 |
CachedUnlock |
Sanıyorum kilit açarken DC'ye danışmadan yerel kayıt bilgilerinin (cache) kullanılması durumu.
|
Etki alanı olmayan bir bilgisayara yapılan oturum açmaları arıyorsak 2 veya 7'ye bakmalıyız. Etki alanına üye bir bilgisayar için ise 2, 11 ve 13 olabilir.
Get-WinEvent ile şu şekilde yapılan bir sorgu ile olay gövdesindeki bütün bilgileri görmek yüksek olasılıkla mümkün olmayacaktır:
PS> Get-WinEvent -Filterhashtable @{LogName="Security";Id=4624}
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
2022-03-10 20:49:38 4624 Bilgi Bir hesapta başarılı bir şekilde oturum açıldı....
Bunun yerine hem oturum açma tipini hesaba katıp, hem de EventProperty nesnesi ile daha güzel bir çıktı üretmek mümkün. 4624 olayı için EventProperty üyeleri şöyle:
0 : Subject User SID
1 : Subject Username
2 : Subject Domain Name
3 : Subject Logon Id
4 : Target User SID
5 : Target Username
6 : Target Domain Name
7 : Target Logon Id
8 : Logon Type
9 : Logon Process Name
10: Authentication Package Name
11: Workstation Name
12: Logon GUID
13: Transmitted Services
14: LmPackageName
15: Keylength
16: ProcessId
17: ProcessName
18: IP Address
19: IP Port
20: Impersonation Level
21: Restricted Admin Mode
22: Target Outbound Username
23: Target Outbound Domain Name
24: Virtual Account
25: Target Linked Logon Id
26: Elevated Token
4771 Pre-Authentication failed hatasının EventProperty nesnesi içindeki 4 numaralı üye Status için şu ayrıntılar verilmiş:
Status | Kerberos RFC tanımı |
Açıklama |
0x1 |
Client's entry in database has expired |
|
0x2 |
Server's entry in database has expired |
|
0x3 |
Requested protocol version # not supported |
|
0x4 |
Client's key encrypted in old master key |
|
0x5 |
Server's key encrypted in old master key |
|
0x6 |
Client not found in Kerberos database |
Bad user name, or new computer/user account has not replicated to DC yet |
0x7 |
Server not found in Kerberos database |
New computer account has not replicated yet or computer is pre-w2k |
0x8 |
Multiple principal entries in database |
|
0x9 |
The client or server has a null key |
administrator should reset the password on the account |
0xA |
Ticket not eligible for postdating |
|
0xB |
Requested start time is later than end time |
|
0xC |
KDC policy rejects request |
Workstation restriction |
0xD |
KDC cannot accommodate requested option |
|
0xE |
KDC has no support for encryption type |
|
0xF |
KDC has no support for checksum type |
|
0x10 |
KDC has no support for padata type |
|
0x11 |
KDC has no support for transited type |
|
0x12 |
Clients credentials have been revoked |
Hesap devre dışı, süresi dolmuş, kilitlenmiş veya oturum açma saatleri dışında. |
0x13 |
Credentials for server have been revoked |
|
0x14 |
TGT has been revoked |
|
0x15 |
Client not yet valid - try again later |
|
0x16 |
Server not yet valid - try again later |
|
0x17 |
Password has expired |
Parolanın süresi dolmuş
|
0x18 |
Pre-authentication information was invalid |
Genellikle yanlış parola
|
0x19 |
Additional pre-authentication required* |
|
0x1F |
Integrity check on decrypted field failed |
|
0x20 |
Ticket expired |
Frequently logged by computer accounts |
0x21 |
Ticket not yet valid |
|
0x21 |
Ticket not yet valid |
|
0x22 |
Request is a replay |
|
0x23 |
The ticket isn't for us |
|
0x24 |
Ticket and authenticator don't match |
|
0x25 |
Clock skew too great |
Workstation’s clock too far out of sync with the DC’s |
0x26 |
Incorrect net address |
IP address change? |
0x27 |
Protocol version mismatch |
|
0x28 |
Invalid msg type |
|
0x29 |
Message stream modified |
|
0x2A |
Message out of order |
|
0x2C |
Specified version of key is not available |
|
0x2D |
Service key not available |
|
0x2E |
Mutual authentication failed |
may be a memory allocation failure |
0x2F |
Incorrect message direction |
|
0x30 |
Alternative authentication method required* |
|
0x31 |
Incorrect sequence number in message |
|
0x32 |
Inappropriate type of checksum in message |
|
0x3C |
Generic error (description in e-text) |
|
0x3D |
Field is too long for this implementation |
|
Bunları kullanarak daha şekilli bir çıktı için şöyle bir komut mümkün:
PS> Get-WinEvent -FilterHashtable @{LogName="Security";Id=4624} |
Where-Object {$_.properties[8].Value -eq 2} |
Select-Object TimeCreated, Id, @{Name="Username";Expression={$_.properties[5].Value}}, @{Name="LogonProcName";Expression={$_.properties[9].Value}}, @{Name="AuthPkgName";Expression={$_.properties[10].Value}}, @{Name="IPAddress";Expression={$_.properties[18].Value}}
Bunun sonucunda çıktı şöyle olur:
TimeCreated Id Username LogonProcName AuthPkgName IPAddress
----------- -- -------- ------------- ----------- ---------
2022-03-10 19:53:21 4624 user1 Advapi Negotiate -
2022-03-10 19:53:21 4624 user2 Advapi Negotiate -
2022-03-10 19:53:21 4624 user2 Advapi Negotiate -
2022-03-10 19:53:14 4624 user4 User32 Negotiate 127.0.0.1
2022-03-10 19:53:14 4624 user5 User32 Negotiate 127.0.0.1
2023-12-09 Düzeltme: Burada
Where-Object {$_.properties[8].Value -eq 2}
ile aslında bütün kullanıcıların yerel olduğunu varsaydım. Ama Windows 8 ve sonrasında artık kullanıcı hesapları Hotmail/Outlook gibi internet tabanlı olabildiği için bu kısıtlama onları göstermeyecektir. Ayrıca UMFD (user mode font driver) ve DWM (desktop window manager) hesaplarını da listelemek kafa karıştırabilir. Bunun için belki Where koşulu Authentication Package Name'e göre (Properties[9]) yapılabilir (alan sonunda bir boşluk karakteri var, bu sebeple -like işleci kullandım):
Where-Object {$_.properties[9].Value -like "User32*"}
Oturum kapatma olayı 4634, oturum açma hatası (yanlış parola/kullanıcı adı) 4625 olayları ile sorgulanabilir. Oturum kapatma için EventProperties nesnesinde 5 alan vardır. 4625'te ise 4624'tekine benzer sayı ve nitelikte alanlar vardır.
---
[1] https://medium.com/@pentesttas/windows-events-sysmon-visualization-using-neo4j-part-2-d4c2fd3c9413