深耕解释型语言:攻击性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/10/18 7:25:15 阅读更多 →
Unity游戏化C盘清理工具开发:从磁盘扫描到安全删除的完整实践

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

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

2026/10/18 4:14:23 阅读更多 →
AI论文平台最全攻略:语法+润色+降AI率,一篇全搞定

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

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

2026/10/18 4:15:53 阅读更多 →

最新新闻

YOLOv7 TensorRT 量化部署完整工程:PTQ/QAT 转 INT8 精度优化与 C++ 实战

YOLOv7 TensorRT 量化部署完整工程:PTQ/QAT 转 INT8 精度优化与 C++ 实战

简介:面向目标检测开发者的YOLOv7 PTQ与QAT训练及TensorRT C部署全套工程资料,解决模型量化压缩与GPU实时推理落地的完整链路问题。压缩包共134个文件、35.14MB,包含35个Python脚本、33个YAML配置、14个Jupyter Notebook、5个C源文件及配套头…

2026/10/19 6:55:02 阅读更多 →
F3D 3D 查看器实用指南:从秒开模型到批量生成预览图

F3D 3D 查看器实用指南:从秒开模型到批量生成预览图

F3D 3D 查看器实用指南:从秒开模型到批量生成预览图 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d F3D 是一款开源、快速且极简的 3D 查看器:把 glTF、STL、STEP 这类文件丢进终端…

2026/10/19 6:55:02 阅读更多 →
从标定板到点云体积:双目三维重建实战指南

从标定板到点云体积:双目三维重建实战指南

简介:一套可直接运行的C工程,面向计算机视觉与三维重建方向的开发者,覆盖摄像头标定、双目立体校正、点云生成及体积计算完整流程。通过真实案例演示单双目相机内外参求解、畸变矫正、立体匹配到三维点云重建与体积量化的全过程,适…

2026/10/19 6:55:02 阅读更多 →
【项目】【在线判题系统】竞赛列表

【项目】【在线判题系统】竞赛列表

目录一、表的设计二、实体类三、功能梳理四、controller五、service六、mapper一、表的设计 一张竞赛表,以及一张竞赛题目关联表 CREATE TABLE tb_exam (exam_id BIGINT UNSIGNED NOT NULL COMMENT 竞赛id(主键),title VARCHAR(50) NOT NULL…

2026/10/19 6:55:02 阅读更多 →
基于YOLOv26的绝缘子缺陷检测系统:从数据到部署全流程实践

基于YOLOv26的绝缘子缺陷检测系统:从数据到部署全流程实践

电力绝缘子缺陷检测这几年在巡检圈子里真的是绕不开的话题,输电线路上的绝缘子数量大、分布广,尤其是山区和林区的杆塔,人工巡检一趟成本极高,而且很多缺陷在肉眼看来并不明显。我这次要分享的,是同事前段时间做的一个…

2026/10/19 6:55:02 阅读更多 →
计算机考研复试第30天:补齐基础概念、机试手感与面试表达

计算机考研复试第30天:补齐基础概念、机试手感与面试表达

1. 第30天的“补”,到底该补什么计算机复试准备到第30天,其实已经到了一个很微妙的阶段:初试那种“天天背、天天刷题”的节奏早就失效了,而复试又不像初试那样有一条一眼能看到头的复习主线。我把这一天的笔记标成“补”&#xff…

2026/10/19 6:54:02 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →