DumbRDPAlert 开发手记

Patrick Young
May 21, 2023

--

  1. 在 Windows 平台独立测试时,-ldflags "-H=windowsgui" 可以编译为 GUI 应用,但此时没有可用的 stdout 和 stderr,日志写出会出现异常,请指定仅打印日志到对应文件。使用计划任务运行时选择不保存密码即可不显示 GUI (没有桌面的交互访问权限)。
  2. XML 中使用的Property字符串参数应当尽可能使用双引号,单引号在 Windows 下可能无法正常识别。例如,此处的 “AuthUser” 应当使用双引号。以 Windows System Event 作为参数时,可以使用 XPath 定义数据位置。使用 ValueQueries 类型即可,应当放置在 EventTrigger 层级下。
<Triggers>
<EventTrigger>
<Enabled>true</Enabled>
<Subscription>&lt;QueryList&gt;&lt;Query Id="0" Path="Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational"&gt;&lt;Select Path="Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational"&gt;*[System[EventID=1149]]&lt;/Select&gt;&lt;/Query&gt;&lt;/QueryList&gt;</Subscription>
<ValueQueries>
<Value name="AuthUser">Event/UserData/EventXML/Param1</Value>
<Value name="AuthUserDomain">Event/UserData/EventXML/Param2</Value>
<Value name="AuthSrcIP">Event/UserData/EventXML/Param3</Value>
</ValueQueries>
</EventTrigger>
</Triggers>

调用第三方程序时可以使用:

<Actions Context="Author">
<Exec>
<Command>C:\ProgramData\RDPAlertY\RDPAlert.exe</Command>
<Arguments>"$(AuthUserDomain)" "$(AuthUser)" "$(AuthSrcIP)"</Arguments>
</Exec>
</Actions>
  1. 这个程序不依赖计划任务的运行方式应当是使用 winsw 创建服务拉起程序,然后程序内部使用 ETW Trace Session 订阅一个 MS-TerminalServices-RemoteSessionManager-Operational 类别的日志,然后关注 ID 1149并解析内容即可。

--

--

No responses yet