深耕解释型语言:攻击性Python攻防技术
作者Kevin Clark红队对抗模拟 · 恶意代码分析https://trustedsec.com/blog/operating-inside-the-interpreted-offensive-python一、引言我时常会回头复盘那些早年盛行、如今在攻击圈渐渐失宠的技术手段。Office宏、PowerShell、自定义ShellCode加载器这类技术曾经无往不利但如今不少行业同行都称它们已经“失效暴露”。这话虽有一定道理但在实际渗透作业中我和团队多次发现这些所谓“被标记”的战术、技术与流程TTP依然能发挥奇效时常带来意料之外的突破。本文将重点介绍另一套老牌攻击手段Windows平台下基于Python构建恶意载荷。开篇先梳理该领域过往相关研究成果。二、Python恶意程序黑客使用Python编写恶意代码由来已久从Python反弹Shell到Py2Exe打包简易植入程序层出不穷。我最早接触的Python攻击工具是Chris Truncer开发的Veil Evasion项目该工具2013年首次发布能将Python代码转化为可执行Shell载荷在当年堪称“黑科技”。此后不久微软宣布PowerShell预装于全系列Windows系统开启了PowerShell攻击工具的黄金时代PowerSploit初代工具集及大量衍生攻击脚本陆续问世依托系统自带的PowerShell环境即可直接执行。相较之下Python恶意程序逐渐边缘化——目标主机必须预先安装Python解释器才能运行相关代码。但好景不长微软对PowerShell做出大幅整改引入反恶意软件扫描接口AMSI、完善各类行为日志记录机制大幅提升了PowerShell恶意代码的开发与免杀门槛。最终攻击工具开发者纷纷放弃PowerShell重新转向C、C这类非托管原生语言。2018年末微软在微软商店原Windows商店上架Python程序。我时隔数年才意识到这套安装流程极其简便相信很多安全从业者此前也并未留意。2022年Diego Capriotti推出纯Python编写的漏洞利用框架Pyramid在我看来这标志着现代Python攻击工具正式成型。同期Anthony Rose发布了嵌入.NET环境的Python3引擎实现方案灵感源自图拉Turla组织的IronNetInjector恶意代码。依托该方案无需在目标主机安装Python解释器就能直接在Windows上运行Python代码。如今Windows系统获取Python的渠道十分便捷配套攻击工具生态也逐步完善。在恶意代码开发领域Python已经形成一块独特且实用的攻击细分赛道。三、从微软应用商店安装Python前文提到通过微软商店可以一键安装Python。现代Windows系统只需打开微软商店搜索“Python”即可商店内提供3.7至3.13全系列版本。点击“获取”按钮就能下载全程无需管理员权限。除此之外微软商店提供专属协议跳转链接已知对应程序ID即可直接拉起安装页面。以Python3.13为例跳转地址ms-windows-store://pdp/?ProductId9pnrbtzxmb4z安装完成后可通过开始菜单启动Python也能直接运行路径下的引导程序C:\Users\[用户名]\AppData\Local\Microsoft\WindowsApps\四、Python离线下载与安装部分场景无法通过微软商店在线安装Python典型情况包括仅能使用命令行无图形界面操作权限组策略或系统管控禁用微软商店目标主机无外网访问能力即便存在上述限制依然可以离线部署微软商店类应用含Python完整步骤如下步骤1浏览器打开Python商店详情页步骤2提取离线安装包复制商店页面URL粘贴至第三方站点 https://store.rg-adguard.net/下载MSIX/APPX/APPXBundle格式离线安装包。补充说明该第三方站点可信度存疑但下载的安装包带有官方数字签名文件不会被篡改。建议先在实验环境测试安装包确认无异常后再部署至目标主机。步骤3将安装包传输至目标主机有图形界面双击MSIX文件系统自动调用AppInstaller.exe启动安装向导无图形界面使用PowerShellAdd-AppxPackage命令或dism.exe完成安装/卸载注意dism.exe执行需要管理员权限而单纯安装商店应用本身不需要提权。我编写过一段Python脚本无需完成安装即可预判商店应用主程序的存放路径可用于提前定位Python可执行文件。Python3.13默认完整路径示例C:\Users\kevinclark\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\python3.13.exe通用路径模板C:\Users\[用户名]\AppData\Local\Microsoft\WindowsApps\[厂商名].[应用名]_[发布者哈希值]\[主程序].exe其中发布者哈希值由开发者证书生成主程序名称定义于安装包内AppxManifest.xml清单文件。少数程序会偏离该路径规则但绝大多数商店应用均可套用此模板预判位置。五、Pip包管理器微软商店版Python自带Pip包管理工具直接执行Python.exe -m pip即可调用。若主机可连通PyPI官方仓库能正常在线下载安装第三方库。但多数企业内网会拦截PyPI站点或部署网络代理导致在线下载失败极大限制Python攻击工具使用。应对方案分为两类仅使用Python标准库开发攻击工具不依赖第三方组件离线下载全部依赖库文件上传至目标主机本地安装离线部署流程可行我编写了两套配套脚本一套仅依赖标准库的离线依赖下载器、一套离线本地安装程序。下载脚本拉取目标工具所有依赖的Wheel离线包自动打包为单一压缩文件可上传内网主机或托管至私有Web服务安装脚本读取离线压缩包批量完成所有Wheel包本地安装六、Python标准库即便可以离线导入第三方库开发攻击性代码时仍应优先复用标准库降低载荷体积与落地复杂度。例如网络请求场景优先使用内置urllib而非第三方requests库。下表整理攻击开发高频需求以及对应的内置标准库模块实现功能标准库模块网页网络请求urllibTCP套接字通信socketSHA256哈希计算hashlib文件压缩/解压缩gzip、bz2、zlib、zipfile加载DLL、调用原生非托管函数ctypes创建子进程、执行系统命令subprocess结构化数据解析json、xmlWindows注册表读写修改winreg二进制编解码base64IP地址处理ipaddress但标准库无法覆盖全部攻击需求部分核心能力必须借助第三方库或自主实现实现功能所需第三方库AES加密解密pycryptodomeWebSocket长连接aiohttp加载.NET公共语言运行时、交互托管代码pythonnet网卡抓包流量分析libpcapLDAP目录服务交互ldap3Windows协议漏洞利用impacketWindows版Python预装标准库完整清单可查阅文末附链。七、基于ctypes执行非托管代码ctypes是我最常用的Python内置模块搭配struct库后能够用Python实现类C语言开发逻辑加载非托管动态链接库、获取导出函数、手动内存管理、指针操作。如果熟悉C#的PInvoke机制ctypes可以理解为Python版PInvoke。通过ctypes调用Win32 Windows API固定分为6步加载包含目标函数的DLL文件获取目标导出函数句柄定义函数原型参数类型、返回值类型将Python数据类型转换适配C语言类型数据封送调用原生API函数可选将原生返回值转回Python类型供后续代码使用DLL加载语法# 加载系统内置kernel32.dllkernel32ctypes.windll.kernel32 kernel32_2ctypes.WinDLL(kernel32)# 加载自定义路径第三方DLLcustom_dllctypes.CDLL(rC:\test\custom.dll)获取导出函数句柄推荐通过函数名获取按导出序号读取不推荐不同Windows版本序号会发生变动# 通过函数名获取CreateFileWCreateFileWkernel32.CreateFileW# 通过导出序号212读取不推荐CreateFileW_ordkernel32[212]定义函数原型导入wintypes模块内置全套Windows标准数据类型通过argtypes声明参数列表restype定义返回值类型。以文件创建APICreateFileW为例fromctypesimportwintypes# 匹配MSDN官方文档参数结构CreateFileW.argtypes[wintypes.LPCWSTR,# 文件路径wintypes.DWORD,# 访问权限wintypes.DWORD,# 共享模式wintypes.LPVOID,# 安全属性可选wintypes.DWORD,# 文件创建方式wintypes.DWORD,# 文件属性标识wintypes.HANDLE# 模板文件句柄可选]CreateFileW.restypewintypes.HANDLE封装参数并调用APIctypes会自动完成Python字符串、空值到C语言对应类型的转换# 常量定义filenametest.txtGENERIC_READ0x80000000GENERIC_WRITE0x40000000CREATE_ALWAYS2FILE_ATTRIBUTE_NORMAL0x80# 调用API创建文件handleCreateFileW(filename,GENERIC_READ|GENERIC_WRITE,0,None,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,None)执行完成后当前目录会生成test.txt文件整套流程仅依靠Python内置ctypes模块完成原生系统调用。八、ctypes实操示例示例1弹窗展示当前进程名与PID完整可运行代码importctypesfromctypesimportc_char_p,c_uint32,c_void_p,create_string_bufferimportos.path# Windows弹窗常量MAX_PATH260MB_OK0x00000000MB_ICONINFORMATION0x00000040# 加载系统DLLkernel32ctypes.windll.kernel32 user32ctypes.windll.user32# 定义API原型GetCurrentProcessIdkernel32.GetCurrentProcessId GetCurrentProcessId.restypec_uint32 GetCurrentProcessId.argtypes[]GetModuleFileNameAkernel32.GetModuleFileNameA GetModuleFileNameA.restypec_uint32 GetModuleFileNameA.argtypes[c_void_p,ctypes.c_char_p,c_uint32]MessageBoxAuser32.MessageBoxA MessageBoxA.restypectypes.c_int32 MessageBoxA.argtypes[c_void_p,c_char_p,c_char_p,c_uint32]# 获取进程PIDprocess_idGetCurrentProcessId()# 获取程序完整路径buffercreate_string_buffer(MAX_PATH)path_lengthGetModuleFileNameA(None,buffer,MAX_PATH)ifpath_length0:raiseException(读取模块路径失败)# 截取程序文件名full_pathbuffer.value.decode(ascii)process_nameos.path.basename(full_path)# 弹窗内容messagef进程名称{process_name}\n进程PID{process_id}# 弹出系统提示框MessageBoxA(None,message.encode(ascii),b进程信息,MB_OK|MB_ICONINFORMATION)示例2反射DLL加载器我还编写了一套简易反射DLL加载器代码属于红队攻击核心技术落地演示。该样例无法直接用于实战渗透但清晰展示了攻击者常用载荷注入逻辑内存反射加载DLL文件主动调用DllMain入口函数查找并执行DLL内自定义导出Run函数九、Python相关入侵指标(IoC)Python是企业内网广泛使用的合法程序python.exe带有微软与Python软件基金会双重有效数字签名可信度高大量工作站、服务器预装Python攻击者无需额外安装即可直接利用。和所有解释型语言一致Python运行时会产生特殊内存特征Windows官方CPython在执行任意代码前就会创建无文件映射的可执行内存段、RWX读写执行权限内存页。但Python本身是通用编程语言业务场景覆盖数据分析、系统运维、游戏开发、云编排等行为边界极广python.exe联网访问外部网站是否正常与内网其他主机建立Socket连接是否合理申请、修改高权限内存页是否属于常规操作占用大量CPU/内存资源是否存在风险以上问题均没有固定答案只能结合业务场景判断。多重模糊特征叠加极大提升终端安全产品基线建模难度方便攻击者以Python进程为掩护实现行为隐匿驻留。十、总结Python作为恶意载荷载体的潜力长期被低估安装部署门槛低、内置工具库完善、进程行为天然具备隐蔽优势。它不会完全替代原生C/C攻击方案但在PowerShell、传统原生注入等手段失效受限的场景下是一套便捷、可行的替代攻击方案。

相关新闻

系统盘迁移实战:从C盘空间不足到SSD扩容完整指南

系统盘迁移实战:从C盘空间不足到SSD扩容完整指南

1. 从“C盘红了”到“系统盘迁移”:一个老司机的实战复盘最近帮朋友处理一台老电脑,开机就弹窗提示“磁盘空间不足”,C盘那个红色的小条格外刺眼。朋友说,电脑是五六年前配的,当时觉得256GB的固态硬盘(SSD&…

2026/8/11 3:19:20 阅读更多 →
Unity游戏化C盘清理工具开发:从磁盘扫描到安全删除的完整实践

Unity游戏化C盘清理工具开发:从磁盘扫描到安全删除的完整实践

在实际开发中,我们经常会遇到一个令人头疼的问题:项目依赖、缓存文件、日志和构建产物不知不觉地占满了系统盘(通常是C盘),导致开发环境变慢,甚至影响系统运行。手动清理不仅繁琐,而且容易误删重…

2026/8/11 3:19:20 阅读更多 →
AI论文平台最全攻略:语法+润色+降AI率,一篇全搞定

AI论文平台最全攻略:语法+润色+降AI率,一篇全搞定

论文写完了,但总觉得哪里不对劲?别急,这些 AI 工具能帮你把初稿打磨成能上战场的“兵器”。每年毕业季,后台收到最多的问题就是:“论文写完了,怎么改才能过审?”作为一个从“查重率 50%”被吓到…

2026/8/11 3:19:20 阅读更多 →

最新新闻

B站弹幕二进制协议逆向解析:从Protobuf到Frida Hook实战

B站弹幕二进制协议逆向解析:从Protobuf到Frida Hook实战

1. 项目概述:从B站弹幕到二进制解析的探索最近在做一个跟B站视频数据相关的项目,不可避免地要跟它的弹幕系统打交道。我们都知道,B站的弹幕是它的灵魂,但当你真正想从技术层面去“理解”这些弹幕时,会发现它们并非以我…

2026/8/11 5:59:00 阅读更多 →
Linux驱动---Linux 中断系统及其上与下半部的介绍与阻塞IO实现按键检测

Linux驱动---Linux 中断系统及其上与下半部的介绍与阻塞IO实现按键检测

目录 一. Linux 的中断系统 1.1 中断概念 1.2 回顾裸机中中断处理方法 1.3 Linux 中断相关API函数 1.3.1 request_irq 函数 1.3.2 free_irq 函数 1.3.3 中断处理函数 1.3.4 中断使能与禁止函数 二. 中断的上半部与下半部 2.1 简介 2.2 下半部的实现方式 2.2.1 软中断…

2026/8/11 5:59:00 阅读更多 →
云原生 AI 调度开发短记:本地环境如何复现

云原生 AI 调度开发短记:本地环境如何复现

云原生 AI 调度开发短记:本地环境如何复现 对于调度器,任务提交、队列选择和执行状态回写比抽象架构更值得先检查。本文把“本地开发环境与可复现实验脚手架”限定为可由配置、代码和测试记录交叉验证的事项。 云原生 AI 平台搭建与智能调度系统设计&…

2026/8/11 5:59:00 阅读更多 →
AE 3D图层零基础入门:一键打造立体PV画面的核心技法

AE 3D图层零基础入门:一键打造立体PV画面的核心技法

1. 背景与核心概念:为什么需要3D化PV画面?在视频制作和后期特效领域,After Effects(简称AE)是当之无愧的行业标准工具之一。无论是影视包装、广告片头,还是如今流行的短视频和PV(Promotion Vide…

2026/8/11 5:59:00 阅读更多 →
OpenClaw与Nextcloud Talk整合:智能企业通讯解决方案

OpenClaw与Nextcloud Talk整合:智能企业通讯解决方案

1. 项目背景与核心价值OpenClaw人人养虾这个项目名称乍看有些趣味性,实际上揭示了两个关键技术方向:OpenClaw开源框架与Nextcloud Talk的深度整合。作为一款新兴的AI智能体开发平台,OpenClaw正在改变传统企业通讯工具的交互方式。我最近在部署…

2026/8/11 5:59:00 阅读更多 →
按项目阶段选厂:PCB打样、小批量、量产选型差异化策略

按项目阶段选厂:PCB打样、小批量、量产选型差异化策略

研发打样、试产验证、大规模量产三个阶段,对 PCB 厂家的核心诉求截然不同,不少团队全程固定单一供应商,打样阶段嫌大厂起订量高,量产阶段嫌弃小厂产能不足,造成预算浪费、工期延误。本文拆解不同阶段选型侧重点&#x…

2026/8/11 5:58:00 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →