Windows上的Bash实战:利用Linux工具生成PowerShell载荷

本文详细介绍了如何在Windows 10的Linux子系统(WSL)中运行社会工程学工具包(SET),通过PowerShell脚本生成宏载荷并通过电子邮件进行网络钓鱼攻击的全过程,展示了跨平台安全测试的新方法。

Windows上的Bash实战(Bourne Again Shell详解)

编者按: 这是我们的朋友Robert Schwass的另一篇精彩客座文章。如需投稿请联系我们。

Robert Schwass //

我曾听说过关于Windows Linux子系统(WSL)的传闻,最近我观看了一个演示视频,其中开发运维人员使用它通过bash shell向Azure中基于Linux的Web服务器推送更新。

这是否终结了无休止的Windows与Linux之争?很可能没有,但我不关心这个,谁又真正在乎呢?

然而,这为我提供了一个解决古老问题的方法:如何创建PowerShell载荷,并使用仅能在Linux上轻松运行的工具将其推送出去?

于是研究开始了。

我决定加入Windows 10内测者计划。

第一步当然是设置你的Windows 10系统以加入内测预览计划,并启动和运行bash。如果你需要帮助,可以咨询互联网。有很多设置环境的指南。我个人从微软下载了最新的ISO,通过在操作系统中挂载并运行setup.exe进行升级安装。之后,你只需向Windows 10添加功能,即可启动和运行bash。(大约45分钟)

我最近一直在广泛使用宏,并创建了一个PowerShell脚本(PSPayload),该脚本可以从PowerShell脚本生成宏,甚至创建Excel文件。

我一直是社会工程学工具包(SET)的忠实粉丝,以及它发送网络钓鱼攻击的便捷性。尽管这个工具基于Python,也可以在Windows上运行;但Windows版本功能有限,Linux版本则功能齐全。

所以我的下一步是在子系统环境中运行SET。如果你想要SET的所有功能(就像我一样),你还必须安装Metasploit。安装Metasploit及其所有依赖项需要一些研究,但我在这里提供了一系列命令,以节省感兴趣者的麻烦。主要问题在于安装一个稳定的Ruby副本。

默认情况下,SET允许你使用Metasploit生成载荷,如PDF和ZIP文件,用于网络钓鱼攻击,但我无法完全弄清楚如何按原样使用外部文件与SET框架。这个功能可能默认存在,完全披露,我是个新手。尽管如此,我在SET的Github上提交了功能请求。在收到SET开发者的回复之前,我通过复制和修改SET使用的电子邮件脚本,并将其放入SET的根目录,自己找到了解决方法。该脚本可以从这里下载

该脚本利用了框架内的核心功能和模块,因此它必须位于SET的根目录中,在我的情况下是bash环境中的/opt/set。

演示

第一阶段:创建PowerShell载荷(即宏,即Excel .xls文件)

(载荷是一个简单的“get-process;read-host”,列出进程并暂停。)

.xls文件已创建,同时还有一个仅包含宏的.txt文件。让我们检查.xls文件。(在Excel开发者选项卡→VBA按钮中)

点击VBAProject下的“ThisWorkbook”项查看宏。

“ThisWorkbook”对象将在文档打开时执行创建的宏。用户将必须允许宏,但大多数时候他们很容易被欺骗。

默认情况下,由PSPayload生成的宏在后台运行。在这个演示中,我将通过删除“-NoP -NonI -W Hidden”来编辑它,以便我们稍后可以看到结果。

第二阶段:从Bash发送电子邮件

SET有一系列问题需要回答。

我想保留文件名。

对于这个演示,我发送单封电子邮件,但你可以使用群发邮件器轻松从列表中读取地址。

设置主题、纯文本或HTML以及正文。

我使用了相同的Gmail账户作为发件人和收件人。

设置发件人名称、密码,以及是否将电子邮件标记为重要。

如果一切正常,你将看到以上内容。

消息在我的收件箱中。

内部我们看到消息正文和附件。

下载附件,打开它,并启用编辑和启用内容。

记住PowerShell一行代码是“get-process;read-host”,这正是弹出的窗口所显示的内容。另外,记住我故意禁用了隐身功能。

结论

就这样,我使用了一个基于Linux的工具来推送我用PowerShell创建的载荷,所有操作都在Windows系统上完成。这仅仅是利用WSL进行工具组合的第一个可能很棒的示例。

另一个很酷的功能是,你可以删除并重新安装整个bash文件系统,并通过在命令提示符中运行几个命令从头开始。

1
2
lxrun /uninstall /full
lxrun /install

PSPayload可以处理更大更复杂的脚本,并将它们放入宏形式中。我已经用多行脚本甚至由PowerCat模块生成的载荷进行了测试。所有这些信息都可以在Github上找到。

注意事项

WSL仍然非常新,且功能严重受限。例如,它无法打开网络套接字,并且发送ICMP数据包时遇到问题。网络问题限制了SET发送自身载荷和启动监听器的能力。因此,这个概念目前尚未准备好用于正式环境。然而,微软正在以非常快的速度开发此功能,我怀疑在不久的将来他们可能会修复网络错误。

我确实在Github上联系了TrustedSec,自从进行这项研究以来,他们已将功能添加到SET中,以使用非SET本身生成的电子邮件附件。因此,如果你使用最新版本的SET,可能不需要使用我的Email_attachment.py脚本。

Metasploit本身无法正确运行,我只是需要它来满足SET的要求。希望未来Metasploit也能在这个环境中启动和运行。

现在,我知道这永远不会取代通过启动盘运行或直接安装到PC上访问硬件的Linux。在很多情况下,你必须使用Linux,例如进行无线网络审计。这个想法并不是要取代Linux,而仅仅是增强Windows。

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