通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 原创精华 >> 文章正文
推荐:cmd的终极防守
责任编辑:古典辣M°   更新日期:2005-11-5
 

一  前言

    翻开网络上的入侵资料看看吧!大多数的入侵都是在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_MACHINE\Software\Microsoft\Command Processor\AutoRun

        和/或

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

也就是说如果存在HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun和HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun这两个键值并且你不是用cmd.exe /D启动cmd进程的话会在启动cmd.exe之前先去执行这两个键值指定的程序。嘿嘿,想到什么了,既然可以先于cmd.exe之前执行自己的程序或者脚本,我们就完全可以控制cmd.exe的动作了。

三  实战

    我们找到了我们可以利用的东西,现在看看如何利用cmd.exe的这个特性来做些什么吧!关键是编辑
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun的内容(没有的话你可以新建一个)为你自定义的一个脚本的位置,为了方便我们可以使用批处理,我的系统是2000 adv server。譬如你可以在c:\winnt\system32下写入一个cmd.bat的批处理文件,内容为你希望在启动cmd.exe进程之前要运行的命令,然后编辑HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun的内容为c:\winnt\system32\cmd.bat如图二。

假设你的机器并不是经常及时打上补丁,你就可以编辑system32下cmd.bat的内容为exit,这样就抵御黑客的远程溢出攻击了,因为一般的溢出要么是反弹一个cmdshell要么是绑定一个cmdshell,而溢出的shellcode执行cmd之后会首先运行的是我们指定的cmd.bat里面的内容,而内容正是exit退出,这里为了给大家示范我指定的命令是pause命令,如图三。

这样不知道真相的人肯定会很郁闷的,即使知道真相如果他是一般的菜鸟的我想对这样的问题他也是束手无策吧,除非他使用的是其他的shellcode。
    光是这样的防范还没有什么意思,我们最好能够抓住入侵者,那我们就好好的写这个cmd.bat脚本吧!要抓住入侵者或者想知道入侵事件发生的时间我们可以定义cmd.bat的内容如下:

@echo off                                                                       \\关闭命令回显\\
@netstat -an>>c:\winnt\system32\net.log                                         \\取得当前的网络连接状态并输出到net.log文件,用>>重定向是避免日志被后来的冲洗掉\\
@date /t>>c:\winnt\system32\date.log                                             \\取得入侵发生的时间\\
@time /t>>c:\winnt\system32\time.log
@exit                                                                             \\退出\\

这样当有人溢出的时候他的IP就在日志里啦!你完全可以根据自己的情况补充这个脚本的内容,如查看进程,查看端口关联等等,因为不是系统自带的程序我就不给大家展示了!
    但是是不是只能做这么多呢?看到以前的杂志有人写用telnet愚弄入侵者,有了今天的方法可不只能用telnet愚弄入侵者了,所有的绑定cmd.exe的程序都可以被我们愚弄的。譬如我们在cmd.bat里写上:

@echo off                                                            \\关闭命令回显\\
@netstat -an>>c:\winnt\system32\net.log                              \\取得当前的网络连接状态并输出到net.log文件,用>>重定向是避免日志被后来的冲洗掉\\
@date /t>>c:\winnt\system32\date.log                                 \\取得入侵发生的时间\\
@time /t>>c:\winnt\system32\time.log
@type c:\winnt\system32\cmd.txt                                       \\打印cmd.txt的内容,也是由我们自己定义的\\
@pause                                                                 \\暂停程序,让入侵者惋惜去吧!\\
@exit                                                                  \\退出程序\\

这样我们就可以对入侵者喊话了,喊些什么呢?骂人的话就不要喊了,我这里就给自己做个广告吧,别人telnet上来我的机器上时如图四

我的日志内容如图五。

其实从任何的cmd后门上登陆时都是这样的效果,我的Tcmd就很郁闷,呵呵!这些在webshell里也是很有奇效的,大家还可以发挥自己的想象力哦,没有什么做不到的。

四  总结
    文章没有什么高深的东西,其实就是cmd的一个属性,与设置权限配合使用,用得好的话效果还是很不错的。有人要问了,这样设置以后我们自己启动cmd怎么办,很好说的,就是运行的时候用cmd /D参数启动就可以了。有什么问题或者建议欢迎到论坛讨论,我的ID是剑心。(相关代码已经收录)

附:
cmd.bat

@echo off
@netstat -an>>c:\winnt\system32\net.log
@date /t>>c:\winnt\system32\date.log
@time /t>>c:\winnt\system32\time.log
@echo on
@type c:\winnt\system32\cmd.txt
@pause
@exit

cmd.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"AutoRun"="c:\\winnt\\system32\\cmd.bat"

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题