相信很多人都有汇编基础.现在网络上有多少人在靠着什么木马免杀,其实如果不是杀毒软件的多个缺陷,这种状况也就不存在了.杀毒软件我们给予了很高的期望,但是说句实话,除了咔吧和x,其他的我根本不鸟,因为太烂了,国产的总体设计缺陷众多.
因为看过无数的免杀教程,还有很多避开杀毒软件的思路,很多时候我总觉得杀毒软件是一个扶不起的啊斗,为什么呢?我现在给出一个很具体的事例,这个示例,概括起来就一句话,杀毒软件没有找到木马的命根子.--------------对外通讯异常数据包,
大家都知道鸽子是很早开源的,也是被追杀最久的,那么鸽子的多个死穴是什么呢?
我经历了无数的不眠之夜,看了无数文章想到下面,作为纪念。
1 配置信息在尾部,并且开源版本版本不加密,被高启发一招击毙。
2 不能插入进程,这个被后来的改进了,但是有两个函数确实被用烂的,死穴。
3 没有驱动隐藏级别的端口隐藏,参考代码可以看到对NETSTAT命令下隐藏,但是直接被冰刃等看到。
4 文件未能隐藏。
5一旦启动(比如服务项和进程)挂,鸽子直接挂,无论是不是恢复了SSDT
6 图标被查杀,多个模块被杀。
7通讯没有隐藏。
8没有自动变形能力。
9耗费带宽资源上肉鸡有限制。
10因为现在正规远控的成熟,多种验证机制过不去。比如卡吧的证书。
看看还有很多人在练习黑防的免杀觉得,真的是螳臂挡车,改的快,死的也越快。
其实这么多缺点当中最致命的有两个一个是没有加密,另外一个是没有隐藏。
没有加密是如下几个方面
一配置信息要加密,通讯加密,自我加密。(第一个最容易,到黑防就做了,第二个挺难但是PCSHARE就是这个思路。最后一个最难,我不知道有没这种木马,但是某大牛说可以,但是要精通汇编)
二是隐藏。只有隐藏在最隐蔽的地方才能叫做木马。否则就是死马。(PCSHARE这点很牛,但是被追杀的实在是太厉害了。)
说完这些,你一定觉得我们输了,哈哈,办法总是人想的嘛,要输没那么容易的,
其实就本质来说,木马程序他就是可执行程序而已,要想逃离升天,还是有路的。
听我说来。
木马的天然敌人是杀毒软件。
我们来看主流的杀毒几个特点
一个利用文件数据结构分析特定的代码(就是老的特征码)
二利用木马通用特点,就是看几万几十万几百万木马最终的特点(其实就那么回事,配置信息,特定图标,特定函数,特定变种的共同性,例如编译DELPHI的版本信息,例如露在外面的比如注册表启动项,比如输入表)对于学院派的杀毒人员来说,他们的经验就是木马种类不多,变种多,变种再多,万变不离其综,就是修改一点点汇编,差异率极小,加壳不怕,有脱壳机,加的快,脱的也快,样本一分离,什么都出来了。
三至于所谓的主动防御则是层次高点的技术,但是说白了,其实就是拦截系统的API函数。或者对于程序的动作的完全分析,抽离了木马的特殊性,从一般性特征入手。很牛很X
好了
我们看对策
一现在主流免杀是对付第一层次,这个大多数人在不断的学,不断的看,可谓泛滥。
二被动式的应付第二层次,一出来的时候有用,用多了,就没用。
三研究的人很少,很有难度,但是技巧性强于通用性。
我们继续。我们现在手里有原代码。其实已经被淘汰了,不仅技术落后而且特征多多。
我们的主题就是如何把代码变的不是普遍性呢?
高级的说实话大家都不会。但是其实有时候高级的很有用
设想一
设置陷阱防止杀毒软件反编译。具体技术SEH, 加花,加高强度壳。
设想二
动作变异逃离动作监控,BAT技术性操作。
设想三
API变异过监控,自己写API。喀吧过滤SLEEP函数,进行高启发扫描,可以自己写SLEEP函数,过之
设想四
行为大变异,这个难度很高,但是效果是极好的。其实就是要在代码上下功夫
我的想法是代码中的多余动作全部去掉,必要动作自己写,暗桩成片,花花世界,低强度自我变形(动态加密或者能加密的都加密,例如配置信息)。对于通信和端口加密实在是吃不消。
但是操作起来很难,希望大家讨论下。
补充几点,通讯不加密被喀吧干掉的,只要针对外发数据包,直接搞死,鸽子其实还是很可怜的。360是监控服务,很死板,但是容易拦住很多人,x是API的,瑞星把特征码发挥到了极致,也很勤快,进步有点,但是杀毒人员的辛苦程度难以想象。PCSHARE高级的地方就是通讯加密和驱动隐藏,不过现在没用啊.呵呵 (X星这小鬼估计又要研究发包数据特征码吧,发明了也没关系,不怕俺有办法,呵呵)
其实国产杀毒软件对通讯加密没有监控,一旦监控,分析出发包数据的指令要么停止对外发包,要么不接受指定数据包.那么即使中了病毒,没有办法控制,对于用户来说,那是相当的不错,因为中了养着也可以我发云安全,况且我们也来研究研究.因为最致命的威胁,被控制解除了,那么拥护还是安全的.
至于用烂的特征码查杀不做评论.因为个人觉得浪费机器资源. 核心把握在手里,这些家伙变成灰俺也认得,你说呢?
用户系统信息:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; 360SE)