008-基础入门-算法分析&传输加密&数据格式&密文存储&代码混淆&逆向保护

知识点
1、存储密码加密-应用对象
2、传输加密编码-发送回显
3、数据传输格式-统一格式
4、代码特性混淆-开发语言
数据在传输的时候进行编码 为什么要了解?
对方服务器可能会在接收的时候进行解码在带入,如果我们还是按照原有思路不对自己的Payload进行同样编码的话,传入过去的东西就是不认识的东西,测试无效
测试也要进行payload同样的加密或编码进行提交,安全测试漏洞时候,通常都会进行数据的修改增加提交测试,以数据的正确格式发送,接收才行
本节要点
1.了解常见加密编码进制等算法解析
MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES等
2.了解常见加密编码形式算法解析
直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等
3.了解常见解密解码方式(针对)
枚举,自定义逆向算法,可逆向
4.了解常见加密解码算法的特性
长度位数,字符规律,代码分析,搜索获取等
本课意义
1、了解加密编码进制在安全测试中的存在
2、掌握常见的加密解密编码解码进制互转的操作
3、了解常见的加密解密编码解密进制互转的影响
识别算法编码方法
1、看密文位数
2、看密文的特征(数字,字母,大小写,符号等)
3、看当前密文存在的地方(Web,数据库,操作系统等应用)
传输数据编码
BASE64 URL HEX ASCII
BASE64值是由数字”0-9”和字母”a-f”所组成的字符串,大小写敏感,结尾通常有符号=
URL编码是由数字”0-9”和字母”a-f”所组成的字符串,大小写敏感,通常以%数字字母间隔
HEX编码是计算机中数据的一种表示方法,将数据进行十六进制转换,它由0-9,A-F,组成
ASCII编码是将128个字符进行进制数来表示,常见ASCII码表大小规则:0
9<AZ<a~z
传输数据加密
同密码存储加密
传输数据格式
常规字符串 JSON XML等
密码存储加密
MD5 SHA1 NTLM AES DES RC4
MD5值是32或16位位由数字”0-9”和字母”a-f”所组成的字符串
SHA1这种加密的密文特征跟MD5差不多,只不过位数是40
NTLM这种加密是Windows的哈希密码,标准通讯安全协议
AES,DES,RC4这些都是非对称性加密算法,引入密钥,密文特征与Base64类似
代码混淆
JS前端代码加密:
JS颜文字 jother JSFUCK
颜文字特征:一堆颜文字构成的js代码,在F12中可直接解密执行
jother特征:只用! + ( ) [ ] { }这八个字符就能完成对任意字符串的编码。也可在F12中解密执行
JSFUCK特征:与jother很像,只是少了{ }
后端代码混淆
PHP .NET JAVA
PHP:乱码,头部有信息
.NET:DLL封装代码文件,加保护
JAVA:JAR&CLASS文件,,加保护
举例:加密平台 Zend ILSpy IDEA
应用场景:版权代码加密,开发特性,CTF比赛等
特定应用-数据库密文加密
MYSQL MSSQL Oracle Redis等
数据显示编码
UTF-8 GBK2312等
演示案例
传输数据-编码型&加密型等
不同Web、应用、APP传输数据可能使用不同加密、编码算法对明文数据进行加密或编码,因此在漏洞测试时我们提交的Payload也需和原来保持一致
编码类型/加密类型的安全测试影响:漏洞探针编写,即我们测试有无漏洞时,提交数据的编码型/加密型应当和原来保持一致
某视频
以搜狐视频为例,其URL如下
https://tv.sohu.com/v/dXMvMzg1MjM2NzE5LzQyNzUyODUzOC5zaHRtbA==.html
显然dXMvMzg1MjM2NzE5LzQyNzUyODUzOC5zaHRtbA==,就是加密/编码之后的文件名称
实际上这是Base64编码,将其解码后为us/385236719/427528538.shtml
操作演示略
某Web站-博客登录
这里使用Burp测试抓取Z-Blog登录时的数据包,操作演示略
登录的数据包分别输入用户名和密码分别为username=admin&password=123456,但在实际数据包中可看到传输的两个变量值分别为username=admin&password=e10adc3949ba59abbe56e057f20f883e(这里使用了MD5加密)
如果现在我要进行密码的破解爆破,在字典文件中
- 帐号什么都不用更改 去替换username=明文值即可
- 密码需要进行密码算法 保证和password=密文值同等加密才行
APP-斗地主
使用逍遥模拟器配置代理后,抓取欢乐斗地主数据包,可以看到无论是请求还是响应,大部分数据都是加密传输(操作演示略)

传输格式-常规&JSON&XML等
不同应用、网页也可能使用不同的传输格式如Json、XML等,在安全测试时也需注意
传输格式安全影响:
- 对请求数据而言,影响发送漏洞探针的数据格式,测试者的测试发送数据格式需和原来保持一致
- 对响应数据而言,影响测试者对响应/回显数据的分析
APP-某期货APP-XML数据格式
使用逍遥模拟器配置代理后,抓取某期货APP数据包,可见使用了XML数据格式(操作演示略)
Burp中的MIME type列也会显示数据格式为XML

APP-斗地主-Json数据格式
使用逍遥模拟器配置代理后,抓取欢乐斗地主数据包,可见使用了Json格式传输(操作演示略)
Burp中的MIME type列也会显示数据格式为JSON

Web-Zblog-常规写法
Z-Blog登录使用的数据传输格式username=admin&password=e10adc3949ba59abbe56e057f20f883e,这是常规写法,即变量赋值
密码存储-Web&系统&三方应用
影响:安全后渗透测试
ZZCMS&Discuzx
此处,为了熟悉各类加密算法的密文特征,使用一些现成网站搭建工具搭建网站,然后观察其数据库中用户密码内容的存储,都可以使用PHPstudy快速搭建(操作演示略)
ZZCMS
搭建ZZCMS,配置用户名为admin,密码为123456
使用数据库连接工具连接Mysql数据库,观察ZZCMS系统的用户密码存储,在线MD5解密可以解出用户密码为123456

Discuzx3.2
搭建Discuzx3.2,配置用户名为admin,密码为123456
连接至数据库,查看用户密码的加密保存方式,这是加盐MD5加密

Discuzx3.3
搭建Discuzx3.3,配置用户名为admin,密码为123456
连接至数据库,查看用户密码的加密保存方式,此时找不到盐值
这是使用了复杂加密方式,可能带秘钥、加密模式、偏移量、填充等参数,需要研究其程序源码中的加密算法,才能编写相应解密算法

Windows&Linux
Windows
Windows 10 管理员账号密码存储在SAM (Security Accounts Manager) 文件中 ,个文件位于系统盘(通常是C 盘)的Windows\System32\config 目录下
Windows系统对用户密码也进行了加密保存,算法是NTLM,可以使用mimikatz工具破解
当我们获得了一台主机的NTLM哈希值,我们可以使用mimikatz对其进行哈希传递攻击,这是后渗透的内容,此处略
Linux
Linux系统的用户密码存放在/etc/shadow目录下

MSSQL&MYSQL
MSSQL
MySQL
MySQL数据库用户名的密码存放在
- 库名:mysql
- 表名:user
- 列名:authentication_string

cmd5解密也可识别出是MySQL5

代码混淆-源代码加密&逆向保护
逆向保护:exe、apk程序进行加壳等保护
源代码加密:使用脚本语言对源码进行加密,攻击者看不出源码是怎么写的
影响:代码审计,逆向破解
PHP&JS混淆加密
php
书写一个简单php脚本文件
1 |
|
使用在线代码加密平台如https://www.toolzl.com/tools/phpcarbylamine.html对该脚本进行加密,可以看到文件变为乱码
1 | $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0} |
但加密后能够正常访问(操作演示略)
JS
JSFuck 是一种利用JavaScript 仅用六种字符来执行代码,并使用诸如 +[] 构造数字 0,或通过访问特殊值(如 false、true、NaN、undefined、Infinity)的字符串表示来获取字母和数字。JSFuck 本质上是代码混淆技术,而非加密,可以通过在线工具、浏览器控制台或正则表达式进行还原。
使用在线工具如http://jsfuck.com或http://www.hiencode.com/jsfuck.html,将`alert(1)`通过JSFuck加密后为
1 | (![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+([][[]]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[!+[]+!+[]]]+[+!+[]]+([+[]]+![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]])[!+[]+!+[]+[+[]]] |
EXE&JAR代码保护
为防止逆向破解,存在一些提供程序保护的程序如Virbox Protector,可提供诸如下述功能

部分资源
部分资源:
http://tool.chacuo.net/cryptaes
https://utf-8.jp/public/aaencode.html
https://github.com/guyoung/CaptfEncoder
1.30余种加密编码类型的密文特征分析(建议收藏)
2.CTF中常见密码题解密网站总结(建议收藏)
https://blog.csdn.net/qq_41638851/article/details/100526839
3.CTF密码学常见加密解密总结(建议收藏)