注册表中启动键值 注册表中的键值

.注册表中启动键值 1. 什么是自启动,什么是被动启动
自启动,想必大家再熟悉不过了。很多木马,病毒为了使自己在电脑重启后,依然能存活在主机中,使用各种猥琐的自启动方式,不过用的最多的还是“HKLMSoftwareMicrosoftWindowsCurrentVersionRun”,事实上,这个注册表键基本上都被木马,病毒用烂了。当然还有一些大家不熟悉的注册表键也可以用来实现自启动。本文第二部分将揭示这些注册表键。
“被动启动”,原本没有这个名词,是我自己提出的,呵呵!欢迎拍砖!为什么提出这个“被动启动”呢?主要是考虑到有些注册表键可以用来实现一些程序的依附启动或间接触发启动,不像自启动那样,随系统启动而自动的运行起来。因此我称这些注册表键的启动方式为被动启动。举个例子吧,“HKCRexefileShellOpencommand”,如果你改这个注册表键的默认值为你的程序路径的话,知道这意味着什么吗?这意味着,当你open任意一个exe文件时候,这个exe不会运行,而是执行你刚才指定的程序。这就是说,你的程序的运行不是随系统自启动的,而是由于用户open了exe文件,而触发启动的。当然了,关于被动启动的注册表键还有很多很多,要比自启动多的多,被动启动最大的作用就是可以唤醒潜伏在系统系统中的病毒,木马,一旦这些病毒,木马活过来后,就可以再次想方设法让自己永久的存在于整个系统的各个角落里。同样,在本文的第二部分对这些被动启动,将有详细的介绍和说明。
本文下面将在罗列清楚目前我所知的自启动和被动启动的基础上,提出防御思路,并实现一个防御系统,供大家参考,欢迎讨论!

2. 注册表中哪些涉及自启动,哪些涉及被动启动
2.1 自启动相关注册表键
2.1.1 Run系列
HKLMSoftwareMicrosoftWindowsCurrentVersionRun
HKLMSoftwareMicrosoftWindowsCurrentVersionRunOnce
HKLMSoftwareMicrosoftWindowsCurrentVersionRunServices
HKLMSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce
HKCUSoftwareMicrosoftWindowsCurrentVersionRun
HKCUSoftwareMicrosoftWindowsCurrentVersionRunOnce
这些应该是最常见的自启动方式。
Winlogon系列
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell
HKLMSoftwareMicrosoftWindowsNTCurrentVersionWinlogonNotify
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonUserinit
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonUIHost
HKCUSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell
HKCUSoftwareMicrosoftWindowsNTCurrentVersionWinlogonNotify
HKCUSoftwareMicrosoftWindows NTCurrentVersionWinlogonUserinit
HKCUSoftwareMicrosoftWindows NTCurrentVersionWinlogonUIHost
这些是系统登陆时,自启动相关的一些注册表键和valuename。
Services系列
HKLMSYSTEMCurrentControlSetServices
HKLMSYSTEMCurrentControlSetServicesVxD
包括服务和驱动、内核模块的加载
Session Manager系列
HKLMSystemControlSet001ControlSession Manager BootExecute
HKLMSystemControlSet002ControlSession Manager BootExecute
HKLMSystemCurrentControlSetControlSession ManagerBootExecute
HKLMSystemControlSet001ControlSession ManagerKnownDlls
HKLMSystemControlSet002ControlSession ManagerKnownDlls
HKLMSystemCurrentControlSetControlSessionManagerKnownDlls
HKLMSystemCurrentControlSetControlSessionManagerEnvironment ComSpec
其中BootExecute的值类型为REG_MULTI_SZ,并且指定的程序只能调用NativeAPI函数,是最基本的Windows应用程序,否则不能正常运行。
Windows Load
  HKCUSoftwareMicrosoftWindows NtCurrentVersionWindowsload
  当把load的值改为自己程序路径时,下次开机,就会伴随系统一起启动。
2.2 被动启动相关注册表键
2.2.1 文件关联操作系列
HKCRexefileShellOpencommand
HKCRcomfileShellOpencommand
HKCRbatfileShellOpencommand
HKCRpiffileShellOpencommand
HKCRscrfileShellOpencommand
HKCRcplfileShellOpencommand
。。。。。。
当然除了这些文件以外,还有很多格式的文件,例如txt,jpg,bmp等。另外除了打开操作,还有打印等操作,也可以实现被动启动。
2.2.2 Command Processor
HKCUSoftwareMicrosoftCommand Processor AutoRun
当把AutoRun的值指定为你的程序时,那么以后在启动cmd进程之前会首先启动你指定的程序。如果要使你的程序的隐蔽性更好一些,可以做成一个没有GUI界面的程序。这样用户根本不会觉察。
2.2.3 LSA系列
HKLMSystemCurrentControlSetControlLsa AuthenticationPackages
HKLMSystemCurrentControlSetControlLsa NotificationPackages
HKLMSystemCurrentControlSetControlLsa Security Packages
这三个valuename的值类型是REG_MULTI_SZ,值所指定的程序必须是动态链接库,dlll形式。另外LSA是LocalSecurity Authority,是和本地安全认证相关的。
2.2.4 屏幕保护程序
HKCUControlPaneldesktop SCRNSAVE.EXE
事实上,我们经常看到的屏幕保护程序scr文件也是一种可执行文件,可以直接改exe文件为scr文件。SCRNSAVE.EXE这个valuename的值描述的是当前屏幕保护程序的路径,一旦被设置成一个假冒的scr文件木马,那么这个木马就会在下次系统触发屏幕保护时被动启动。
2.2.5 Internet Explorer系列
HKLMSoftwareMicrosoftWindowsCurrentVersionExplorerBrowserHelper Objects
HKLMSoftwareMicrosoftInternet ExplorerExplorer Bars
HKCUSoftwareMicrosoftInternet ExplorerExplorer Bars
HKCUSoftwareMicrosoftInternet ExplorerURLSearchHooks
HKCUSoftwareMicrosoftInternet ExplorerToolbar
HKCUSoftwareMicrosoftInternet ExplorerExtensions
HKLMSoftwareMicrosoftInternet ExplorerActiveXCompatibility
HKCUSoftwareMicrosoftWindowsCurrentVersionExtStats
在Browser HelperObjects键下添加一个新键,就可以注册一个新的BHO,新建的名称必须是{CLSID}这样的形式。这样下次Browser启动时,你的dll就被加载到进程中。
其他键和Browser HelperObjects键类似。
2.2.6 AppInit_Dlls
HKLMSoftwareMicrosoftWindows NTCurrentVersionWindowsAppInit_Dlls
2.2.7 Explorer系列
HKLMSoftwareClassesprotocolsFilter
HKLMSoftwareClassesprotocolsHandle
HKLMSoftwareMicrosoftWindowsCurrentVersionShellServiceObjectDelayload
HKLMSoftwareMicrosoftWindowsCurrentVersionExplorerSharedTaskScheduler
HKLMSoftwareMicrosoftWindowsCurrentVersionExplorerSharedExecuteHooks
HKLMSoftwareMicrosoftWindowsCurrentVersionExplorerShellFolder
HKLMSoftwareMicrosoftWindowsCurrentVersionExplorerShellIconOverlayIdentifiers
2.2.8 镜像劫持被动启动
HKLMSoftwareMicrosoftWindowsNTCurrentVersionImage File Execution Options
在此键下建立一个新键,新键的名称就是你要劫持的程序名称,例如avp.exe,然后在这个新键下添加一个valuename为Debugger的值,值就是你指定的木马程序的路径,这样下次再运行avp.exe的时候,你的程序就会运行,而avp.exe是不会运行的。
2.2.9 RPC系列
HKLMSoftwareMicrosoftRpcClientProtocols
HKLMSoftwareMicrosoftRpcSecurityService
2.2.10 WOW系列
HKLMSoftwareCurrentControlSetControlWOWcmdline
HKLMSoftwareCurrentControlSetControlWOWwowcmdline
WOW是Windows OnWindows,WOW技术使得在xp等NT内核操作系统上可以运行那些为旧版操作系统开发的应用程序,这样我们便可以正常的运行Windows98的甚至是Windows3.2的计算器程序等。

以上是我整理的关于自启动和被动启动的注册表键,有些比较好用,有的使用起来比较麻烦,需要多做实验,多测试。

3. 防御思路
为了不让病毒,木马使用这些自启动和被动启动方法,需要在注册表这一层面来防御,事实上就是一个RD,拦截到注册表操作时,只要检查操作的注册表有没有涉及到我们上面提到的注册表,如果发现操作的是上面的那些注册表键的话,拦截之,并询问用户如何处理。提供给用户6种选择:加入白名单、放行1次、放行至关机前、禁止1次、关闭进程、删除程序。
那么要Hook哪些注册表操作函数呢?我Hook的是一下这几个Native API函数:
NtCreateKey
NtDeleteKey
NtDeleteValueKey
NtRestoreKey
NtSetValueKey
NtLoadKey
NtLoadKey2
NtReplaceKey
前三个就不说了,大家太熟悉了。NtRestoreKey函数的作用是把一个hive文件中的注册表键和值导入到相应的注册表中;NtReplaceKey和NtRestoreKey差不多,只不过多了一个功能,就是它可以把被覆盖的注册表键和值备份到一个指定的hive文件中去。
另外,还要防止程序绕过NativeAPI,而调用CM开头的函数。这样系统就比较完善了,不易被绕过,一旦操作上面的注册表键,就会被拦截。如何防御程序调用CM开头的函数,大家可以思考下。

4. 防御系统的实现
本系统的实现是基于上期我写的一个程序——“程序行为监视器”。上次写的那个程序只有一个监视功能,没有拦截功能。要加入拦截功能需要重点考虑以下三个问题:
4.1 被保护注册表信息文件设计
该文件是用来记录那些被保护的注册表键和valuename,还可以记录下操作该注册表键的这种恶意行为的评分,如果一个程序的恶意行为评分超过一定阈值还可以起到报警的作用。另外还可以记录该行为的一些简单描述信息。我是这样设计该文件的:文件的每一行记录一个被保护的注册表。
Key ValueName Score Info
字段之间用TAB字符连接,于是在程序中就需要定义如下结构体:
//被保护注册表信息
typedef struct {
char key[MAXPATHLEN];//键名
char valuename[MAXVALLEN];//值名
int score;//评分
char info[MAXINFOLEN];//说明信息或提示信息
DWORD next;//下一个单元的指针
}REG_PROTECT,*PREG_PROTECT;
REG_PROTECT *reg_protect;//所有结构体的指针,也是链表的头指针
REG_PROTECT *current_reg_protect;//当前项目指针
int reg_protect_num=0;//被保护的注册表个数

4.2 白名单文件设计
白名单文件是用来保存用户放行并加入白名单的那些程序,和上面的那个文件类似,没一行代表一项白名单程序:
Path Type
字段之间用TAB字符连接,于是在程序中就需要定义如下结构体:
//白名单结构体
typedef struct{
char path[MAXPATHLEN];//程序完整路径
DWORD type;//类型,0-放行;1-放行1次;2-放行到关机前
DWORD next;//下一个单元的指针
}WHITE_LIST,*PWHITE_LIST;
WHITE_LIST *white_list;//所有结构体的指针,也是链表的头指针
WHITE_LIST *current_white_list;//当前项目指针
int white_list_num=0;//白名单中项目的个数

4.3 前台程序和后台驱动的交互
通信交互问题事实上在上期中的程序监视器中已经解决了,这里再提出来,主要是考虑到和上次的通信方式稍有不同,上次的通信主要是因为前台从后台获取Log信息,并实时的显示出来;而这次是要当驱动拦截到恶意行为后,通知前台,并让前台提示用户,询问用户如何处理,并接受用户的选择,把用户的选择返回给后台驱动,驱动再来做相应的工作。
为了使整个过程简单、高效。需要在前台开辟一个交互缓冲区,interactiveBuff,该缓冲区的使用规范如下:


5. 系统演示
注册表中启动键值 注册表中的键值
系统启动后,点击“开启防御”,可以使系统处于防御状态,拦截上面提到的8个关于注册表的操作函数,并记录操作日志,显示在行为列表中,如下图所示:

一旦发现不信任的程序在操作受保护的注册表时,弹出一下对话框,提示用户,并询问用户如何处理,用户可以选择加入白名单,放行一次,放行至关机前,禁止操作,关闭进程,删除程序这6个处理方式。如下图所示:

用户还可以自主的管理白名单程序,可以添加一个新的程序,或者删除一个已经存在于白名单中的程序。如下图所示:


6. 总结
本文整理了关于自启动和被动启动相关的注册表内容,在整理的过程中不免有所遗漏,或是有不妥之处,欢迎与我讨论,交流学习!
另外在整理的过程中,还发现很多自启动和被动启动方式,在一些杀软中并没有设防,这给病毒,木马留下了很大的活动空间。希望本文能引起杀软的注意。

  

爱华网本文地址 » http://www.413yy.cn/a/25101013/154007.html

更多阅读

Excel中数据透视表的使用 excel中的透视表怎么用

Excel中数据透视表的使用——简介Excel中数据透视表的使用 现在Excel在办公软件中已经很实用,得到了多数人的认可,里面非常强大的功能总能够给我们的工作带来方面。就像Excel中的公式、函数非常强大,可以帮助我们完成很多数据整理工作

怎样使用EXECL中的数据透视表入门篇 execl数据匹配

用EXECL中的数据透视表做统计非常方便,下面我用一个简单的例子给大家介绍下(本文使用的是MS OFFICE2007):假设我有个表格,要按月将不同列分别作统计步骤如下:点击“插入”-“数据透视表”点击图示中的按钮,选择数据透视表要统计

声明:《注册表中启动键值 注册表中的键值》为网友小男人分享!如侵犯到您的合法权益请联系我们删除