windows开机自启动手法汇总


原文链接: windows开机自启动手法汇总

原文地址 https://www.jianshu.com/p/cf01fee50fb4

一、开始菜单启动目录

“开始——程序——启动菜单 “,其中的程序和快捷方式都会在系统启动时自动运行。
最常见的启动位置如下:

当前用户

** **
C:\Users\Current user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

所有用户

** **
C:\Users\All Users\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

二、注册表启动

注册表是启动程序藏身之处最多的地方,主要有以下几项:

1.Run 键

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]
其下的所有程序在每次启动登录时都会按顺序自动执行。

2.RunOnce 键

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce]
与 Run 键不同的是,RunOnce 下的程序仅会被自动执行一次。

3.RunServicesOnce 键

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]
键值下的程序会在系统加载时自动启动执行一次。

4.RunServices 键

RunServices 继 RunServicesOnce 之后启动的程序,位于:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]

5.RunOnceEx 键

该键是 Windows XP/2003 特有的自启动注册表项,位于:
[HKEY_CURRENT_USER\\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ RunOnceEx]

6.load 键

[HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows]
load 键值下的程序也可以自启动。

7.Winlogon 键

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
注意下面的 Notify、Userinit、Shell 键值也会有自启动的程序,而且其键值可以用逗号分隔,从而实现登录的时候启动多个程序。

8. 其他注册表位置

还有一些其他键值,经常会有一些程序在这里自动运行,如:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\Shell]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad]
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts]
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\System\Scripts]

9. 注册表注入启动

更改 AppInit_DLLs 和 LoadAppInit_DLLs 注册表键值,User32.dll 被加载到进程时,会获取 AppInit_DLLs 注册表项,若有值,则调用 LoadLibrary() API 加载用户 DLL。所以,DLL 注册表注入,并不会影响所有进程,只会影响加载了 user32.dll 的进程。该键值位于:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]

10. 创建服务

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services]
该键值下关联本机启动的服务进程,通过创建相应的服务去关联恶意样本实现启动。

注册表的[HKEY_LOCAL_MACHINE][HKEY_CURRENT_USER]键的区别:
前者对所有用户有效,后者只对当前用户有效。

32 位和 64 位的在注册表中的区别会多了一个 Wow6432Node.

三、自动批处理文件

autoexec.bat(位于系统盘根目录)这个自动批处理文件,它会在电脑启动时自动运行,早期许多病毒利用它,使用 deltree、format 等危险命令来破坏硬盘数据。如 “C 盘杀手” 就是用一句 “deltree /y c:*.*” 命令,让电脑一启动就自动删除 C 盘所有文件。在 Windows 98 中,Winstart.bat 文件,winstart.bat 位于 Windows 文件夹,也会在启动时自动执行。
在 Windows Me/2000/XP 中,上述两个批处理文件默认都不会被执行

四、常用的启动——系统配置文件

在 Windows 的配置文件(包括 Win.ini、System.ini 和 wininit.ini 文件)也会加载一些自动运行的程序。

1.Win.ini 文件

打开 Win.ini 文件,在 [windows] 段下的 “Run=” 和“LOAD=”语句后面就可以直接加可执行程序,只要程序名称及路径写在 “=” 后面即可。“load=”后面的程序在自启动后最小化运行,而 “run=” 后程序则会正常运行。

2.System.ini 文件

打开 System.ini 文件,找到 [boot] 段下 “shell=” 语句,该语句默认为“shell= Explorer.exe”,启动的时候运行 Windows 外壳程序 explorer.exe。如将该句变成“shell=Explorer.exe 恶意程序名”。

3.wininit.ini

wininit.ini 文件是很容易被许多电脑用户忽视的系统配置文件,因为该文件在 Windows 启动时自动执后会被自动删除,这就是说该文件中的命令只会自动执行一次。该配置文件主要由软件的安装程序生成,对那些在 Windows 图形界面启动后就不能进行删除、更新和重命名的文件进行操作。

五、组策略编辑器启动——开 / 关机 / 登录 / 注销脚本

在 Windows 2000/XP 中,单击 “开始→运行”,输入 gpedit.msc 回车可以打开“组策略编辑器”,在左侧窗格展开“本地计算机策略→用户配置→管理模板→ 系统→登录”,然后在右窗格中双击“在用户登录时运行这些程序”,单击“显示” 按钮,在 “登录时运行的项目” 下就显示了自启动的程序。

六、定时启动——任务计划

在默认情况下,“任务计划”程序随 Windows 一起启动并在后台运行。如果把某个程序添加到计划任务文件夹,并将计划任务设置为 “系统启动时” 或“登录时”,这样也可以实现程序自启动。通过 “计划任务” 加载的程序一般会在任务栏系统托盘区里有它们的图标。大家也可以双击 “控制面板” 中的 “计划任务” 图标查看其中的项目。

“任务计划”也是一个特殊的系统文件夹,单击 “开始→程序→附件→系统工具→任务计划” 即可打开该文件夹,从而方便进行查看和管理。

七、白加黑——服务进程加载被替换过的恶意 dll 模块

利用系统本身自启服务进程,通过替换其服务所加载的 dll, 实现自启动。

八、dll 劫持

因为 WIndows 上的 Dll 加载有一个默认的加载顺序,就是先在主程序当前目录下查找 dll, 如果没有就在系统路径下找,如果还没有,就去环境变量路径里找,就因为这个我们可以优先级高的位置放入我们准备好的恶意 dll, 这个就可以优先加载恶意 dll, 实现启动。

九、Bootkit

1. 通过感染 MBR(磁盘主引记录)

实现绕过内核检查和隐藏启动。

2. 修改固件系统

通过修改固件系统实现自启动。例如方程式(EQUATION)组织的攻击组件,通过修改硬盘固件,不依靠文件载体,而是完整的存在于注册表中,依靠 bootkit 在操作系统启动时执行,这一机制穿透了安全产品以文件为检测对象的机制,也穿透了相关基于白名单和可信计算的解决方案。

`