前言
渗透的本质是在前端通过一些漏洞获取目标系统的 webshell或更进一步的 getshell。而后渗透更多的是指在获取一定权限后的提权手段和横向扩展技术,在内网中探索更多的漏洞点以及更高的系统权限。
Beacon控制台
Beacon为异步交互机制,异步交互即非同步的情况。也就是从命令发出后,beacon不会立马去执行,beacon会处于 sleep状态,默认时间为 60秒。CS提供了修改此等待时间的命令,即 sleep命令,sleep 0表示同步模式,即命令发出后立即执行。
1、与目标机交互
在 CS中右键目标点击 Interact
2、正常执行命令
1 | shell ipconfig |
发现存在异步交互机制,为默认的 60秒
3、修改为同步交互机制
1 | sleep 0 |
Beacon控制台命令
命令 | 描述 |
---|---|
browserpivot | 设置浏览器的主会话 |
bypassuac | 绕过目标验证,返回一个高权限账号 |
cancel | 取消一个正在下载的任务 |
cd | 切换目录 |
checkin | 强制dns beacon连接,在登记期间,beacon会发布元数据和存储键盘记录。 |
clear | 清除beacon序列 |
covertvpn | 部署隐蔽的vpn客户端 |
cp | 复制文件 |
dcsync | 从dc中提取密码hash |
desktop | 查看目标的桌面并与之交互 |
dllinject | 注入反射的dll进程 |
dllload | 使用loadlibrary将dll加载到进程中 |
download | 下载文件 |
downloads | 列出正在下载的文件 |
drives | 列出目标驱动 |
elevate | 尝试进行提权 |
execute | 执行目标上的程序(没有输出) |
execute-assembly | 在内存中执行一个本地的net程序 |
exit | 终止beacon会话 |
getprivs | 启用当前令牌的系统权限 |
getsystem | 尝试获取system |
getuid | 获取用户id |
hashdump | 存储密码hash值 |
help | 帮助菜单 |
inject | 在指定的进程中派生出新的会话 |
jobkill | 杀死长时间运行的后期开发任务 |
jobs | 列出长期运行的后期开发任务 |
kerberos_ccache_use | 将缓存中的kerberos票证应用于此会话 |
kerberos_ticket_purge | 从本次会话中清除kerberos票据 |
kerberos_ticket_use | 将kerberos票证应用于此会话 |
keylogger | 将键盘记录器注入到进程中 |
kill | 杀死一个进程 |
link | 通过smb连接到beacon对等端 |
logonpasswords | 使用mimikatz转储凭据和hash值 |
ls | 列出文件 |
make_token | 创建一个令牌 |
mimikatz | 运行mimikatz命令 |
mkdir | 新建一个目录 |
mode dns | 使用dns a作为数据通道(仅限dns beacon) |
mode dns-txt | 使用dns txt作为数据通道(仅限dns beacon) |
mode dns6 | 使用dns aaaa作为数据通道(仅限dns beacon) |
mode http | 使用http作为数据通道 |
mode smb | 使用smb进行通信 |
mv | 移动文件 |
net | 网络和主机枚举工具 |
note | 为beacon分配注释 |
portscan | 扫描网络获取开放的服务 |
powerpick | 通过unmanaged powershell执行命令 |
powershell | 通过powershell执行命令 |
powershell-import | 导入powershell脚本 |
ppid | 为生成的post-ex设置父pid |
ps | 显示进程列表 |
psexec | 使用服务在主机上生成会话 |
psexec_psh | 使用powershell在主机上生成会话 |
psinject | 在特定的进程中执行powershell命令 |
pth | 使用mimikatz传递hash |
pwd | 打印当前的位置 |
reg | 查询注册表 |
rev2self | 恢复原始令牌 |
rm | 删除文件或文件夹 |
rportfwd | 设置一个方向转发端口 |
run | 执行程序(返回输出) |
runas | 以另一个用户身份执行程序 |
runasadmin | 使用令牌复制方法绕过用户账户控制 |
runu | 在另一个pid下执行程序 |
screenshot | 截取屏幕 |
setenv | 设置环境变量 |
shell | 通过cmd来执行命令 |
shinject | 将shellcode注入进程 |
shspawn | 生成进程并将shellcode注入其中 |
sleep | 设置beacon的休眠时长 |
socks | 启动socks4a服务器以中继流量 |
socks stop | 停止socks4a服务器 |
spawn | 产生一个新的会话 |
spawnto | 设置可执行文件以生成进程 |
spawnu | 在另一个pid下产生一个会话 |
ssh | 使用ssh在主机上生成ssh会话 |
ssh-key | 使用ssh在主机上生成ssh会话 |
steal_token | 从进程中窃取访问令牌 |
timestomp | 应用一个时间戳 |
unlink | 断开与父beacon的连接 |
upload | 上传文件 |
wdigest | 使用mimikatz转储明文凭证 |
winrm | 使用winrm在主机上生成会话 |
wmi | 使用wmi在主机上生成会话q |
这里用 keystrokes键盘记录来测试
1 | beacon> keylogger |
查看键盘记录位置:View -> Keystrokes
- Beacon支持 Tab补全,当使用目标机 cmd执行命令的话需要加上 shell,例如获取 IP:
shell ipconfig
Socks代理
当我们 getshell某主机,该主机存在 DMZ区,有公网 IP,并且可以访问内网。这时我们可以将该主机当作跳板来进行后续的内网渗透。而做法可以是在目标机 上搭建 socks代理服务器,然后攻击机的 msf设置代理为 socks服务器的 IP,先将流量发送到目标机,相当于在目标机上运行 msf,实现内网使用的效果。
1、CS设置 socks代理
位置:右键目标 (Pivoting -> SOCKS Server)
设置端口号,选择一个未被占用的端口即可
2、查看已搭建的 socks代理
位置:View -> Proxy Pivots
点击转发 Tunnel
3、在 msf中进行转发
将 CS中生成的命令,在 msf中输入后,即可设置代理。
代理后即可使用 msf内置功能进一步进行内网横向渗透。
CS给 msf传 shell
1、创建外部的 HTTP监听
创建外部的监听是为了将已有的 shell派生给 MSF,所以要再创建一个外部监听。
- 此处需要注意的是,host需要输入 msf对应的 IP地址,端口选择未被占用即可
2、派生
首先进入 MSF配置监听
1 | msf6 > use exploit/multi/handler |
然后在CS中,右键目标 -> Spawn,选择外部监听,即可在 msf中获得结果
总结
当在获取到授权后,客户可能要求进行内网渗透,那么 CS一定是团队协作时进行内网渗透必不可少的工具之一。在 CS将 shell传给 msf后,配合目标主机未修补的补丁,我们可以直接使用各种溢出漏洞进行提权操作,扩大我们的战果。
- 本文作者: Mark DiDi
- 本文链接: https://gitee.com/gxustt/mxy/mxy/2020/12/08/CobaltStrike后渗透内容/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!