内网渗透体系建设——权限维持
权限维持
当获取到服务器的控制权后,为了防止服务器管理员发现和修补漏洞而导致对服务器权限的丢失,测试人员往往需要采取一些手段来实现对目标服务器的持久化访问
权限持久化(Persistence, 权限维持)技术就是包括任何可以被测试人员用来在系统重启、更改用户凭据或其他可能造成访问中断的情况发生时保持对系统的访问的技术,如创建系统服务、利用计划任务、滥用系统启动项或注册表、映像劫持、替换或劫持合法代码等
常见系统后门技术
创建影子账户
影子账户,就是隐藏的账户,无论通过”计算机管理”还是命令行查询都无法看到,只能在注册表中找到其信息。通过创建具有管理员权限的影子账户,在目标主机上实现权限维持,不过需要拥有管理员级别的权限
通过创建影子账户,测试人员可以随时随地通过远程桌面或其他方法登录目标系统,并执行管理员权限的操作
系统服务后门
对于启动类型为“自动”的系统服务,测试人员可以将服务运行的二进制文件路径设置为后门程序或其他攻击载荷,当系统或服务重启时,可以重新获取对目标主机的控制权。不过需要拥有目标主机的管理员权限
计划任务后门
通过创建计划任务让目标主机在特定的时间点或规定的周期内重复运行测试人员预先准备的后门程序,从而实现权限持久化
启动项/注册表键后门
测试人员可以通过将后门程序添加到系统启动文件夹或通过注册表运行键引用来进行权限持久化。添加的后门程序将在用户登录的上下文中启动,并且将具有与账户相关联的权限等级
1.系统启动文件夹
将程序放置在启动文件夹中会导致该程序在用户登录时执行。Windows系统有两种常见的启动文件夹
1 | #位于以下目录中的程序将在指定用户登录时启动 |
2.运行键(Run Keys)
Windows系统上有许多注册表项可以用来设置在系统启动或用户登录时运行指定的程序或加载指定DLL文件,测试人员可以对此类注册表进行滥用,以建立持久化后门
当用户登录时,系统会依次检查位于注册表运行键(Run Keys)中的程序,并在用户登录的上下文中启动。Windows系统默认创建以下运行键,如果修改HKEY_LOCAL MACHINE下的运行键,需要拥有管理员级别的权限
3.Winlogon Helper
Winlogon是Windows系统的组件,用于处理与用户有关的各种行为,如登录、注销、在登录时加载用户配置文件、锁定屏幕等。这些行为由系统注册表管理,注册表中的一些键值定义了在Windows登录期间会启动哪些进程
测试人员可以滥用此类注册表键值,使Winlogon在用户登录时执行恶意程序,以此建立持久化后门
5 Port Monitors
打印后台处理服务(Print Spooler)负责管理Windows系统的打印作业。与该服务的交互是通过Print Spooler API执行的,其中包含AddMonitor函数,用于安装Port Monitors (本地端口监视器),并连接配置、数据和监视器文件。AddMonitor函数能够将DLL注入spoolsv.exe进程,以实现相应功能,并且通过创建注册表键,测试人员可以在目标系统上进行权限持久化。利用该技术需要拥有管理员级别的权限
事件触发执行
利用WMl事件订阅
前面曾介绍使用WMI事件订阅进行横线移动的方法。该方法通过在远程主机上部署永久事件订阅,当指定进程启动时,将执行恶意命令以获取远程主机权限。同样可以在已获取权限的主机上部署永久事件订阅,当特定事件触发时,执行特定的后
门程序或其他攻击载荷,以建立持久化后门。利用该技术需要拥有管理员级别的权限
利用系统辅助功能
Windows系统包含了许多供用户通过组合键启动的辅助功能,测试人员可以修改这些程序的启动方式,以获取目标主机的命令行或运行指定的后门攻击载荷,不需登录系统即可获取目标主机权限。常见的辅助功能程序如表所示,都位于C:Windows\System32目录下
常见的有粘滞键后门
IFEO注入
IFEO(Image File Execution Options)是Windows系统的一个注册表项,路径为HKEYLOCAL MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\Image File Execution Options。在WindowsNT系统中,IFEO原本是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。FE0使开发人员能够将调试器附加到应用程序。当进程创建时,应用程序的FE0中设置的调试器将附加到应用程序的名称前,从而有效地在调试器下启动新进程
利用屏幕保护程序
屏幕保护是Windows系统的一项功能,可以在用户一段时间不活动后播放屏幕消息或图 形动画。屏幕保护程序由具有.scr文件扩展名的可执行文件组成。系统注册表项HKEY_CURRENT_USER\Control Panel\Desktop下存储用来设置屏幕保护程序的键值
测试人员可以通过编辑注册表,修改屏幕保护程序的执行路径(即scrnsave..exe键的值),当触发屏幕保护时执行自定义的后门程序,以此实现持久化,相关命令如下:
1 | #将触发屏幕保护时执行的程序设为自定义的恶意程序,这里的程序以.scr或.exe为扩展名皆可 |
利用该技术不需管理员权限,以标准用户权限即可利用。用户一段时间不活动后,屏幕保护程序将触发恶意程序执行,目标主机重新上线
默认情况下,除ScreenSaveActive的值为1外,其余三个键都不存在,所以需要手动创建。并且触发的恶意程序只能在当前用户的上下文中运行
DLL劫持
DLL劫持应用程序
DLL劫持系统服务
常见域后门技术
当获取域控制器的权限后,为防止对域控制器权限的丢失,需要使用些特定的持久化技术来维持已获取到的域权限
创建Skeleton Key域后门
Skeleton Key即”万能钥匙”。通过在域控制器上安装Skeleton Key,所有域用户账户都可以使用一个相同的密码进行认证,同时原有密码仍然有效。该技术通过注入 lsass.exe 进程实现,创建的 Skeleton Key 仅保留在内存中,如果域控重启,Skeleton Key
就会失效。利用该技术需要拥有域管理员级别的权限
创建DSRM域后门
DSRM(Directory Services Restore Mode,目录服务还原模式)是域控制器的安全模式启动选项,用于使服务器脱机,以进行紧急维护。在初期安装Windows域服务时,安装向导会提示用户设置DSRM的管理员密码。有了该密码后,网络管理员可以在后期域控发生问题时修复、还原或重建活动目录数据库。
在域控制器上,DSRM账户实际上就是本地管理员账户(Administrator),并且该账户的密码在创建后几乎很少使用。通过在域控上运行NTDSUtil,可以为DSRM账户修改密码
SID History的利用
SID & SID History
在实战中,可以将域管理员用户的SID添加到其他域用户的SID History属性中,以此建立一个隐蔽的域后门。利用该技术需要拥有域管理员级别的权限
利用AdminSDHolder打造域后门
AdminSDHolder
AdminSDHolder是一个特殊的Active Directory容器对象,位于Domain NC的System容器下。AdminSDHolder通常作为系统中某些受保护对象的安全模板,以防止这些对象遭受恶意修改或滥用
在实战中,可以篡改AdminSDHolder容器的ACL配置。当系统调用SDProp进程执行相关工作时,被篡改的ACL配置将同步到受保护对象的ACL中,以此建立一个隐蔽的域后门。利用该技术需要拥有域管理员级别的权限
HOOK PasswordChangeNotify
PasswordChangeNotify在微软官方文档中的名称为PsamPasswordNotificationRoutine,是一个Windows API。当用户重置密码时,Windows会先检查新密码是否符合复杂性要求,如果密码符合要求,LSA会调用PasswordChangeNotify函数在系统中同步密码。当调用PasswordChangeNotify时,用户名和密码将以明文的形式传入。测试人员可以通过HOOK技术,劫持PasswordChangeNotify函数的执行流程,从而获取传入的明文密码
DCSync攻击技术
一个域环境可以拥有多台域控制器,每台域控制器各自存储着一份所在域的活动目录的可写副本,对目录的任何修改都可以从源域控制器同步到本域、域树或域林中的其他域控制器上。当一个域控想从另一个域控获取域数据更新时,客户端域控会向服务端域控发送DSGetNCChanges请求,该请求的响应将包含客户端域控必须应用到其活动目录副本的一组更新。通常情况下域控制器之间每15分钟就会有一次域数据同步
DCSync技术就是利用域控制器同步的原理,通过Directory Replication Service(DRS)服务的IDL DRSGetNCChanges接口向域控发起数据同步请求。在DCSync出现前,要获得所有域用户的哈希,测试人员可能需要登录域控制器或通过卷影拷贝技术获取NTDS.dit文件。利用DCSync,测试人员可以在域内任何一台机器上模拟一个域控制器,通过域数据同步复制的方式获取正在运行的合法域控制器上的数据。注意,DCSync攻击不适用于只读域控制器(RODC)
在默认情况下,只有Administrators、Domain Controllers和Enterprise Domain Admins组内的用户和域控制器的机器账户才有执行DCSync操作的权限
利用DCSync导出域内哈希
利用DCSync维持域内权限
DCShadow
DCShadow通过创建恶意的域控制器,利用域控之间的数据同步复制,将预先设定的对象或对象属性注入正在运行的合法域控制器,以此来创建域后门或者获取各种类型的非法访问渠道