开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1010|回复: 30
收起左侧

[闲聊] 这个情况下一定要打个广告!

[复制链接]

结帖率:91% (10/11)
发表于 2024-12-25 16:13:13 | 显示全部楼层 |阅读模式   重庆市重庆市
本帖最后由 神女软件定制 于 2024-12-25 17:04 编辑

刚刚有人发了求助帖:
一个AES加密
https://bbs.125.la/forum.php?mod=viewthread&tid=14844308
(出处: 精易论坛)


[JavaScript] 纯文本查看 复制代码
53:19.539: 匹配请求:[POST https://h7.cbqb.app/api/9B7A9202-2E7E-4E9C-815C-A8927C7774F5
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Authorization: Basic YXBwOjEyMzQ1Ng==
Connection: keep-alive
Content-Length: 942
Content-Type: application/json
Cookie: _c_WBKFRo=h3MiiOnv8kuH0o2EhQtVsksQcVXz5PZuZRPtdDgi; smidV2=202412251500482ba0a135eca1e31755db3641b90f640c00435b469b53cdeb0; .thumbcache_f555418dfeb2767dfd6a1ce2938effe2=pByNw/3yh0l2M0xkB1HOJ0FyXWLIZkTOQd5t/6XN0qwWEP0cp6cO/2x32VqXgbqopljCjk10HZVZKQrCNFzw8g%3D%3D
Host: h7.cbqb.app
Origin: https://h7.cbqb.app
Referer: https://h7.cbqb.app/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0
encrypt-key: ob/ngFS1CoX9E1aigoHYZPL/iRxY5qZ6t8YC5h4fSC22J8hMyN3CCTXyHaDLfmgn6VAS1xoYUw3KjvAA5RI5aQ==
reqid: 3EC8E420-C791-4558-AD59-509FDC7C9EFD
sec-ch-ua: "Microsoft Edge";v="131", "Chromium";v="131", "Not_A Brand";v="24"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"


"+60MTjsKQTPInJ3x7GxWIJzV6bQ6jGSWTP22QHCcrpYLTa6ss4v8EAnfJISRMQfceC2jHlupZ2YocOJ7Me44NSMEZf90FTK5UuZ5pg291Z4gO9HNs7G8qc8hq+V8waJGzKML6CxKvXHKyE1JVlM1xXxvawz29wBVYsnyRIAIkxBjbtgNSaYT8IGe8E/DZGZoBj67gK70Uy1ZBRzJ3MP4PtUvLv/UzGJ+gtYkcZXr3tqIr8+8Vd8YfJksNGNvSuHEEgvYgHX6ZfqQ2oxFmjlKSme107eMdzwGKvE3jMJD3FdRzDrEX8YRIBaGyz9zrQLGjFD5HAVpXxkmB98507sb5u3+GmcQvjrrLDSqQrEZUwe+KevUre9KAItSqzQ+tsMzelbs+1pjnn/qotFDmkqvbf6SNYYewWNxCGJxftpePQ+Inx/2RiAK2EJgMzr+vQ5VSvp8fX6yTzijMlijBtY8jJJfiGAqGIY7yEWAYy/grpYOU+HFOD8NPctge5hAB/PrKqKxG7Zti1VMQjYmBcBy9cMEm/9g/dTqYx9j2STPlsefzZ/FpPsNuE+ZfaiPa/F5725hu2WTgkOlnOuTv3Iri3oyyofMkgGj2S843Z2RfdbnB+Za2yb9Hct+yApCZNlrw9BCYFRSgnqU1Ps2IkZRmbtftOUgZ0qIUMmQg1+b8lPPZaUOvUM1c8XAMwgNp6jIsLw1BB7qRWLu7PbjBIRG7w0mWHhqJK1xd1aLQWYWw/fahYt5xcIX2Am18P1Y9kgde9wJSTyxqLEHint8pON6Og4hR+JTcW6Hgbx1jCf8Rg0hDHyonN0irx11NdcDM9riYTujp6yex7j69bgMB89xMxvGoBwzryPJs19MU2Tiva4XCkQR/NdF+kRkk8pkb+4x+jn1F0fLrlRX1eDP1C3he+5elQLfMXtN+KxK9JC+6qc="]

抓包内容是这样的


直接观察,请求body可能是加密的:
我们给他放进去推理
1.png
得到的结果是:
[JavaScript] 纯文本查看 复制代码
54:08.059: AES-256-ECB("{"method":"POST","path":"/auth/oauth/token","contentType":"application/json","params":{"grant_type":"password","scope":"all","username":"13512121212","password":"8d969eef6ecad3c29a3a","uid":"b2a383447bdd934e1e49c1adb50ba9582f778dcb9382e9ff4b7ab0c14c20a8b5","name":"Windows","version":"10.0","key":"7E80A170-8099-4BCD-A40F-92B2E9646BBB","code":"zaby"},"timestamp":1735113199380,"uid":"b2a383447bdd934e1e49c1adb50ba9582f778dcb9382e9ff4b7ab0c14c20a8b5","platform":"h5","deviceId":"BpByNw/3yh0l2M0xkB1HOJ0FyXWLIZkTOQd5t/6XN0qwWEP0cp6cO/2x32VqXgbqopljCjk10HZVZKQrCNFzw8g==","token":"Basic YXBwOjEyMzQ1Ng==","reqid":"3EC8E420-C791-4558-AD59-509FDC7C9EFD","requestId":"3EC8E420-C791-4558-AD59-509FDC7C9EFD"}","4H5xhlF4dc2T0iHGFKe87VvuMKlGhKm1","Pkcs7Padding")


其中password好像是某个hash结果,但是直觉上,没有hash结果这么短,我就猜测,可能是某个hash截断了
于是我就使用搜索包含功能,去验证一下:
2.png
果然发现对应有一个很长的,于是用这个很长的放进去跑
3.png
就是我输入的内容的sha256 hash

然后uid字段好像也是hash,放进去跑:
999.png
是这么个情况:00:39.883: SHA-256("Windows_10.0_null_1920_1080_+08:00"),虽然不知道有什么含义,但是确实是这样……

然后,还有一个协议头里面的参数:encrypt-key,看名字,好像是加密key
放进去跑:
3332.jpg
疑似一个rsa加密的结果

多试几次对前面请求正文的推理,我们可以发现,每次加密的key都不一样,结合encrypt-key名字,我们可以猜测,是对随机产生的aeskey的rsa

然后我还把那个deviceId参数放进去了,没有出来结果
猜测应该就不是加密

到此:实现0逆向,成功解决网址的4个算法:2个SHA-256,1个AES-256-ECB,1个RSA
————————————————————————————————————————————————

刚刚发现返回内容也是加密的……没注意
使用匹配返回后dump
66.png
结果软件判定返回内容256个字节,就会认为是rsa2048:
罗列出了一些rsa2048的公钥,我挨个试了一遍用这些公钥去解密,并没有解密成功……
我就很好奇,为什么,于是去逆向来找原因,
结果发现竟然是一个rsa1024的私钥在解密……
这确实触及到我的知识盲区了,我一直认为RSA的加密解密的长度,只能是块大小。
因为返回内容是256个字节,所以只会列出rsa2048的密钥。
我的代码是这么写的:

struct {
                string begin;
                string end;
                RSA*(*loadFun)(BIO*, RSA**, pem_password_cb*, void*);
                CString name;
}arrType[] = {
                {("-----BEGIN PUBLIC KEY-----\n"),("\n-----END PUBLIC KEY-----"),PEM_read_bio_RSA_PUBKEY,("公钥PKCS#8")},
                {("-----BEGIN RSA PUBLIC KEY-----\n"),("\n-----END RSA PUBLIC KEY-----"),PEM_read_bio_RSAPublicKey,("公钥PKCS#1")},
                {("-----BEGIN RSA PRIVATE KEY-----\n"),("\n-----END RSA PRIVATE KEY-----"),PEM_read_bio_RSAPrivateKey,("私钥")}
};
for (auto& type : arrType) {
                string key = type.begin + match.str(1) + type.end;
                BIO* pBio = BIO_new_mem_buf(key.data(), key.size());
                if (pBio) {
                                RSA* pRsa = type.loadFun(pBio, nullptr, nullptr, nullptr);
                                BIO_free(pBio);
                                if (pRsa) {
                                    string strOrigin(pStr, nLen);
                                    if (RSA_size(pRsa) == nLenEncrypted && !setEcho.count(strOrigin)) {//过滤重复后输出
                                        nCount++;
                                        setEcho.insert(strOrigin);
                                        LogToUIFormat(FALSE, ("%d %s:[%s]"), nCount, type.name.GetString(), ToString(strOrigin).GetString());
                                    }
                                    RSA_free(pRsa);
                                    
                                    goto end;
                                    break;//跳过后续
                                }
                }
}


加载到那个真正的私钥了,但是RSA_size(pRsa) == nLenEncrypted这段,判定RSA密钥工作长度和密文不一致,没有输出
这确实触及到我的知识盲区了,我一直认为RSA的加密解密的长度,只能是对应的RSA块大小,至少我见过的从来都是如此。
但是没有想到,这个竟然在用一个rsa1024位的key,去解密2048个位……
有了解rsa的可以解惑一下

————————————————————————————————————————————————
✅ C++加密算法推理工具 1.0 - hash系列开放
https://bbs.125.la/forum.php?mod=viewthread&tid=14843543
(出处: 精易论坛)



结帖率:73% (37/51)

签到天数: 18 天

发表于 2024-12-26 04:07:11 | 显示全部楼层   浙江省杭州市
wasm的能推理吗
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 18 天

 楼主| 发表于 2024-12-26 00:49:55 | 显示全部楼层   重庆市重庆市

这么屌,我寻思你说你去看看是看啥,我是记得你反正是活跃会员,刚发现你是超级版主……
回复 支持 反对

使用道具 举报

签到天数: 17 天

发表于 2024-12-26 00:31:13 高大上手机用户 | 显示全部楼层   广东省揭阳市
神女软件定制 发表于 2024-12-26 00:05
我看完了,只有第二个真正列出疑似RSA密钥了,前面包返回的被成功采集到了
第一个和第四个,都是wasm,都 ...

是的 那几个我都分析了都是标准算法 这样一来也可以不用js或者dll之类的调用wasm 所以说你的软件还有很多可以优化的 虽然目前来说也可以应付很多场景了~

回复 支持 反对

使用道具 举报

签到天数: 17 天

发表于 2024-12-26 00:25:43 高大上手机用户 | 显示全部楼层   广东省揭阳市
神女软件定制 发表于 2024-12-26 00:11
给你回复了很长一串,竟然要审核……

我去看看~
回复 支持 反对

使用道具 举报

签到天数: 18 天

发表于 2024-12-26 00:13:15 | 显示全部楼层   广东省揭阳市
新技能已get√
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 18 天

 楼主| 发表于 2024-12-26 00:11:35 | 显示全部楼层   重庆市重庆市
Hoibben 发表于 2024-12-25 23:22
有兴趣的话可以看看问答区这几天的几个案例 我分析过了都是标准算法 希望对你的软件提升有帮助~

js逆向 ...

只有第二个出来了
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 18 天

 楼主| 发表于 2024-12-26 00:11:10 | 显示全部楼层   重庆市重庆市
Hoibben 发表于 2024-12-25 23:22
有兴趣的话可以看看问答区这几天的几个案例 我分析过了都是标准算法 希望对你的软件提升有帮助~

js逆向 ...

给你回复了很长一串,竟然要审核……

点评

我去看看~   广东省揭阳市  详情 回复 发表于 2024-12-26 00:25
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 18 天

 楼主| 发表于 2024-12-26 00:05:15 | 显示全部楼层   重庆市重庆市
Hoibben 发表于 2024-12-25 23:22
有兴趣的话可以看看问答区这几天的几个案例 我分析过了都是标准算法 希望对你的软件提升有帮助~

js逆向 ...

我看完了,只有第二个真正列出疑似RSA密钥了,前面包返回的被成功采集到了
第一个和第四个,都是wasm,都并没有成功。
事实上,wasm和so按正常的写法,调用完,原文信息都会释放了,除非js里或者java还保存有相同数据的副本才可能成功。
js和java里,都很大程度在依赖垃圾回收机制,还没有来得及回收释放的变量。(我一直是这么认为)

所以市面上大多推理工具说支持wsam和so都是幌子,关键还是要看数据是否在保留在内存中

现在分组加密工作原理,要求key和原文信息都在内存里,解密了去对比。

不要求原文信息还没释放的方法,确实已经在计划中。(我把它叫做硬解,就是解密之后,一定算法判定原文是否规律,比如纯英文啊,是不是有效的utf8之类),这样可以避免原文释放了导致推理不出来

然后第3个,这个key是base64编码,可能是使用的时候,再在wasm中解码了使用。
现在我的软件,是要求内存中存在直接的key,不是base64或hex之后的,
应对这个问题,也在计划中(很早就说了,一直没有实施),就是在采集到的字符串中,把一些常见key长度,base64、hex解码生成新的字符串插入,(没有考虑好是给用户完全选择解码哪些长度的,还是内定一些固定长度)

这两个功能,确实很重要,理论中,这两个功能加上去,就真的能应付wasm和so了!
因为一般情况下,key是外部传给wasm或so的,即使不是外部传入,key也不太容易被释放

所以我认为,+上这两个功能,第三个,90%是能出结果的。
但是+上这些功能,可能就没有这么快了,然后硬解判定原文是否规律,这个也可能产生一些误判

点评

是的 那几个我都分析了都是标准算法 这样一来也可以不用js或者dll之类的调用wasm 所以说你的软件还有很多可以优化的 虽然目前来说也可以应付很多场景了~   广东省揭阳市  详情 回复 发表于 2024-12-26 00:31

评分

参与人数 1好评 +1 精币 +2 收起 理由
山川 + 1 + 2 感谢分享,很给力!~

查看全部评分

回复 支持 1 反对 0

使用道具 举报

结帖率:91% (10/11)

签到天数: 18 天

 楼主| 发表于 2024-12-25 23:25:55 | 显示全部楼层   重庆市重庆市
Hoibben 发表于 2024-12-25 23:22
有兴趣的话可以看看问答区这几天的几个案例 我分析过了都是标准算法 希望对你的软件提升有帮助~

js逆向 ...

好的,这就测试一下
回复 支持 反对

使用道具 举报

结帖率:91% (10/11)

签到天数: 18 天

 楼主| 发表于 2024-12-25 23:25:43 | 显示全部楼层   重庆市重庆市
dongxin 发表于 2024-12-25 23:19
和教程一样,但是推理计算不显示密文

目标你选择错了,软件默认配置,第二个是默认选项
第一个是不对的,模拟器,其他软件,采用第一个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表