KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

用打包程序的坏处......

[ 16976 查看 / 52 回复 ]

回复: 用打包程序的坏处......

原帖由 粘土火星 于 2008-1-29 13:58:00 发表
中毒之后再装杀毒,能杀成功的那是人品好。
楼上的高手,对自己好点……


如果是早期DOS/Win9x时代的病毒,那确实杀起来很困难.
但这些年很少有真正意义上的病毒了,到处是木马,说到底方法就是结束进程或进入安全模式,找到相关文件和注册表项删除或修复就完成了.


近几年从杀软的宣传中好像进步很大,其实本质上没多大改进,反而随着病毒/木马/壳的广泛普及,以及NT系统的研究程度来看,杀软已经逐渐落后于病毒了.这也使HIPS/还原类工具开始普及.但前者只是给高手用的,后者会给用户带来很多限制.

静态分析很早就有SMC的方法对付.虽然对用SMC的程序可以直接报怀疑,但总有方法隐蔽这种行为的.
动态分析的话估计没有一个杀软敢直接运行程序.
虚拟机脱壳也不是万能的,早已有获取系统罕见API返回值来解密代码的对抗方法.真正的虚拟机是不敢真正调用API的.
最终的出路也许只有HIPS了,而且还要保证它在病毒启动之前.

虽然做出一个隐藏非常好的病毒理论上不是不可能,但有这样能力且有闲时间的制作者少之又少,否则杀软早就被嗤之以鼻了吧.
TOP

回复:用打包程序的坏处......

虚拟机和API没有什么关系吧 |||||| 纯底层硬件虚拟一个完整的系统,再使用Dynamic Taint没有什么能够逃过的。但是这不是用来防毒的,而是发现病毒后用来快速提取相关信息的。
其实这项技术源于DEBUG技术,早在虚拟机技术之前就有了。Intel的CPU除了ES,零售,还有开发版,接在专用的平台上,运行时每一个指令都可以被硬件log下来,并且发现特定的指令或者对特定内存的访问,就会自动中断。动态分析其实也就是利用虚拟机来实现这一系列操作而已。

脱壳问题研究已经比较成熟了。我去年厅的那篇文章,大概原理就是:壳永远也摆脱不了一个独特的内存访问模式——首先向一块内存写数据,然后又跳向该段内存执行。一般的程序则很少这样做。于是只要有系统级或者虚拟机级别的权限,监测内存的写后再执行的访问方式,不论多少层壳都可以脱。怎么发现脱壳结束了呢,也很简单,Hook (系统级)或者Taint (虚拟机级) 一些系统调用就行了——当程序开始进行一些“危险”的操作的时候,比如写硬盘/写注册表/打开网络接口等等。当然具体实现起来还有一些细枝末节的东西需要考虑,但是总的来说,这个方式确实能够有效地脱壳,并且对加密/压缩算法完全不敏感。

另外,杀毒软件和病毒就像抗生素和细菌一样,各自水平都会是保持平衡的。光假设病毒的水平变高然后翻过来嘲笑目前的杀毒软件是没有意义的。安全,永远都是一个相对概念,搞这行的人都知道。
飛べない翼に、意味はあるんでしょうか?
TOP

回复:用打包程序的坏处......

21楼所指的虚拟机当然指的是杀软件用来脱壳的简易虚拟机,当然不可能虚拟硬件再虚拟运行一套OS,那代价太高.

还有,杀毒软件脱壳并不需要完整地脱壳,而是只等到原始代码写入完成即可.真正用虚拟机并不能保证脱壳,有些保护壳所解密的代码有可能不是可重入的,比如与tick count或硬件状态有关,或者有stolen code,这一般都没有非人工修复的可能.
发现脱壳结束也不好保证,有的壳有很好的伪装,看起来就和普通程序一样,但内嵌函数代码,达到一定条件时才释放并创建线程的方式执行,因此即使发现程序开始调用API并不能保证一定脱完最后一层壳了.因此虚拟机脱壳是不具备通用性和完备性的,

有些病毒/木马并不是启动后就立即干坏事,所以虚拟机也不能很快地截获到恶意操作.不得不人工分析.

抗生素是人为的,而细菌是自发的. 抗生素需要有细菌存在才有意义,但细菌却不依赖于抗生素而存在. 病毒和杀软也是同样道理, 病毒技术远超杀软(HIPS不算杀软)技术是有可能的,就像目前的数据加密技术已经远超对应算法的解密技术一样.
最后编辑dwing 最后编辑于 2008-01-29 21:00:37
TOP

回复:用打包程序的坏处......

赫赫,楼上怎么又开始想当然了。我从一开始的那贴就说得是“代价高”的虚拟机,而且我早就指出了这一点。请仔细读完再回帖。

杀毒软件也没有必要完整的脱壳,抓病毒并并不需要完整的看所有的部分,只需要能够抓到足够多的部分确认就行。另外,我并没有说脱壳需要一开始就脱到底。请仔细想想,我前面描述的原理:不论你再高级的什么壳,永远也摆脱不了释放代码(写)到一段内存后的某个时间又跑过去执行这样的异常举动。并且监视这个动作并不是什么高代价的操作,完全可以在程序执行的全过程实行。发现这个动作一次,就启动指纹/静态扫描一次,以后再有,再扫就行了。

哈哈。“抗生素是人为的,而细菌是自发的”不得不说这是一个非常肤浅的论断。提示: 请不要单纯的从“抗生素”这个人给的标签上下结论,标签确实是人给的,但“病毒”这个标签也是人给的。没有人他们就不存在了么?

而且我从来也没有否定病毒的技术超过杀毒软件,不要变更讨论的重心。你前面说的是:如果很多人都有很高的技术以及很多的时间来写高级的病毒,那么就可以完全的鄙视所有的杀毒软件了。我的意思:请不要忘了,杀毒软件就像抗生素一样,尽管永远也不可能解决所有的病毒,但是可以保证他能够对抗大多数的主流病毒。现在的杀毒软件水平其实就是反映主流病毒的水平,仅此而已。如果主流病毒技术提高,可以肯定绝对会出现相应的杀毒技术,因此你的“鄙视”是没有道理的。

最后一句话,如果你没有读或者理解的话:世界上所有的给大众“安全”措施,都仅仅是防主流而不是防全部的。这点古人就明白,所以有话说“防君子不防小人”。如果你在某个方面的技术领先,得确,你可以轻易的化解绝大多数的安全措施;但是如果你假设绝大多数人都有你的技术然后得到结论所有的安全措施都将形同虚设,那就想入非非了。所谓领先,就是指少数,要想领先就永远摆脱不了成为少数。

----------------------

另:“虚拟机当然指的是杀软件用来脱壳的简易虚拟机”

其实你说的“简易虚拟机”应该叫“沙盒”(Sandbox)。因为它不是一个虚拟的机器,仅仅是一个通过Hook一些API获得的虚拟的环境,叫虚拟机会混淆概念的。
最后编辑Prz 最后编辑于 2008-01-30 03:04:53
飛べない翼に、意味はあるんでしょうか?
TOP

回复:用打包程序的坏处......

"我从一开始的那贴就说得是“代价高”的虚拟机,而且我早就指出了这一点。"

我在上面讨论的基本都是围绕1楼的论题"杀毒软件"和"壳"的方向,我不想把论点跑题到真正的虚拟机上.
真正的虚拟机对于杀毒软件来说在可预料的未来是不可能应用的.


"不论你再高级的什么壳,永远也摆脱不了释放代码(写)到一段内存后的某个时间又跑过去执行这样的异常举动。"

非要我举出一个例外么?如果壳也采用了虚拟机技术,而不是真正地跳转到原始代码上呢?


"而且我从来也没有否定病毒的技术超过杀毒软件,不要变更讨论的重心。"

病毒技术当然一直走在杀毒软件的前面,我上面所述的意思是病毒技术与杀软技术的发展速度开始拉开距离了.


"如果主流病毒技术提高,可以肯定绝对会出现相应的杀毒技术,因此你的“鄙视”是没有道理的。"

赫赫,楼上怎么又开始想当然了。这个"肯定"太绝对了,我只看到杀毒软件为了对抗不断提高技术的病毒开始像HIPS方向走了,杀毒软件原本的概念开始逐渐弱化.就是说病毒的技术在更新,而病毒的概念没变;但杀毒软件的技术已经不好提升,概念上逐渐开始转向HIPS.我也从没有"鄙视",请仔细读完再回帖.


"但“病毒”这个标签也是人给的。没有人他们就不存在了么?"

开始拿名称而不是本质来狡辩了,明显是在抬杠,我不跟你在比喻上纠缠不清了.


"但是如果你假设绝大多数人都有你的技术然后得到结论所有的安全措施都将形同虚设,那就想入非非了。"

这一点你不必解释,我前面已经解释那种观点只是一种假设了:"虽然做出一个隐藏非常好的病毒理论上不是不可能,但有这样能力且有闲时间的制作者少之又少,"所以说我所说的病毒技术和杀软技术只是一种理论意义上的,实际还未能很好地体现出来.量变还没有达到质变而已.
最后编辑dwing 最后编辑于 2008-01-30 11:32:19
TOP

回复:用打包程序的坏处......

看了楼上两位大侠的评论,本人想说两句.
杀毒软件的实质是什么?杀毒软件的实质应该是什么?
现在的杀毒软件只不过把人工杀毒的方法自动化.
<电脑爱好者>杂志的一位编辑曾经把杀主流木马的批处理文件打了包放在网上.
其他人下载下来以后把这些批处理文件一个个运行一遍
保证系统无毒(至少杀毒软件查不出来)
但是这真的是防病毒吗?
我看不然
这实质上只是防木马.
电脑病毒的定义:
A computer virus is a computer program that can copy itself and infect a computer without permission or knowledge of the user.
以上从Wikipedia上抄的
第一是一定是一个程序
第二是一定会自我复制
第三是不经过用户同意,也就是我们平常说的强制性,隐蔽性.
那么回到我刚才讨论的话题:
如果用若干批处理程序就能保持你的系统完全无毒
那么这个病毒-本人毫不客气的讲-就是失败的.
因为它没有隐蔽性
所谓真正的病毒,是杀毒软件杀不出来但是的确在用户不知情的情况下给自己/他人电脑带来危害的一种程序.
而杀毒软件只是一种预防作用-或者说得不好听一点-是亡羊补牢.
就像人生了病以后才吃药,或者SARS来的时候大家都在喝板蓝根一样.
而所谓病毒作者用的所谓加壳等技术只不过是提高病毒的隐蔽性
就像流感病毒的突变一样
迟早都会被杀毒软件破解
尤其在病毒木马化的今天
当所有的加壳方法都被破解后
病毒作者不得不自己写出更厉害的壳,造成一个循环.
所以在杀毒软件还没有加载人工智能或者预知模块的时候
讨论杀毒软件和病毒的关系
就可以概括成一句话
怨怨相报何时了?
如果我说得不对或者片面了欢迎指正.

PS:真正的病毒,其实可以很简单......我拿个U盘装一个批处理程序在你电脑内偷偷运行,在计划任务中加上让你的系统在(比如)2008年8月8日晚上8点格式化C分区,并且强制开机执行。到了那天你在看奥运会开幕式,看完后你想到这里发帖子,但是你发现你的系统已经瘫痪了.......这样的事情杀毒软件是查不出来的......

PS2:此帖已变成纯技术帖,特此提醒。
「大地坏灭,城市尽毁,死伤惨重;唯一语足志:胜利。」
TOP

回复:用打包程序的坏处......

楼上说的很对,现在病毒的概念早已开始复杂化了,现在只是恶意程序的代名词而已.
无论是病毒还是木马,甚至玩笑广告性质的软件也不受大多数人欢迎,
杀毒软件最终会转向广义的系统保障软件,本质上我想会是HIPS+防火墙+数字签名认证,而且还要具备易用性和智能化.
脱壳对于系统保障软件来说也就没什么意义了.
TOP

回复:用打包程序的坏处......

那么问一下高手,壳如果采用虚拟机技术,释放出来的代码在哪里运行?又如何做到影响物理系统?
这么做,有啥意义?

说到狡辩,那我问问您是不是在狡辩吧,正像misha说的那样,先有病毒的发展,才有HIPS等解决方案的出现吧,用行为判断是否属于病毒或者恶意程序,前面您说不算杀毒技术,那么是不是所有不是以毒库等传统方式查杀病毒的新手段统统都不算作杀毒技术了?

您自己都承认杀毒软件要发展得更加全面,那之前说那么多嘲笑杀软的病毒如何如何还有啥意义么?虽然misha同学都这么问过一次了,想必阁下也当作耳旁风了吧~~~囧
既然这样,我想说的是,杀软没被鄙视可不是所谓“有这样能力且有闲时间的制作者少之又少”这种搞笑的原因,难道您是在和我们开玩笑?
AJI,舰狗
TOP

回复:用打包程序的坏处......

使用虚拟机的壳释放的代码只把它看做数据,API当然也由壳去代理调用.
这个在理论上是可以实现的,只不过还没有公开的产品.

我并没有鄙视杀毒软件,只是认为对我来说弊大于利,
而且只用了一个虚拟语气说一句"否则杀软早就被嗤之以鼻了吧."

病毒是人为的不错,但它是历史必然的,所以可以说是自发的.
杀毒软件以后即使改进成纯HIPS核心也许也叫杀毒软件.
所以有些概念性问题大家就不要细究了,否则很容易纠缠不清.

杀软出现误杀或对病毒视而不见的情况我以为大家见的太多了.
除了这里有搞杀软行业的人外,我没想到维护杀软的人这么热烈.
我的不用杀软的理由也仅供参考而已.

正所谓"法不责众",正因为犯法的人只占很少的一部分,法才会有意义.
同时也正式因为“有这样能力且有闲时间的制作者少之又少”,杀毒软件才在实际中与之抗衡.
可能我在上面说了不少理论上的情况,看起来导致了不少误解.就算我没说好了.
TOP

回复:用打包程序的坏处......

我是杀软我会把调FORMAT的壳杀掉

别的我也不说了,理解不上去的话说什么也没有用。
AJI,舰狗
TOP