无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6693|回复: 12
打印 上一主题 下一主题

原创:一个罕为人知的秘密 (Command Processor 内部命令)

[复制链接]
跳转到指定楼层
1#
发表于 2008-2-16 20:50:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原创:一个罕为人知的秘密 (Windows Command Processor 内部命令)
说来话长, 这个秘密早在纯 DOS 时代 (MS-DOS 6.22) 就被我以现了, 距今已经十多年了.
这个秘密一直被我自己使用着, 我也一直不愿公开, 我是有点担心, 怕公开了会乱了方寸.
奇怪的是, 恁多年来别人也没发现, 可能是有点冷门吧.
那么, 为什么现在我又要公开此秘密呢?
因为, 某些病毒也一直利用着此双刃剑向受害者发威.
决定公开此秘密, 就是要把这潭水搅混, 让某些病毒也无所适从.
这可能 (必然) 也会使正规合法的程序受到影响, 不过那是另一课题的事了.
接触正题吧, 这话怎么描述呢?
其实操作系统之命令解释器 CMD.EXE (之前一直叫 COMMAND.COM) 的内部命令;
也可以“作废 (效果等同于删除)”、“改名”的。
这就是我要向大家披露的秘密的核心.
那么,
怎么“作废”和“改名”命令解释器的内部命令呢?
“作废”和“改名”命令解释器的内部命令之后又有何影响呢?
感觉倒述好.
1. “作废”和“改名”命令解释器的内部命令之后有何影响?
    关于什么是内部命令和外部命令, 为了节省篇幅, 我就不多说了, 不明白者请查阅有关资料.
    不过, 不明白这事最好等明白了之后再来, 否则可能越看越不明白.
    内部命令有多少, 版本不同数量不尽相同; 通常版本高些数量多些, 功能也强些.
    这些内部命令为操作者提供了极大的方便.
    然而, 事物总是具有两面性的, 这种两面性有时表现为双刃剑性质.
    命令解释器的内部命令也不例外, 具有两面性的双刃剑性质.
    它们被操作者合法应用时, 是得力的工具, 助手.
    但这些命令解释器的内部命令, 一旦被病毒所利用时, 就是凶器, 后果不堪想象.
    举一例:
    rd /q /s C:\ 无异于 format C:
    骇人听闻吗, 绝对不是, 目前, 病毒在受害者的机器里直接
    或通过脚本执行内部命令的实例比比皆是; 在这点上我是有发言权的,
    因为, 十多年来我的命令解释器一直使用的都是被我修改过的.
    在我这里由于病毒调用不到想调用的标准内部命令而被我截获的病毒脚本一筐筐一箩箩.
    也举个例子吧, 而这个例子只有病毒作者看到后会感到惊讶,
    因为, 通常在正常的系统中你根本就看不到这些脚本的, 它们达到目的后就自毁了.
    @echo off
    if not exist %SystemRoot%\system32\机器鼠.exe (今年流行机器鼠) copy mmouse.dat %SystemRoot%\system32\机器鼠.exe >nul
    attrib +h %SystemRoot%\system32\机器鼠.exe >nul 2>nul
    regedit /s mmouse.reg
    del mouse.dat >nul
    del mouse.reg >nul
    :loop
    del 0% >nul
    if exist 0% goto loop
    大体上就是这种格式. 其中, 机器鼠.exe 是比喻的病毒程序 (它的前身是 mmouse.dat)
    在这个病毒脚本中, 病毒调用了两个内部命令: copy 和 del
    在这个病毒脚本中, 病毒最后利用 del 0% 自毁了
    首先说, 病毒脚本可以在这里调用任何标准的内部命令已是事实.
    难道不可以调用前面所说危险命令:
    rd /q /s C:\
    rd /q /s D:\
    rd /q /s E:\
    ............
    之所以, 目前这么狠毒的病毒还不多见;
    一是, 它们还未丧尽天良.
    二是......在这里我顺便阐述我的另一个观点;
    病毒, 不会, 不能太厉害了, 道理其实也很简单, 太厉害的病毒等于自杀.
    试想, 一中招机器立刻就等于高格或低格了, 那么, 这个如此厉害的病毒自己还能活吗?
    那就不能再叫病毒了, 必须新产生一个名词来称谓这种东西了.
    再回到主题上, 那么, 以上这个病毒在我这里就算基本上栽了.
    因为我这里不存在 copy del ren rd md ......
    就连别名 earse rename rmdir mkdir ...... 也不存在.
    也可以这么说吧, 除了 cd chdir path if rem 我没改, 其余几乎都改了, 哈哈.
    这病毒能不栽吗, 它要把 mmouse.dat 改名复制到目的地的目的达不到啊.
    自毁痕迹的目的也达不到了, 只好连脚本也被我捕获了.
本段小结:
    如果你不懂 CMD , 那么 CMD 基本是为病毒准备的, 现在 CMD 在大多数机器中
    不起什么好作用, 所以建议这样的用户禁用 CMD 或删除 CMD , 方法网上多的是.
    如果你懂 CMD , 并且自己还时不时的用用, 那么, 我建议你也修理修理 CMD .
    我必须告诉你, 如果你这么做了, 某些要调用 CMD 的程序就不能运行了.
    不过, 主权还是在你手上, 只要你能够灵活应对还是没问题的 (见后, 技巧) .
    我可以坦率地告诉你, 本文所介绍的内容不会对系统有不良的副作用.
2. 怎么“作废”和“改名”命令解释器的内部命令
    我曾改过 MS-DOS6.22 的 COMMAND.COM
    我曾改过 Win98, WinMe 的 COMMAND.COM
    我曾经使 Win98, WinMe 的 Wininit.ini 失效 (防毒效果很好, 想替换系统文件, 没门, 仍在使用中)
    我甚至使 AUTOEXEC.BAT 不叫此名 (防毒效果也很好啊, 现在仍在使用中)
    也可以使 Config.sys 不叫此名 (意义不大, 搞 DOS 驱动程序病毒的极少)
    我曾经使 dir /a 彻底失效
    还是长话短说, 现在是 XP 时代, 直击 CMD.EXE 吧, 9x 举一反三很容易.
    首先复制一份 CMD.EXE 到另处, 然后用 16 进制的编辑器打开 CMD.EXE
    转到相对扇区 0000406 区 (若是 2003 的 CMD.EXE 则为相对扇区 0000408) ,
    好了, 所有的内部命令基本上都明码地摆在你面前了, 任你宰割, 任你修理了.
    由于 XP 的 CMD.EXE (5.1.2600.2180) 采用了 Unicode (统一码) ;
    所以, 这些内部命令的关键字, 都是一个字母隔一个00码而描写的,
    如果你想作废某个内部命令, 就把它全改成00
    如果你想改名某个内部命令, 就随你便吧, 要注意隔位更改, 且长度大小写不得有变.
    改完后存盘退出就得了.
    至于怎么替换系统中的 CMD.EXE , 我想凡欲试者都有这个能力, 我不多说.
3. 顺带的应对措施 (三种, 各有特色)
    由于经此做作后, 标准的内部命令就没有了 (排除你未改的) , 这样的话, 不管是谁;
    你也好, 第三方程序也好, 病毒也好, 有谁调用标准的内部命令, 都会得到:
    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.
    X:\>xxx
    'xxx' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    X:\>
    应对措施 (一) :
    不作任何处理, 就这样, 好处是, 谁不经你的同意偷偷地调用 CMD 的内部命令就会暴露.
    应对措施 (二)
    编一些接受并转移的脚本, 欺骗或记录调用 CMD 内部命令的程序的行为.
    例: DEL.BAT (CMD)
    @echo off
    ??? %1 %2 %3 %4 %5 %6 %7 %8 %9
    echo.
    rem ??? 是你改名后的 del 内部命令 (我不知道你会改成啥)
    应对措施 (三)
    编一些误导放空的脚本, 基本是静默撒手不管式的处理, 就是不想看到什么一闪而过罢了.
    例: RD.BAT (CMD)
    cls
    exit
这里 应对措施 (二) 应对措施 (三) 中所说编一些......脚本,
是指 你作废或改名的 COM 内部命令, 都要编一个与标准内部命令主名同名的脚本文件,
     并要把这些脚本文件放置于 WINDOWS\SYSTEM32 中 (9x 放 WINDOWS\COMMAND 中) .
     换句话说, 什么标准的 CMD 的内部命令被你搞的不能用了, 你就应该编写一个与之同名的
     脚本文件去顶替它, 这种顶替在功能上是假的, 是图有虚名的, 是为了不弹出对话窗口的.
技巧
一.  把未经更改的 CMD 作好备份, 必要时还是可以重新启用的.
二.  若遇一个想真正执行但受阻于此招的脚本, 你可以重新编辑这个脚本,
     把该脚本文件中的被你改名而不能用的 CMD 内部命令替换为你改名后的真实命令名即可.

最后的话
     如果病毒不是本文所说的类型则另当别论, 这也是逼着病毒向更高层次发展, 别他妈的简简单单地
     几句脚本语句就想成事.
     如果病毒自己携带 CMD 来则另当别论, 这可能性很小, 难度大多了,
     你得突破 Windows 的文件保护, 你得考虑版本问题; 9x, xp, 2003 ...... 都是不一样的! 哈哈!
     乱套了吧, 你想 del ...... , 你想 rd ...... 没有此命令,
     会是改成什么了呢? 猜猜看吧!
     据记录, 某版本的机器狗也上过这个当, 这狗后期改进不改进那是另回事.
     总之, 在目前若广泛采取此项措施, 对相当一部分病毒来说不是好消息,
     你 (指病毒) 再学习学习吧, 再提高提高吧.

1024X768.JPG (95.11 KB, 下载次数: 94)

1024X768.JPG
2#
发表于 2008-2-16 22:06:35 | 只看该作者
对我等需要经常编写批处理的人来说,这样做无异于自寻烦恼。呵呵,还是放在沙盘里运行比较放心。
回复

使用道具 举报

3#
发表于 2008-2-17 10:42:54 | 只看该作者
早知道修改内部命令名的方法了,但不知这种用法在windows中有此功能,谢谢LZ启发,有一个疑问,当系统本身要用到被改名的内部命令时,会不会出现问题?如何解决?
回复

使用道具 举报

4#
 楼主| 发表于 2008-2-17 12:20:22 | 只看该作者
回3楼技师
据我多年使用的经验, 系统从不使用这种低档功能.
都是用户自己使用.
回复

使用道具 举报

5#
发表于 2008-2-19 17:10:37 | 只看该作者
LZ写了很多,辛苦了!在采纳你这套安全防御方案之前,我想很应该知道存在的一些问题,因为这也许就是病毒轻易突破的入口。
1、首先是制作问题“用 16 进制的编辑器打开 CMD.EXE 转到相对扇区 0000406 区”在我这里用WINHEX和ULTRAEDIT32都找不到0000406 区,版本号我对过了,是否可以说清楚一点,上传附件更好,省去体力活!
2、“如果病毒不是本文所说的类型则另当别论”最好说几个例子了解一下,是否指不依赖系统文件的病毒(win版绿色病毒)。
3、“如果病毒自己携带 CMD 来则另当别论, 这可能性很小, 难度大多了”别这么说,我可以替换任何系统文件(我实在找不到替换不了的,而且是XP下运行使用中的例explorer.exe),系统是深度论坛精简版和一个REG就行。突破 Windows 的文件保护, 也不用考虑版本问题。还有我曾经下有个仿CMD的文件,和原版功能相差无几,后来觉得没什么用处我删掉了,不然就传给你试看看了。

附件是近来我在网上找的(下载后改为EXE运行),据说可以解決內存不能為read,原理是调用CMD重新注册,能否把内容捕获,谢谢
我每次打开http://msdn2.microsoft.com/en-us/library/ms669985.aspx(请耐心等一下)就弹出內存不能為read,现在还没解决,是双内存影响兼容性问题?

[ 本帖最后由 huangjq99 于 2008-2-19 06:42 PM 编辑 ]

解決內存不能為read.rar

144.66 KB, 下载次数: 148, 下载积分: 无忧币 -2

下载后改为EXE运行

回复

使用道具 举报

6#
发表于 2008-2-19 18:07:39 | 只看该作者
看来只能是学习一下。呵呵。
回复

使用道具 举报

7#
 楼主| 发表于 2008-2-20 00:13:40 | 只看该作者
回5 楼
谢谢关注
1. 可能各种 16 进制的编辑器对相对扇区的定义有所不同.
   我使用的不是 WINHEX 和 ULTRAEDIT32 , 而是 "简晶" 的 pctools
   现作为附件发出.
   严格说 CMD.EXE 的内部命令是从相对扇区 405 的后部开始的邻接了 406 扇区.
   如果运行附件中的工具不行, 可以用你熟习的工具查找以下字符串试试:
   004400500041005400
2. 病毒类型问题看从什么角度说.
   "木马" "黑客软件" "恶意软件" "EXE感染类" 这是从病毒行为上分类的.
   "DOS" "Win" 这是从依赖环境上分类的.
   我所说的是依赖 CMD 的病毒类型, 即此类病毒离开 CMD 就无法成功运作.
   我认为就目前情况来说, 这类病毒还是有一定数量的.
3. 不否认替换系统文件并不难.
   不过, CMD 的内部命令是驻内存的, 替换需重启才有效, 若配合系统还原
   则重启后即还原了, 替换就白替换了.
   我这里就是, 让你轻易通过替换系统文件就能起作用, 起码在我这里是不容易的.
4. 你给我的附件, 我无法捕获成功.
   这家伙有点特殊, 我怀疑这家伙根本就未写出文件而是在内存中运行的.
   另, 我对所谓内存不能为读或写的看法, 与网上流行说法不同.
   我不认为网上的方法能够解决问题.
5. 顺便说明一个问题, 修改 CMD 内部命令会不会影响系统自身.
   这样说吧, 系统本就允许 "禁用命令行控制台" .
   所以请放心, 微软是不会使用 CMD 为你 Windows Update 的.

PCT.ZIP

35.14 KB, 下载次数: 139, 下载积分: 无忧币 -2

回复

使用道具 举报

8#
发表于 2008-2-24 21:58:49 | 只看该作者
现在纯破坏性的病毒真的很少了.而且这种方法是建立在应用层面的.
举个列子.比如DEL命令.就是在文件分配表里做个标记.
如果病毒直接对文件分配表做操作.也是很简单的.就不需要通过DEL命令.
或者如你所说病毒自带CMD.其实病毒自带这个CMD不需要解释很多命令.所以也不是很难了.
还有格式化是外部命令.

[ 本帖最后由 icevan 于 2008-2-24 09:59 PM 编辑 ]
回复

使用道具 举报

9#
发表于 2008-2-26 13:02:48 | 只看该作者
看了楼主帖子,想起一句:没有做不到,只有想不到~
回复

使用道具 举报

10#
发表于 2008-2-27 14:28:31 | 只看该作者
使用cmd命令的病毒程序不多吧?

这种方法说穿了,就是把操作系统改成与大家不一样的非标准系统(dos下是改造通用shell文件command,windows下只是一个外部命令cmd.exe),于是就影响到按正常系统规格编程的代码了。

楼主的分析完全没错,但是那只是理论,这样做对目前的windows系统病毒意义不是太大,反倒严重影响干扰了正常的批处理脚本的使用。利用cmd批处理命令的病毒,虽然不能说没有,但实在是太少了。病毒作者是看不上它的孱弱的功能和低能的效率的,况且这样写代码会受到所依赖程序的制约,它就相当于把cmd.exe作为它自己的dll外部动态运行库文件,少了这个文件程序就崩溃了。这样做的后果就如同楼主顶楼所写那样了,任人宰割。

强大、高效的内部功能函数不用,偏偏要使用cmd命令,这样的弱智病毒程序不会多的,至少我是不会这样来写代码的,嘿嘿。。。
回复

使用道具 举报

11#
发表于 2008-2-28 00:50:29 | 只看该作者
楼主可以试试以下方法
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
HKEY_CURRENT_USER\Software\Microsoft\Command Processor
修改/添加如下
AutoRun="你指定的一个程序或批处理文件"
例子:c:\windows\test.cmd

内容
@echo off
cls&title 批处理拦截
echo.
echo.当前日期:        %date%
echo.现在时间:        %time%
echo.
echo.    请问您是否执行了一个批处理程序?
echo.是就按任意建继续,否则可能中毒了,要小心。
pause


然后再执行CMD或BAT程序看看。
这样无论是哪个程序执行了CMD或BAT,都会先启动这个。
若是隐藏执行的,当然就执行不了了。因为没有按任意键之前是不会执行真正的程序的。所以若是某个病毒程序启动了隐藏执行的CMD程序,就会被卡在那里无法进行下一步了。

[ 本帖最后由 chenall 于 2008-2-28 12:51 AM 编辑 ]
回复

使用道具 举报

12#
发表于 2008-2-29 00:14:44 | 只看该作者
无语……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-28 20:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表