我们输入或者运行命令的时候一般都是用CMD来做到的,可以通过它进入注册表或者系统里一些隐秘的地方,这样一来如果病毒通过cmd的话,那后果就不堪设想了,怎么守住cmd这一关呢?
一 前言
翻开网络上的入侵资料看看吧!大多数的入侵都是在cmd下完成的,比较典型的有溢出得到一个system权限的cmdshell,然后种植一个Tcmd之类绑定了cmd.exe的后门。也有利用web程序的漏洞得到一个webshell然后利用低权限的cmdshell来提升权限,最后再种植后门……各种各样的攻击都说明入侵和cmd.exe是相关的,因为一个cmd.exe就是一个用户与系统交互的一个接口,是入侵者进入系统的首要目标。当然,我们不能在这里坐以待毙,如何防止别人通过溢出得到你的cmdshell,如何知道别人已经进入系统并且获得cmdshell,如何在人家登陆到我们机器的时候抓住入侵者呢?现在就让我们打造一个cmd下的终极防线吧。
二 原理
网络上谈得比较多的一种防范的方法是将cmd.exe设置权限,这样的确可以起到很大的作用,但是权限比较难以确定,并且如果别人自己上传cmd.exe的话还是可以突破的,然后用nc绑定cmd.exe到一个端口还是可以得到cmdshell。今天我给大家介绍一种新的方法,不用设置cmd的权限哦!首先说说原理,还是打开你的cmd命令窗口,运行命令cmd /?,看看得到了什么吧!如图一。
注意以下内容:
如果 /D 未在命令行上被指定,当 CMD.EXE 开始时,它会寻找以下 REG_SZ/REG_EXPAND_SZ 注册表变量。如果其中一个或两个都存在,这两个变量会先被执行。
HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorAutoRun
和/或
HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorAutoRun
<p> 也就是说如果存在HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorAutoRun和HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorAutoRun这两个键值并且你不是用cmd.exe /D启动cmd进程的话会在启动cmd.exe之前先去执行这两个键值指定的程序。嘿嘿,想到什么了,既然可以先于cmd.exe之前执行自己的程序或者脚本,我们就完全可以控制cmd.exe的动作了。 |