zoukankan      html  css  js  c++  java
  • 内网渗透之权限维持

    本文作为内网部分最后一大块知识整理,思路方法均来源于网上师傅们的分享,没什么独家秘笈,不是复现,内容太多也无法一次性一一复现(但作为补充会搜集一些个人觉得写得比较好的师傅们复现的参考文章列举出来),只说一些个人了解的方法和学习到的思路,不讨论免杀,大佬请止步

    由于是网络“攻” “防”,在高强度对抗的今天,很多方法可能已经不太适用了,因此本文仅供参考

    当然,内网渗透涉及的东西实在是太多,不是我这个菜鸡能说完的。往后可能会补充一些我觉得值得一说的、有趣的针对某知识点的总结性质的文章,可能篇幅会短一些(吧)。。。

    向大佬们学习

    权限维持作为内网渗透过程中非常重要的一部分,使得大佬们想出了各种骚操作、小工具,可以说是层出不穷,让人看了大呼过瘾。如果拿下了一个目标的权限,常见思路是建立一个后门来对目标进行持续控制,以防一旦漏洞被修复后,无法继续控制目标。所以在大家的不懈努力下,让我经常掉权限。。。啊不是,让计算机环境非常健康,安全得到了保障

    0x01操作系统后门

    Windows系统后门:

    1.粘滞键后门

    俗话说得好,有事没事按5次shift,也许就会在某个时刻,看着某位师傅会心一笑,呵呵

    5次shift可以打开或关闭粘滞键,粘滞键是为了实现组合键的功能,方便用户只按一个键

    c:windowssystem32下有此exe

    我们的目的是用cmd.exe把sethc.exe替换掉,5次shift用system权限去启动cmd.exe(当然不只是cmd.exe,你可以自己写exe替换掉)

    详情参考: https://www.cnblogs.com/BOHB-yunying/p/11695140.html

    还可以采用Empire中的模块实现

    参考:https://www.cnblogs.com/lcxblogs/articles/14458262.html    中的0x08 后门部分

    当然,如果无法替换掉sethc.exe,可以采用shift映像劫持后门

    https://zhuanlan.zhihu.com/p/98526538

    https://my.oschina.net/u/4587410/blog/4458826

    介绍了几种shift映像劫持后门的修改办法

    2.注册表注入后门

     注册表此路径中会存在普通用户权限下写入的后门程序和脚本路径,键名不固定

    此方法可以采用Empire、CS、msf实现

    Empire参考文章:https://zhuanlan.zhihu.com/p/254909992?utm_source=wechat_session

             https://www.cnblogs.com/lcxblogs/articles/14458262.html    中的0x08 后门部分

    CS参考文章:https://www.freebuf.com/articles/web/251179.html

    msf参考文章:https://www.freebuf.com/articles/web/252963.html  中注册表键后门

    3.计划任务后门

    计划任务后门也是有管理员权限和普通用户权限的,管理员权限的后门可以执行更多种类的计划任务(废话)

    之前我也介绍过计划任务提权等一些列操作

    同样采用框架实现,如msf、Empire、PowerSploit

    参考文章:https://zhuanlan.zhihu.com/p/254839188

    4.meterpreter后门

    meterpreter功能很多,也有创建持久化后门的功能

    参考: https://www.cnblogs.com/lcxblogs/articles/14163368.html  的0x14后门植入部分

        https://www.cnblogs.com/jjj-fly/p/8178420.html

        https://blog.csdn.net/qq_44276741/article/details/106549192

    5.WMI后门

    WMI(Windows Management Instrumentation)全名Windows管理工具,它是Windows操作系统中管理数据和操作的基础模块

    此类后门的优势在于无文件、无进程(即:代码加密存储于WMI;系统自启动powershell去执行后门,执行后极短的时间内进程消失),且只能由有管理员权限的用户执行(如果复现执行不成功,看看是不是权限有问题),常用powershell编写

    可以采用Empire进行利用

    Empire下的Invoke-WMI模块(persistence/elevated/wmi)可创建WMI后门

    参考文章:https://zhuanlan.zhihu.com/p/255065815

         https://xz.aliyun.com/t/2873

    6.其他

    除了上面的5小点介绍,还有一些神奇的办法,参考:https://www.cnblogs.com/-mo-/p/12449964.html

    Linux系统后门:

    1.Cymothoa后门

    这是一款kali自带的Linux后门利用工具,可以把shellcode注入到系统进程中,使用的时候需要把它扔到目标机器中运行

    参考文章:https://www.cnblogs.com/-qing-/p/10519363.html

    2.其他

    参考文章:https://www.cnblogs.com/-mo-/p/12337766.html

    0x02web后门

    这部分就不说了,也说不了

    webshell相关的内容,没什么固定而具体的方法,大马小马一句话,也可以按目标支持的脚本语言划分,多数为具有针对性的定制产品,既可以工具框架自动生成也可以手工制作,上限很高

    而且伴随着防护手段升级,文件类的webshell生存空间越来越小,内存类的webshell还能用一用

    其实不仅是web后门,其他后门也面临这个问题,免杀大佬当我没说

    0x03域控后门

    1.DSRM后门

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

    在域控中,DSRM账号可视为域控的本地管理员账号

    在DSRM账号可以登录域控的前提下,如果我们获得了域控的权限,在域控上cmd进入ntdsutil,将DSRM账号的密码进行修改(常同步为krbtgt的NTLM hash),之后在域内任何一台主机(包括域控本身)上通过修改后的hash,进行

    PTT实现远程访问控制

    细节参考复现文章:https://www.cnblogs.com/xiaoxiaosen/p/13535232.html

    2.SSP维持域控权限

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

    如果获得目标系统system权限,可以使用该方法进行持久化操作

    其主要原理是:LSA(Local Security Authority)用于身份验证;lsass.exe作为windows的系统进程,用于本地安全和登录策略;在系统启动时,SSP将被加载到lsass.exe 进程中。但是,假如攻击者对LSA进行了扩展,自定义了恶意的

    DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获取lsass.exe进程中的明文密码。这样即使用户更改密码并重新登录,攻击者依然可以获得该账号的新密码

    啊,比较猥琐

    利用通常是用mimikatz把SSP注入到域控的内存中(但是域控不能重启,重启后SSP会丢失),注销当前用户重新登录,即可获取明文密码(获得的是重新登录域控时管理员输入的密码的明文),密码存储在日志文件C:Windowssystem32mimilsa.log中

    或者

    将mimikatz中的mimilib.dll 放到目标域控的C:Windowssystem32目录下(DLL的位数需要与windows位数相同),并将mimilib.dll添加到注册表中(此方法不收到重启限制,重启后依然生效,但是会在目标主机上留下二进制文件)

    系统重启后,若dll被成功加载,用户在登录时输入的账号和密码明文就会被记录在C:Windowssystem32kiwissp.log中

    参考文章:https://xz.aliyun.com/t/7432

    3.SID history域后门

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

    名。如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个账户,则新账户将不具有授权给前一个账户的权力或权限,原因是该账户具有不同的 SID 号。安全标识符也被称为安全 ID 或 SID。。。。。。

    在Windows中,每个用户都有自己的SID

    SID的作用主要是跟踪安全主体控制用户连接资源时的访问权限

    SID History是在域迁移过程中需要使用的一个属性

    如果将A域中的域用户迁移到B域中,那么在B域中该用户的SID会随之改变,进而影响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用

    户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源

    这就又给了权限维持以可乘之机

    主要思路是:把域控管理员的SID加入到 其他某个 恶意的域账户 的SID History中,然后,这个恶意的(我们自己创建的)域账户就可以域管理员权限访问域控了

    复现参考文章:https://www.cnblogs.com/xiaoxiaosen/p/13535868.html

    4.Golden ticket&Silver ticket

    黄金票据、白银票据在我之前的文章里讲过很多次

    黄金票据主要是抓krbtgt账号的NTLM hash、白银票据抓的是域控计算机账号的NTLM hash

    黄金票据利用需要知道

    • 需要伪造的域管理员用户名
    • 完整的域名
    • 域SID
    • krbtgt的NTLM Hash

     白银票据利用需要知道

    • 域名
    • 域SID
    • 目标服务器的FQDN
    • 可利用的服务
    • 服务账号的NTLM Hash
    • 要伪造的用户名

    获取权限不同

    金票:伪造的TGT,可以获取任意Kerberos的访问权限
    银票:伪造的ST,只能访问指定的服务,如CIFS

    认证流程不同

    金票:同KDC交互,但不同AS交互
    银票:不同KDC交互,直接访问Server

    加密方式不同

    金票:由krbtgt NTLM Hash 加密
    银票:由服务账号 NTLM Hash 加密

    复现参考:https://www.jianshu.com/p/4936da524040

     https://www.cnblogs.com/-zhong/p/12269027.html

    5.Skeleton Key

    万能钥匙

    即给所有域内用户添加一个相同的密码,域内所有的用户都可以使用这个密码进行认证,同时原始密码也可以使用,其原理就是对 lsass.exe 进行注入,所以重启后会失效,不需要重启

    将Skeleton Key安装在域控制器上,便能够能够让所有域用户使用同一个万能密码对域控进行登录,现有的所有域用户使用原密码仍能继续登录,注意万能密码并不能更改用户权限,重启将失效

    常见利用方法是:用mimikatz往域控中注入Skeleton Key,然后就可以用任意域用户以万能密码mimikatz,登录域控

    复现参考:http://www.vuln.cn/6816

    6.Hook PasswordChangeNotify

     Hook PasswordChangeNotify 的作用是当用户修改密码后在系统中进行同步

    攻击者可利用此功能获取用户修改密码时输入的密码明文

    相比与SSP上传mimilib.dll之后需要重启、放dll文件在system32文件夹下、且要修改注册表

    Hook PasswordChangeNotify既不需要重启,也不需要改注册表,还不需要放置dll文件

    隐蔽性好一些

    复现参考:https://www.cnblogs.com/xiaoxiaosen/p/13537305.html

     http://www.vuln.cn/6812

    本文行文框架和部分内容参考ms08067实验室《内网安全攻防》一书

    未经允许,禁止转载

  • 相关阅读:
    【LeetCode】731. 图像渲染
    【LeetCode】130. 被围绕的区域
    小白之HTTP协议熟悉篇
    Java和js常用表达式
    Mysql主主复制高可用解决方案
    解决vue报错:Module build failed (from ./node_modules/_eslint-loader@2.2.1@eslint-loader/index.js): TypeError: Cannot read property 'range' of null
    centos7使用yum安装jdk并配置jdkhome
    阿里nacos安装及使用指南
    js实现给html固定区域增加水印
    MySQL安装教程
  • 原文地址:https://www.cnblogs.com/lcxblogs/p/14216525.html
Copyright © 2011-2022 走看看