Преглед и анализ на регистрационните файлове за RDP в Windows

В тази статия ще разгледаме характеристиките на одит / анализ на регистрационни файлове на RDP връзки в Windows. Обикновено описаните методи могат да бъдат полезни при разследване на различни инциденти на терминални / RDS сървъри на Windows, когато системният администратор е длъжен да предостави информация: кои потребители са влезли в RDS сървъра, когато определен потребител влезе и приключи сесията, къде / от кое устройство (име или IP адрес) RDP потребител беше свързан. Мисля, че тази информация ще бъде полезна както за администратори на корпоративни ферми RDS, така и за собственици на RDP сървъри в Интернет (Windows VPS се оказа доста популярен).

Статията е приложима за проучване на журнали за RDP както в Windows Server 2008 R2, 2012 / R2, 2016, така и в съответните версии за десктоп на Windows (Windows 7, 8.1, 10).

Подобно на други събития, дневниците за връзка с RDP в Windows се съхраняват в дневници на събитията. Отворете конзолата на Event Viewer. Има няколко различни списания, в които можете да намерите информация относно RDP връзките..

Журналите за Windows съдържат много информация, но бързо намирането на правилното събитие може да бъде доста трудно. Когато потребител отдалечено се свърже към RDS сървър или отдалечен работен плот (RDP), много събития се генерират в дневниците на Windows. Ще разгледаме дневниците и събитията на основните етапи на RDP връзката, които могат да представляват интерес за администратора:

  1. Мрежова връзка
  2. заверка
  3. Logon
  4. Сесия Прекъсване / Свързване
  5. Logoff

Мрежова връзка: - установяване на мрежова връзка със сървъра от потребителя на RDP клиент. Събитие с EventID - 1149 (Услуги за отдалечен работен плот: Удостоверяването на потребителя е успешно). Наличието на това събитие не показва успешно удостоверяване на потребителя. Този дневник е в раздела Журнали за приложения и услуги -> Microsoft -> Windows -> Terminal Services--RemoteConnectionManager -> Оперативен. Включете филтъра за това събитие (RMB в дневника-> Филтриране на текущия дневник -> EventId 1149).

В резултат на това ще получите списък с историята на всички мрежови RDP връзки към този сървър. Както можете да видите, регистрационните файлове указват потребителското име, домейна (използва се удостоверяване на NLA, когато NLA е деактивиран, текстът на събитието изглежда различно) и IP адреса на компютъра, от който е направена RDP връзката.

Authentication: - успешно или неуспешно удостоверяване на потребителя на сървъра. Windows Journal -> Защита. Съответно може да се интересуваме от събития с EventID - 4624 (успешно удостоверяване - акаунтът е успешно влезе в системата) или 4625 (грешка при удостоверяване - акаунтът не успя да влезе). Забележете стойността LogonType в събитието. При влизане през RDP услугата на терминала - LogonType = 10 или 3. ако LogonType = 7, след това се свързва отново със съществуваща сесия за ПРСР.

Можете да използвате събития с грешки в удостоверяването, за да се предпазите от отдалечено познаване на паролата към RDP. Можете автоматично да блокирате такива IP адреси в защитната стена с помощта на прост скрипт PowerShell (вижте статията).

Потребителското име се съдържа в описанието на събитието в полето Име на акаунта, име на компютър в Име на работната станция, и потребителско име в Източник на мрежовия адрес.

Обърнете внимание на стойността на полето. TargetLogonID - това е уникален идентификатор за сесия на потребителя, с който можете да проследявате по-нататъшната активност на този потребител. Въпреки това, при прекъсване на сесията RDP (прекъсване) и повторно свързване със сесията, на потребителя ще бъде предоставен нов TargetLogonID (въпреки че сесията на RDP остава същата).

Можете да получите списък с успешни събития за разрешаване на RDP (събитие 4624) с тази команда PowerShell.

Защита на Get-EventLog -по-нататък (Get-date -hour 0-минутка 0-секунда 0) | ? $ _. eventid -eq 4624 -и $ _. Съобщение -матч 'Вход тип: \ s + (10) \ s' | Out-GridView

Logon: - RDP вход, събитие, което се случва след успешно удостоверяване на потребителя. Събитие с EventID - 21 (Услуги за отдалечен работен плот: влизането в сесия е успешно). Този дневник е в Журналите за приложения и услуги -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Оперативен раздел. Както можете да видите тук, можете да намерите идентификатора на сесията RDP за потребителя - идентификационен номер на сесията.

Събитие с EventID - 21 (Услуги за отдалечен работен плот: Получено известие за стартиране на обвивката) означава успешно стартиране на обвивката на Explorer (поява на прозореца на работния плот в RDP сесия).

Сесия Прекъсване / Свързване - прекъснете / свържете отново събитията към сесията имат различни кодове в зависимост от това, което е причинило потребителя да прекъсне връзката (прекъснете връзката по неактивност, изберете Прекъснете връзката в сесията, прекратете RDP сесията от друг потребител или администратор и т.н.). Тези събития са разположени в Журнали за приложения и услуги -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Оперативни журнали. Помислете за ПРСР събития, които могат да бъдат интересни:

  • EventID - 24 (Услуги за отдалечен работен плот: сесията е изключена) - потребителят е прекъснал сесията на RDP.
  • EventID - 25 (Услуги за отдалечен работен плот: възстановяването на сесия е успешно) - потребителят отново се свързва със съществуващата си RDP сесия на сървъра.
  • EventID - 39 (сесията е прекъсната чрез сесия ) - самият потребител се е изключил от своята RDP сесия, като е избрал подходящия елемент от менюто (а не просто е затворил прозореца на клиента на RDP). Ако идентификаторите на сесията са различни, тогава потребителят е прекъснат от друг потребител (или администратор).
  • EventID - 40 (Сесията е изключена, код на причината ). Тук трябва да разгледате кода за причината за прекъсването в събитието. Например:
    • код на причината 0 (Няма налична допълнителна информация) - обикновено означава, че потребителят просто е затворил прозореца на RDP на клиента.
    • код на причината 5 (Връзката на клиента е заменена с друга връзка) - потребителят отново се свързва със старата си сесия.
    • код на причината 11 (Дейността на потребителя е инициирала прекъсването) - самият потребител е натиснал бутона Disconnect в менюто.

Събитие с EventID - 4778 в дневника на Windows -> Защита (Сесията беше отново свързана с Window Station). Потребителят отново се свързва с RDP сесията (потребителят получава нов LogonID).

Събитие с EventID 4799 в дневника на Windows -> Защита (Сесията беше прекъсната от Window Station). Прекъснете връзката с RDP сесия.

излизане: - изход от потребителя. В същото време събитие с EventID се записва в Журналите за приложения и услуги -> Microsoft -> Windows -> TerminalServices-LocalSessionManager -> Оперативен дневник 23 (Услуги за отдалечен работен плот: Успехът на излизане от сесията).

В същото време в дневника за сигурност трябва да гледате събитието на EventID 4634 (Акаунтът е излязъл).

събитие събитие 9009 (Мениджърът на прозорци на работния плот е излязъл с код () в системния дневник казва, че потребителят е инициирал края на RDP сесията и прозорецът и графичната обвивка на потребителя са завършени.

По-долу е малък PowerShell, който изтегля историята на всички RDP връзки за текущия ден от дневниците на терминалния RDS сървър. Получената таблица показва времето за връзка, IP адреса на клиента и името на RDP на потребителя (ако е необходимо, можете да включите и други видове входове в отчета).

Get-EventLog -LogName Security -after (Получете дата -час 0-минутка 0 -секунда 0) | ? (4624,4778) -съдържа $ _. EventID -и $ _. Съобщение -матч 'Вход тип: \ s + (10) \ s' | %
(new-object -Type PSObject -Property @
TimeGenerated = $ _
ClientIP = $ _. Съобщение -заменете '(? Smi). * Източник на мрежовия адрес: \ s + ([^ \ s] +) \ s +. *', '$ 1'
UserName = $ _. Съобщение -заменете '(? Smi). * Име на акаунта: \ s + ([^ \ s] +) \ s +. *', '$ 1'
UserDomain = $ _. Съобщение -заменете '(? Smi). * Домен на акаунта: \ s + ([^ \ s] +) \ s +. *', '$ 1'
LogonType = $ _. Съобщение -заменете '(? Smi). * Тип вход: \ s + ([^ \ s] +) \ s +. *', '$ 1'
)
| сортиране TimeGenerated -Descending | Изберете TimeGenerated, ClientIP '
, @ N = 'Потребителско име'; E = '0 \ 1' -f $ _. UserDomain, $ _. UserName '
, @ N = 'LogType'; E =
превключвател ($ _. LogonType)
2 'Интерактивно - локално влизане'
3 'Мрежово свързване към споделена папка)'
4 'Партида'
5 'Сервиз'
7 'Отключване (след скрийнсейвър)'
8 'NetworkCleartext'
9 'NewCredentials (процес на локално представяне под съществуваща връзка)'
10 'RDP'
11 'CachedInteractive'
по подразбиране "LogType не се разпознава: $ ($ _. LogonType)"

Понякога е удобно с регистрационните файлове в електронната таблица на Excel, като в този случай можете да разтоварите всеки лог на Windows в текстов файл и да импортирате в Excel. Можете да експортирате дневника от конзолата за преглед на събития (разбира се, при условие че журналите не са изчистени) или чрез командния ред:

WEVTUtil заявки-събития Защита> c: \ ps \ security_log.txt

Или така:

get-winevent -logname "Microsoft-Windows-TerminalServices-LocalSessionManager / Operative" | Export-Csv c: \ ps \ rdp-log.txt -Енкодиране UTF8

Списъкът на текущите RDP сесии на сървъра може да се покаже с командата:

Qwinsta

Командата връща както идентификатор на сесия (ID), потребителско име (USERNAME), така и състояние (Active / Disconnect). Тази команда е удобна за използване, когато трябва да определите ID на RDP на потребителска сесия със сенчеста връзка..

Списък на изпълняваните процеси в конкретна сесия за RDP (идентификационният номер на сесията е посочен):

qprocess / id: 157

На RDP клиента, регистрационните файлове не са толкова информативни, основното нещо, което често се използва, е информацията за историята на RDP връзките в системния регистър.