如何获取远程桌面客户端的 IP 地址?以及如何在 RDP 连接时触发 shell 命令?

cha*_*haz 24 rdp ip

有没有办法在服务器上使用 PowerShell(或其他方法)确定远程桌面客户端的 IP 地址?(我使用的是 Windows Server 2008 R2 x64)

编辑:我发现我可以 grep netstat 的标准输出来检索这个非常可行的信息,那么当客户端连接时如何触发脚本/外壳命令?

Joh*_*mer 24

您可以从命令提示符运行以下命令以获取连接到 RDP(端口 3389)的远程 IP 的列表。

netstat -n | find ":3389" | find "ESTABLISHED"
Run Code Online (Sandbox Code Playgroud)

我确信这可以在 powershell 中编写脚本(甚至只是一个普通的旧批处理文件)。如果你有兴趣,我明天可以提供一个例子。


cha*_*haz 13

好吧,我发现task schedulerWindows 附带的应用程序可配置为我可以运行批处理脚本的位置,在生成事件日志中的事件时触发。通过 UI,您可以选择事件类型、事件源和事件 ID,在这种情况下,我使用了 4264(是的,它可以捕获所有登录类型)。在这里,我使用了一个简单的批处理脚本:

SET logfile="rdp_ip_logs.log"
date /T>>%logfile%
time /T>>%logfile%
netstat -n | find ":3389" | find "ESTABLISHED">>%logfile%
Run Code Online (Sandbox Code Playgroud)

我还发现了一个关于如何在 .NET 中订阅/收听事件写入的超级有用示例:http : //msdn.microsoft.com/en-us/library/bb552514 (v= vs.90).aspx I'我最终会使用它来将某些事件写入数据库以进行基于 Web 的检查。

此解决方案的唯一缺点是,如果您启用了远程桌面服务并且连接了多人,则无法在 netstat 输出中区分他们。


Tam*_*erz 7

如果不需要编写脚本,可以在安全事件日志中查看事件 ID 4624。会有一行:

源网络地址:192.168.xxx.xxx