cobalt strike中的一些小知识点的理解
我眼中的beacon与beacon stage/stagerbeacon指的是受害者与我们的teamserver所建立的这个连接,也可以理解成我们所获的的对方主机的控制权,beacon stage/stager是生成的可执行文件。什么是stage(stageless)?stage是无阶段的stager,可以直接理解成,stage是stager与它所请求的数据的集合体。stage比stager更安全
- 我眼中的beacon与beacon stage/stager
beacon指的是受害者与我们的teamserver所建立的这个连接,也可以理解成我们所获的的对方主机的控制权,beacon stage/stager是生成的可执行文件。
- 什么是stage(stageless)?
stage是无阶段的stager,可以直接理解成,stage是stager与它所请求的数据的集合体。stage比stager更安全,但是体积更大。而且在内网穿透的时候基本只能用stage,用stager会十分麻烦,stager是分段传输payload的,使用stager有时候会导致目标无法上线。stage唯一的缺点是相比较而言体积比较大。
- 什么是stager?
stager其实是一段很简单的加载器,是socketedi协议请求的一段shellcode,它的作用是向teamserver(C2)请求一段数据,这些数据前是个字节是shellcode的长度,后面是shellcode。接收到数据后跳转到shellcode所在的内存处开始运行。
tips
powershell payload 也相当于 stager,因此powershell 的payload一般不能用于多级内网穿透。
- beacon与c2通信逻辑
1.stager的beacon会先下载完整的payload执行,stage则省略这一步
2.beacon进入睡眠状态,结束睡眠状态后用 http-get方式 发送一个metadata(具体发送细节可以在malleable_profie文件里的http-get模块进行自定义),metadata内容大概是目标系统的版本,当前用户等信息。
3.如果存在待执行的任务,则c2会响应这个metadata发布命令。beacon将会收到具体任务内容与一个任务id。
4.执行完毕后beacon将回显数据与任务id用post方式发送回C2(细节可以在malleable_profile文件中的http-post部分进行自定义),然后又会回到睡眠状态。参考资料
https://www.chabug.org/web/832.html
- 什么是C2?
C2就是command&control server,命令控制服务器
- hta木马
http application的缩写是一种独立的程序跟c++写的程序没啥区别。可以被windows电脑的mshta命令直接执行。可更改任意后缀名。
- dll木马
regsvr32 demo.dll 即可执行。
- 如何更改心跳包频率
sleep 60 37 #其中60是默认时间,后面的37是抖动频率,实际范围为37.8秒到82.2秒一次。
- 补充:一些beacon中的命令解释
argue 进程参数欺骗
blockdlls 阻⽌⼦进程加载⾮Microsoft DLL
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 使⽤exp
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 Apply 从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 停⽌SOCKS
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横向渗透
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)