查看: 8465|回复: 28

[Reverse] 2019年7月第二周打卡_GAesDecode解题思路

  [复制链接]
发表于 2019-7-13 12:29:12 | 显示全部楼层 |阅读模式

相关题目:

♦ GAesDecode

1. APK文件静态反编译
使用JEB2反编译及查看JAVA代码(该题不涉及native层,IDA ARM反汇编及调试有机会再讲),“EP”定位可通过manifest查看
895785d295ccc89f62.png
onCreate函数可看到很直接的加密流程:MainActivity.encrypt接受屏幕输入和一串字符;判断其返回值是否等于kNk3Qz+l/kLpGuKxf5iGE9cOoTmmn9Ac+UdF4b2CHqU=”:
960935d295ce706e91.png
545475d295cf01243e.png
encrypt()函数传入的第二个参数This is a AES-like encryption algorithm. However, we do some change. Therefore, you cannot directly use security class to decrypt the message. Our challenge is to find the plain text of this encrypt message with th fixed key.
提示这是个变形的AES加密算法,可能是友善的也可能是误导,但后续我们可以此为依据进行验证加快解题速度。
1. 尝试运行
使用雷电安卓模拟器,随意输入“12345678”,验证其错误信息输出
“Incorrect Flag!”:
533125d295d10131e3.png
1. JEB2调试
Debugger->Start->Attach:
650695d295d1fb9de1.png
使用特定函数调用(如本例Base64.encodeToSTring)从JAVA定位到Smali代码,Ctrl+B下断点:
499785d295d2db3038.png
标准加密与APK调试验证对比:
864055d295d3b7e2a0.png
1. 破解算法
先参考下(http://blog.csdn.net/qq_28205153/article/details/55798628)标准的AES加密流程图
770325d295d4ce6e0b.png
APK算法首先对输入字串进行一个16分组,这里的变量名可通过快捷键n(类似IDA)重命名,帮助逆向理解:
396475d295d5cd5326.png
对每16字符进行10轮变换
806145d295d6fd7fd2.png
然后,做一个拼接(4是因为AES以4字节为一个单位):
363925d295d7e2bdb6.png
9465d295d8651537.png
最后对加密字串做base64输出。
对比关键的四个加密模块函数:字节代换substitute()、行移位shiftRows()、列混合mixCloumns()、轮密钥加addRoundKey()。
轮密钥加addRoundKey()
轮密钥加是将128位轮密钥Ki同状态矩阵中的数据进行逐位异或操作,与apk代码相符;
731835d295d9425e23.png
字节代换substitute()
可发现APK代码中的有现成的逆S盒与标准逆S盒一致,暂时可推断也使用标准S盒:
863615d295da1c58b2.png
818035d295dac4e332.png
行移位shiftRows()
行移位是一个简单的左循环移位操作。当密钥长度为128比特时,状态矩阵的第0行左移0字节,第1行左移1字节,第2行左移2字节,第3行左移3字节,与APK代码一致:
692315d295dba227a0.png
列混合mixCloumns()
首先四次变换的逻辑没有问题:
2,3,1,1
1,2,3,1
1,1,2,3
3,1,1,2
896115d295dcb28d8f.png
LightState.add()也没有问题:
649975d295ddca0d4e.png
LightState.multiply2()发现异或值做了改变:
790255d295ded588f6.png
变形解密将“0x1b”改为“0x1d”配置好key“kNk3Qz+l/kLpGuKxf5iGE9cOoTmmn9Ac+UdF4b2CHqU=”解密的16进制数组,解密得到flag为:

游客,如果您要查看本帖隐藏内容请回复
436695d295e014110f.png

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

0

主题

3

帖子

0

精华

初级会员

Rank: 4

学币
42
荣耀
0
rank
378
违规
0

    发表于 2019-7-18 16:50:42 | 显示全部楼层
    学习了,感觉有点复杂啊
    学逆向论坛-免费的逆向学习论坛
     楼主| 发表于 2019-7-18 16:53:35 来自手机 | 显示全部楼层
    Adam 发表于 2019-7-18 16:50
    学习了,感觉有点复杂啊

    涉及到密码学的逆向题如果没有密码学基础,行外人看起来会很复杂,其实没多难,仔细研究研究就出来了
    学逆向论坛-免费的逆向学习论坛

    0

    主题

    7

    帖子

    0

    精华

    解密专家

    Rank: 16

    学币
    337
    荣耀
    0
    rank
    4913
    违规
    0

    神出鬼没

      发表于 2019-7-19 10:38:41 | 显示全部楼层
      学习一下
      学逆向论坛-免费的逆向学习论坛
      回复 打印

      使用道具 举报

      0

      主题

      2

      帖子

      0

      精华

      初级会员

      Rank: 4

      学币
      6
      荣耀
      0
      rank
      0
      违规
      0

        发表于 2019-9-12 08:56:36 | 显示全部楼层
        感谢大佬分享经验
        学逆向论坛-免费的逆向学习论坛

        0

        主题

        1

        帖子

        0

        精华

        初级会员

        Rank: 4

        学币
        3
        荣耀
        0
        rank
        0
        违规
        0

          发表于 2019-10-8 21:47:50 | 显示全部楼层
          感谢分享,我会认真学习的!
          学逆向论坛-免费的逆向学习论坛
           楼主| 发表于 2019-10-9 07:12:25 来自手机 | 显示全部楼层
          kkk_z 发表于 2019-10-8 21:47
          感谢分享,我会认真学习的!

          加油哦!
          学逆向论坛-免费的逆向学习论坛

          0

          主题

          2

          帖子

          0

          精华

          初级会员

          Rank: 4

          学币
          4
          荣耀
          0
          rank
          0
          违规
          0

            发表于 2019-10-26 14:03:21 | 显示全部楼层
            太牛了,很难看懂呀
            学逆向论坛-免费的逆向学习论坛

            0

            主题

            2

            帖子

            0

            精华

            初级会员

            Rank: 4

            学币
            4
            荣耀
            0
            rank
            0
            违规
            0

              发表于 2019-10-26 21:04:30 | 显示全部楼层
              解密的具体脚本能否发一下啊
              学逆向论坛-免费的逆向学习论坛
               楼主| 发表于 2019-10-27 16:33:14 | 显示全部楼层
              0606lcy 发表于 2019-10-26 21:04
              解密的具体脚本能否发一下啊

              按照截图敲就行
              论坛交流群:672619046
              微信公众号
              快速回复 返回顶部 返回列表