Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 攻防对抗 › Reverse: Level2 & 动态调试修改内存 Cracked by Eswink

Reverse: Level2 & 动态调试修改内存 Cracked by Eswink

Eswlnk的头像
Eswlnk
2021-10-29 1:39:18
Reverse: Level2 & 动态调试修改内存 Cracked by Eswink-Eswlnk Blog
智能摘要 AI
本文主要介绍了通过逆向工程和调试技术破解基于RC4加密算法的密文的过程。题目要求利用已知密钥解密给定的RC4密文以获取明文。关键步骤包括: 1. 使用IDA Pro分析程序架构,发现RC4算法中的异或操作缺少模256运算。 2. 调试环境中修改代码,跳过不必要的异或循环,简化解密过程。 3. 使用远程调试工具将密文写入内存并修改其值,成功解密。 4. 最终通过再次异或操作得到正确的明文,提取出flag:`SYC{vKRZqCCBMMCyLlKlFKNmTpLqAKzriyqAxYjIqRgzCXKxuFDBOarNQl}`。 总结经验时提到,解决复杂问题需要灵活运用多种工具和技术,并建议开发批量修改内存的插

题目要求:求出由RC4异或的密文所对应的明文,秘钥存在于文件中,考察RC4算法的理解和对安全加密的应用

Reverse: Level2 & 动态调试修改内存 Cracked by Eswink-Eswlnk Blog

Information

​ Flag:SYC{vKRZqCCBMMCyLlKlFKNmTpLqAKzriyqAxYjIqRgzCXKxuFDBOarNQl}

Necessary Tools

  1. IDA 7.5 Linux Cracked by ericyudatou
  2. Pwntools
  3. Pycharm && Python3

Debugging Environment

  1. Linux kali 5.10.0-kali9-amd64
  2. Windows 10

Decompile

检测程序架构信息

pwn checksec level2

RC4

本题涉及到了RC4算法,并且该题中,有一处发生了改变

Reverse: Level2 & 动态调试修改内存 Cracked by Eswink-Eswlnk Blog

经过百度查询到的RC4的加密算法中,异或前 (a1[v5]+a1[v6])%256而这里反编译出来的伪代码中缺少了mod 256 这一个步骤,非常地困惑,想不通,自写地全部崩溃,人都是麻的。最终还是走到了调试这一步。

由于以前接触过类似RC4自加密算法的样本文件,通常是将加密key加密保存在data或者text段,需要解密加密的PE文件时再对key进行解密调用

本题的Key已经给的很明显了,为下面这一段长度为300的字符串:

qppxdtedZrekKSpAMeqzNoewKQjEFTOMaFNCQiLeMFGgwlmuaQXIcMGzIJllPmrEFfHvzXNbBAxtKbuUvkaGqFvoXWIBeHNyfSjmpbpZHsNKYnkgBsTVjVSfVfxdQenTgochitWHrIfAcVuhNAqhZZTHInByioFsvcMQRGWiDeyixcvIlntEFJAzXJNYWjEjQoDfErYtnJWQxVBOIjKgjTzDrYVrfXYCbZwNTmVjrKNjQGFhQCzWTsqdEvligyAfnlqzqeHsrXDoekoVaPERUeMivpBNobzjWupBzFdngrYO

经过了解,我们可以得知RC4的加解密其实就是:明文 ^ key = 密文,解密步骤也是相同,密文 ^ key = 明文 ,那么我们直接将密文传入内存或者读入再RC4解密,即可获得明文

Modify

跳过异或循环

我们观察伪代码,可以清楚的看到,在进行RC4加密初始化时,经过了异或操作,那么我们可以手动Patch代码

Reverse: Level2 & 动态调试修改内存 Cracked by Eswink-Eswlnk Blog
  • 我们可以将 .text:000000000000175C 修改为:
  jmp 00000000000017A1
  • 我们也可以在 .text:0000000000001772 修改为:
   jmp  short loc_17A1

即为无条件跳转,保存完毕文件后再次通过IDA分析,即可看到循环消失

Reverse: Level2 & 动态调试修改内存 Cracked by Eswink-Eswlnk Blog

写入密文

尝试将密文转化为字符串通过gets的方式读入,但是转换后发现存在乱码和其他符号会直接被截断,通过使用PWN也无法传入,也许时本人活儿不精。

那么我们只好进行远程调试,在gets处断点,步过到strlen并且修改内存的值:

Reverse: Level2 & 动态调试修改内存 Cracked by Eswink-Eswlnk Blog
data = [0xB7, 0x65, 0x0C, 0x52, 0xF1, 0x59, 0x62, 0x6B, 0xD8, 0xD7, 0x19, 0x2E, 0xFA, 0xFE, 0xFF, 0x25, 0x82, 0xAC,0x3F, 0x79, 0x60, 0x2A, 0x1E, 0x81, 0x78, 0xD7, 0x60, 0x0E, 0x99, 0xD0, 0x68, 0xC4, 0xF9, 0x37, 0x54, 0xAE,0xF2, 0x77, 0xBF, 0x39, 0x1D, 0xC7, 0x61, 0x0B, 0xF8, 0xED, 0xFD, 0x80, 0xF2, 0xAA, 0x6E, 0x62, 0xB9, 0x63,0x0B, 0x79, 0xC6, 0xBB, 0xA9]

在修改内存时,我也遇到了一些不顺手的地方,如果是在windows环境下的ollydbg,编辑内存值非常容易,将data转换为HEX String 然后复制就行了,不过IDA好像没有这个功能,也不知道有没有人写过这种插件,导致我按byte输入,异常地麻烦。

在修改完内存并且单步rc4_crypt后,密文就成功解密了。

解密

解密后的字符串,使用LazyIDA插件将其转换为PythonList:

decrypt = [76, 70, 92, 100, 105, 84, 77, 69, 110, 92, 92, 93, 82, 82, 92, 102, 83, 115, 84, 115, 89, 84, 81, 114, 75, 111, 83, 110, 94, 84, 101, 109, 118, 102, 110, 94, 103, 70, 117, 86, 110, 77, 120, 101, 92, 71, 84, 103, 106, 89, 91, 93, 80, 126, 109, 81, 78, 115, 98]

由于之前我们省略了异或步骤,所以我们这里再次异或:

decrypt = [76, 70, 92, 100, 105, 84, 77, 69, 110, 92, 92, 93, 82, 82, 92, 102, 83, 115, 84, 115, 89, 84, 81, 114, 75,
           111, 83, 110, 94, 84, 101, 109, 118, 102, 110, 94, 103, 70, 117, 86, 110, 77, 120, 101, 92, 71, 84, 103, 106,
           89, 91, 93, 80, 126, 109, 81, 78, 115, 98]
c = ""
for i in decrypt:
    i ^= 0x1F
    c = c + chr(i)

print((c))

最终可以得到答案:

SYC{vKRZqCCBMMCyLlKlFKNmTpLqAKzriyqAxYjIqRgzCXKxuFDBOarNQl}

将得到的flag读入Level2,得到正确结果:

Reverse: Level2 & 动态调试修改内存 Cracked by Eswink-Eswlnk Blog

Reflection & Proposal

  • 办法总比困难多,羊毛出在羊身上
  • 本次题目还可以通过 Call rc4_init 和 rc4_crypt来完成,劫持跳转也可以达到同样的结果
  • IDA修改内存及其不方便,希望能够有个批量修改的插件,常去大佬群看看

本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
rc4SYC加密算法逆向
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
Reverse: Level1 Cracked by Eswink
上一篇
BypassAV:笑谈杀软与360的二次分析
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 今日热点:伪Clash软件下载陷阱曝光,附防范建议
  • 「攻防对抗」利用 fastjson 原生反序列化与动态代理突破安全限制
  • 「攻防对抗」从上传漏洞到Getshell | 一次完整的渗透过程
  • 「日志记录」从零起步揭开路由器漏洞挖掘的面纱
  • 「攻防对抗」NSmartProxy流量特征的真实表现与应用
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

DEF CON 30 CTF Quals | Teedium Wallet 复盘
2023-07-29 17:50:42
「威胁情报」新一波恶意 npm 软件包威胁 Kubernetes 配置和 SSH 密钥
2023-09-20 22:24:50
「攻防对抗」植物大战僵尸DLL注入修改
2022-08-20 15:39:38

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.861 秒   |  SQL查询 48 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈