Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

流行应用的加密算法实现缺陷与利用

5.360 Aufrufe

Veröffentlicht am

owasp 2011(asia)

Veröffentlicht in: Technologie
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

流行应用的加密算法实现缺陷与利用

  1. 1. OWASP AppSec The OWASP Foundation Beijing/Asia 2011 http://www.owasp.org 流行应用的加密算法 实现缺陷与利用 吴翰清 阿里云信息安全中心 axis@ph4nt0m.org Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License.
  2. 2. About Me2001年创建安全组织幻影2005年加入阿里巴巴2008年加入阿里云微博:t.qq.com/aullik5Blog:hi.baidu.com/aullik5Book:《完美防线》 2
  3. 3. 当渗透测试遇到…ctk=moVQoAbeoXAtdR3BHGRFVA&chk=50f059614bb2977a9 dda630cd727277a-50067753ID=5bfb08d687b3dee5:T=1303616991:S=ALNI_MZ46CtBJfBa USGkdUlJmLEyTfwgPQhttp://passport.baidu.com/center?auth=ead603c8bb7d4ea68f2812a497aa7f5c40c6eb438b3 da9e1d8b5b3de6a82f30b7a3b 3
  4. 4. 密文分析技巧:编码分析Base64:Hex:ead603c8bb7d4e……= xeaxd6x04xc8xbbx7dx4e…… 4
  5. 5. 密文分析技巧:密文长度Stream cipher: 任意长度Block cipher: 5
  6. 6. 密文分析技巧:模式分析ECB-mode: 明文改变1字节,密文只改变1个分组长度CBC-mode: 明文改变1字节,密文完全改变 6
  7. 7. 在开发者眼中1. 加密算法第三方实现library2. 性能3. 安全性 – 特指密钥长度 7
  8. 8. 常见错误选择1. 使用哈希算法代替加密算法2. 哈希算法不使用salt3. 使用时间函数代替伪随机数算法4. 不了解一些密码学攻击,导致使用错误5. …… 8
  9. 9. 加密算法简介分组加密算法流密码 9
  10. 10. 加密算法基础IV:初始化向量,一次一密,无须保密加密模式 :ECB、CBC、CFB、OFB、CTR分组长度:Blocksize密钥 :KEY,须保密,有时对长度有要求 10
  11. 11. Ciphertext only Known Chosenplaintext ciphertext Attack Chosen …… plaintext 11
  12. 12. 攻击分组加密算法 12
  13. 13. ECB模式 13
  14. 14. 攻击ECB模式 14
  15. 15. CBC模式 15
  16. 16. Padding OraclePadding:PKCS#5Oracle:预测一种类似于“盲注”的“边信道攻击” 16
  17. 17. 攻击流密码 17
  18. 18. 流密码 18
  19. 19. Reused Key AttackE(A) = A xor CE(B) = B xor CE(A) xor E(B) = (A xor C) xor (B xor C) = A xor B xor C xor C = A xor BE(A) xor E(B) = A xor B 19
  20. 20. PHPWind StrCode()for ($i = 0; $i < $strLen; $i++) { $k = $i % $keyLen; $code .= $string[$i] ^ $key[$k];} 20
  21. 21. PHPWind验证码生成过程ck.php,验证码字符集: $list = BCEFGHJKMPQRTVWXY2346789;"1315107631"."tt".md5("73669"."1315107631") 时间戳 验证码 时间戳 21
  22. 22. 获取验证码 22
  23. 23. 设置Cookie 23
  24. 24. 破解任意验证码密文思路已知:明文1 = 时间戳1 + md5(验证码1 + 时间戳1) A ⊕密文1 E(A) ⊕密文2 E(B)求解: ‖明文2 = 时间戳2 + md5(验证码2 + 时间戳2) BMD5 Rainbow Table ! 24
  25. 25. Crack It! 25
  26. 26. Bit-flipping AttackE(A) xor E(B) = A xor BA xor E(A) xor B = E(B) 26
  27. 27. 万能钥匙Global.php: gdconfirm()Common.php: safecheck() 27
  28. 28. 构造永久验证码Bit-flipping Attack:A xor E(A) xor B = E(B)构造时间:$timestamp– $cookieData[0] < 0 28
  29. 29. 永久验证码 29
  30. 30. Discuz! authcode() $keyc:IV $ckey_length:IV长度 $keya: 产生加密密钥 $keyb: HMAC的key 验证时间有效性 30
  31. 31. authcode()分析 IV79uz_d57e_auth=d08fwJQZGV/999z5qNLk5OIofp9dd2 qDkWXVeg1RFQGwKicuAMaih5M5aefx0ycOfLAc2jt ZL/y3J7TpUh2GsAPl;000000000067c38ee9eca0b04dccccbbbb 时间戳 HMAC 明文 (10bytes) (16bytes) (xx bytes) 31
  32. 32. authcode()算法安全分析Reused Key Attack: IV一次一密,导致无法攻击成功 XOR_KEY = fn(IV, KEY)Bit-flipping Attack: HMAC导致无法构造任意密文 HMAC = fn(Plaintext, KEY) 32
  33. 33. authcode() weak IVIV默认长度为4(当前Discuz!版本):使用穷举法建立IV字典(a-z0-9): 364 = 1,679,616 个IV当两次加密IV相同时,加密密钥也相同-- 在WEP破解中,24bit IV在5小时遍历完 33
  34. 34. POC:已知:验证:crack($cipher2) == $plaintext2 34
  35. 35. POC: 35
  36. 36. 收集密文与IV 36
  37. 37. Birthday Attack30人中任意2人生日在特定一天(如11.8号): 1 − (364 / 365)30 ≈ 7.9%任意2人生日相同: 接近 70% 37
  38. 38. 38
  39. 39. 攻击authcode()?Reused Key Attack: IV一次一密,导致无法攻击成功 可以遍历IV,找到相同IV从而攻击成功 例:窃取Cookie后解密密文Bit-flipping Attack: HMAC导致无法构造任意密文 仍然是安全的 39
  40. 40. 其他利用方式?Discuz! Getwebshell:http://www.oldjun.com/blog/index.php/archives/76/Phpcms cookie注射:http://www.80vul.com/phpcms/phpcms_sys_auth.txt…… 40
  41. 41. Summary &Conclusion
  42. 42. 开发建议不要使用ECB模式不要使用流密码使用CBC模式的AES-256,或Blowfish不要使用相同的KEY做不同的事情注意IV的随机性使用HMAC-SHA512代替MD5 42
  43. 43. Thanks!

×