SlideShare a Scribd company logo
1 of 43
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.
About Me
2001年创建安全组织幻影
2005年加入阿里巴巴
2008年加入阿里云


微博:t.qq.com/aullik5
Blog:hi.baidu.com/aullik5
Book:《完美防线》


                            2
当渗透测试遇到…
ctk=moVQoAbeoXAtdR3BHGRFVA&chk=50f059614bb2977a9
   dda630cd727277a-50067753



ID=5bfb08d687b3dee5:T=1303616991:S=ALNI_MZ46CtBJfBa
   USGkdUlJmLEyTfwgPQ



http://passport.baidu.com/center?

auth=ead603c8bb7d4ea68f2812a497aa7f5c40c6eb438b3
   da9e1d8b5b3de6a82f30b7a3b



                                                      3
密文分析技巧:编码分析
Base64:




Hex:
ead603c8bb7d4e……
= xeaxd6x04xc8xbbx7dx4e……




                                   4
密文分析技巧:密文长度
Stream cipher: 任意长度
Block cipher:




                      5
密文分析技巧:模式分析
ECB-mode:
 明文改变1字节,密文只改变1个分组长度


CBC-mode:
 明文改变1字节,密文完全改变




                       6
在开发者眼中
1. 加密算法第三方实现library
2. 性能
3. 安全性 – 特指密钥长度




                      7
常见错误选择
1.   使用哈希算法代替加密算法
2.   哈希算法不使用salt
3.   使用时间函数代替伪随机数算法
4.   不了解一些密码学攻击,导致使用错误
5.   ……




                         8
加密算法简介

分组加密算法


流密码


         9
加密算法基础
IV:初始化向量,一次一密,无须保密


加密模式 :ECB、CBC、CFB、OFB、CTR


分组长度:Blocksize


密钥 :KEY,须保密,有时对长度有要求


                            10
Ciphertext
                       only




 Known                                  Chosen
plaintext                             ciphertext


                    Attack



         Chosen
                                 ……
        plaintext



                                                   11
攻击分组加密算法




           12
ECB模式




        13
攻击ECB模式




          14
CBC模式




        15
Padding Oracle
Padding:PKCS#5


Oracle:预测


一种类似于“盲注”的
“边信道攻击”


                    16
攻击流密码




        17
流密码




      18
Reused Key Attack
E(A) = A xor C
E(B) = B xor C

E(A) xor E(B) = (A xor C) xor (B xor C)
             = A xor B xor C xor C
             = A xor B


E(A) xor E(B) = A xor B

                                          19
PHPWind StrCode()




for ($i = 0; $i < $strLen; $i++) {

    $k = $i % $keyLen;

    $code .= $string[$i] ^ $key[$k];

}

                                       20
PHPWind验证码生成过程
ck.php,验证码字符集:
  $list = 'BCEFGHJKMPQRTVWXY2346789';




"1315107631"."tt".md5("73669"."1315107631")

    时间戳                 验证码        时间戳


                                                21
获取验证码




        22
设置Cookie




           23
破解任意验证码密文思路
已知:
明文1 = 时间戳1 + md5(验证码1 + 时间戳1)   A
                                    ⊕
密文1                             E(A)
                                    ⊕
密文2                             E(B)
求解:                             ‖
明文2 = 时间戳2 + md5(验证码2 + 时间戳2)   B



MD5 Rainbow Table !

                                        24
Crack It!




            25
Bit-flipping Attack

E(A) xor E(B) = A xor B



A xor E(A) xor B = E(B)




                          26
万能钥匙
Global.php: gdconfirm()


Common.php: safecheck()




                             27
构造永久验证码
Bit-flipping Attack:
A xor E(A) xor B = E(B)
构造时间:
$timestamp– $cookieData[0] < 0




                                 28
永久验证码




        29
Discuz! authcode()
  $keyc:IV
  $ckey_length:IV长度
  $keya: 产生加密密钥
  $keyb: HMAC的key
  验证时间有效性




                      30
authcode()分析
                  IV

79uz_d57e_auth=d08fwJQZGV/999z5qNLk5OIofp9dd2
   qDkWXVeg1RFQGwKicuAMaih5M5aefx0ycOfLAc2jt
   ZL/y3J7TpUh2GsAPl;


000000000067c38ee9eca0b04dccccbbbb

  时间戳            HMAC           明文
 (10bytes)     (16bytes)     (xx bytes)



                                                31
authcode()算法安全分析
Reused Key Attack:
  IV一次一密,导致无法攻击成功
  XOR_KEY = fn(IV, KEY)
Bit-flipping Attack:
  HMAC导致无法构造任意密文
  HMAC = fn(Plaintext, KEY)


                              32
authcode() weak IV
IV默认长度为4(当前Discuz!版本):




使用穷举法建立IV字典(a-z0-9):
  364 = 1,679,616 个IV
当两次加密IV相同时,加密密钥也相同
-- 在WEP破解中,24bit IV在5小时遍历完


                             33
POC:
已知:




验证:crack($cipher2) == $plaintext2

                                    34
POC:




       35
收集密文与IV




          36
Birthday Attack
30人中
任意2人生日在特定一天(如11.8号):
 1 − (364 / 365)30 ≈ 7.9%


任意2人生日相同:
 接近 70%


                            37
38
攻击authcode()?
Reused Key Attack:
  IV一次一密,导致无法攻击成功
  可以遍历IV,找到相同IV从而攻击成功
  例:窃取Cookie后解密密文
Bit-flipping Attack:
  HMAC导致无法构造任意密文
  仍然是安全的
                        39
其他利用方式?

Discuz! Getwebshell:
http://www.oldjun.com/blog/index.php/archives/76/
Phpcms cookie注射:
http://www.80vul.com/phpcms/phpcms_sys_auth.txt


……



                                                    40
Summary &
Conclusion
开发建议
不要使用ECB模式
不要使用流密码
使用CBC模式的AES-256,或Blowfish
不要使用相同的KEY做不同的事情
注意IV的随机性
使用HMAC-SHA512代替MD5




                            42
Thanks!

More Related Content

Viewers also liked

Web指纹识别与快速扫描 public
Web指纹识别与快速扫描   publicWeb指纹识别与快速扫描   public
Web指纹识别与快速扫描 publicph4nt0m
 
黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享ph4nt0m
 
2013qcon keynote hackingforfun
2013qcon keynote hackingforfun2013qcon keynote hackingforfun
2013qcon keynote hackingforfunph4nt0m
 
云计算时代的安全格局变化
云计算时代的安全格局变化云计算时代的安全格局变化
云计算时代的安全格局变化ph4nt0m
 
网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012certph4nt0m
 
麻烦终结者
麻烦终结者麻烦终结者
麻烦终结者ph4nt0m
 
Web应用安全:过去,现在,未来(Public Ver)
Web应用安全:过去,现在,未来(Public Ver)Web应用安全:过去,现在,未来(Public Ver)
Web应用安全:过去,现在,未来(Public Ver)ph4nt0m
 

Viewers also liked (7)

Web指纹识别与快速扫描 public
Web指纹识别与快速扫描   publicWeb指纹识别与快速扫描   public
Web指纹识别与快速扫描 public
 
黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享黑客江湖 阿里十周年分享
黑客江湖 阿里十周年分享
 
2013qcon keynote hackingforfun
2013qcon keynote hackingforfun2013qcon keynote hackingforfun
2013qcon keynote hackingforfun
 
云计算时代的安全格局变化
云计算时代的安全格局变化云计算时代的安全格局变化
云计算时代的安全格局变化
 
网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert网站离线数据安全分析漫谈 2012cert
网站离线数据安全分析漫谈 2012cert
 
麻烦终结者
麻烦终结者麻烦终结者
麻烦终结者
 
Web应用安全:过去,现在,未来(Public Ver)
Web应用安全:过去,现在,未来(Public Ver)Web应用安全:过去,现在,未来(Public Ver)
Web应用安全:过去,现在,未来(Public Ver)
 

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

[Crypto Course] Block Cipher Mode
[Crypto Course] Block Cipher Mode[Crypto Course] Block Cipher Mode
[Crypto Course] Block Cipher ModeWEI CHIEH CHAO
 
漫谈编码解码和加密解密
漫谈编码解码和加密解密漫谈编码解码和加密解密
漫谈编码解码和加密解密Depeng Cong
 
電腦網路 網路安全
電腦網路 網路安全電腦網路 網路安全
電腦網路 網路安全bruce761207
 
Internet Security
Internet SecurityInternet Security
Internet Securitybruce761207
 
安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告ahnlabchina
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Kris Mok
 
雲端分散架構的駭客事件與安全問題
雲端分散架構的駭客事件與安全問題雲端分散架構的駭客事件與安全問題
雲端分散架構的駭客事件與安全問題Alan Lee
 
Io t security-ameba-ppt
Io t security-ameba-pptIo t security-ameba-ppt
Io t security-ameba-pptJou Neo
 
網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享Ying-Chun Cheng
 
电子杂志(试刊)
电子杂志(试刊)电子杂志(试刊)
电子杂志(试刊)ProCharm
 
Talking about exploit writing
Talking about exploit writingTalking about exploit writing
Talking about exploit writingsbha0909
 
HITCON駭客戰隊與CTF經驗分享
HITCON駭客戰隊與CTF經驗分享HITCON駭客戰隊與CTF經驗分享
HITCON駭客戰隊與CTF經驗分享Alan Lee
 
前端MVVM框架安全
前端MVVM框架安全前端MVVM框架安全
前端MVVM框架安全Borg Han
 
COSCUP 2016 - LLVM 由淺入淺
COSCUP 2016 - LLVM 由淺入淺COSCUP 2016 - LLVM 由淺入淺
COSCUP 2016 - LLVM 由淺入淺宗凡 楊
 
COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺hydai
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)FLASH开发者交流会
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)Shanda innovation institute
 
6.ctf经验分享
6.ctf经验分享6.ctf经验分享
6.ctf经验分享Hsiao Tim
 

Similar to 流行应用的加密算法实现缺陷与利用 (20)

[Crypto Course] Block Cipher Mode
[Crypto Course] Block Cipher Mode[Crypto Course] Block Cipher Mode
[Crypto Course] Block Cipher Mode
 
漫谈编码解码和加密解密
漫谈编码解码和加密解密漫谈编码解码和加密解密
漫谈编码解码和加密解密
 
電腦網路 網路安全
電腦網路 網路安全電腦網路 網路安全
電腦網路 網路安全
 
網路安全
網路安全網路安全
網路安全
 
網路安全
網路安全網路安全
網路安全
 
Internet Security
Internet SecurityInternet Security
Internet Security
 
安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告安博士Asec 2010年3月安全报告
安博士Asec 2010年3月安全报告
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
 
雲端分散架構的駭客事件與安全問題
雲端分散架構的駭客事件與安全問題雲端分散架構的駭客事件與安全問題
雲端分散架構的駭客事件與安全問題
 
Io t security-ameba-ppt
Io t security-ameba-pptIo t security-ameba-ppt
Io t security-ameba-ppt
 
網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享網站程式資安白箱與黑箱檢測處理經驗分享
網站程式資安白箱與黑箱檢測處理經驗分享
 
电子杂志(试刊)
电子杂志(试刊)电子杂志(试刊)
电子杂志(试刊)
 
Talking about exploit writing
Talking about exploit writingTalking about exploit writing
Talking about exploit writing
 
HITCON駭客戰隊與CTF經驗分享
HITCON駭客戰隊與CTF經驗分享HITCON駭客戰隊與CTF經驗分享
HITCON駭客戰隊與CTF經驗分享
 
前端MVVM框架安全
前端MVVM框架安全前端MVVM框架安全
前端MVVM框架安全
 
COSCUP 2016 - LLVM 由淺入淺
COSCUP 2016 - LLVM 由淺入淺COSCUP 2016 - LLVM 由淺入淺
COSCUP 2016 - LLVM 由淺入淺
 
COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺COSCUP2016 - LLVM框架、由淺入淺
COSCUP2016 - LLVM框架、由淺入淺
 
Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)Avm2虚拟机浅析与as3性能优化(陈士凯)
Avm2虚拟机浅析与as3性能优化(陈士凯)
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
 
6.ctf经验分享
6.ctf经验分享6.ctf经验分享
6.ctf经验分享
 

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