某网站异步加密逆向分析

admin 2024年11月12日14:05:11评论27 views字数 1971阅读6分34秒阅读模式

网站异步加密逆向分析

前言

某网站异步加密逆向分析

最近碰到一个网站,觉得加密挺简单的,加了断点看混淆后的代码发现找不到加密位置,很多异步的操作。逆向之后顺便做一期文章分享给大家。

 · · · · · ·

▼介绍▲

某网站异步加密逆向分析▼url▲

aHR0cHM6Ly93d3cuZ3pjb3VydC5nb3YuY24vZnlnZy9rdGdnLw==

▼一 了解异步 ▲

        在 JavaScript 中,异步编程是一种常见的模式,尤其在处理网络请求等操作时。由于 JavaScript 是单线程语言,异步机制可以让程序在等待某些操作完成时,继续执行其他任务,而不被阻塞。为了解决异步操作中的回调地狱问题,ES6 引入了 Promise 对象,使得异步代码的处理更加清晰、可维护。

什么是 Promise?

        Promise 是 JavaScript 提供的一种处理异步操作的对象。它代表一个异步操作的最终结果(成功或失败)。每一个 Promise 对象都处于以下三种状态之一:

        pending(进行中):初始状态,异步操作尚未完成,Promise 仍然在等待。

        fulfilled(已成功):异步操作成功完成,Promise 的结果可以被获取。

        rejected(已失败):异步操作失败,Promise 被拒绝,并伴随一个错误原因。

基本使用

        要创建一个 Promise 对象,可以通过传递一个函数给 Promise 构造函数,这个函数接收两个参数:resolve 和 reject,它们分别用于将 Promise 的状态更改为 "fulfilled" 或 "rejected"。

        resolve 函数:当异步操作成功时,调用 resolve,并将 Promise 状态从 pending 改为 fulfilled。你可以将成功的结果传递给 resolve,以便后续使用。

        reject 函数:当异步操作失败时,调用 reject,并将 Promise 状态从 pending 改为 rejected。你可以将失败的原因作为参数传递给 reject,让它作为错误信息传递出去。

      Promise.then() 是 JavaScript 中用于处理 Promise 对象的主要方法之一,它用于在 Promise 状态变为 fulfilled(已成功)时执行后续操作。

▼二 确定目标

首先抓包查看加密参数都有什么。

某网站异步加密逆向分析

某网站异步加密逆向分析

明显请求和结果都加密了

▼三 参数逆向▲


既然请求的body加密了,可以直接找到请求之前的位置,然后打断点往前跟

某网站异步加密逆向分析

Promise.then() 执行的时候意味着异步已完成,进行下一步操作,这里我们在之前打上断点。

某网站异步加密逆向分析

打到一个断点里面有data参数,点开看是未加密数据,我们继续往下跟

某网站异步加密逆向分析

某网站异步加密逆向分析

里面的异步执行队列有6个任务待执行,我们如果一步一步地跟会发现没有进入
到加密位置就直接请求返回了,这里针对异步我们可以进入到上述任务里的方法
里直接加断点就会停止。这里只需要看上面的6个任务里哪个是加密的。

某网站异步加密逆向分析

进入到第一个就会发现这里加工了data参数。

某网站异步加密逆向分析

跟到加密位置,发现是AES ECB加密,然后直接定位加密的key为
"J8PePfETanyLVsav"。
这里通过网页上测试下加密是否可用,是否有魔改。
实测发现没有魔改可以直接使用。

▼ 四 代码 ▲

from Crypto.Cipher import AESdef encrypt(key, content):    """    AES加密    key,iv使用同一个    模式cbc    填充pkcs7    :param key: 密钥    :param content: 加密内容    :return:    """    key_bytes = bytes(key, encoding='utf-8')    # key_bytes += b'x00'    # iv = key_bytes    cipher = AES.new(key_bytes, AES.MODE_ECB)    # 处理明文    content_padding = pkcs7padding(content)    # 加密    encrypt_bytes = cipher.encrypt(bytes(content_padding, encoding='utf-8'))    # 重新编码    result = str(base64.b64encode(encrypt_bytes), encoding='utf-8')    return result

▼ 总结 ▲

某网站异步加密逆向分析
可以总结一下异步如何找到加密位置:
  先正常跟,然后有个异步队列 挨个执行的,正常一步一步发现不会进到
加密位置,这里可以看异步队列里面的函数可能有加密函数

    大家如果其中有什么问题可以随时和我沟通。大家互相学习。

如果想要获得更多精彩内容可以关注我朋友:

END

我是Ming,热爱技术,喜欢钻研,喜欢分享。是一个希望通过技术改变自己的人。欢迎和大家加微信交朋友。

某网站异步加密逆向分析

关注我,一起成长

原文始发于微信公众号(逆向与爬虫的故事):某网站异步加密逆向分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月12日14:05:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某网站异步加密逆向分析https://cn-sec.com/archives/3386700.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息