• 欢迎访问金刀客博客!
  • 2019,春节快乐!

开机时自启动程序无处藏身(转贴之27)

技术文章 admin 5321次浏览 已收录 0个评论

开机时自启动程序无处藏身_即所有注册表中有加载启动程序的地方
有部分程序可以将自身在注册表加载的位置进行隐藏,常见的操作有两种方式:
1、对指定的注册表分支、键值设置权限(Acls)导致当前用户无权查看这些分支、键值的内容,自然无法获取病毒信息了。
2、使用超长的分支、键值名字,让注册表程序无法正常显示这些内容。
在XP/2K中存在一个长字符串缺陷:
有部分恶意程序还能破坏注册表某些键值的设定工作,比如将正常的REG_DWORD键值删除,伪造一个图标样式类似(键值显示有两种图标)的不是REG_DWORD的键值,这样原来的设置就不能读到正确格式的键值,也就不能正常工作了。
一、直接加载的位置
1、Load注册键
介绍该注册键的资料不多,实际上它也能够自动启动程序,位置:HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\Current Version\Windows
建一个字符串名为load键值,为自启动程序的路径但是要注意短文件名规则,如c:\program files 应为c:\progra~1,这种方式用优化大师看不到。
据说建立run=键值也是可行的,需要注意没有测试过。
2、Winlogon\Userinit注册键
存放位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
找到“Userinit”这个键值,这个键值默认为c:\WINNT\system32\userinit.exe,后面加路径,再加逗号也可以。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个userinit.exe,但这个键允许指定用逗号分隔的多个程序,例如“userinit.exe,OSA.exe”(不含引号)。
注意下面的Notify、Shell键值也会有自启动的程序,而且其键值可以用逗号分隔,从而实现登录的时候启动多个程序。
3、Explorer\Run注册键
和load、Userinit不同,Run键在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下都有,具体位置是:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run。
4、RunServicesOnce注册键
RunServicesOnce注册键用来启动服务程序,启动时间在用户登录之前,而且先于其他通过注册键启动的程序,RunServicesOnce注册键的位置是:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce。
5、RunServices注册键
RunServices指定的程序紧接RunServicesOnce指定的程序后运行,两者都在用户登录之前,位置是:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersionRunServices;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices。
6、RunOnceSetup注册键
RunOnceSetup指定了用户登录之后运行的程序,它的位置是:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnceSetup;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceSetup。
7、RunOnce注册键
安装程序通常用RunOnce键自动运行程序,它的位置在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce。
HKEY_LOCAL_MACHINE下面的RunOnce键会在用户登录之后立即运行程序,运行时间在其他Run键指定的程序之前。HKEY_CURRENT_USER下面的RunOnce键在操作系统处理其他Run键以及“启动”文件夹的内容之后运行。
8、Run注册键
Run是自动运行程序最常用的注册键,位置在:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run。
HKEY_CURRENT_USER下面的Run键紧接HKEY_LOCAL_MACHINE下面的Run键运行,但两者都在“启动”文件夹运行之前执行。Run的程序是在每次系统启动时被启动,RunServices则会在每次登录系统时被启动。
9、Image File Execution Options下的注册表项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options下的注册表项,项名为A.exe,然后在下面新建一个字符串,字符串名为Debugger,字符串值就是程序B.exe的全路径。这个是针对系统可以设置每个程序指定的纠错程序来实现的。让我感到意外的是A.exe不用指明路径!
10、开始菜单启动组
现在的木马大多不再通过启动菜单进行随机启动,但是也不可掉以轻心。如果发现在“开始/程序/启动”中有新增的项,可以右击它选择“查找目标”到相应的文件的目录下查看一下,如果文件路径为系统目录就要多加小心了。也可以在注册表中直接查看,它的位置为HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders,键名为Startup。
11、Winlogon\shell
在以下键值位置:
HKEY_LOCAL_MACHINE\SHOFTWARE\Microsoft\WindowsNT\Current Version\Winlogon;
里面的shell建值在Explorer.exe的后面加上我们程序的路径 这样我们的程序就可以随系统启动了。
比如我的c:\windows\system32\下有个hehe.exe木马。
12、COMMAND的AUTORUN
利用CMD.EXE的autorun:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor下面建一个字串AUTORUN,值为要运行的.bat或.cmd文件的路径,木马可以加载在AUTORUN键值下。这样在运行CMD命令的时候一起加载运行。
注意:
1、如果需要运行.dll文件,则需要特殊的命令行:
Rundll32.exe C:\WINDOWS\FILE.DLL,Rundll32
2、解除这里相应的自启动项只需删除该键值即可,但注意不要删除系统键值。
3、如果只想不启动而保留键值,只需在该键值加入rem即可:
“rem C:\Windows\a.exe”
13、System\Shell
存放位置:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System
键值名称:Shell,下面的数据为启动文件名。
14、System\Scripts下Logoff(Logon)键值
注意以下分支的Logoff(Logon)键值可能加载文件:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\System\Scripts;
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\System\Scripts。
15、
16、AppInit_DLLs键值
在以下位置:
HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENT VERSION\WINDOWS,
有一个键值APPINIT_DLLS,一些DLL木马可以在这个位置上直接加载,这种方式加载的木马无法在任务管理器中看到。如求职信病毒就是让系统执行DllMain来达到启动木马的目的,因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。
17、bootexecute键值
在以下位置:
HKLM\SYSTEM\CONTROLSET001\SESSION MANAGE下面,有一个名为bootexecute的多字符键值,默认数值是:autocheck autochk*。
18、Winlogon\Notify
位置:
HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON\NOTIFY,
此处位置也需要特别的留意。
19、RunOnceEx
XP操作系统,还需要检查一下
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
键值位置的内容
20、Explorer\shell folders和user shell folder
以下四个键值位置需要注意:
HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERS
HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERS;
HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\User shell folder
HKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\User shell folder
21、ShellServiceObjectDelayLoad
以下注册表分支:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad
下可能有可疑键值。
二、文件关联
1、EXE文件关联
另外[HKLM\Software\classes\exefile\shell\open\command\]键值也可能用来加载木马,比如把键值修改为“X:\windows\system\ABC.exe “%1″%”。 这里的意思是:更改文件的打开方式,这样就可以使程序跟随您打开的那种文件类型一起启动。举例来说,打开注册表,展开注册表到HKEY_CLASSES_ROOT\exefile\shell\open\command,这里是exe文件的打开方式,默认键值为:“%1”%*。如果把默认键值改为Trojan.exe“%1”%*,您每次运行exe文件,这个Trojan.exe文件就会被执行。木马灰鸽子就采用关联exe文件的打开方式,而大名鼎鼎的木马冰河采用的是也与此相似的一招——关联txt文件。
关联表:
[HKEY_CLASSES_ROOT\exefile\shell\open\command] @=\”%1\” %*
[HKEY_CLASSES_ROOT\comfile\shell\open\command] @=\”%1\” %*
[HKEY_CLASSES_ROOT\cmdfile\shell\open\command] @=\”%1\” %*
[HKEY_CLASSES_ROOT\batfile\shell\open\command] @=\”%1\” %*
[HKEY_CLASSES_ROOT\htafile\shell\open\command] @=\”%1\” %*
[HKEY_CLASSES_ROOT\piffile\shell\open\command] @=\”%1\” %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\batfile\shell\open\command] @=\”%1\” %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\comfile\shell\open\command] @=\”%1\” %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\exefile\shell\open\command] @=\”%1\” %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\htafile\shell\open\command] @= \”%1\” %*
[HKEY_LOCAL_MACHINE\Software\CLASSES\piffile\shell\open\command] @=\”%1\” %*
JSEFile\Shell\Edit\Command %SystemRoot%\System32\Notepad.exe %1
JSEFile\Shell\Open\Command %SystemRoot%\System32\WScript.exe “%1” %*
JSEFile\Shell\Open2\Command %SystemRoot%\System32\CScript.exe “%1” %*
JSFile\Shell\Edit\Command %SystemRoot%\System32\Notepad.exe %1
JSFile\Shell\Open\Command %SystemRoot%\System32\WScript.exe “%1” %*
JSFile\Shell\Open2\Command %SystemRoot%\System32\CScript.exe “%1” %*
VBEFile\Shell\Edit\Command %SystemRoot%\System32\Notepad.exe %1
VBEFile\Shell\Open\Command %SystemRoot%\System32\WScript.exe “%1” %*
VBEFile\Shell\Open2\Command %SystemRoot%\System32\CScript.exe “%1” %*
VBSFile\Shell\Edit\Command %SystemRoot%\System32\Notepad.exe %1
VBSFile\Shell\Open\Command %SystemRoot%\System32\WScript.exe “%1” %*
VBSFile\Shell\Open2\Command %SystemRoot%\System32\CScript.exe “%1” %*
scrfile\Shell\config\Command %1
scrfile\Shell\install\Command rundll32.exe desk.cpl,InstallScreenSaver %l
scrfile\Shell\Open\Command “%1” /S
txtfile\Shell\print\Command %SystemRoot%\system32\NOTEPAD.EXE /p %1
txtfile\Shell\printto\Command %SystemRoot%\system32\notepad.exe /pt “%1” “%2” “%3” “%4”
txtfile\Shell\open\Command %SystemRoot%\system32\NOTEPAD.EXE %1
inifile\Shell\Open\Command %SystemRoot%\System32\NOTEPAD.EXE %1
inifile\Shell\print\Command %SystemRoot%\System32\NOTEPAD.EXE /p %1
chm.file\Shell\open\Command “C:\WINNT\hh.exe” %1
2、CMD.EXE关联
在执行CMD.EXE命令时,可以顺便执行附带的程序文件:
存放位置:
HKLM\Software\Microsoft\Command Processor\AutoRun
HKCU\Software\Microsoft\Command Processor\AutoRun
HKEY_USERS\DEFAULT下也可以加载
这两个键值的内容在你不是用cmd.exe /D格式来启动cmd程序的话,会在启动cmd.exe之前先去执行这两个键值指定的程序。
三、木马加载为系统服务
1、常规启动:
  有些木马是通过添加服务项来实现自启动的,大家可以打开注册表编辑器,在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runservices]下查找可疑键值,并在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\]下查看的可疑主键。
  通过更直接的管理界面操作:在“运行”中输入“Services.msc”打开服务设置窗口,里面显示了系统中所有的服务项及其状态、启动类型和登录性质等信息。找到木马所启动的服务,双击打开它,把启动类型改为“已禁用”,确定后退出。
通过注册表进行修改,依次展开“HKLM\SYSTEM\CurrentControlSet\Services\服务显示名称”键,在右边窗格中找到二进制值“Start”,该数值内容记录的就是服务项目驱动程序该在什么时间被加载,修改它的数值数:“0”表示BOOT状态,“1”表示SYSTEM启动,“2”表示自动启动,“3”表示手动方式加载,“4”表示已禁用。当然最好直接删除整个主键,平时可以通过注册表导出功能,备份这些键值以便随时对照。
2、安全模式启动:
当系统启动到“安全模式”和“命令行安全模式”时,
所启动的服务列表可以在下面的注册表键得到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal
当系统启动到“有网络的安全模式”时,
所启动的服务列表可以在下面的注册表键得到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network
四、木马加载为系统驱动
位置是:
KEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\的位置上有这样的地址。
该地址是系统启动VxD驱动文件放置的地址,就像PrettyPark这个蠕虫一样,可以建立一个主键之后把VxD文件添加到注册表中在这里。
注意:不可以直接把一个EXE文件改名为VxD文件,需要另外进行编程,生成的VxD文件。
五、恶意脚本加载为配置
写一个guest.vbs文件,启动时创建一个帐号或者激活guest用户或者tsinternetuser用户。
在[HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor]下建立
“AutoRun”=”C:\Program Files\guest.vbs”这样运行cmd.exe就会运行脚本guest.vbs程序了。
六、通过注册表里面的输入法键值直接挂接启动程序
我还没捕获过这样的启动方式的程序。
七、GINA启动可疑程序
GINA(Graphical identification and authorization 图形化认证和授权)就是那个三键登录,作用是计算机用户和WIN系统认证之间的中间人。
ARME VIDSTROM程序:
HKLM\software\microsoft\windowsnt\currentversion\winlogon\ginadll=REG_SZ:fakegina.dll
这个fakegina.dll就会在三键登录时候将帐户信息写到文本文件的,原来的正常程序是MSGINA.DLL文件。
八、进程的崩溃调试
HKLM\software\microsoft\windowsnt\currentversion\aedebug
debugger=程序崩溃时候运行的调试器名字
AUTO 1=立即运行调试器,0=首先询问用户。
默认情况下缺省配置是AUTO=1 DEBUGGER=DRWTSN32.EXE
安装了编译程序平台后AUTO=0 DEBUGGER=MSDEV.EXE
如果先修改注册表以准崩溃时加载可疑程序,然后让程序崩溃就可以运行了….


金刀客博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明开机时自启动程序无处藏身(转贴之27)
喜欢 (2)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到