lundi 26 septembre 2011

CTF Quals CSAW 2011 - Networking Patch Management

Salut à tous !
On continue avec les writeups du CSAW CTF ! Un challenge "networking", patch management à 400 pt.

  1. What ?

    On nous fournit un fichier "capture.pcap" que vous pouvez retrouver sur shell-storm ici On go sur wireshark et on look :


    On voit les versions du client et du serveur. Si vous ne connaissez pas la fameuse vuln OpenSSL de 2008 que l'on peut retrouver en détails ici, en mettant la version du client sur Google, on arrive rapidement à cette vuln.
    Maintenant il faut exploiter cette vuln pour dechiffrer la conversation.

  2. Déchiffrement

    En premier, on va séparer le traffic client et serveur. Pour celà, on va utiliser tcpick que l'on peut télécharger ici puis cette commande :

    1. keysec@debian:/media/DATA/Devs/CSAW$ tcpick -wRC -wRS -r capture.pcap
    2. Starting tcpick 0.2.1 at 2011-09-26 20:34 CEST
    3. Timeout for connections is 600
    4. tcpick: reading from capture.pcap
    5. 1      SYN-SENT       192.168.0.119:58214 > 192.168.0.222:ssh
    6. 1      SYN-RECEIVED   192.168.0.119:58214 > 192.168.0.222:ssh
    7. 1      ESTABLISHED    192.168.0.119:58214 > 192.168.0.222:ssh
    8. 1      FIN-WAIT-1     192.168.0.119:58214 > 192.168.0.222:ssh
    9. 1      TIME-WAIT      192.168.0.119:58214 > 192.168.0.222:ssh
    10. 1      CLOSED         192.168.0.119:58214 > 192.168.0.222:ssh
    11. tcpick: done reading from capture.pcap
    12.  
    13. 74 packets captured
    14. 1 tcp sessions detected

    Maintenant on a besoin de 2 tools, ssh_kex_keygen disponible sur le site de l'auteur Raphael Rigo ici et ssh_decoder.rb ici.
    Copiez ssh_decoder.rb dans ssh_kex_keygen/, vous pourrez ensuite utiliser ssh_decoder.rb sans problèmes :

    1. keysec@debian:/media/DATA/Devs/CSAW/ssh_kex_keygen-1.1$ ssh_decoder -c -n2 ../tcpick_192.168.0.119_192.168.0.222_ssh.*
    2.  * read handshake
    3. cipher: aes128-cbc, mac: hmac-md5, kex_hash: sha1, compr: none
    4.  * bruteforce DH
    5. DH shared secret : 028b79a7ee617e11fe3cc5600b93b9423e75c494dcc5e12fed2d99864dd940838c09f77f62356d600c32a37c9e585b21fa0f9c11dc97f7bac6a9a8864fe55a210048c149ae9bf3c6399a8c162bb7cbf1cf7678b34ffe7c118ee34a1239fb4b9d960b6746e60a456a0284c0e2210b837c554c9ef857b6f25ea106422c881c08aa
    6.  * derive keys
    7.  * decipher streams
    8.  * successful authentication packet
    9. {:key=>
    10.   {:g=>
    11.     "l\232\203\271\265$'\003g\000\317\335\003\222\304\f\357h\f^\016\311\261\023\001JR\352\363\262\3556\251\227$FB\307\344\370\277u\362\017d\003\222\227v\305\034\363\220Sz<\"\232\003\235\025\210B\240%\3114\021Cu\017\340\317\306\221\306\241\217\025O\254\230\004\212\311\204\263\206\224\004\317\035{\271\262\027J\373\350\325P\201\226\364K{\242\2747\"\274\243\257\002D\2743\231`wc\b\312\276D\3614\022",
    12.   :type=>"ssh-dss",
    13.   :p=>
    14.    "\000\207\364\bvQR\300$U\371\317``\322\021\037X\235P\032\261\244\277\352\327\277\247O\020\253\b\250z#3\004\223\022\021\256\237\203\253*mh;\311\323\031\302\005\025\204o6\270\"*\256\244\027s\242Q\020j\nb\234\"\252\372\2415x\273?U1\bj\237\270J\a6\350\246n\027\322\"6\022\311\310\374F\346P<\261A\266*\320\333C\304\004X\300\217\241g\267\334}\005\026\345}\223aXD\255",
    15.    :q=>"\000\260~\350\024\215\231t\206>\233\324\212_\206\322Q\0066(\225",
    16.    :y=>
    17.     "\016\371O\332\bw\276\300\367\373\350\3223XX\205\340W\267r\246\f\265\0349}1Q>\245r\021\262\244\004\3437\"\377\247\257\344\304\344EP\250\021k'\261$N\346\230\321\273hTq?O\274\335\260)\266[<L \231\b%\367\262\353\307\002\b\026\20148\004\352\036\a]\025\204\300\210W{\035YML>\311\274\024I\307N:\375\264\340\000\346\331\023\301N\002\327\263\026\217p\233\300\230@\351\333"},
    18.  :testic=>1,
    19.  :username=>"mosdef",
    20.  :keytype=>"ssh-dss",
    21.  :nextservice=>"ssh-connection",
    22.  :auth_method=>"publickey"}
    23.  * deciphered streams saved to "sshdecrypt.client.dat" & "sshdecrypt.server.dat"
    24.  


    On aurait obtenu les 2 conversations en clair si les 2 versions d'OpenSSL utilisées étaient vulnérables, mais dans notre cas seul la version du client est vulnérable, on retrouve donc le plaintext dans le fichier sshdecrypt.0.server.dat

    On retrouve la clé dans le fichier : key{you_broke_ssh_im_calling_teh_cops}

Aucun commentaire:

Enregistrer un commentaire