Slide 1

Slide 1 text

Fuite  Adobe   …autopsie    /DEV/VAR/3  –  30  janvier  2014   @cceresola   [email protected]  

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

devvar3  -­‐  @cceresola  

Slide 4

Slide 4 text

Lol   devvar3  -­‐  @cceresola  

Slide 5

Slide 5 text

devvar3  -­‐  @cceresola  

Slide 6

Slide 6 text

devvar3  -­‐  @cceresola   Conversion  base64/ Hexa  

Slide 7

Slide 7 text

devvar3  -­‐  @cceresola  

Slide 8

Slide 8 text

=SI(NBCAR(E1)>16;DROITE(E1;NBCAR(E1)-­‐16);"")   =GAUCHE(E1;16)   devvar3  -­‐  @cceresola  

Slide 9

Slide 9 text

hYp://www.adayinthelifeof.nl/2010/12/08/encryp^on-­‐opera^ng-­‐modes-­‐ecb-­‐vs-­‐cbc/   “A  mode  of  opera^on   describes  how  to  repeatedly   apply  a  cipher's  single-­‐block   opera^on  to  securely   transform  amounts  of  data   larger  than  a  block.”   h"p://en.wikipedia.org/wiki/Block_cipher_modes_of_opera8on   devvar3  -­‐  @cceresola  

Slide 10

Slide 10 text

hYp://www.adayinthelifeof.nl/2010/12/08/encryp^on-­‐opera^ng-­‐modes-­‐ecb-­‐vs-­‐cbc/   Avantages:     -­‐  Chiffrement/dechiffrement    en  parallèle     -­‐  En  cas  de  corrup^on  le  reste  du  message  reste  exploitable  (bien  !  ….ou  pas  !)     devvar3  -­‐  @cceresola  

Slide 11

Slide 11 text

u^lisateur:   aaaaacyril   u^lisateur:   aaaaaaacyril   u^lisateur:   cyril   devvar3  -­‐  @cceresola  

Slide 12

Slide 12 text

15ea8e3726cb1702  b195672766f5378a  4417d2d133je123  538293514ddd2d53  aa92a14d94bdd8e9   AYaque  2  :  inversion  des  2  derniers  blocs   b195672766f5378a15ea8e3726cb17024417d2d133je123aa92a14d94bdd8e9538293514ddd2d53     AYaque  1  :  inversion  des  2  premiers  blocs   b195672766f5378a15ea8e3726cb17024417d2d133je123538293514ddd2d53aa92a14d94bdd8e9   AYaque  3  :  duplica^on  3e  bloc   b195672766f5378a15ea8e3726cb17024417d2d133je1234417d2d133je123538293514ddd2d53aa 92a14d94bdd8e9   devvar3  -­‐  @cceresola   username=cyril;profile=11;admin=0;devvar  

Slide 13

Slide 13 text

Exemples:   h"p://blog.spiderlabs.com/2013/01/defea8ng-­‐aes-­‐without-­‐a-­‐phd.html   h"ps://pentesterlab.com/exercises/ecb/     devvar3  -­‐  @cceresola  

Slide 14

Slide 14 text

Analyse  1  :  SOPHOS     hYp://nakedsecurity.sophos.com/2013/10/04/adobe-­‐owns-­‐up-­‐to-­‐genng-­‐pwned-­‐login-­‐and-­‐credit-­‐card-­‐data-­‐probably-­‐stolen-­‐all-­‐passwords-­‐reset/   hYp://nakedsecurity.sophos.com/2013/11/04/anatomy-­‐of-­‐a-­‐password-­‐disaster-­‐adobes-­‐giant-­‐sized-­‐cryptographic-­‐blunder/)   (échan8llon  :  10^6)   1  -­‐  Pas  de  hash  car  longueur  variable  et  donc…  master  key  unique  !     2  -­‐  Chiffrement  par  blocs  -­‐  mul8ples  de  8  =>  8  octets  =>  64  bits  =>  3DES     3  -­‐  Pas  de  nonce  (salt)  +  ECB     password  de  16  octets  nonce  de  8  octets  recommandé…  mais  quid  des  password  sur  8  octets   ⇒  pas  de  place  pour  le  nonce     •  2^64  =  18446744073709551616  blocs  possibles   ⇒  répé88on  improbable  sur  1  000  000  d’entrées     •  Raisonnement  par  l’absurde:   si  ECB  pas  u8lisé,  chaque  bloc  ne  réapparait  que  1/(2^64)  =   soit  5.10^-­‐18%  =  0,000000000000000005  %   devvar3  -­‐  @cceresola  

Slide 15

Slide 15 text

Analyse  1  :  SOPHOS     hYp://nakedsecurity.sophos.com/2013/10/04/adobe-­‐owns-­‐up-­‐to-­‐genng-­‐pwned-­‐login-­‐and-­‐credit-­‐card-­‐data-­‐probably-­‐stolen-­‐all-­‐passwords-­‐reset/   hYp://nakedsecurity.sophos.com/2013/11/04/anatomy-­‐of-­‐a-­‐password-­‐disaster-­‐adobes-­‐giant-­‐sized-­‐cryptographic-­‐blunder/)   E2a311ba09ab4707  =  ASCII  NUL  (fin  de  chaine  en  C)  +  7  NUL  bytes  (padding)   devvar3  -­‐  @cceresola  

Slide 16

Slide 16 text

Analyse  2  :  Troy  Hunt   hYp://www.troyhunt.com/2013/11/adobe-­‐creden^als-­‐and-­‐serious.html     7  365  869    sur  109  305  888  u^lisent  le  TOP100   devvar3  -­‐  @cceresola  

Slide 17

Slide 17 text

Analyse  2  :  Troy  Hunt   hYp://www.troyhunt.com/2013/11/adobe-­‐creden^als-­‐and-­‐serious.html     devvar3  -­‐  @cceresola  

Slide 18

Slide 18 text

Analyse  2  :  Troy  Hunt   hYp://www.troyhunt.com/2013/11/adobe-­‐creden^als-­‐and-­‐serious.html      ”The  presence  of  a  plain  text  password  hint  significantly   weakened  the  password  irrespec7ve  of  the  poor  cryptography   applied.[…]  When  matched  to  plain  text  passwords  from  other   breaches,  the  hint  oAen  disclosed  sensi7ve  personal   informa7on  which  wouldn’t  otherwise  have  been  gleaned.”   devvar3  -­‐  @cceresola  

Slide 19

Slide 19 text

devvar3  -­‐  @cceresola  

Slide 20

Slide 20 text

Analyse  3  :  Pivotal  Analy^cs   hYp://pv.tl/blog/2013/11/03/adobe-­‐password-­‐analysis/   devvar3  -­‐  @cceresola  

Slide 21

Slide 21 text

Analyse  3  :  Pivotal  Analy^cs   hYp://pv.tl/blog/2013/11/03/adobe-­‐password-­‐analysis/   Gmail  :  24  672  244  comptes   devvar3  -­‐  @cceresola  

Slide 22

Slide 22 text

Analyse  3  :  Pivotal  Analy^cs   hYp://pv.tl/blog/2013/11/03/adobe-­‐password-­‐analysis/   (24  672  644  –  5  711  479)   (18  960  765  –  18  882  224)   devvar3  -­‐  @cceresola  

Slide 23

Slide 23 text

Plus  près  de  chez  nous…  focus  «  .fr  »   (extrait  du  TOP100  «  domains  »)   Rappelez  vous:  51%  de  réu^lisa^on  des  mots  de  passe   + 3  millions  d’adresse  françaises  compromises   =   Possibilité  non-­‐négligeable  d’en  retrouver   dans  VOS  applis       devvar3  -­‐  @cceresola  

Slide 24

Slide 24 text

Analyse  4  :  XKCD   hYp://xkcd.com/1286/   hYp://xkcd.com/792/   devvar3  -­‐  @cceresola  

Slide 25

Slide 25 text

Stockage  des  mots  de  passe  :  bonnes  pra^ques   •  Ne  pas  chiffrer  la  base  de  données  avec  une  key  unique   •  Hasher  c’est  un  peu  mieux  mais  (hash  +  salt)  c’est  meilleur.   •  SHA1,  MD5,  SHA-­‐256…  conçus  pour  être  rapides…  bien  pour  du  contrôle   d’integrité  mais  pas  assez  bien  pour  protéger  des  mots  de   passe.     hYps://www.owasp.org/index.php/Password_Storage_Cheat_Sheet   hYp://www.vnsecurity.net/2010/03/codegate_challenge15_sha1_padding_aYack/   hYps://blog.skullsecurity.org/2012/everything-­‐you-­‐need-­‐to-­‐know-­‐about-­‐hash-­‐length-­‐extension-­‐aYacks     Que  faire  ?   devvar3  -­‐  @cceresola  

Slide 26

Slide 26 text

Stockage  des  mots  de  passe  :  bonnes  pra^ques   =>  Hash+salt  streching   •  Salt:  16  bits  minimum  généré  avec  une  bonne  source  d’alea   •  Algorithme  PBKDF2,  bcrypt,  scrypt  avec  HMAC-­‐SHA-­‐256     -­‐>  10000  itéra8ons  minimum  (1000  en  l’an  2000  !)   0,04  s  (hYps://defuse.ca/php-­‐pbkdf2.htm  )     •  Stocker  le  résultat  (256  bits)  avec  le  nombre  d’itéra7ons  et  le  salt   •  Augmenter  régulièrement  le  nombre  d’itera7on   (2/an,  reset  des  mots  de  passe,  désac8va8on  des  comptes)   h"p://nakedsecurity.sophos.com/2013/11/20/serious-­‐security-­‐how-­‐to-­‐store-­‐your-­‐users-­‐passwords-­‐safely/   devvar3  -­‐  @cceresola  

Slide 27

Slide 27 text

Stockage  des  mots  de  passe  :  bonnes  pra^ques   devvar3  -­‐  @cceresola  

Slide 28

Slide 28 text

Le  benchmarking  se  développe…   devvar3  -­‐  @cceresola   hYp://www.net-­‐security.org/secworld.php?id=16259    

Slide 29

Slide 29 text

“Cryptography  is  typically  bypassed,  not  penetrated”   Shamir  3rd  law   devvar3  -­‐  @cceresola   “There  are  two  types  of  cryptography  in  this  world:  cryptography  that   will  stop  your  kid  sister  from  reading  your  files,  and  cryptography  that   will  stop  major  governments  from  reading  your  files”   B.Schneier  

Slide 30

Slide 30 text

@cceresola   [email protected]   Merci  pour  votre   aYen^on.     Des  ques^ons  ?   devvar3  -­‐  @cceresola