神兵利器 | 分享个CobaltStrike权限维持插件工具(附下载

VSole2022-12-12 10:22:04

EasyPersistent是一个用于windows系统上权限维持的Cobalt Strike CNA 脚本。脚本整合了一些常用的权限维持方法,使用反射DLL模块可使用API对系统服务、计划任务等常见权限维持方法进行可视化操作(强烈建议使用白名单进程进行操作)。

项目地址:

https://github.com/yanghaoi/CobaltStrike_CNA

0x01 脚本菜单功能

设置常用路径:全局路径参数设置
文件控制:文件属性、文件权限的查看和修改、文件符号链接的创建
注册表:注册表的增加、删除、查询
系统服务:系统服务的创建、查询、删除、SDDL设置
用户操作:系统用户账户的添加、删除、修改、查询、克隆、激活、禁用
启动目录:系统启动目录文件的查询、写入
计划任务:计划任务的查询、写入、删除
DLL加载:MSDTC服务、Explorer程序DLL劫持
BITS任务:BITS任务的添加、查询、删除
WMI事件:WMI事件订阅的添加、查询、删除

0x02 使用方法

GUI界面参数根据理解填写,可能部分位置有Bug,欢迎提交issues.

文件控制

主要是attrib、takeown、icacls、mklink几个命令的使用。

注册表

通过Reg命令执行操作,支持对以下位置进行操作:Run,RunOnce, RunOnceEx,Logon Scripts,Winlogon Shell,Winlogon Userinit

添加方法带有/f选项,可用于更新键值:

查询位置分为单个键查询和一键查询所有(选项里有的)启动项位置,查询所有比较暴力:

其他Tips:

针对x86和x64注册表位置可使用下拉选项进行选择;
使用时请注意HKLM和HKCU位置,x86和x64的不同;
HKLM位置可能需要管理员权限,SYSTEM权限在写入HKCU位置会出现问题。

系统服务

系统服务主要使用SC命令和一些API进行操作

脚本中提供了两个服务程序TransitEXE.exe和uinit.exe,其中uinit.exe为一个启动后会返回服务失败的程序,用于错误回调执行,TransitEXE.exe服务程序实现代码参考[CreateService]主要进行了以下修改:

  • (https://github.com/uknowsec/CreateService)
1. 注释RC4加密部分
2. 修改资源ID默认为100
3. 增加互斥体检测退出服务功能
4. 增加进程守护功能
在ReflectiveDll的实现中,根据微软文档主要进行了以下功能开发:
1. 设置服务描述,设置多种启动类型添加,设置SDDL安全描述符

服务守护进程

服务名称和显示名称在SCM中的位置

添加服务时,为了方便测试,脚本对一些参数进行字符随机化,并对各个流程进行了调试信息输出:

添加服务后的显示:

在这里,只需要选择一个二进制文件上传,点击添加即可,之后脚本会根据需要上传某个服务程序。如果是TransitEXE,反射DLL会将执行命令写入到服务程序资源信息中,随后启动服务,服务程序落地后启动后会提取出自身资源信息中的命令行,使用CreateProcess第二个参数来执行。

程序描述部分支持中文描述

触发器启动

在命令行中的触发器使用了网络触发器:

sc triggerinfo ServiceName start/networkon

API中使用的是硬件接口触发:

安全描述符设置

在API中通过ConvertStringSecurityDescriptorToSecurityDescriptor和SetServiceObjectSecurity设置服务的安全描述符,如果进行一些限制设置需要SYSTEM权限

注意如果在administrator权限下设置了SDDL限制,那么会导致OpenService Failed的情况

服务启动失败回调

启动服务失败后会有回调命令执行:

其他

  • 两个服务程序可以写成一个,只是uinit.exe是先写的;
  • 其他设置SDDL、修改服务、查询、删除部分功能没有完全强大,只能说是够用。
  • 脚本中默认的目录C:\360\不存在,会导致上传文件失败([-] could not upload file: 3),可以修改默认目录,net helpmsg查询详细错误情况。

用户操作

查询用户:

使用CS自带命令bnet()

添加用户:

集成了CMD命令、API、参数欺骗。API添加和查询用户:

自带参数欺骗添加用户:

克隆用户:

通过ridhijack实现:

https://github.com/yanghaoi/ridhijack

账户激活与禁用:

这里的功能最初是为了激活Guest的,后面增加了不同组的添加、移除、账户激活禁用,主要就是使用api进行一些操作,然后我源码找不到了...:

启动目录

主要就是两个位置:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

程序可以写入到目录中进行自启动,但是不能设置隐藏属性。(一次测试不知道怎么搞的这个启动目录被搞成了其他位置C:\,启动后会弹出该目录下的文件夹,杀软会毫无反应。记录到了这个现象,还没进行深入研究。)

在选项中可以设置远程文件名和执行方式,为直接上传和API重启写入:

API重启写入利用函数MoveFile设置在重启后写入,可以绕过一些AV程序对启动目录的监控。

计划任务

计划任务的操作可由SCHTASKS命令行和API来完成,由于命令行实现功能和API有差距(命令行无法设置描述和创建者)所以分开写了两个操作界面:

通过命令行注册:

通过API注册:

优化选项:

 - 添加任务时未对文件是否存在进行判断,未增加文件上传选项;
 - 命令行模式中的描述可以删除。

其他:

 - API中使用\Everyone身份,如果没有已登录用户,可能导致启动失败。

DLL加载

利用msdtc服务加载oci.dll和Explorer加载linkinfo.dll原理进行DLL劫持,系统启动后可进行权限维持,通过禁用系统重定向不同位数下的system32目录进行了操作,方便简单:

msdtc

注意:在64位系统中生成的DLL要是64位的才能执行,在CobaltStrike4.3中要勾选x64 payload,其他版本中64位DLL+ x86 Payload上线的是x86的rundll32.exe,x64payload上线的是x64的msdtc.exe。

使用64位rundll32程序加载位于C:\windows\system32\下的32位dll,出错:

那么使用C:\Windows\SysWOW64\rundll32.exe下的32位DLL加载C:\windows\system32\32.dll能成功吗?

可以看到也是不行的,猜测因为windows的重定向机制,使用32位程序时,系统会去找32位的system目录(SysWOW64),把C:\windows\system32\32.dll复制到SysWOW64那就可以加载了:

可以看到果然如此!

Explorer

会在用户登录后加载C:\windows\linkinfo.dll,同样需要与系统位数对应的DLL。

Bitsadmin Jobs

简单使用bitsadmin命令进行操作,据说仅适用于Windows7、8、Server 2008和Server 2012,还咩做实验。

WMI事件订阅

使用powershell脚本来进行WMI事件订阅设置。

预置了6种触发方式:移动设备、用户登录、进程启动、时间间隔、某个时间、重启:

0x03 免责声明

  • 本项目实现中可能会对一些系统服务、底层API进行调用,实现过程中可能会导致系统异常,无法启动,请自行测试;
  • 本项目仅用于作者进行代码学习、系统研究等实验目的,作者不承担任何责任。

0x04 参考链接或源码

https://github.com/uknowsec/CreateServicehttps://github.com/v1ncilazy/BypassAddUserhttps://github.com/An0nySec/ShadowUserhttps://github.com/Sw4mpf0x/PowerLurk
api接口
本作品采用《CC 协议》,转载必须注明作者和本文链接
API接口管理工具
2023-12-01 11:02:53
API-Explorer是一款管理api接口的工具,可提前配置好接口,直接调用即可;可定义数据包任何位置内容,使用起来相当灵活。
也就是说,安全人员对API风险的防控工作,是以业务人员的API资产维护工作为基础的,这之间就存在跨部门协作的壁垒问题。进一步观测这些近似的API端点,会发现它们往往也具有相同的用途。这类路径、用途高度重合的API端点若全盘列出,可能会造成API资产列表过于庞大的问题。
API接口渗透测试
2022-03-25 22:15:35
MVC 将整个应用分成 Model、View 和 Controller 三个部分,而这些组成部分其实也有着几乎相同的职责。SoapUI Free,手工测试SOAPSonar,SOAP UI 的替代。Burp Suite,代理拦截,跟踪通信过程和结果,对通信进行重放和二次处理等。代理配置可以用 Burp 重放 SOAP 的探测 Payload。SUAP UI 会自动探测接口
了解接口常见漏洞,将帮助你在测试接口获取更多的思路。信息披露信息可能会在 API 响应或公共来源中披露。敏感数据可以包含攻击者可以利用的任何信息。例如,使用WordPress API的网站可能会在不知不觉中与导航到API路径的任何人共享用户信息。错误消息可帮助 API 使用者排查其与 API 的交互问题,并允许 API 提供者了解其应用程序的问题。其他良好的信息来源是在侦察期间收集的 API 文档和资源。
渗透测试-API接口测试
2021-12-28 22:57:33
一个API中通常包含的结构有:本文记录的是Postman学习,以及一些接口测试概念。帮助大家建立接口测试的整体概念,以及学会Postman工具的使用。因为客户自己的测试人员平时做业务功能测试时,也都是有现成的测试 demo的,不可能在Postman中一个一个手动构造请求去测试。
随着现代互联网的快速发展,网络攻击、数据泄露事件日益增多,根据Salt公司发布的《2023 年第一季度 API 安全状况报告》,与前六个月相比,针对API的攻击增加了400%,其中31%的客户遭遇了敏感数据泄露,由此API接口的安全性越来越受到人们的关注。其中,SSL证书作为保护传输数据安全的重要工具,可以助力确保API接口的安全性,加密传输信息防窥探防篡改。为什么API接口安全性如此重要?1、A
说实话,我非常希望自己能早点看到本篇文章,大学那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写。至今我仍清晰地记得,那个电商教程是怎么定义接口的:管它是增加、修改、删除、带参查询,全是 POST 请求一把梭,比如下面这样:修改用户的收货地址。现在看来,全部用 POST 请求估计是为了传参方便吧。本文希望通过串讲,梳理一下个人当前了解到的 API 知识体系,整理的同时也希望能对大家有一点点帮助。
异步调用几乎是处理高并发Web应用性能问题的万金油,那么什么是“异步调用”? “异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。
近日,阿里云应急响应中心捕获到 XXL-JOB API 接口未授权访问致反序列化漏洞。漏洞描述 XXL-JOB是一个轻量级分布式任务调度平台。默认情况下XXL-JOB的API接口没有配置认证措施,未授权的攻击者可构造恶意请求,触发反序列化,造成远程执行命令,直接控制服务器。漏洞利用无需登录,实际风险极高,阿里云应急响应中心提醒 XXL-JOB 用户尽快采取安全措施阻止漏洞攻击。
VSole
网络安全专家