保护电脑安全 守住CMD这关

1
回复
368
查看
[复制链接]
发表于 2014-2-4 23:35:51 | 显示全部楼层 |阅读模式
  我们输入或者运行命令的时候一般都是用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的动作了。
 楼主| 发表于 2014-2-4 23:35:51 | 显示全部楼层
</p>          三 实战
          我们找到了我们可以利用的东西,现在看看如何利用cmd.exe的这个特性来做些什么吧!关键是编辑
          HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorAutoRun的内容(没有的话你可以新建一个)为你自定义的一个脚本的位置,为了方便我们可以使用批处理,我的系统是2000 adv server。譬如你可以在c:winntsystem32下写入一个cmd.bat的批处理文件,内容为你希望在启动cmd.exe进程之前要运行的命令,然后编辑HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorAutoRun的内容为c:winntsystem32cmd.bat如图二。
          假设你的机器并不是经常及时打上补丁,你就可以编辑system32下cmd.bat的内容为exit,这样就抵御黑客的远程溢出攻击了,因为一般的溢出要么是反弹一个cmdshell要么是绑定一个cmdshell,而溢出的shellcode执行cmd之后会首先运行的是我们指定的cmd.bat里面的内容,而内容正是exit退出,这里为了给大家示范我指定的命令是pause命令,如图三。
          这样不知道真相的人肯定会很郁闷的,即使知道真相如果他是一般的菜鸟的我想对这样的问题他也是束手无策吧,除非他使用的是其他的shellcode。
          光是这样的防范还没有什么意思,我们最好能够抓住入侵者,那我们就好好的写这个cmd.bat脚本吧!要抓住入侵者或者想知道入侵事件发生的时间我们可以定义cmd.bat的内容如下:
          @echo off 关闭命令回显@netstat -an>>c:winntsystem32net.log 取得当前的网络连接状态并输出到net.log文件,用>>重定向是避免日志被后来的冲洗掉@date /t>>c:winntsystem32date.log 取得入侵发生的时间@time /t>>c:winntsystem32time.log
          @exit 退出
          这样当有人溢出的时候他的IP就在日志里啦!你完全可以根据自己的情况补充这个脚本的内容,如查看进程,查看端口关联等等,因为不是系统自带的程序我就不给大家展示了!
          但是是不是只能做这么多呢?看到以前的杂志有人写用telnet愚弄入侵者,有了今天的方法可不只能用telnet愚弄入侵者了,所有的绑定cmd.exe的程序都可以被我们愚弄的。譬如我们在cmd.bat里写上:
          @echo off 关闭命令回显@netstat -an>>c:winntsystem32net.log 取得当前的网络连接状态并输出到net.log文件,用>>重定向是避免日志被后来的冲洗掉@date /t>>c:winntsystem32date.log 取得入侵发生的时间@time /t>>c:winntsystem32time.log
          @type c:winntsystem32cmd.txt 打印cmd.txt的内容,也是由我们自己定义的@pause 暂停程序,让入侵者惋惜去吧!@exit 退出程序
          这样我们就可以对入侵者喊话了,喊些什么呢?骂人的话就不要喊了,我这里就给自己做个广告吧,别人telnet上来我的机器上时如图四
          其实从任何的cmd后门上登陆时都是这样的效果,我的Tcmd就很郁闷,呵呵!这些在webshell里也是很有奇效的,大家还可以发挥自己的想象力哦,没有什么做不到的。
          四 总结
          文章没有什么高深的东西,其实就是cmd的一个属性,与设置权限配合使用,用得好的话效果还是很不错的。有人要问了,这样设置以后我们自己启动cmd怎么办,很好说的,就是运行的时候用cmd /D参数启动就可以了。有什么问题或者建议欢迎到论坛讨论,我的ID是剑心。(相关代码已经收录)
          附:
          cmd.bat
          @echo off
          @netstat -an>>c:winntsystem32net.log
          @date /t>>c:winntsystem32date.log
          @time /t>>c:winntsystem32time.log
          @echo on
          @type c:winntsystem32cmd.txt
          @pause
          @exit
          cmd.reg
          Windows Registry Editor Version 5.00
          [HKEY_LOCAL_MACHINESOFTWAREMicrosoftCommand Processor]
          "AutoRun"="c:winntsystem32cmd.bat"
          维护电脑安全是一项长期而且巨大的工程,所以任何一个突破口都不能放过,尤其是cmd这样重要的地方,大家一定要仔细认真阅读教程,认识他的原理和作用好好利用它。
关注官方微信

微信号:大白网

微博:大白网

QQ1群:4731622

QQ2群:4731622

全国服务热线:

QQ24485416

(工作日:周一至周五 9:00-16:00)
大理市
www@dali8.net

手机版-小黑屋- 大理白族|大理乡村旅游网|大理网|大理论坛|白族网|大理旅游网|大理信息网|大理生活网

技术支持:挖主机网络 Powered by大白网© 2006-2025 dalibaizu.com  滇ICP备19004088号 滇公网安备 53290102000530号