20154312 曾林 Exp3 免杀原理与实践

news/2024/7/10 3:54:43

20154312 曾林

0.写在前面

AV厂商检测恶意软件的方式主流的就三种:

  1. 基于特征码的检测
  2. 启发式恶意软件检测
  3. 基于行为的恶意软件检测

我们要做的就是让我们的恶意软件没法被这三种方式找到,也就是免杀。具体的手段有:

  • 改变特征码
    • 如果你手里只有EXE
    • 有shellcode(像Meterpreter)
    • 有源代码
  • 改变行为
    • 通讯方式
    • 操作模式
  • 非常规方法

1.实践

1.0实验系统环境

靶机:
系统:Windows7 x64
杀软:360安全卫士 V11.4.0.2049
攻击机:
Kali 虚拟机
检测网站:
Viruscan

1.1MSF编码器

MSF编码器也就是上个实验玩的那个,所以我直接用上个实验的20154312_backdoor.exe去检测了。(改了个名字,因为含有数字的话Viruscan会提示含广告,可能就和什么WG123456一样?)
906866-20180331172005045-468283873.png
很显然,裸奔的后门非常的惨,19个杀软都检测到了它。(请记住这个没检测出后门的Baidu Antivirus
把这个后门编码十次之后还是一样的19个杀软检测到没有任何实质性的变化。这种老套路只要不是太蠢的杀软肯定都能识别(别问了,Baidu Antivirus还是没有检测出来)

1.2veil-evasion

是一个和Metasploit类似的免杀平台,Kali里没有,用sudo apt-get install安装以下就ok。
906866-20180331172650399-1871079325.png
安装完成后,用use evasion命令进入Evil-Evasion
906866-20180331172801865-1060600192.png
选择一个模板生成payload,选啥都可以,提供的模块还是挺多的。
906866-20180331172925971-552022665.png
拷贝到win10的过程中,被无情的拦截。
906866-20180331173040112-1608217500.png
在那个时候还没有安装杀软的win7上还是一条好汉,回连是直接成功的
906866-20180331173323518-820663404.png
看看Viruscan的扫描结果怎么样吧
906866-20180331173150982-913607781.png
好在是比MSF进步了很多,只有8个引擎检测出来了有后门。(Baidu Antivirus总算是有所进步...)
试试看装了360之后能不能扫出来
906866-20180331173508101-1596504353.png
嗯,国内第一大病毒杀软可不是吹的。

1.3shellcode

1.3.1Windows环境编译

在VS里编辑好直接编译就好
906866-20180331174009078-1790673310.png
回连是没有任何问题的
906866-20180331174036570-61851043.png
还是一样用Viruscan和360扫描一下
906866-20180331174113921-382249902.png
比之前用Evil又好了很多,只有三个引擎报警。
906866-20180331174152321-144182229.png
360沦陷了...(我有个大胆的想法)

1.3.2Linux环境编译

这一块编译过程没截图,反正思路就是把shellcode放到C文件里面,然后i686-w64-xxx.c -o xxx.exe编译一下就ok。回连也是没有任何问题的。继续Viruscan+360扫描
906866-20180331174542244-557234480.png
一夜回到解放前,被11个引擎查杀了
906866-20180331174530003-427079542.png
360这边也不乐观,直接被找到了

1.4加壳

1.4.1UPX加壳

用下面的命令来加这个压缩壳

# upx 4312-1.exe -o 4312-1v3.exe

成功之后结果如下
906866-20180404083057922-1014413733.png
来,继续viruscan检测一下
906866-20180404082924285-446042550.png
8个,emmmm比前面没有加壳好一点点。
在我拷贝到win10的过程中直接被杀了...

1.4.2Hyperion加壳

用下面命令来加这个加密壳

/root/veil-evasion/tools/hyperion/#wine hyperion.exe -v 4312-1.exe 4312-1v2.exe
记得先cd到Hyperion这个文件夹

加壳之后的结果
906866-20180404083436936-1034955878.png
继续viruscan扫描一下
906866-20180404083949977-1413039314.png
...你真的加壳了吗...

1.5shellcode变形

这一块就比较有意思了,看了学长学姐们的一些方法,我打算把shellcode去和一个固定16进制数做异或,因为是43的所以选了个0x43,用来得到异或结果的函数其实很简单。源代码就不在这放了,反正用函数就能得到异或的结果
906866-20180331175306201-1931540707.png
异或的结果复制到word或者notepad++替换,,0x放回shellcode里面,然后在之前的后门程序里面重新异或一次0x43,可能会遇到strlen函数报错,因为本身是一个const char变成了unsigned charstrlen()会报错的。最简单的方法直接数就好了,341个16进制字符,直接把strlen(met)改成341就ok,编译一下。
906866-20180331175642686-1304782283.png
Viruscan+360
906866-20180331175727772-1553032880.png
906866-20180331175708757-2109021162.png
近乎完美的通过。
伪装一下骗同学岂不是美滋滋
906866-20180331175758172-1417591529.png

1.6实测于杀软共生

一个Windows直接编译的shellcode以及异或后的shellcode都是可以共生的。
906866-20180331175708757-2109021162.png
906866-20180331174152321-144182229.png

2.报告

2.1总结

本次实验一共有如下版本

  版本名称 编译方式              viruscan  360
1. 4312                            8      F
2. 4312-1 Kali下编译shellcode      11      F
3. 4312-2 Windows下编译shellcode    6      T
4. 4312-3 异或后的shellcode         1      T
5. 4312-1 v2 UPX加壳                8      F
6. 4312-1 v3 Hyperion加壳          12      F

总结就是啥都不干也比用Hyperion加壳好。
自给自足,自己用C去编一个shellcode是最好用的。

2.2基础问题回答

  • (1)杀软是如何检测出恶意代码的?
  1. 基于特征码的检测
  2. 启发式恶意软件检测
  3. 基于行为的恶意软件检测
  • (2)免杀是做什么?
    防止被杀软检测出来

  • (3)免杀的基本方法有哪些?
    1.改变特征码
    2.加壳

2.3离实战还差哪些技术或步骤

IP地址转换技术
社会工程学(骗人

转载于:https://www.cnblogs.com/zl20154312/p/8683271.html


http://www.niftyadmin.cn/n/4558085.html

相关文章

java高手进

实在太钻了 ||| 这是做什么的 1.abc 2.abd 3.acd 4.ce 5.ce 6.f 7.a 8.df 9.a 10.cd 13.a 14.abd 16.e 18.acde 19.ce 20.ae没写我不确定 面试题吗

通配符的使用

*:表示匹配全部字符可以多个 ?:表示匹配任意一个字符 [a-z] :表示 a-z范围内的任意一个字符 [1-9]:表示匹配1-9其中的任意一个数字 daokrDK:~$ ls -l [a-z].??? -rwxrwxr-- 1 daokr daokr 7456 3月 29 20:59 a.out daokrDK:~$…

怎样让这个程序重复执行而不退出啊

/a/a/a");scanf("%c" word1);printf("/n它的ASCILL码是%d" word &word);while(word 0)//在这加一个循环 当输入的word 不为0时 可以给换成回车{printf("请输入大写字母&#xff1a;");if((word>A)&&(word<Z)){word1word-…

开学第三测

开学第三测 &#xff08;题目分析摘自dalao博客 https://blog.csdn.net/todobe/article/details/54617259 https://blog.csdn.net/cdqzgxxqdql/article/details/53085481&#xff09; P71          竞赛时间&#xff1a;???? 年?? 月?? 日??:??-??:??…

关于属性和调方法这块 软件的两种语言:Java和C#

我知道 你在网上收 北京尚学堂 那上面有许多Java的视频

Python全栈之路系列之文件操作

Python可以对文件进行查看、创建等功能&#xff0c;可以对文件内容进行添加、修改、删除&#xff0c;且所使用到的函数在Python3.5.x为open&#xff0c;在Python2.7.x同时支持file和open&#xff0c;但是在3.5.x系列移除了file函数。 Python文件打开方式 文件句柄 open(文件路…

用其余两种方法写呢(冒泡除外)

哥们 答案补充 void main(){ int i iArrary[m]); Console.WriteLine(); } } } 47}; SelectionSorter ssnew SelectionSorter(); ss.Sort(iArrary); for (int m0;m<iArrary.Length;m) Console.Write("{0} " 33 75 34 12 87 2 9 55 10 6 3 5 直接调用就行了 ||| 二、…

C.K为什么自杀阿

喜欢她的那一群人就像都是同类 诡异 静静地忧伤 时而天真甜蜜时而冷漠似无感情的女孩 她的网站人气很高 幽幽地旋律 鬼魅的声音 透过声音传递那种神秘气质无法言传 第一次听c.k的歌是那首"他不知道" 不像一些毫无素质的网络歌手 她让人总像隔着很远的距离一样 不摆架…