Windows隐藏命令行工具在渗透测试中的妙用

本文深入探讨了Windows系统中鲜为人知但功能强大的命令行工具,包括certutil、clip、cmdkey等,展示了它们在渗透测试和日常系统管理中的实际应用场景和技巧。

雨天Windows命令研究结果

我们都听过人们谈论Linux比Windows酷得多,更容易使用等等。嗯,他们不一定错…但我们发现微软有一些非常有趣的宝石隐藏在显而易见的地方。

说真的,微软似乎在共同努力添加一些类似Linux的功能。事实上,他们在2016年就在Windows 10上引入了Linux作为子系统。您可以使用PowerShell启用该功能,然后访问Microsoft Store选择您喜欢的发行版进行安装。但我离题了…这篇博客文章不是关于Linux,而是关于Windows内置的一些巧妙实用程序…有些实际上非常类似Linux,有些是Windows独有的,但对渗透测试人员仍然很有趣。我们将在下面向您展示一些有趣的发现。

请注意,许多工具的帮助文档可以在Windows命令参考文档中找到。

Certutil

内置的certutil命令可以用作快速的base64编码器/解码器。它旨在编码和解码SSL证书,但也可以用于其他用途。例如,假设您需要将可执行文件放到目标系统上,但网络控制检测/阻止了EXE文件的传输。那么,在这种情况下,您可以在发送之前对其进行base64编码,然后在目标系统上使用certutil进行base64解码。很好。

以下是一个使用文本字符串的示例,但对于二进制可执行文件也同样适用。

默认情况下,certutil解码和编码base64数据。但另一个有趣的事实是它也可以解码十六进制:

虽然帮助文本没有显示十六进制编码的选项,但我们尝试了它,实际上确实有效…请看。

如果您正在查找二进制文件中的字符串,这可能会非常方便。下面是一个显示notepad.exe十六进制转储的示例。

Clip

微软开发了"Clippy"角色来协助用户使用Office产品。自1997年以来,他一直在断断续续地工作,(可以理解)目前似乎正在休假。

与"Clippy"完全无关的是clip实用程序。 该实用程序将输出重定向到剪贴板。例如,如果您想捕获正在运行的服务并将列表插入剪贴板:

您可以将命令的输出定向到剪贴板以便轻松复制/粘贴,或者将整个文件的内容放入剪贴板。

1
2
3
net1 start | clip
PS C:\> net1 user /domain | clip
clip < myTextFile.txt

在所有三种情况下,您都已将某些内容加载到剪贴板中,您可以使用右键单击"粘贴"或Control-V检索并粘贴到需要的地方。

我也经常将clip.exe与WSL(Windows Subsystem for Linux)一起使用,如下所示:

1
$ cat file.csv | cut -f2 -d"," | sort | uniq | clip.exe

这是一种非常方便的方式来切片和切分数据以用于报告。

默认情况下,多个项目的剪贴板保存是关闭的,但如果您打开它….

…您可以使用Windows + V访问剪贴板中的所有"剪辑"。

要粘贴剪贴板中的项目之一,只需单击您想要的项目。 您甚至可以固定一个剪辑,即使您清除剪贴板,它也会被保存(直到重新启动)。这是存储密码的好地方。

Cmdkey

Cmdkey是Windows凭据管理器的命令版本。等效的GUI版本可以使用"control keymgr.dll"启动,或从控制面板选择"凭据管理器"。使用命令显示任何保存的凭据

1
cmdkey /list

但是,如果有存储的凭据是特权凭据呢?攻击者如何使用它们? 根据这篇博客文章,这很容易,尽管当我设置Cobalt Strike并尝试时,它没有工作,但您的体验可能会有所不同。

Curl

Curl是一个命令行浏览器,类似于wget,从Web服务器拉取内容,默认情况下在大多数Linux系统上找到,最近已添加到Windows! 对于渗透测试人员,也许代理配置阻止您使用浏览器下载文件。如果是这样,请尝试curl,也许这样的下载不会被注意到。 以下是一个您可以使用curl做的非常有用的示例:

Curl还有一个深入的帮助页面。使用"curl –help"查看所有选项。

Net1

“net1"与"net"几乎相同,但大约20年前,当我们接近Y2K时,“net"命令出现了问题。“net1"命令是该问题的补救措施,并且一直存在至今。为什么现在这很重要?在大多数情况下可能不重要,但如果您是渗透测试人员,您可能会发现"net"命令被蓝队注意到,而"net1"命令则不会。 示例命令:

1
2
3
net1 localgroup administrators - 枚举本地管理员帐户
net1 start - 查看运行服务列表
net1 start | find /v "" /c - 显示运行服务计数

Tar

Tar是一个古老的Unix实用程序,最初创建用于从一个或多个文件制作磁带存档。这是作为备份解决方案开发的。今天,tar的使用类似于zip – 从多个文件制作单个存档以便备份、存档、传输等。2018年4月,tar被包含在Windows 10版本中。 使用标准的Windows帮助”/?",Windows的tar似乎选项很少。

然而,当请求”–help"选项时,您可以看到实际上有更多的功能,包括像其Linux表亲一样的压缩选项。

我们通过使用tar在Windows系统上归档和压缩几个文件来测试这一点。

然后我们将文件移动到Debian Linux机器上,发现它们实际上是有效的tarball,一个没有压缩,一个有压缩。

Where

“Where"类似于Linux的"locate"命令。它为您查找文件,非常方便。 示例:

1
where /R c:\ /F *.conf  *.xml

这将递归搜索C驱动器查找conf和xml文件。如果找到,"/F"表示显示完整路径。

Whoami

Whoami命令显示有关当前帐户的信息。不带参数使用时,它显示帐户名称。

它可以分别使用”/priv"和”/groups"选项显示与当前帐户关联的权限或组成员身份。 它还可以显示帐户的FQDN和UPN:

Wslconfig

这个内置命令显示当前的Windows Subsystem for Linux安装。它还允许您执行与Linux发行版相关的其他管理任务,前提是您具有管理员级别的访问权限。

了解WSL是否在您正在测试或已转向的系统上启用肯定很有趣。如果您看到此消息,则系统上未启用WSL:

另一方面,这表明系统上已安装了Kali Linux:

如果未启用且您具有管理员权限,请务必启用它! 因此,对于红队人员,将这些添加到您的"靠地生存"工具库中。而蓝队人员可能需要注意这些工具的使用。普通用户不太可能使用curl、certutil和tar,因此监控它们的使用应生成可操作的警报而不是噪音。

目前就这些了…

…但我们将继续挖掘,如果找到更多有趣的Windows命令,我们将编写续集。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计