Category Archives: CyberSecurity

Length extension attack

长度扩展攻击(Length extension attacks)是指针对某些允许包含额外信息的加密散列函数的攻击手段。简单来说,就是通过特殊的手段来扩展消息,可以伪造一个不经过私钥签名的Hash签名结果。

攻击条件

  1. 已知私钥和消息
  2. 采取了 H(密钥 ∥ 消息) 此类构造的散列函数

攻击效果

  1. 伪造消息签名

攻击场景

  1. API请求签名:MD5(Secret + k1,v1 + k2,v2 …) ,注意secret在前
Continue reading

Padding oracle attack

适用于CBC模式下的AES,DES,3DES等分组密码。

攻击成立需要:

  1. 能控制初始向量 IV 和密文 CT
  2. 能触发密文解密流程(选择密文),得知解密结果以及是否padding异常

攻击效果:

  1. 解密密文
  2. 生成任意明文的密文

攻击场景:

  1. 加密协议为SSLv3的HTTPS请求
  2. 客户端存储形式的敏感凭证
Continue reading

使用Hopper Disassembler轻松破解Gem Menu for OneNote

最近喜欢上了OneNote,有一款小插件Gem Menu for OneNote功能还蛮实用的。下载下来,点击注册激活软件,一股原始的味道扑面而来,想必没有经过很强的保护,于是直接动手反编译破解这个小软件。

在Mac上可以使用Hopper Disassembler很方便的进行反编译,我们打开Gem Menu for OneNote的二进制文件,拖进Hopper Disassembler即可完成反编译,得到可执行文件的汇编代码和更直观的C语言代码等,方便我们理解程序逻辑:
Continue reading

抽奖活动中的黑灰产对抗

有羊毛的地方,必有薅羊毛者。近日破站为了预热 98E 手办,推出了个抽奖活动,需要通过用户互赞达成抽奖条件,并且以先到先得,无限抽奖的方式清空奖池。

显然这种活动很容易被羊毛党攻击,可利用点有:

  • 将养好羊毛号拿出来批量相互点赞
  • 即将开始抽奖时,控制羊毛号批量无限抽奖

攻击者只需要写个简单脚本就能完成上述攻击,攻击成本低。这时候防御方则需要考虑如何用尽量低的成本进行防护,而且若稍有不慎,服务还可能被攻击者打挂,下面将从四个方面介绍攻防对抗手段:

  1. 增加参与门槛
  2. 应用层的防御
  3. 业务风险控制模型
  4. 切断利益链

Continue reading

Android 无源码调试

在逆向 Android APP 的过程中,有时候盯着一串加密算法,不断地在脑子模拟,并发生“栈溢出”和“OOM”。动态调试往往比静态分析更为生动和直观,但又苦于没有源码,无法调试,但这个其实真的可以有。

Android 通过 Dalvik VM 执行指令,在打包 APK 文件时,Java 源码将编译成 Dalvik 可执行文件,将 Native 代码编译成 .so 二进制 JNI 函数库,下面将介绍这两种代码的无源码调试方法。

Continue reading