tkcharlotte's blog

趁着有时间,把不懂的学一学(๑•̀ㅂ•́)و✧.

基础

启动

先启动一个服务端

./teamserver ip password

启动客户端连接

./cobaltstrike

User随便输,Password是启动服务端时的密码。

模块介绍

Cobalt Strike
1
2
3
4
5
6
New Connection  创建一个新连接
Perferences 修改一些字体信息啥的,也可以在TeamServers处删除登录凭证
Visualization 显示的模式
VPN interfaces vpn配置(未测试)
Listensers 监听器,可以执行添加/编辑/移除监听等操作
Script Manager 字面意思 脚本管理 脚本也是cs的一大杀器。
View
1
2
3
4
5
6
7
8
9
10
Applications 用于显示 System Profiler 获取的目标浏览器,操作系统,flash版本
Credentials 显示所有已经获取的用户主机hash
Downloads 显示下载的文件
Event log 事件日志 记录团队 目标上线等记录
Keystrokes 目标键盘记录
Proxy Pivots 代理信息
Screenshots 屏幕截图
Script Console 加载自定义脚本
Targets 显示所有主机
Web log web服务日志
Attacks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Packages
HTML Application 生成hta文件
MS Office Macro 宏office文件
Payload Generator 生成各种语言版本的payload
USB/CD AutoPlay 利用自动播放运行的被控端文件
Windows Dropper 捆绑器可将任意正常的文件
Windows Executable payload生成可执行文件
Windows Executable (S) 无状态
------------------------------------------
Web Drive-by
Manage 开启的所有web服务
Clone Site 克隆网站
Host File 提供Web以供下载某文件
Scripted Web Delivery 为payload提供web服务以便于下载和执行
Signed Applet Attack 启动一个Web服务以提供自签名Java Applet的运行环境
Smart Applet Attack 自动检测Java版本并l利用已知的exploits绕过security
System Profiler 获取系统,Flash,浏览器版本等
-------------------------------------------
Spear Phish 鱼叉式网络钓鱼

基本操作

首先,我们设置一个监听,Cobalt Strike->Listensers->Add ,cs提供了八种方式。

1
2
3
4
5
6
7
8
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 即 SMB Beacon
windows/foreign/reverse_http
windows/foreign/reverse_https
windows/foreign/reverse_tcp

开启以后,为了测试方便,我们直接生成一个马,传到靶机上。

Attacks->Windows Executable 生成一个64位木马,然后绑定到一开始创建的监听test1上。

靶机运行exe以后cs接收到一个Beacon(信标标志之类的意思)。类似于msfmeterpreter

右键Interact,与beacon交互。输入help查阅能够执行的命令。

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
cp Copy a file
dcsync Extract a password hash from a DC
desktop View and interact with target's desktop
dllinject Inject a Reflective DLL into a process
dllload Load DLL into a process with LoadLibrary()
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 (no output)
execute-assembly Execute a local .NET program in-memory on target
exit Terminate the beacon session
getprivs Enable system privileges on current token
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 dns6 Use DNS AAAA as data channel (DNS beacon only)
mode http Use HTTP as data channel
mode smb Use SMB peer-to-peer communication
mv Move a file
net Network and host enumeration tool
note Assign a note to this Beacon
portscan Scan a network for open services
powerpick Execute a command via Unmanaged PowerShell
powershell Execute a command via powershell.exe
powershell-import Import a powershell script
ppid Set parent PID for spawned post-ex jobs
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
psinject Execute PowerShell command in specific process
pth Pass-the-hash using Mimikatz
pwd Print current directory
reg Query the registry
rev2self Revert to original token
rm Remove a file or folder
rportfwd Setup a reverse port forward
run Execute a program on target (returns output)
runas Execute a program as another user
runasadmin Execute a program in a high-integrity context
runu Execute a program under another PID
screenshot Take a screenshot
setenv Set an environment variable
shell Execute a command via cmd.exe
shinject Inject shellcode into a process
shspawn Spawn process and inject shellcode into it
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
spawnu Spawn a session under another PID
ssh Use SSH to spawn an SSH session on a host
ssh-key Use SSH to spawn an SSH session on a host
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

场景

内网环境

网络

为了测试方便,本地使用VMware Station模拟两层内网,机器配置有限,就开了三个虚拟机,一台xp,一台win7,一台Ubuntu14.04,一层内网有Ubuntuwin7,内网机器有一台xp,其中win7位跳板机,可以访问内网。

Vmware中可以通过添加网卡,然后将该网卡设置为LAN网段模式,然后在机器中固定ip

过程

现在我们假设通过一些手段拿到了win7的权限,可以执行命令,上传文件,我们可以通过cs生成一个木马上传到win7上,然后服务端创建一个Listener,就可以得到一个Beacon

Attacks->Windows Executable 然后绑定Lsitener,在靶机上执行该文件,等待主机上线。

可以看到我们已经得到一个Beacon,默认的sleep时间为60s,我们本地测试就直接sleep 0,节约时间。

内外网ip 主机名 连接时间等都显示的很清楚。

看一下主机ip,是否存在内网或者是域,判断一下网络拓扑。shell ipconfig

有两个网卡,初步判断存在内网.

靶机上线后有三种视图,第一种在复杂的情况下直观的展示网络拓扑是怎样的,第二种比较简洁,列表的形式展示,第三种站在目标的角度,表明我们可以进行怎样的操作。第一种最炫(zhuang)酷(bi)!

靶机处右键Interact,得到一个交互式的Beacon,输入help查看帮助。常规操作,查看权限,权限不够提权,抓hash

右键Access->DumpHash 尝试导出hash,提示权限不够,尝试提权.

cs内置了几种提权方式,针对一些版本低的主机(win7),可以通过添加自定义脚本来增强cs的功能。

gayhub上有个项目,收集了很多的自定义脚本:https://github.com/harleyQu1nn/AggressorScripts

导入几个试一下,导入了AV_Query elevate EDR三个脚本,其中elevate新提供了五种提权的方式。

使用AV_Query 看一下安装了啥防护软件,因为是虚拟机,我啥也没装,只有自带的windows defender

使用ms14-058提升权限,在交互式Beacon中可以看到进度:

完成后得到system权限的Beacon.

导出Hash,导出完成后点击图标栏中的名片图标,很直观的看到提取出的用户凭证。

如果内置的payload提权不成功,可以试一下进程注入的手法.

右键->access->explore->process list->inject (选择一个高权限且稳定的进程)

继续横向渗透,看一下同网段中有没有其他主机。

可以使用msf与cs联动,使用SpawnBeacon派生到msf

首先在cs中创建一个forginListener,同时在msf中使用handler监听相同端口

靶机右键Spawn,msf中得到一个meterpreter

然后使用nmap或者是其他模块扫描

也可以使用cs自带的portscan explore->portscan ,扫描完成后可以看到内网中存在的主机列表。

发现还存活一台ubuntu 主机,此处假装通过爆破得到密码账号(滑稽),Login->ssh登录。

查看权限,不是root权限,尝试提权,upload上传linux-suggester-2.pl,看一下内核漏洞,记得上传后要给执行权限。

直接使用脏牛提权。

上边提到还有一层处在内网的主机,可以通过cs提供的Sock代理带入。

右键->Pivoting->SOCKS server

可以在View->Proxy Pivots中看到正在运行的代理。

kali自带proxychains,修改配置为socks4 127.0.0.1 port ,将三方工具带入。(小声bb,我本地测试的时候发现不行…可能是我操作问题)

msf中还可以直接输入setg Proxies socks4:team server IP:proxy port 将其带入内网。

输入setg ReverseAllowProxy true 保证收到回连的数据。

内网xp直接上ms08-067,得到meterpreter通过payload_inject模块转给cs。

详细的操作可以看[https://github.com/aleenzz/Cobalt_Strike_wiki/blob/master/%E7%AC%AC%E5%8D%81%E5%85%AD%E8%8A%82%5BMSF%E4%B8%8ECS%E4%BC%9A%E8%AF%9D%E4%BA%92%E8%BD%AC%5D.md]

==! 自己测试的时候出了一些问题,暂时没解决,先放一边…

假设我们已经完成上述步骤… ,再看下这时候的拓扑

问题

内网xp无法访问,自带的代理与其他的socks代理工具都试过了,无法带入内网,后来发现是环境问题,个人机器没有抓发功能,导致数据过不去==!也尝试了仅主机模式,木得行o(一︿一+)o…., 先挖个坑吧,以后来填坑~

最后

上述介绍的都是cs的一些基本语法以及使用手段,后续可能会更新cs一些进阶用法,文章有不足或者任何错误,请各位大佬不吝赐教。感谢大佬们对cs的各种总结。╰(°▽°)╯

参考链接

https://rcoil.me/2018/04/Cobalt%20Strike学习

https://mp.weixin.qq.com/s/CEI1XYkq2PZmYsP0DRU7jg

https://blog.51cto.com/life2death/1618744

https://mp.weixin.qq.com/s/tqOv6p9NhKpo6Isz5jBuKw

https://xz.aliyun.com/t/4191

https://wbglil.gitbooks.io/cobalt-strike/

https://github.com/aleenzz/Cobalt_Strike_wiki

 评论


载入天数...载入时分秒... | 字数统计:16.9k