LIMB
Вход Регистрация

тема

💻 Windows logon types

ArmCorp · · 2 ответов · 108 просмотров

Не удалось прогрузить медиа


:computer: Windows logon types

Сегодня решил написать о типах логона, учитывая количество вопросов по данному поводу, становится совершенно очевидно, что многим, особенно начинающим, этот момент не понятен

И что же это такое ?

Типы логонов - ключевой элемент в понимании того, как и откуда пользователи и процессы получают доступ к Windows системам и ресурсам :computer: Active Directory

Немножко базы:

Interactive (2) Локальный, т.н. logon locally
Network (3) Сетевой, доступ к ресурсам по сети, например, к общим папкам
Batch (4) Пакетное задание, используется при выполнение заданий через планировщик
Service (5) Вход службы
Unlock (7) Разблокировка рабочего стола после блокировки экрана.
NetworkCleartext (8) Сетевой с передачей учетных данных в открытом виде (например, базовая аутентификация IIS).
NewCredentials (9) Вход с новыми учетными данными
RemoteInteractive (10) Удалённый интерактивный
CachedInteractive (11) Локальный интерактивный с кэшированными данными, например, при недоступности DC
CachedRemoteInteractive (12) Удалённый вход с кэшированными учетными данными
CachedUnlock (13) Разблокировка с кэшированными учетными данными

:pushpin:И некоторые примеры присвоения определенного типа:

Interactive (2)
Console logon
RUNAS

Network (3)
NET USE
RPC вызовы
Evil-WinRM
Impacket-wmiexec и т.д.
Удаленный реестр
IIS Windows аутентификация
SQL Windows аутентификация

Batch (4)
Задания планировщика

Service (5)
Службы (services.msc)

NetworkCleartext (8)
PowerShell с CredSSP

NewCredentials (9)
RunAs с параметром /netonly

RemoteInteractive (10)
Удаленный рабочий стол (RDP)

:question: Нам то какая разница какой тип логона используется ?
Разница довольно таки большая, например при работе с DPAPI

При интерактивном входе (2) пользователь полноценно аутентифицирован в системе, и у него есть доступ к своим мастер-ключам

При сетевом входе (3) происходит аутентификация по сети, но контекст безопасности и доступ к мастер-ключам отсутствует или ограничен. Это связано с тем, что сетевая аутентификация не создаёт полноценной интерактивной сессии

:bangbang: Не получаете желаемого результата, имейте это ввиду
Каждый уважающий себя C2 умеет ими манипулировать, типа такого - token make domain.local user Password123 LOGON_INTERACTIVE

:question: И как же нам определить тип логона ?

Простой команды аля whoami к сожалению нет
Каждый вход в Windows создаёт сессию с определённым типом логона, который фиксируется в журнале безопасности (например, в событии с ID 4624)

Я написал 3 powershell :computer: скрипта для определения

Первый выведет 10 последних логонов
Второй может собирать по конкретному пользователю
Третий на wmi покажет текущие
👍9 🔥2 👏1 😢1
Спойлер
Не удалось прогрузить медиа

10 последних логонов:
Code:
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} -MaxEvents 10 |
ForEach-Object {
    $eventXml = [xml]$_.ToXml()
    $logonType = $eventXml.Event.EventData.Data |
        Where-Object { $_.Name -eq 'LogonType' } |
        Select-Object -ExpandProperty '#text'
   
    $targetUser = $eventXml.Event.EventData.Data |
        Where-Object { $_.Name -eq 'TargetUserName' } |
        Select-Object -ExpandProperty '#text'
   
    [PSCustomObject]@{
        TimeCreated = $_.TimeCreated
        LogonType = $logonType
        TargetUserName = $targetUser
        LogonID = ($eventXml.Event.EventData.Data |
            Where-Object { $_.Name -eq 'TargetLogonId' }).'#text'
    }
} | Format-Table -AutoSize


Сбор по конкретному пользователю:
Code:
$user = 'exited3n'


Get-WinEvent -FilterHashtable @{LogName='Security';ID=4624} -MaxEvents 1000 |
ForEach-Object {
    $eventXml = [xml]$_.ToXml()
    $logonType = $eventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'LogonType' } | Select-Object -ExpandProperty '#text'
    $targetUser = $eventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'TargetUserName' } | Select-Object -ExpandProperty '#text'
    $logonId = $eventXml.Event.EventData.Data | Where-Object { $_.Name -eq 'TargetLogonId' } | Select-Object -ExpandProperty '#text'


    if ($targetUser -imatch $user) {
        [PSCustomObject]@{
            TimeCreated     = $_.TimeCreated
            LogonType       = $logonType
            TargetUserName  = $targetUser
            LogonID         = $logonId
        }
    }
} | Select-Object -First 1000 | Format-Table -AutoSize

Текущие на wmi:

Code:
Get-WmiObject -Class Win32_LogonSession |
Where-Object { $_.LogonType} |
ForEach-Object {
    $session = $_
    Get-WmiObject -Query "Associators of {Win32_LogonSession.LogonId='$($session.LogonId)'} Where AssocClass=Win32_LoggedOnUser Role=Dependent" |
    Select-Object @{n='User';e={$_.Name}}, @{n='LogonType';e={$session.LogonType}}
}
👍3
еще может быть полезно, для сбора кред и понимания какие сети есть и какого пользователя можно найти в lsass

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.