工作组权限维持(中)
我们拿到工作组某台成员主机的账号密码后,为了防止密码被改,需要使用隐蔽后门等手段来维持我们取得的计算机权限。将二进制文件放在Windows启动项目录中是最简单的方式,但是隐蔽性差,较主流的工作组权限维持通常有三种,本篇讲第二种基于更改注册表的权限维持。
一、屏幕保护程序
屏幕保护程序是计算机程序,原意是通过将画面空白,或在画面上填满移动的影像,避免电脑CRT显示器在静止的情况下产生磷质烙印,从而延长其寿命。现在,屏幕保护程序被用作娱乐或保安用途。屏幕保护程序可在暂停工作时将屏幕上正在进行的工作状况画面隐藏起来。但是我们近些年在一些APT报告中发现,屏幕保护程序SCRNSAVE.EXE已成为新型权限维持手法。
1.Windows屏保
从WIN95开始,微软引入了屏幕保护程序。在桌面右键依次点击,属性→屏幕保护程序,你不但可以欣赏到各种花样的视觉大片,还可以调节各种参数让画面的呈现方式更加个性,最后再把“等待”设置为1分钟。不久之后,灰白相间单调枯燥的Windows窗口突然消失,取而代之的是喷薄而出跃动感十足的LOGO,一个精心调制的“大场面”赫然出现。如下图,这可能是很多人对屏幕保护程序最早的记忆。
Windows 的屏幕保护程序以 SCR 为扩展名,实质上是一个导出了 ScreenSaverProc 和 ScreenSaverConfigureDialog 两个函数的 PE 文件。Windows会自动扫描 Windows 安装目录和系统目录下的 *.SCR文件并出在屏幕保护列表中。[1]换言之,屏幕保护程序是具有.scr文件扩展名的可执行文件,并通过scrnsave.scr实用程序执行。
2.更改登录屏保
-
确保已开启屏幕保护。
-
单击“开始”,单击“运行”,键入 regedt32,单击“确定”。
-
找到以下注册表项:HKEY_USERSDEFAULTControl PanelDesktop
-
在“详细信息”窗格中,双击“SCRNSAVE.EXE”字符串值项。
-
在“数值数据”框中,键入屏幕保护程序的路径和名称,然后单击“确定”。
重要说明:
-
如果屏幕保护程序位于 %SystemRoot%System32,则无须特别指定路径。
-
确保正确开启屏保并指定屏幕保护程序的路径。
通过此法更改登录屏保,执行效果如下图所示。
在前面提到,屏幕保护程序是具有.scr文件扩展名的可执行文件,并通过scrnsave.scr实用程序执行。因此,将木马.exe后缀更改为.scr不影响使用,还将提升木马隐蔽性。
可在屏幕保护程序设置中发现程序选项,效果如下图:
命令执行效果如下图所示:
3.攻击代码
上述更改登陆屏保方法适合图形化操作,攻击者可在近源情况下或开放3389情况下接入系统,在操作系统中安装一个持久性后门。如在远程的情况下攻击者还可用命令行操作,完成注册表修改,实现持久性后门。
具体攻击代码如下:
reg add "hkcucontrol paneldesktop" /v SCRNSAVE.EXE /d c:WindowsTempaliceScreen2.scr
或
New-ItemProperty -Path 'HKCU:Control PanelDesktop' -Name 'SCRNSAVE.EXE' -Value 'c:WindowsTempaliceScreen2.scr'
命令执行效果如下图所示:
4.查看注册表
通过展开HKEY_USERSDEFAULTControl PanelDesktop, 可以看到aliceScreen2.scr数值已写入注册表,这意味着,在下一次启动屏幕保护程序将调用 c:WindowsTempaliceScreen2.scr 。
注册表写入情况,如下图所示:
5.触发程序
满足条件时屏幕保护程序被触发,aliceScreen2.scr 可执行程序将启动,该程序将发出dnslog请求出网,通过访问dnslog控制台,可进一步验证,屏幕保护程序已触发。
持续化后门执行效果如下图所示:
此外有资料显示,当用户返回桌面并且系统未处于空闲模式时,可执行程序将中断。但在本地测试环境中Windows Server 2008 R2并未出现中断现象。
6.修复/清除
屏幕保护程序作为每台Windows操作系统自带的功能,并且.scr后缀对于大多服务器管理员而言较为陌生,即便安全人员在基线检查中停用该功能,攻击者也可通过修改注册表再次启用,同时,攻击者可能会制作与系统相似的屏幕保护程序,让其隐蔽性更高,要发觉这种攻击较为困难。
事实上,除了屏幕保护程序,还有许多系统可调用的可执行程序,这一直是防病毒厂商避而不谈的事情,正如过去冲击波蠕虫病毒,一旦感染,就难以用一般手段消灭,因为它替换系统关键文件,这一行为与AIDS一样,其破坏了系统的完整性。
针对屏幕保护程序持续后门的治理:
1.停用屏幕保护
当使用控制面板中的 " 显示 " 选择屏幕保护程序时,Windows 操作系统将此项添加到注册表。 如果通过从屏幕保护程序列表中选择 " 无 () 来禁用所有屏幕保护程序,则操作系统将从注册表中删除此项,并调用SystemParametersInfo 函数 UiAction 等于 SPI _ SETSCREENSAVEACTIVE, uiParam 等于 FALSE。
2.删除注册表字段
通过展开HKEY_USERSDEFAULTControl PanelDesktop 删除SCRNSAVE.EXE字段,意味着停用屏幕保护程序。
操作方法,如下图所示:
二、注册表启动
上文提到修改注册表实现屏幕保护程序留后门,此处不可避免提及注册表current version/run,虽然这一手法已相当古老,存在本地杀软拦截可能(AV个体差异较大),但该方法胜在无论用户权限如何,均可实现注册表启动,其依然是最常见且好用的权限维持方式。
注册表承担着操作系统数据库角色,记录着系统中方方面面的数据,其中许多键值构成可直接或间接影响开机自启动程序。
此处权限维持使用到以下注册表位置:
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
-
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon
1.开机自启动
这些路径是Windows的开机自启动注册表,在每次开机完成后,它都会在这个注册表键下遍历键值,以获取键值中的程序路径,并创建进程启动程序。所以,只需要在这些注册表键值位置,设置自启动程序的路径即可。
其中常见的两个路径:
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
注意:要修改HKEY_LOCAL_MACHINE缩写 HKLM主键的注册表,这要求程序有管理员权限。而修改HKEY_CURRENT_USER缩写 HKCU主键的注册表,只需用户默认权限。
2.攻击代码
写入注册键命令如下:
reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v evil /t REG_SZ /d "C:WindowsTempaliceScreen.exe" /f
执行效果,如下图所示:
3.查看注册表
通过展开HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
, 可以看到此处除了有evil程序
,还有虚拟机Vmware tools
工具,这意味着,每次开机,这两程序将自动执行。
注册表自启动项目,如下图所示:
4.触发程序
满足条件时屏幕保护程序被触发,aliceScreen2.scr 可执行程序将启动,该程序将发出dnslog请求出网,通过访问dnslog控制台,可进一步验证,屏幕保护程序已触发。
持续化后门执行效果如下图所示:
5.修复/清除
检查以下注册表字段,分析是否存在可疑行为, 清除可疑字段。
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
-
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon
三、小结
在我们拿到工作组某台成员主机的账号密码后,为防止密码被改,需要使用隐蔽后门等手段来维持我们取得的计算机权限。将二进制文件放在Windows启动项目录中是最简单的方式,但是隐蔽性差,较主流的工作组权限维持通常有三种,本篇讲了第二种基于更改注册表的权限维持。因边幅所限,上述手法仅作最基础的展示,如希望深入可参考persistence-aggressor-script 项目中的persistence.cna脚本。
5.修复/清除
检查以下注册表字段,分析是否存在可疑行为, 清除可疑字段。
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices
-
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices
-
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
-
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon
三、小结
在我们拿到工作组某台成员主机的账号密码后,为防止密码被改,需要使用隐蔽后门等手段来维持我们取得的计算机权限。将二进制文件放在Windows启动项目录中是最简单的方式,但是隐蔽性差,较主流的工作组权限维持通常有三种,本篇讲了第二种基于更改注册表的权限维持。因边幅所限,上述手法仅作最基础的展示,如希望深入可参考persistence-aggressor-script 项目中的persistence.cna脚本。
本文始发于微信公众号(疯猫网络):工作组权限维持(中)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论