渗透测试神器CS(4.0)的使用

CS简介

CS 是Cobalt Strike的简称,是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。
CobaltStrike集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。

CS功能

Cobalt Strike可以使用 AggressorScripts脚本来加强自身,能够扩展菜单栏,Beacon命令行,提权脚本等。
Cobalt Strike通信配置文件是 Malleable C2,你可以修改CS的通讯特征,Beacon payload的一些行为。
Cobalt Strike可以引用其他的通讯框架ExternalC2,ExternalC2是由Cobalt Strike提出的一套规范/框架,它允许黑客根据需要对框架提供的默认HTTP(S)/DNS/SMB C2 通信通道进行扩展。

安装CS

下载并解压文件
在这里插入图片描述目录如下
在这里插入图片描述agscript 拓展应用的脚本

  c2lint 用于检查profile的错误异常

  teamserver 服务端程序

  cobaltstrike,cobaltstrike.jar客户端程序(java跨平台)

  logs 目录记录与目标主机的相关信息

  update,update.jar用于更新CS

  third-party 第三方工具

  最核心的就是teamserver和cobaltstrike.jar,分别是服务端和客户端

  启动服务端,我们首先给teamserver权限

  chmod 777 teamserver

在这里插入图片描述启动,第一个参数是地址,第二个参数是密码,地址是我们本机的地址,密码任意设置,这里为password
在服务端输入命令 ./teamserver 服务端ip地址 密码
在这里插入图片描述接下来在客户端打开CS图形化界面
打开终端,输入
java -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar命令启动。
在这里插入图片描述 界面如图
在这里插入图片描述这里由于我们的服务端和客户端在一台机器上,我们就使用默认的host 127.0.0.1即可,port默认为50050,在启动服务端的时候通过回显也可以得知。如果更改了teamserver文件里的server_port值那么在此处就需要改成对应的。user可以随意设置,password为我们前面启动teamserver时的密码password
都设置好后,点击connect
在这里插入图片描述启动后的界面如图
在这里插入图片描述

CS的基本使用

作为cobalt strike的第一课,直接简单地进行实战,先感受下cobalt strike最基础的使用流程及其魅力。
首先创建一个listener
左上角的cobaltstrike->listeners
复现
环境:
kali:192.168.175.147
win7:192.168.175.145
在这里插入图片描述开启个监听
在这里插入图片描述点击add创建即可…
在这里插入图片描述选择生成后门-创建win.exe-payload…

在这里插入图片描述创建好后
在这里插入图片描述选择一个钓鱼链接
在这里插入图片描述在这里插入图片描述复制该链接到需要控制的靶机上下载即可
在这里插入图片描述
下载好后,直接双击…
在这里插入图片描述可看到已经成功获得对方的shell,成功控制对方电脑…

深入标题介绍

Access
在这里插入图片描述Dump Hashes #获取hash
Elevate #提权
Golden Ticket #生成黄金票据注入当前会话
Make token #凭证转换
Run Mimikatz #运行 Mimikatz
Spawn As #用其他用户生成Cobalt Strike侦听器

Explore
在这里插入图片描述
Browser Pivot #劫持目标浏览器进程
Desktop(VNC) #桌面交互
File Browser #文件浏览器
Net View #命令Net View
Port Scan #端口扫描
Process List #进程列表
Screenshot #截图

Pivoting
在这里插入图片描述
SOCKS Server #代理服务
Listener #反向端口转发
Deploy VPN #部署VPN

Spawn

外部监听器(如指派给MSF,获取meterpreter权限)

Session
在这里插入图片描述Note #备注
Remove #删除
Sleep #指定被控端休眠时间,默认60秒一次回传,让被控端每10秒来下载一次任务。实际中频率不宜过快,容易被发现。
Exit #退出

Interact(打开beacon)
在这里插入图片描述beacon> help

Beacon Commands

Command Description


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 停止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横向渗透

基础操作演示

在这里插入图片描述在这里插入图片描述右键目标interact来使用Beacon,用它来执行各种命令。在Cobalt Strike中,默认心跳为60s,执行命令的响应很慢,在下载文件时更加明显,所以根据实战环境把时间降低,建议不要太快,否则流量会相对明显。
在这里插入图片描述
在beacon中,如果想对目标进行命令管理,需要在前面加上shell,如shell whoami、shell ipconfig等…

在这里插入图片描述今天简单的简介入门级,简单的操作可自行搭建靶机操作
后面会越来越深入的学习Cobalt Strike 4.0…加油!!

  • 31
    点赞
  • 239
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
`argparse` 是 Python 标准库中用于解析命令行参数和选项的模块。它可以让你的 Python 脚本更加灵活,可以从命令行中接收参数和选项,并且可以根据用户提供的参数来执行不同的操作。下面是一些使用 `argparse` 的笔记: ### 基本示例 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--url', type=str, help='需要处理的URL') parser.add_argument('--file', type=str, help='需要处理的文件路径') args = parser.parse_args() if args.url: print('处理URL:', args.url) elif args.file: print('处理文件:', args.file) else: print('请提供URL或文件路径') ``` 在上面的例子中,我们使用 `argparse` 创建了一个解析器对象,然后添加了两个参数 `--url` 和 `--file`。`type` 参数指定了参数的类型,`help` 参数指定了参数的帮助信息。最后,使用 `parse_args()` 方法解析命令行参数,并根据参数执行不同的操作。 ### 必需参数 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('input', type=str, help='输入文件路径') parser.add_argument('output', type=str, help='输出文件路径') args = parser.parse_args() print('输入文件:', args.input) print('输出文件:', args.output) ``` 在上面的例子中,我们将参数 `input` 和 `output` 指定为必需参数,这意味着用户必须在命令行中提供这两个参数,否则程序将会抛出异常。 ### 默认值 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--url', type=str, help='需要处理的URL', default='https://www.baidu.com') parser.add_argument('--file', type=str, help='需要处理的文件路径', default='data.txt') args = parser.parse_args() print('处理URL:', args.url) print('处理文件:', args.file) ``` 在上面的例子中,我们为参数 `--url` 和 `--file` 指定了默认值,这意味着如果用户没有在命令行中提供这两个参数,那么程序将使用默认值。默认值可以是任何类型的值,不仅仅限于字符串类型。 ### 多个值 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--input', type=str, help='输入文件路径', nargs='+') parser.add_argument('--output', type=str, help='输出文件路径') args = parser.parse_args() print('输入文件:', args.input) print('输出文件:', args.output) ``` 在上面的例子中,我们将参数 `--input` 指定为多个值,这意味着用户可以在命令行中提供多个输入文件路径,例如 `--input file1.txt file2.txt`。使用 `nargs='+'` 将参数指定为多个值,使用 `args.input` 来访问这些值。 ### 限制值的范围 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') parser.add_argument('--size', type=int, help='图像大小', choices=[256, 512, 1024]) args = parser.parse_args() print('图像大小:', args.size) ``` 在上面的例子中,我们将参数 `--size` 指定为整数类型,并且限制了它的取值范围只能是 256、512 或 1024。如果用户在命令行中指定了一个不在这个范围内的值,程序将会抛出异常。 ### 子命令 ```python import argparse parser = argparse.ArgumentParser(description='命令行参数解析示例') subparsers = parser.add_subparsers(title='子命令', description='可用的子命令') parser_a = subparsers.add_parser('a', help='子命令A') parser_a.add_argument('--input', type=str, help='输入文件路径') parser_a.add_argument('--output', type=str, help='输出文件路径') parser_b = subparsers.add_parser('b', help='子命令B') parser_b.add_argument('--url', type=str, help='需要处理的URL') args = parser.parse_args() if hasattr(args, 'input'): print('处理文件:', args.input) print('输出文件:', args.output) elif hasattr(args, 'url'): print('处理URL:', args.url) else: print('请提供子命令参数') ``` 在上面的例子中,我们使用 `add_subparsers()` 方法创建了子命令解析器对象,并添加了两个子命令 `a` 和 `b`。然后,我们为每个子命令添加了不同的参数。最后,根据子命令参数执行不同的操作。 以上就是一些 `argparse` 的基本使用笔记,希望对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值