دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
دانشنامه مارال هاست دانشنامه مارال هاست
دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
امنیت
  • Folder icon closed Folder open iconCIA Triad چیست؟ آشنایی با سه اصل اساسی امنیت اطلاعات
  • Folder icon closed Folder open iconAttack Surface چیست؟ آشنایی با سطح حمله در امنیت سایبری
  • Folder icon closed Folder open iconThreat چیست؟ آشنایی با مفهوم تهدید در امنیت سایبری
  • Folder icon closed Folder open iconVulnerability چیست؟ آشنایی با آسیب‌پذیری در امنیت سایبری
  • Folder icon closed Folder open iconExploit چیست؟ آشنایی با مفهوم اکسپلویت در امنیت سایبری
  • Folder icon closed Folder open iconRisk چیست؟ آشنایی با مفهوم ریسک در امنیت سایبری
  • Folder icon closed Folder open iconCVE چیست؟ آشنایی با سیستم شماره‌گذاری آسیب‌پذیری‌های امنیتی
  • Folder icon closed Folder open iconCVSS چیست؟ آشنایی با سیستم امتیازدهی آسیب‌پذیری‌های امنیتی
  • Folder icon closed Folder open iconبعد از خرید سرور مجازی لینوکس(VPS)، اولین کارهایی که باید انجام دهید
  • Folder icon closed Folder open iconآموزش تغییر Hostname سرور در لینوکس
  • Folder icon closed Folder open iconآموزش تنظیم صحیح Timezone و NTP در لینوکس
  • Folder icon closed Folder open iconآموزش بروزرسانی کامل سیستم‌عامل لینوکس همه توزیع ها
  • Folder icon closed Folder open iconآموزش ساخت کاربر جدید و حذف استفاده روزمره از Root در لینوکس
  • Folder icon closed Folder open iconآموزش تنظیم صحیح sudo در لینوکس
  • Folder icon closed Folder open iconآموزش تنظیم Banner ورود به SSH در لینوکس
  • Folder icon closed Folder open iconآموزش مدیریت Password Policy در لینوکس
  • Folder icon closed Folder open iconآموزش نصب و راه‌اندازی SSH Key Authentication در لینوکس
  • Folder icon closed Folder open iconآموزش غیرفعال کردن ورود مستقیم Root از طریق SSH
  • Folder icon closed Folder open iconتغییر پورت SSH؛ آیا واقعاً امنیت سرور را افزایش می‌دهد؟
  • Folder icon closed Folder open iconآموزش محدود کردن کاربران مجاز SSH در لینوکس
  • Folder icon closed Folder open iconآموزش محدود کردن دسترسی SSH بر اساس IP در لینوکس
  • Folder icon closed Folder open iconآموزش تنظیم LoginGraceTime در SSH؛ کاهش زمان انتظار برای احراز هویت
  • Folder icon closed Folder open iconآموزش تنظیم MaxAuthTries در SSH؛ محدود کردن تعداد تلاش‌های ورود ناموفق
  • Folder icon closed Folder open iconآموزش بررسی لاگ‌های SSH در لینوکس
  • Folder icon closed Folder open iconآموزش عیب‌یابی مشکلات SSH در لینوکس
  • Folder icon closed Folder open iconآموزش کامل UFW در لینوکس؛ راه‌اندازی، مدیریت و ایمن‌سازی فایروال سرور
  • Folder icon closed Folder open iconnftables چیست؟ آشنایی با فایروال نسل جدید لینوکس و جایگزین iptables
  • Folder icon closed Folder open iconآموزش کامل Firewalld در لینوکس
  • Folder icon closed Folder open iconآموزش کامل ConfigServer Security & Firewall (CSF)
  • Folder icon closed Folder open iconآموزش مشاهده Loginهای اخیر در لینوکس
  • Folder icon closed Folder open iconآموزش بررسی پردازش‌های مشکوک در لینوکس
  • Folder icon closed Folder open iconآموزش بررسی Cron Jobهای مشکوک در لینوکس
  • Folder icon closed Folder open iconآموزش کامل Fail2Ban در لینوکس؛ نصب و راه‌اندازی
  • Folder icon closed Folder open iconآموزش نصب RKHunter در لینوکس
  • Folder icon closed Folder open iconآموزش نصب Chkrootkit در لینوکس
  • Folder icon closed Folder open iconآموزش اسکن سرور با RKHunter و Chkrootkit
  • Folder icon closed Folder open iconآموزش نصب، پیکربندی و اسکن سرور با AIDE در لینوکس
  • Folder icon closed Folder open iconآموزش نصب، پیکربندی و استفاده از Auditd در لینوکس
  • Folder icon closed Folder open iconآموزش نصب، اسکن و تحلیل امنیت سرور با Lynis در لینوکس
  • Folder icon closed Folder open iconآموزش نصب، بروزرسانی و اسکن سرور با ClamAV در لینوکس
  • Folder icon closed Folder open iconآموزش Hardening وب‌سرور Nginx
  • Folder icon closed Folder open iconآموزش Hardening وب‌سرور Apache
  • Folder icon closed Folder open iconآموزش Hardening PHP
  • Folder icon closed Folder open iconآموزش Hardening پایگاه داده MySQL
  • Folder icon closed Folder open iconآموزش Hardening سرویس Redis
  • Folder icon closed Folder open iconآموزش Hardening سرویس Docker
  • Folder icon closed Folder open iconآموزش Hardening سرویس FTP
  • Folder icon closed Folder open iconشناسایی Backdoor و ارتباطات مخفی در سرور لینوکس
  • Folder icon closed Folder open iconاسکن آسیب‌پذیری با Nmap NSE
  • Folder icon closed Folder open iconآموزش Socat
  • Folder icon closed Folder open iconآموزش WhatWeb در لینوکس
  • Folder icon closed Folder open iconشناسایی تکنولوژی سایت‌ها
  • Folder icon closed Folder open iconآموزش Amass برای کشف Subdomain
  • Folder icon closed Folder open iconشناسایی Reverse Shell در لینوکس
  • Folder icon closed Folder open iconپیدا کردن فایل‌های SUID مشکوک
  • Folder icon closed Folder open iconبررسی کاربران Administrator مخفی در ویندوز
  • Folder icon closed Folder open iconبررسی PowerShell History
  • Folder icon closed Folder open iconشناسایی Reverse Shell در ویندوز
  • Folder icon closed Folder open iconبررسی Persistence در لینوکس
  • Folder icon closed Folder open iconبررسی Persistence در ویندوز
  • Folder icon closed Folder open iconشناسایی Web Shell در سرورهای لینوکس
  • Folder icon closed Folder open iconبررسی فایل‌های تغییرکرده مشکوک در Linux
  • Folder icon closed Folder open iconتحلیل Failed Login در Windows Server
  • Folder icon closed Folder open iconتحلیل لاگ‌های SSH برای شناسایی Brute Force
  • Folder icon closed Folder open iconبررسی SSH Keyهای مشکوک در لینوکس
  • Folder icon closed Folder open iconشناسایی DNS Requestهای مشکوک در سرور
  • Folder icon closed Folder open iconبررسی فایل‌های Log حذف‌شده یا دستکاری‌شده در Linux و Windows
  • Folder icon closed Folder open iconبررسی تغییرات Firewall در Linux و Windows
امنیت

تحلیل Failed Login در Windows Server

تحلیل Failed Login در Windows Server

مقدمه

یکی از مهم‌ترین منابع برای شناسایی تلاش‌های ورود غیرمجاز، حملات Brute Force، Password Spraying و مشکلات Authentication در Windows Server، بررسی Failed Loginها در Security Event Log است.

Windows برای Login ناموفق معمولاً Event:

4625

را ثبت می‌کند.

این Event می‌تواند اطلاعاتی مانند موارد زیر در اختیار ما قرار دهد:

Username
Domain
Logon Type
Source IP
Source Port
Workstation Name
Authentication Package
Failure Reason
Status
Sub Status
Caller Process

Microsoft اعلام می‌کند Event ID 4625 برای Logon ناموفق روی همان سیستمی ثبت می‌شود که تلاش برای Login روی آن انجام شده است.

در این مقاله یاد می‌گیریم چگونه Failed Loginهای Windows Server را با استفاده از Event Viewer و PowerShell تحلیل کنیم، Source IP و Usernameهای هدف را پیدا کنیم، نوع Login را تشخیص دهیم و الگوهای مشکوکی مانند Brute Force را از خطاهای عادی Serviceها یا کاربران جدا کنیم.


Event ID 4625 چیست؟

Event:

4625

با عنوان:

An account failed to log on

زمانی ثبت می‌شود که Windows نتواند یک Logon Request را با موفقیت انجام دهد.

برای مثال ممکن است علت یکی از موارد زیر باشد:

Wrong Password
Unknown Username
Disabled Account
Locked Account
Expired Account
Unauthorized Workstation
Missing Logon Right

بنابراین وجود Event 4625 به‌تنهایی به معنی حمله نیست.


مشاهده Failed Login در Event Viewer

اجرا کنید:

eventvwr.msc

سپس مسیر زیر را باز کنید:

Event Viewer
   |
   └── Windows Logs
          |
          └── Security

از سمت راست:

Filter Current Log

را انتخاب کنید.

در قسمت Event ID وارد کنید:

4625

اکنون Failed Loginهای ثبت‌شده نمایش داده می‌شوند.


مشاهده Event 4625 با PowerShell

روش سریع‌تر:

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4625
} -MaxEvents 50

برای خروجی خلاصه‌تر:

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4625
} -MaxEvents 50 |
Select-Object TimeCreated,Id,Message

Failed Loginهای 24 ساعت اخیر

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4625
    StartTime=(Get-Date).AddHours(-24)
}

برای 7 روز اخیر:

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4625
    StartTime=(Get-Date).AddDays(-7)
}

در Serverهای پرترافیک بهتر است همیشه StartTime مشخص شود تا حجم Query محدود شود.


مهم‌ترین بخش‌های Event 4625

داخل Event معمولاً چند قسمت اصلی وجود دارد.

Account For Which Logon Failed

این بخش مشخص می‌کند Login برای چه Accountی ناموفق بوده است.

فیلدهای مهم:

Account Name
Account Domain

مثلاً:

Account Name: Administrator
Account Domain: SERVER01

Network Information

برای Loginهای Remote یکی از مهم‌ترین قسمت‌ها:

Network Information

است.

فیلدهای مهم:

Workstation Name
Source Network Address
Source Port

Microsoft توضیح می‌دهد Source Network Address آدرس IP سیستمی است که Logon Request از آن آمده است؛ 127.0.0.1 و ::1 نیز به Localhost اشاره می‌کنند.

مثلاً:

Source Network Address: 203.0.113.50
Source Port: 52144

این IP یکی از مهم‌ترین سرنخ‌ها برای Investigation است.


Process Information

Event 4625 ممکن است اطلاعات Process ایجادکننده درخواست Login را نیز نمایش دهد:

Caller Process ID
Caller Process Name

Microsoft اشاره می‌کند Process ID این Event را می‌توان با Process Creation Event مانند 4688 Correlate کرد.

برای مثال:

Caller Process Name:
C:\Windows\System32\winlogon.exe

یا ممکن است Application یا Service دیگری درخواست Authentication ایجاد کرده باشد.


Logon Type چیست؟

یکی از مهم‌ترین فیلدهای Event 4625:

Logon Type

است.

Logon Type مشخص می‌کند Authentication در چه Contextی انجام شده است.

Microsoft مقادیر اصلی را به این صورت تعریف می‌کند:

2  = Interactive
3  = Network
4  = Batch
5  = Service
7  = Unlock
8  = NetworkCleartext
9  = NewCredentials
10 = RemoteInteractive
11 = CachedInteractive

Logon Type 2

Logon Type 2

یعنی:

Interactive Login

معمولاً Login مستقیم روی Console سیستم.

مثلاً:

Username / Password
        |
        v
Windows Logon Screen

روی Windows Server فیزیکی یا VM Console می‌تواند دیده شود.


Logon Type 3

Logon Type 3

یعنی:

Network Logon

این نوع Login بسیار رایج است.

ممکن است مربوط به:

SMB
Shared Folder
Network Resource
Application Authentication
Remote Service

باشد.

بنابراین تعداد زیاد Type 3 الزاماً به معنی Brute Force روی RDP نیست.


Logon Type 4

Logon Type 4

مربوط به:

Batch

است.

برای مثال بعضی Scheduled Taskها ممکن است از این Logon Type استفاده کنند.

اگر Password یک Service Account تغییر کرده اما Scheduled Task هنوز Password قدیمی را دارد، ممکن است Failed Loginهای تکراری مشاهده شوند.


Logon Type 5

Logon Type 5

مربوط به:

Service

است.

اگر Service با Credential اشتباه Start شود، ممکن است Failed Login تولید کند.

مثلاً:

Service Account Password Changed
            |
            v
Service Still Uses Old Password
            |
            v
Repeated 4625

این وضعیت می‌تواند ظاهراً شبیه Brute Force باشد، اما منبع آن یک Service داخلی است.


Logon Type 10

یکی از مهم‌ترین Logon Typeها برای Windows Server:

10

است.

Microsoft آن را:

RemoteInteractive

تعریف می‌کند و Remote Desktop / Terminal Services از نمونه‌های اصلی آن هستند.

اگر روی Server اینترنتی تعداد زیادی Event 4625 با:

Logon Type: 10

و Source IPهای ناشناس مشاهده کنید، باید RDP Exposure و تلاش‌های Authentication بررسی شوند.


Logon Type 11

11

مربوط به:

CachedInteractive

است.

یعنی Login با Credentialهایی که قبلاً روی سیستم Cache شده‌اند و برای Validate کردن آنها Domain Controller مستقیماً Contact نشده است.


Failure Reason را بررسی کنیم

Event 4625 دارای بخشی به نام:

Failure Information

است.

در آن معمولاً می‌بینیم:

Failure Reason
Status
Sub Status

Status و Sub Status برای مشخص کردن علت Authentication Failure اهمیت زیادی دارند.


Status Codeهای مهم

برخی Status Codeهای مهم:

0xC0000064
Username does not exist

تعداد زیاد این خطا با Usernameهای مختلف می‌تواند با Account Enumeration مرتبط باشد.


Password اشتباه

0xC000006A

معمولاً نشان‌دهنده:

Bad Password

است.

Microsoft توصیه می‌کند تکرار زیاد این Error، به‌خصوص برای Accountهای مهم یا Service Accountها بررسی شود.


خطای عمومی Authentication

0xC000006D

یک Generic Logon Failure است و معمولاً به Username یا Authentication Information نامعتبر مربوط می‌شود.


Account Disabled

0xC0000072

یعنی تلاش برای Login به Accountی که Disabled شده است.

اگر روی Account غیرفعالی که نباید استفاده شود Failed Login مشاهده می‌کنید، Source آن را بررسی کنید.


Logon Type مجاز نیست

0xC000015B

یعنی Account اجازه استفاده از Logon Type موردنظر را روی این سیستم ندارد.

مثلاً ممکن است Policy اجازه Remote Login به User را نداده باشد.

این وضعیت الزاماً Attack نیست.


Account Expired

0xC0000193

نشان می‌دهد Account منقضی شده است.

ممکن است Application یا Service هنوز با Account قدیمی Authentication انجام دهد.


Account Locked

0xC0000234

معمولاً نشان‌دهنده Lock شدن Account است.

در این حالت باید Event:

4740

نیز بررسی شود.


Event ID 4740

Event:

4740

با عنوان:

A user account was locked out

زمانی ایجاد می‌شود که Account Lockout رخ دهد.

برای مشاهده:

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4740
} -MaxEvents 50

Caller Computer Name در Event 4740

یکی از فیلدهای مهم 4740:

Caller Computer Name

است.

Microsoft توضیح می‌دهد این فیلد نام سیستمی را نشان می‌دهد که Logon Attempt منجر به Account Lockout از آن دریافت شده است.

مثلاً:

Account Name:
admin

Caller Computer Name:
APP-SERVER-02

این اطلاعات می‌تواند مشخص کند Password قدیمی در کدام Server یا Application استفاده می‌شود.


بررسی Failed Loginهای یک User خاص

مثلاً برای:

Administrator
Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4625
    StartTime=(Get-Date).AddDays(-1)
} |
Where-Object {
    $_.Message -match 'Administrator'
}

برای Investigation اولیه مناسب است، اما چون Search روی Message انجام می‌شود در حجم بالا روش بهینه‌ای نیست.


Extract کردن اطلاعات Event 4625 با PowerShell

برای تحلیل حرفه‌ای بهتر است XML Event را Parse کنیم.

$Events = Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4625
    StartTime=(Get-Date).AddHours(-24)
}

$Results = foreach ($Event in $Events) {

    $Xml = [xml]$Event.ToXml()

    $Data = @{}

    foreach ($Item in $Xml.Event.EventData.Data) {
        $Data[$Item.Name] = $Item.'#text'
    }

    [PSCustomObject]@{
        TimeCreated     = $Event.TimeCreated
        UserName        = $Data.TargetUserName
        Domain          = $Data.TargetDomainName
        LogonType       = $Data.LogonType
        SourceIP        = $Data.IpAddress
        SourcePort      = $Data.IpPort
        Workstation     = $Data.WorkstationName
        Status          = $Data.Status
        SubStatus       = $Data.SubStatus
        ProcessName     = $Data.ProcessName
        AuthPackage     = $Data.AuthenticationPackageName
    }
}

$Results

اکنون به‌جای Message طولانی خروجی مرتب داریم.


خروجی را به Table تبدیل کنیم

$Results |
Format-Table `
TimeCreated,
UserName,
LogonType,
SourceIP,
Status `
-AutoSize

مثلاً:

TimeCreated          UserName       LogonType SourceIP       Status
-----------          --------       --------- --------       ------
09/26/2026 02:10     Administrator  10        203.0.113.50   0xc000006a
09/26/2026 02:10     Administrator  10        203.0.113.50   0xc000006a
09/26/2026 02:11     admin          10        203.0.113.50   0xc0000064

این خروجی برای شناسایی Pattern بسیار مناسب‌تر است.


بیشترین Source IPها را پیدا کنیم

$Results |
Where-Object {
    $_.SourceIP -and
    $_.SourceIP -ne '-' -and
    $_.SourceIP -ne '127.0.0.1' -and
    $_.SourceIP -ne '::1'
} |
Group-Object SourceIP |
Sort-Object Count -Descending |
Select-Object Count,Name

نمونه:

Count Name
----- ----
  842 203.0.113.50
  216 198.51.100.22
   14 10.10.10.25

اکنون مشخص می‌شود کدام IP بیشترین Failed Login را ایجاد کرده است.


بیشترین Usernameهای هدف

$Results |
Group-Object UserName |
Sort-Object Count -Descending |
Select-Object Count,Name

مثلاً:

Count Name
----- ----
  510 Administrator
  285 admin
  176 support
  122 guest

این الگو می‌تواند نشان دهد یک Source در حال امتحان کردن Usernameهای متداول است.


ترکیب IP و Username

برای Investigation بهتر است ترکیب:

Source IP
+
Username

را بررسی کنیم.

$Results |
Group-Object SourceIP,UserName |
Sort-Object Count -Descending |
Select-Object Count,Name

اگر خروجی:

900  203.0.113.50, Administrator

باشد، ممکن است یک Password Guessing Pattern وجود داشته باشد.


چه Patternی می‌تواند Brute Force باشد؟

الگوی رایج:

One Source IP
       |
       v
One Username
       |
       v
Hundreds of Password Attempts

مثلاً:

203.0.113.50
     |
     +-- Administrator
     +-- Administrator
     +-- Administrator
     +-- Administrator

این Pattern می‌تواند با Password Brute Force سازگار باشد.


Password Spraying چه شکلی دارد؟

Pattern متفاوت:

One Source IP
       |
       +--> User01
       +--> User02
       +--> User03
       +--> User04
       +--> Administrator

یعنی تعداد زیادی Account با تعداد کمی Password امتحان می‌شوند.

این رفتار می‌تواند با Password Spraying سازگار باشد.


Username Enumeration

اگر تعداد زیادی Error:

0xC0000064

برای Usernameهای مختلف مشاهده شود، ممکن است Attempt برای پیدا کردن Usernameهای معتبر وجود داشته باشد.

Microsoft نیز تکرار این Status Code را به‌عنوان الگویی که می‌تواند با User Enumeration مرتبط باشد مطرح می‌کند.


چند IP برای یک Account

Pattern دیگر:

Administrator
    |
    +--> IP A
    +--> IP B
    +--> IP C
    +--> IP D

ممکن است:

  • Distributed Brute Force
  • Botnet Activity
  • چند Administrator واقعی
  • Monitoring یا Automation اشتباه

باشد.

Context اهمیت زیادی دارد.


Failed Login سپس Successful Login

یکی از مهم‌ترین Correlationها این است:

Multiple 4625
      |
      v
4624 Success

Event:

4624

زمانی ثبت می‌شود که یک Logon Session با موفقیت ایجاد شود.

بنابراین باید بررسی کنیم آیا بعد از تعداد زیادی Failed Login، همان Account از همان Source موفق به Login شده است یا خیر.


بررسی Successful Loginها

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4624
    StartTime=(Get-Date).AddHours(-24)
}

برای RDP می‌توانید Logon Type را نیز بررسی کنید.

Microsoft Logon Type 10 را RemoteInteractive معرفی می‌کند.


مهم‌ترین Pattern امنیتی

برای مثال:

02:10  4625  Administrator  203.0.113.50
02:10  4625  Administrator  203.0.113.50
02:10  4625  Administrator  203.0.113.50
02:11  4625  Administrator  203.0.113.50
02:12  4624  Administrator  203.0.113.50

این Pattern باید جدی بررسی شود.

اما حتی این حالت نیز به‌تنهایی اثبات Compromise نیست؛ ممکن است Administrator واقعی چند بار Password را اشتباه وارد کرده باشد.


بعد از Successful Login چه چیزی را بررسی کنیم؟

اگر Login مشکوک موفق شده است، Timeline بعد از Event 4624 را بررسی کنید.

به‌خصوص:

4672
4688
4697
4698
4720
4732

برای مثال:

4672 = Special Privileges Assigned
4688 = Process Created
4697 = Service Installed
4698 = Scheduled Task Created
4720 = User Created
4732 = Member Added to Local Group

این Eventها می‌توانند مشخص کنند بعد از Login چه اتفاقی افتاده است.


بررسی Event 4672

Accountهای Administrator معمولاً ممکن است Event:

4672

داشته باشند.

Microsoft این Event را برای Assignment شدن Privilegeهای ویژه به یک Logon Session معرفی می‌کند.

اگر Login مشکوک با 4624 مشاهده شد، Eventهای 4672 نزدیک همان زمان را نیز بررسی کنید.


Event ID 4776 چیست؟

اگر Authentication از NTLM استفاده کند، Event:

4776

بسیار مفید است.

Microsoft توضیح می‌دهد این Event هنگام Credential Validation با NTLM ثبت می‌شود. برای Domain Account، Domain Controller مرجع Credential است؛ برای Local Account، خود Computer مرجع است.


مشاهده Event 4776

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4776
} -MaxEvents 100

فیلدهای مهم:

Logon Account
Source Workstation
Error Code

محدودیت مهم 4776

Event 4776 معمولاً:

Source Workstation

را ارائه می‌دهد، نه لزوماً Source IP.

Microsoft نیز تأکید می‌کند این Event برای NTLM منبع Authentication را با Computer Name نشان می‌دهد و Destination Computer را در Event ارائه نمی‌کند.

بنابراین برای Source IP معمولاً Event 4625 اطلاعات مستقیم‌تری دارد.


Failed Login از Service Account

فرض کنید:

UserName:
SQLService

Source IP:
10.10.10.25

Logon Type:
5

هر چند دقیقه تکرار می‌شود.

این Pattern بیشتر به:

Service using old credentials

شبیه است تا یک Brute Force اینترنتی.

در چنین شرایطی Serviceهای سیستم:

Get-CimInstance Win32_Service |
Where-Object {
    $_.StartName -match 'SQLService'
} |
Select-Object Name,State,StartName,PathName

را بررسی کنید.


Scheduled Task با Password قدیمی

اگر Logon Type:

4

مشاهده می‌شود، Scheduled Taskها را نیز بررسی کنید.

Get-ScheduledTask |
Where-Object {
    $_.Principal.UserId -match 'UserName'
} |
Select-Object TaskName,TaskPath,State

Password قدیمی در Task می‌تواند Failed Loginهای مداوم ایجاد کند.


RDP Failed Loginها

اگر Server مستقیماً RDP را از اینترنت دریافت می‌کند، Eventهای:

4625

با:

Logon Type 10

اهمیت زیادی دارند.

مثلاً:

Account Name:
Administrator

Logon Type:
10

Source Network Address:
203.0.113.50

این Pattern می‌تواند نشان‌دهنده تلاش Remote Authentication باشد.


RDP Sessionهای فعلی را بررسی کنیم

quser

یا:

query user

مثلاً:

USERNAME        SESSIONNAME    ID   STATE
Administrator   rdp-tcp#4      2    Active

اگر بعد از Login مشکوک Session فعال مشاهده شد، Investigation باید ادامه پیدا کند.


Failed Login از Localhost

اگر:

Source Network Address:
127.0.0.1

یا:

::1

است، درخواست از Local System آمده است.

در این حالت بیشتر باید دنبال مواردی مانند:

Service
Scheduled Task
Application
Script
Local Process

باشید.


Caller Process را بررسی کنیم

فرض کنید Event 4625 نشان دهد:

Caller Process ID:
0x1f40

ابتدا مقدار Hex را به Decimal تبدیل کنید:

[Convert]::ToInt32("1f40",16)

سپس Process را بررسی کنید:

Get-Process -Id 8000

البته Process ممکن است دیگر در حال اجرا نباشد.

در این حالت Event:

4688

می‌تواند برای Correlation Process Creation مفید باشد. Microsoft نیز همین Correlation را برای Process ID در Event 4625 پیشنهاد می‌کند.


Authentication Package را بررسی کنیم

فیلد:

Authentication Package

ممکن است مقادیری مانند:

NTLM
Kerberos
Negotiate

داشته باشد.

Negotiate معمولاً بین Kerberos و NTLM انتخاب می‌کند.

در Domain Environment نوع Authentication می‌تواند برای Troubleshooting و Security Investigation مفید باشد.


Audit Policy را بررسی کنیم

اگر Eventهای Failed Login وجود ندارند، ممکن است Audit Policy مناسب فعال نباشد.

اجرا کنید:

auditpol /get /subcategory:"Logon"

همچنین:

auditpol /get /subcategory:"Credential Validation"

برای مشاهده تمام Policyها:

auditpol /get /category:*

Microsoft تنظیمات Advanced Audit Policy را در مسیر:

Computer Configuration
  → Windows Settings
    → Security Settings
      → Advanced Audit Policy Configuration

ارائه می‌کند و بخش Logon/Logoff برای Success و Failure Loginها استفاده می‌شود.


فعال بودن Failure Auditing مهم است

برای تحلیل Failed Login باید Audit Logon به شکلی تنظیم شده باشد که:

Failure

را ثبت کند.

در محیط Domain معمولاً بهتر است تنظیمات از Group Policy مدیریت شوند.

قبل از تغییر Audit Policy در Production اثر آن بر حجم Logها را بررسی کنید.


بیشترین Failed Login در هر ساعت

برای پیدا کردن Spike:

$Results |
Group-Object {
    $_.TimeCreated.ToString("yyyy-MM-dd HH")
} |
Sort-Object Name |
Select-Object Name,Count

مثلاً:

2026-09-26 01    12
2026-09-26 02   948
2026-09-26 03    21

یک افزایش ناگهانی در ساعت 02 می‌تواند نقطه شروع Investigation باشد.


Failed Login فقط با Logon Type 10

$Results |
Where-Object {
    $_.LogonType -eq '10'
}

برای گروه‌بندی Source IPها:

$Results |
Where-Object {
    $_.LogonType -eq '10'
} |
Group-Object SourceIP |
Sort-Object Count -Descending |
Select-Object Count,Name

فقط Bad Passwordها

$Results |
Where-Object {
    $_.Status -eq '0xc000006a' -or
    $_.SubStatus -eq '0xc000006a'
}

Usernameهای ناموجود

$Results |
Where-Object {
    $_.Status -eq '0xc0000064' -or
    $_.SubStatus -eq '0xc0000064'
}

اگر Usernameهای متنوع زیادی مشاهده شود، احتمال Account Enumeration را بررسی کنید.


خروجی Failed Login را Export کنیم

برای Incident Response:

$Results |
Export-Csv `
C:\IR\failed-logins.csv `
-NoTypeInformation

اکنون می‌توان داده را در Excel، SIEM یا ابزار تحلیلی بررسی کرد.


Security Log را Export کنیم

برای حفظ Evidence می‌توان Security Log را نیز Export کرد.

مثلاً با wevtutil:

wevtutil epl Security C:\IR\Security.evtx

بهتر است Evidence قبل از پاک‌سازی یا تغییر سیستم حفظ شود.


یک Workflow عملی برای تحلیل Failed Login

مرحله اول: Eventهای 24 ساعت اخیر

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4625
    StartTime=(Get-Date).AddHours(-24)
}

مرحله دوم: استخراج Username و IP

از Script XML Parsing بخش قبل استفاده کنید و $Results بسازید.


مرحله سوم: Top IPها

$Results |
Group-Object SourceIP |
Sort-Object Count -Descending |
Select Count,Name

مرحله چهارم: Top Usernameها

$Results |
Group-Object UserName |
Sort-Object Count -Descending |
Select Count,Name

مرحله پنجم: Logon Type

$Results |
Group-Object LogonType |
Sort-Object Count -Descending |
Select Count,Name

مرحله ششم: Failure Status

$Results |
Group-Object Status |
Sort-Object Count -Descending |
Select Count,Name

مرحله هفتم: Account Lockout

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4740
    StartTime=(Get-Date).AddHours(-24)
}

مرحله هشتم: Successful Login

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4624
    StartTime=(Get-Date).AddHours(-24)
}

مرحله نهم: NTLM Validation

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4776
    StartTime=(Get-Date).AddHours(-24)
}

مرحله دهم: بررسی Timeline بعد از Login موفق

Eventهای:

4672
4688
4697
4698
4720
4732

را در همان بازه زمانی بررسی کنید.


یک Audit سریع

Write-Host "`n=== FAILED LOGINS ==="

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4625
    StartTime=(Get-Date).AddHours(-24)
} -ErrorAction SilentlyContinue |
Select-Object TimeCreated,Id,Message


Write-Host "`n=== ACCOUNT LOCKOUTS ==="

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4740
    StartTime=(Get-Date).AddHours(-24)
} -ErrorAction SilentlyContinue |
Select-Object TimeCreated,Id,Message


Write-Host "`n=== SUCCESSFUL LOGINS ==="

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4624
    StartTime=(Get-Date).AddHours(-24)
} -ErrorAction SilentlyContinue |
Select-Object TimeCreated,Id,Message

این Commandها تغییری روی Server ایجاد نمی‌کنند.


چه Patternهایی مهم‌تر هستند؟

تعداد زیادی Failed Login برای یک Account

One IP
+
One Account
+
Hundreds of Failures

می‌تواند با Brute Force سازگار باشد.


تعداد زیادی Username از یک Source

One IP
+
Many Usernames

می‌تواند با:

Username Enumeration
Password Spraying

سازگار باشد.


Account Lockoutهای مداوم

4625
+
4740
+
Same Account

ممکن است ناشی از:

Attack
Old Service Password
Scheduled Task
Mobile Device
Mapped Drive
Application

باشد.

بنابراین Caller Computer را پیدا کنید.


Failed Login و سپس Success

4625
4625
4625
4624

به‌خصوص اگر:

Same Account
Same Source
Short Time Window

باشد، نیازمند بررسی فوری‌تر است.


Failed Login روی Account غیرفعال

اگر:

Status = 0xC0000072

و Account مدت‌هاست Disabled است، باید مشخص شود چه سیستم یا شخصی هنوز تلاش می‌کند از آن استفاده کند.


چه چیزهایی False Positive ایجاد می‌کنند؟

Failed Login همیشه Attack نیست.

موارد رایج:

User typed wrong password
Service password changed
Scheduled Task uses old password
Mapped Drive
Old RDP Credential
Application Pool
SQL Service
Backup Software
Monitoring Agent
Expired Account
Disconnected Domain Controller

بنابراین فقط Count Eventها معیار کافی نیست.


Source IP خصوصی را جدی بگیریم؟

بله.

اگر Source IP:

10.x.x.x
172.16.x.x
192.168.x.x

باشد، ممکن است Activity از داخل Network باشد.

در این حالت Source System را بررسی کنید.

ممکن است Credential قدیمی ذخیره شده باشد یا یک سیستم داخلی Compromise شده باشد.


Source IP خارجی

اگر Windows Server مستقیماً روی اینترنت قرار دارد و Failed Login از IPهای Public دریافت می‌شود، Exposure سرویس‌هایی مانند RDP باید بررسی شود.

بهتر است Remote Administrative Access از طریق:

VPN
Zero Trust Access
Bastion / Jump Server
Restricted Firewall Rules

محدود شود.


آیا فقط Block کردن IP کافی است؟

خیر.

IP ممکن است تغییر کند یا حمله Distributed باشد.

اقدامات اصلی باید شامل موارد زیر باشند:

Reduce exposed services
MFA
Strong authentication
Account Lockout Policy
Restricted RDP
VPN / Bastion
Monitoring
EDR / SIEM

Block کردن IP می‌تواند یکی از اقدامات تکمیلی باشد.


Account Administrator را مانیتور کنید

Accountهایی مانند:

Administrator
Domain Admin
Backup Admin
Service Accounts

ارزش بیشتری دارند.

Microsoft نیز توصیه می‌کند Failed Authentication مربوط به Accountهای باارزش و Service Accountها دقیق‌تر مانیتور شود.


Logها را مرکزی نگه دارید

اگر Security Log فقط روی همان Server نگهداری شود، مهاجم دارای دسترسی Administrator ممکن است Log را پاک کند یا دستکاری کند.

برای Serverهای حساس بهتر است Eventها به:

SIEM
Windows Event Collector
EDR
Central Log Server

ارسال شوند.


اشتباهات رایج

برخی اشتباهات رایج هنگام تحلیل Failed Login عبارت‌اند از:

  • بررسی فقط تعداد Event 4625
  • توجه نکردن به Logon Type
  • بررسی نکردن Source IP
  • توجه نکردن به Status و Sub Status
  • فرض اینکه هر Failed Login حمله است
  • فرض اینکه هر Logon Type 3 مربوط به RDP است
  • بررسی نکردن Service Accountها
  • بررسی نکردن Scheduled Taskها
  • نادیده گرفتن Event 4740
  • بررسی نکردن Event 4624 بعد از Failها
  • بررسی نکردن Event 4776 در محیط Domain
  • بررسی نکردن Caller Process
  • پاک کردن Security Log قبل از Export
  • Block کردن IP بدون پیدا کردن Root Cause

بهترین روش‌ها

برای تحلیل بهتر Failed Loginها:

  • Event 4625 را مانیتور کنید.
  • Logon Type را همیشه بررسی کنید.
  • Source IP و Workstation را ثبت کنید.
  • Status و Sub Status را تحلیل کنید.
  • Top IPها را استخراج کنید.
  • Top Usernameها را استخراج کنید.
  • Login Failureها را با 4624 Correlate کنید.
  • Account Lockoutها را با 4740 بررسی کنید.
  • NTLM Validation را با 4776 بررسی کنید.
  • Service Accountهای دارای Fail را جداگانه بررسی کنید.
  • Eventها را به SIEM ارسال کنید.
  • Remote Access را محدود کنید.
  • Accountهای مدیریتی را جداگانه Alert کنید.
  • Baseline Authentication Activity داشته باشید.

چک‌لیست

هنگام تحلیل Failed Login در Windows Server موارد زیر را بررسی کنید:

  • Event ID 4625 بررسی شده است.
  • بازه زمانی Incident مشخص شده است.
  • Account Name بررسی شده است.
  • Account Domain بررسی شده است.
  • Source IP بررسی شده است.
  • Source Port بررسی شده است.
  • Workstation Name بررسی شده است.
  • Logon Type بررسی شده است.
  • Failure Reason بررسی شده است.
  • Status بررسی شده است.
  • Sub Status بررسی شده است.
  • Caller Process بررسی شده است.
  • Authentication Package بررسی شده است.
  • Top Source IPها استخراج شده‌اند.
  • Top Usernameها استخراج شده‌اند.
  • IP و Username با هم Correlate شده‌اند.
  • Logon Type 10 بررسی شده است.
  • Service Loginهای Type 5 بررسی شده‌اند.
  • Batch Loginهای Type 4 بررسی شده‌اند.
  • Event ID 4740 بررسی شده است.
  • Caller Computer در Lockout بررسی شده است.
  • Event ID 4624 بعد از Failureها بررسی شده است.
  • Event ID 4776 بررسی شده است.
  • Failed Loginهای Accountهای مدیریتی بررسی شده‌اند.
  • Audit Policy بررسی شده است.
  • Security Log Export شده است.
  • False Positiveهای Service و Task بررسی شده‌اند.
  • Root Cause مشخص شده است.

مطالعات بیشتر

Microsoft Learn – Event ID 4625
مرجع رسمی Failed Logon و توضیح Source IP، Logon Type، Status، Sub Status و Process Information.
Microsoft Learn – Event 4625

Microsoft Learn – Event ID 4624
مرجع Successful Login و Logon Typeهای Windows.
Microsoft Learn – Event 4624

Microsoft Learn – Event ID 4740
مرجع Account Lockout و Caller Computer Name.
Microsoft Learn – Event 4740

Microsoft Learn – Event ID 4776
مرجع NTLM Credential Validation و Source Workstation.
Microsoft Learn – Event 4776

Microsoft Learn – Advanced Audit Policy Configuration
راهنمای Audit Logon، Credential Validation و Account Lockout در Windows Server.
Microsoft Learn – Advanced Audit Policy


جمع‌بندی

مهم‌ترین Event برای بررسی Failed Login در Windows Server:

4625

است.

اما صرف دیدن این Event کافی نیست.

برای هر Event باید حداقل موارد زیر بررسی شوند:

Username
Source IP
Logon Type
Status
Sub Status
Workstation
Authentication Package

Logon Type به ما کمک می‌کند بفهمیم Authentication در چه Contextی انجام شده است.

برای مثال:

2  = Interactive
3  = Network
4  = Batch
5  = Service
10 = RemoteInteractive / RDP

Microsoft نیز Logon Type 10 را برای Remote Desktop و Terminal Services به‌عنوان RemoteInteractive تعریف می‌کند.

Status Code نیز بسیار مهم است.

برای مثال:

0xC0000064 = Username does not exist
0xC000006A = Wrong password
0xC0000072 = Disabled account
0xC000015B = Logon type not granted
0xC0000193 = Expired account
0xC0000234 = Account locked

اگر تعداد زیادی 4625 مشاهده شد، Source IP و Usernameها را Group کنید تا Pattern مشخص شود.

الگوی:

One IP
+
One Username
+
Many Password Failures

می‌تواند با Brute Force سازگار باشد.

در حالی که:

One IP
+
Many Usernames

می‌تواند با Password Spraying یا Username Enumeration مرتبط باشد.

اما مهم‌ترین Correlation معمولاً:

4625
4625
4625
   |
   v
4624

است.

اگر بعد از چند Failed Login یک Successful Login برای همان Account و Source دیده شود، Timeline بعد از Login باید بررسی شود.

همچنین:

4740

برای Account Lockout و:

4776

برای NTLM Credential Validation اطلاعات تکمیلی مهمی ارائه می‌کنند.

در نهایت، تحلیل Failed Login فقط شمردن Event 4625 نیست. تشخیص صحیح زمانی انجام می‌شود که Username، IP، Logon Type، Failure Code، Lockout، Successful Login و رفتار بعد از Authentication در کنار یکدیگر تحلیل شوند.

کیان پور

هنوز نیاز به کمک دارید؟

آیا سوالی دارید؟

آیا این مقاله برای شما مفید بود؟ بله خیر

نظرات خود را بنویسید... لغو پاسخ

اشتراک گذاری این مقاله

تحلیل Failed Login در Windows Server

کپی کردن لینک

Clipboard Icon

جدیدترین مقالات

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی ...
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

تقویم

سپتامبر 2026
شیدسچپج
 1234
567891011
12131415161718
19202122232425
2627282930 
« جولای    

عضویت

جدیدترین پست‌ها

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی Ubuntu 24.04
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

سلام