
开机时自启动程序无处藏身_即所有注册表中有加载启动程序的地方有部分程序可以将自身在注册表加载的位置进行隐藏,常见的操作有两种方式: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\WinlogonHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon找到“Userinit”这个键值,这个键值默认为c:\WINNT\system32\userinit*ex.e**,后面加路径,再加逗号也可以。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个userinit*ex.e**,但这个键允许指定用逗号分隔的多个程序,例如“userinit*ex.e**,OSA*ex.e**”(不含引号)。注意下面的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*ex.e**,然后在下面新建一个字符串,字符串名为Debugger,字符串值就是程序B*ex.e**的全路径。这个是针对系统可以设置每个程序指定的纠错程序来实现的。让我感到意外的是A*ex.e**不用指明路径!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*ex.e**的后面加上我们程序的路径 这样我们的程序就可以随系统启动了。比如我的c:\windows\system32\下有个hehe*ex.e**木马。12、COMMAND的AUTORUN利用CMD.EXE的autorun:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor下面建一个字串AUTORUN,值为要运行的.bat或.cmd文件的路径,木马可以加载在AUTORUN键值下。这样在运行CMD命令的时候一起加载运行。注意:1、如果需要运行.dll文件,则需要特殊的命令行:Rundll32*ex.e** C:\WINDOWS\FILE.DLL,Rundll322、解除这里相应的自启动项只需删除该键值即可,但注意不要删除系统键值。3、如果只想不启动而保留键值,只需在该键值加入rem即可:“rem C:\Windows\a*ex.e**”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、RunOnceExXP操作系统,还需要检查一下HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx键值位置的内容20、Explorer\shell folders和user shell folder以下四个键值位置需要注意:HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERSHKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERS;HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\User shell folderHKLM\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\User shell folder21、ShellServiceObjectDelayLoad以下注册表分支:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad下可能有可疑键值。二、文件关联1、EXE文件关联另外[HKLM\Software\classes\exefile\shell\open\command\]键值也可能用来加载木马,比如把键值修改为“X:\windows\system\ABC*ex.e** “%1″%”。 这里的意思是:更改文件的打开方式,这样就可以使程序跟随您打开的那种文件类型一起启动。举例来说,打开注册表,展开注册表到HKEY_CLASSES_ROOT\exefile\shell\open\command,这里是exe文件的打开方式,默认键值为:“%1”%*。如果把默认键值改为Trojan*ex.e**“%1”%*,您每次运行exe文件,这个Trojan*ex.e**文件就会被执行。木马灰鸽子就采用关联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*ex.e** %1JSEFile\Shell\Open\Command %SystemRoot%\System32\WScript*ex.e** “%1” %*JSEFile\Shell\Open2\Command %SystemRoot%\System32\CScript*ex.e** “%1” %*JSFile\Shell\Edit\Command %SystemRoot%\System32\Notepad*ex.e** %1JSFile\Shell\Open\Command %SystemRoot%\System32\WScript*ex.e** “%1” %*JSFile\Shell\Open2\Command %SystemRoot%\System32\CScript*ex.e** “%1” %*VBEFile\Shell\Edit\Command %SystemRoot%\System32\Notepad*ex.e** %1VBEFile\Shell\Open\Command %SystemRoot%\System32\WScript*ex.e** “%1” %*VBEFile\Shell\Open2\Command %SystemRoot%\System32\CScript*ex.e** “%1” %*VBSFile\Shell\Edit\Command %SystemRoot%\System32\Notepad*ex.e** %1VBSFile\Shell\Open\Command %SystemRoot%\System32\WScript*ex.e** “%1” %*VBSFile\Shell\Open2\Command %SystemRoot%\System32\CScript*ex.e** “%1” %*scrfile\Shell\config\Command %1scrfile\Shell\install\Command rundll32*ex.e** desk.cpl,InstallScreenSaver %lscrfile\Shell\Open\Command “%1” /Stxtfile\Shell\print\Command %SystemRoot%\system32\NOTEPAD.EXE /p %1txtfile\Shell\printto\Command %SystemRoot%\system32\notepad*ex.e** /pt “%1” “%2” “%3” “%4”txtfile\Shell\open\Command %SystemRoot%\system32\NOTEPAD.EXE %1inifile\Shell\Open\Command %SystemRoot%\System32\NOTEPAD.EXE %1inifile\Shell\print\Command %SystemRoot%\System32\NOTEPAD.EXE /p %1chm.file\Shell\open\Command “C:\WINNT\hh*ex.e**” %12、CMD.EXE关联在执行CMD.EXE命令时,可以顺便执行附带的程序文件:存放位置:HKLM\Software\Microsoft\Command Processor\AutoRunHKCU\Software\Microsoft\Command Processor\AutoRunHKEY_USERS\DEFAULT下也可以加载这两个键值的内容在你不是用cmd*ex.e** /D格式来启动cmd程序的话,会在启动cmd*ex.e**之前先去执行这两个键值指定的程序。三、木马加载为系统服务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*ex.e**就会运行脚本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\aedebugdebugger=程序崩溃时候运行的调试器名字AUTO 1=立即运行调试器,0=首先询问用户。默认情况下缺省配置是AUTO=1 DEBUGGER=DRWTSN32.EXE安装了编译程序平台后AUTO=0 DEBUGGER=MSDEV.EXE如果先修改注册表以准崩溃时加载可疑程序,然后让程序崩溃就可以运行了….