网络安全加密编码与混淆防护
[TOC]
网络安全加密编码与混淆防护
一、传输格式与数据编码模块
1. 核心概念
传输格式是数据在网络中传输的结构化规范,编码是将数据转为可传输/存储格式的方式,二者共同决定数据传输的兼容性与可读性,是渗透测试中数据交互的基础前提。
2. 分类&适用场景(含核心案例)
| 类型 | 具体形式 | 典型应用场景 | 核心特点 |
|---|---|---|---|
| 传输格式 | JSON | Web/APP/小程序接口数据交互(如登录请求) | 轻量简洁,键值对结构,易解析 |
| 传输格式 | XML | 传统Web服务、配置文件 | 标签化结构,支持复杂层级,兼容性强 |
| 传输格式 | WebSockets | 实时聊天(如豆包)、直播互动 | 全双工通信,低延迟,适合高频交互 |
| 传输格式 | HTML | 网页内容传输 | 可视化标签,包含文本、图片等多类型数据 |
| 传输格式 | 二进制/自定义格式 | 文件上传、APP私有协议 | 体积小、效率高,需按特定规则解析 |
| 数据编码 | Base64 | 接口参数加密、文件转码(如图片Base64) | 可逆编码,将二进制转为ASCII字符,易识别 |
| 数据编码 | 自定义编码 | 小众应用/私有协议数据传输 | 按业务规则定制,无固定标准,解析难度高 |
3. 演示配置
- 测试环境:Postman(模拟JSON/XML接口请求)、WebSocket在线测试工具(https://websocketking.com/)
- 核心案例:
- JSON传输:登录请求
{"username":"test","password":"123456"} - WebSockets实时交互:豆包聊天窗口抓包可见
ws://xxx.com/chat连接的二进制消息帧 - 文件上传:图片转Base64编码后通过POST请求传输(参考:https://www.cnblogs.com/wanglei1900/p/17177303.html)
- JSON传输:登录请求
4. 安全影响
传输格式不匹配会导致渗透测试 payload 失效(如用JSON格式发送XML payload),编码未解密会无法识别真实数据(如Base64编码的密码),直接阻碍漏洞利用。
5. 攻击思路
- 格式适配:先抓包分析目标传输格式(如Burp Suite查看请求体),按相同格式构造payload(如JSON接口需保持键值对结构);
- 编码识别与解密:Base64通过“末尾=号”“字符集范围”快速识别,用Burp Suite内置解码器、在线工具(https://base64.us/)解密;
- 自定义格式逆向:通过反编译APP/分析接口文档,提取格式解析规则(如字段长度、分隔符),按规则构造攻击数据。
二、加密算法核心模块
1. 核心概念
加密算法是通过数学规则将数据转为密文的技术,分为可逆(对称/非对称)和不可逆两类,是数据传输与存储安全的核心保障。
2. 分类&典型应用
| 算法类型 | 代表算法 | 应用场景 | 核心特点 |
|---|---|---|---|
| 不可逆加密 | MD5 | 密码存储(如CMS系统)、文件校验 | 固定128位输出,无法反向解密,易碰撞 |
| 对称加密 | AES/DES | APP数据传输、文件加密 | 加密解密用同一密钥,效率高,密钥需保密 |
| 非对称加密 | RSA | 密钥交换、数字签名(如HTTPS证书) | 公钥加密、私钥解密,无需传输密钥,效率较低 |
| 自定义加密 | 业务定制算法 | 小众应用/私有协议 | 基于基础算法修改,无公开标准,破解难度高 |
3. 演示配置
- 测试环境:DVWA(密码加密模块)、本地PHP/JS脚本(模拟MD5加密)
- 核心工具:Burp Suite(算法识别)、Hashcat(哈希破解)、CryptoJS(前端加密分析)
4. 安全影响
加密算法直接决定数据保密性,不可逆加密可防止密码泄露,自定义算法会大幅提升渗透测试难度,需先破解算法才能获取真实数据。
5. 攻击思路
- 算法识别:通过抓包对比明文与密文(如密码123456对应MD5值e10adc3949ba59abbe56e057f20f883e),结合常见算法特征(如RSA密文长度固定)判断;
- 哈希破解:不可逆加密(如MD5)用Hashcat跑字典(
hashcat -m 0 md5.txt rockyou.txt),或查询彩虹表(https://www.cmd5.com/); - 自定义算法破解:反编译APP/前端JS代码,提取加密逻辑(如循环异或、移位运算),编写对应解密脚本还原数据。
三、密码存储机制模块
1. 核心概念
密码存储是将用户密码通过加密/哈希处理后存入数据库的方式,核心目标是防止密码明文泄露,不同系统/数据库有固定存储规范。
2. 典型存储方式
- ZBlog/Discuz!:MD5哈希存储,部分加盐(如Discuz!的
password = md5(md5(password) + salt)); - Windows/Linux:Linux存于
/etc/shadow(SHA-512加盐哈希),Windows存于SAM文件(NTLM哈希); - MSSQL/MySQL:MySQL默认用SHA-256加盐,MSSQL支持多种哈希算法,可自定义存储规则。
3. 演示配置
- 测试环境:本地搭建ZBlog/Discuz!、Linux虚拟机(查看
/etc/shadow) - 核心工具:John the Ripper(系统密码破解)、Navicat(数据库密码查看)
4. 安全影响
密码存储方式决定密码泄露后的风险,加盐哈希可大幅提升破解难度,明文/简单哈希存储会直接导致密码泄露。
5. 攻击思路
- 数据库提权获取密码:通过SQL注入/文件读取获取密码哈希(如MySQL查询
select username,password from users); - 加盐哈希破解:提取盐值与哈希值,用Hashcat指定盐值破解(
hashcat -m 10 md5_salt.txt rockyou.txt); - 系统密码读取:Linux通过提权读取
/etc/shadow,Windows导出SAM文件后用mimikatz破解。
四、代码混淆与逆向保护模块
1. 核心概念
代码混淆是通过修改代码结构(如变量名替换、流程复杂化)隐藏核心逻辑的技术,逆向保护是防止代码被反编译的措施,二者用于保护应用核心算法与业务逻辑。
2. 分类&适用场景
| 混淆/保护类型 | 适用语言/文件 | 核心手段 | 安全目标 |
|---|---|---|---|
| 代码混淆 | PHP/JS | 变量名乱码(如$username→$a1b2c3)、流程嵌套 |
防止代码审计,隐藏加密/业务逻辑 |
| 代码混淆 | DLL/JAR | 类名混淆、无用代码插入、控制流平坦化 | 防止反编译,保护APP核心功能 |
| 逆向保护 | EXE/APK | 加壳(如UPX壳、爱加密)、反调试(检测调试器) | 阻止逆向分析,保护算法/密钥 |
3. 演示配置
- 测试环境:混淆后的JS代码(https://javascriptobfuscator.com/ 生成)、加壳APK(爱加密处理)
- 核心工具:JSBeautifier(JS反混淆)、JD-GUI(JAR反编译)、IDA Pro(DLL/EXE逆向)、脱壳工具(UPX -d)
4. 安全影响
代码混淆会阻碍漏洞挖掘(如无法识别SQL注入点),逆向保护会大幅提升自定义算法破解难度,是渗透测试中常见的技术壁垒。
5. 攻击思路
- 轻量级混淆还原:JS/PHP用格式化工具(JSBeautifier)整理代码,替换乱码变量名(如
$a1b2c3→$password),删除无用代码; - 脱壳处理:加壳文件先脱壳(如UPX壳用
upx -d file.exe),再进行反编译; - 逆向分析:用IDA Pro/JD-GUI查看代码流程,重点跟踪加密/数据处理函数,提取核心逻辑(如密钥、算法步骤)。
