从本文开始,我们开始发布一系列有关难以捉摸的恶意软件的出版物。 无文件黑客程序,也称为无文件黑客程序,通常使用 Windows 系统上的 PowerShell 以静默方式运行命令来搜索和提取有价值的内容。 在没有恶意文件的情况下检测黑客活动是一项艰巨的任务,因为...... 防病毒软件和许多其他检测系统都是基于签名分析来工作的。 但好消息是这样的软件确实存在。 例如,
当我第一次开始研究坏黑客这个话题时
伟大而强大的PowerShell
我之前曾写过其中一些想法
除了示例本身之外,您还可以在网站上看到这些程序的用途。 混合分析在自己的沙箱中运行恶意软件,监视系统调用、运行进程和网络活动,并提取可疑文本字符串。 对于二进制文件和其他可执行文件,即您甚至无法查看实际的高级代码,混合分析可以根据软件的运行时活动来确定该软件是恶意的还是可疑的。 之后样品已经被评估。
对于 PowerShell 和其他示例脚本(Visual Basic、JavaScript 等),我能够看到代码本身。 例如,我遇到过这个 PowerShell 实例:
您还可以以 base64 编码运行 PowerShell 以避免检测。 请注意非交互式和隐藏参数的使用。
如果您阅读过我关于混淆的文章,那么您就会知道 -e 选项指定内容是 base64 编码的。 顺便说一句,混合分析也可以通过解码所有内容来帮助解决这一问题。 如果您想尝试自己解码base64 PowerShell(以下简称PS),则需要运行以下命令:
[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($EncodedText))
更深入
我使用这种方法解码了我们的PS脚本,下面是程序的文本,尽管我稍作修改:
请注意,该脚本与 4 年 2017 月 XNUMX 日的日期相关联并传输会话 cookie。
我在中写过关于这种攻击方式的文章
这是为什么呢?
对于扫描 Windows 事件日志或防火墙的安全软件,base64 编码可防止纯文本模式检测到字符串“WebClient”,从而防止发出此类 Web 请求。 由于恶意软件的所有“邪恶”内容都会被下载并传递到我们的 PowerShell 中,因此这种方法使我们能够完全逃避检测。 或者更确切地说,这就是我最初的想法。
事实证明,启用 Windows PowerShell 高级日志记录(请参阅我的文章)后,您将能够在事件日志中看到加载的行。 我长得像
让我们添加额外的场景
黑客巧妙地将 PowerShell 攻击隐藏在用 Visual Basic 和其他脚本语言编写的 Microsoft Office 宏中。 这个想法是受害者收到一条消息,例如来自送货服务的消息,并附有 .doc 格式的报告。 您打开包含该宏的文档,它最终会启动恶意 PowerShell 本身。
通常,Visual Basic 脚本本身会被混淆,因此它可以自由地逃避防病毒和其他恶意软件扫描程序。 本着上述精神,我决定用 JavaScript 编写上述 PowerShell 作为练习。 以下是我的工作成果:
混淆的 JavaScript 隐藏了我们的 PowerShell。 真正的黑客会这样做一两次。
这是我在网络上看到的另一种技术:使用 Wscript.Shell 运行编码的 PowerShell。 顺便说一下,JavaScript 本身是
在我们的例子中,恶意 JS 脚本被嵌入为扩展名为 .doc.js 的文件。 Windows 通常只会显示第一个后缀,因此它对受害者来说将显示为 Word 文档。
JS 图标仅出现在滚动图标中。 毫不奇怪,许多人会认为它是 Word 文档而打开此附件。
在我的示例中,我修改了上面的 PowerShell 以从我的网站下载脚本。 远程 PS 脚本仅打印“Evil Malware”。 正如你所看到的,他一点也不邪恶。 当然,真正的黑客有兴趣通过命令 shell 访问笔记本电脑或服务器。 在下一篇文章中,我将向您展示如何使用 PowerShell Empire 来执行此操作。
我希望在第一篇介绍性文章中我们没有深入探讨该主题。 现在我让您喘口气,下次我们将开始研究使用无文件恶意软件进行攻击的真实示例,而无需任何不必要的介绍性文字或准备。
来源: habr.com