<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:iweb="http://www.apple.com/iweb" version="2.0">
  <channel>
    <title></title>
    <link>http://www.willhackforsushi.com/Home/Home.html</link>
    <description> </description>
    <generator>iWeb 2.0.4</generator>
    <item>
      <title>No More iWeb</title>
      <link>http://www.willhackforsushi.com/Home/Entries/2009/5/2_No_More_iWeb.html</link>
      <guid isPermaLink="false">2c237b03-68ea-4f2b-83d9-f74eb8c8cf60</guid>
      <pubDate>Sat, 2 May 2009 21:17:35 -0400</pubDate>
      <description>This will be the last entry on the iWeb willhackforsushi.com site.  I've switched over to WordPress; you can visit the new site at &lt;a href=&quot;http://www.willhackforsushi.com/&quot;&gt;http://www.willhackforsushi.com&lt;/a&gt;.  The new RSS feed is at &lt;a href=&quot;http://www.willhackforsushi.com/%253Ffeed%253Drss&quot;&gt;http://www.willhackforsushi.com/?feed=rss&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;I'll keep the old site up for a while to minimize 404's.  Please &lt;a href=&quot;http://www.willhackforsushi.com/%253Fpage_id%253D87&quot;&gt;drop me a note&lt;/a&gt; with any questions.  Thanks!&lt;br/&gt;&lt;br/&gt;-Josh</description>
    </item>
    <item>
      <title>New Hacker Challenge: Brady Bunch Boondoggle</title>
      <link>http://www.willhackforsushi.com/Home/Entries/2009/2/7_New_Hacker_Challenge%3A_Brady_Bunch_Boondoggle.html</link>
      <guid isPermaLink="false">6ae2b0a1-3cc1-404c-8ec2-57866786b9b8</guid>
      <pubDate>Sat, 7 Feb 2009 11:56:09 -0500</pubDate>
      <description>A few months ago, Ed Skoudis asked me to write a hacker challenge.  After much thought, some new tools development and many hours of Brady Bunch DVD's, I am pleased to present the &lt;a href=&quot;http://www.ethicalhacker.net/content/view/234/2/&quot;&gt;Brady Bunch Boondoggle&lt;/a&gt;, hosted by the good guys at EthicalHacker.net. Of course, this challenge is filled with Brady Bunch lore, and some wireless prowess designed to amaze and confound.  Winners receive a free copy of CounterHack Reloaded, including a random drawing just for submitting your name, so check it out today!</description>
    </item>
    <item>
      <title>Decrypting DebIan-Vulnerable SSH Traffic</title>
      <link>http://www.willhackforsushi.com/Home/Entries/2009/2/3_Decrypting_DebIan-Vulnerable_SSH_Traffic.html</link>
      <guid isPermaLink="false">5b3a78f9-42a5-4225-a86a-db45444e4a56</guid>
      <pubDate>Tue, 3 Feb 2009 12:54:40 -0500</pubDate>
      <description>My favorite security flaw from 2008 is the &lt;a href=&quot;http://www.debian.org/security/2008/dsa-1571&quot;&gt;Debian OpenSSL vulnerability&lt;/a&gt;.  Lots of analysis work has been done to understand the ramifications of this flaw, interesting because the effect of the flaw lasts long after vulnerable systems have been patched. Full recovery requires that all keys generated on a vulnerable system be replaced.&lt;br/&gt;&lt;br/&gt;Lots of folks have experimented with &lt;a href=&quot;http://www.metasploit.com/users/hdm/tools/debian-openssl/&quot;&gt;HD Moore's precomputed SSH keys&lt;/a&gt;, allowing an attacker to quickly identify the private key of a vulnerable Debian OpenSSL implementation.  If you haven't looked at these tools, I recommend you setup a vulnerable VM, generate a SSH key with &quot;ssh-keygen -t dsa&quot; and use some of the scripts on the OpenSSL Toys page to attack the system (on the vulnerable system, remember to &quot;mv .ssh/id_pub.dsa .ssh/authorized_keys2&quot;).&lt;br/&gt;&lt;br/&gt;What got less attention is the ability to decrypt SSH traffic by brute-forcing the Diffie-Hellman (DH) session key of a vulnerable OpenSSL system, implemented by the great guys at &lt;a href=&quot;http://www.cr0.org/progs/sshfun/&quot;&gt;cr0.org&lt;/a&gt;.  Two of their tools can be used in tandem; ssh_kex_keygen which recovers the DH key when at least one system in the SSH exchange is running a vulnerable OpenSSL, and ssh_decoder which parses TCP stream information from the SSH exchange automatically.&lt;br/&gt;&lt;br/&gt;The folks at cr0 wrote their tools with the intention of recovering password-based authentication credentials against a vulnerable system, but it can also be used to decrypt an SSH packet capture when public/private key authentication is used.  In order to get the TCP stream information in a form useful for ssh_decoder to parser, we can use the&lt;a href=&quot;http://tcpick.sourceforge.net/&quot;&gt; tcpick&lt;/a&gt; tool on a packet capture file.&lt;br/&gt;&lt;br/&gt;To decrypt an OpenSSH session of a vulnerable OpenSSL implementation:&lt;br/&gt;&lt;br/&gt;1. Capture the OpenSSH exchange.  Unfortunately, tcpick has a bug which prevents it from correctly parsing 802.11 packet captures.  I've sent the tcpick author a patch that fixes this flaw, but until that gets merged, you can convert an 802.11 packet capture to an Ethernet/802.3 packet capture using wlan2eth, available at &lt;a href=&quot;http://www.willhackforsushi.com/code/wlan2eth/wlan2eth-0.1-src.tgz&quot;&gt;http://www.willhackforsushi.com/code/wlan2eth/wlan2eth-0.1-src.tgz&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;2. Extract the session you want to decrypt.  If you have a big packet capture, it's best if you target the exchange you want to attack.  Wireshark's Statistics -&gt; Conversations feature will allow you to select any of the TCP sessions in the capture.  Applying the session as a display filter (right-click on the TCP conversation, click Apply as Filter -&gt; Selected -&gt; A &amp;lt;-&gt; B).  Save the display filter results as a new packet capture (when clicking Save As, select &quot;Displayed&quot; in the Packet Range group in the &quot;Save file as&quot; dialog box.&lt;br/&gt;&lt;br/&gt;3. Convert the packet capture into two data streams representing the client and server communications using tcpick:&lt;br/&gt;&lt;br/&gt;$ tcpick -wRC -wRS -r ssh-sess.dump&lt;br/&gt;Starting tcpick 0.2.1 at 2009-02-02 23:00 EST&lt;br/&gt;Timeout for connections is 600&lt;br/&gt;tcpick: reading from ssh-sess.dump&lt;br/&gt;1      SYN-SENT       172.16.0.6:44388 &gt; 172.16.0.99:ssh&lt;br/&gt;1      SYN-RECEIVED   172.16.0.6:44388 &gt; 172.16.0.99:ssh&lt;br/&gt;1      ESTABLISHED    172.16.0.6:44388 &gt; 172.16.0.99:ssh&lt;br/&gt;1      FIN-WAIT-1     172.16.0.6:44388 &gt; 172.16.0.99:ssh&lt;br/&gt;1      TIME-WAIT      172.16.0.6:44388 &gt; 172.16.0.99:ssh&lt;br/&gt;1      CLOSED         172.16.0.6:44388 &gt; 172.16.0.99:ssh&lt;br/&gt;tcpick: done reading from ssh-sess.dump&lt;br/&gt;$ ls&lt;br/&gt;eth-sess.dump&lt;br/&gt;tcpick_172.16.0.6_172.16.0.99_ssh.clnt.dat&lt;br/&gt;tcpick_172.16.0.6_172.16.0.99_ssh.serv.dat&lt;br/&gt;&lt;br/&gt;4. Grab ssh_kex_keygen from &lt;a href=&quot;http://www.cr0.org/progs/sshfun/&quot;&gt;cr0.org&lt;/a&gt;.  Compile the tool by running &quot;make&quot;.&lt;br/&gt;&lt;br/&gt;5. I ended up running into problems with the ssh_decoder tool causing it to fail in parsing the tcpick SSH session data.  I chatted with the guys at cr0.org about it, but for some reason the only mailing address I have for them is only returning undeliverable.  These hacks aren't a 100% fix, but it works fairly reasonably.  In the ssh_kex_keygen-1.1/ directory, grab my version of ssh_decoder.rb:&lt;br/&gt;&lt;br/&gt;&lt;a href=&quot;http://www.willhackforsushi.com/code/ssh_decoder.rb&quot;&gt;www.willhackforsushi.com/code/ssh_decoder.rb&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;6. Ready to go; run ssh_decoder specifying the number of CPU's available to brute-force the DH key with the -n argument, specify -s if the server is vulnerable or -c if the client is vulnerable and the tcpick .dat files.  On my Core Duo laptop, I run the script like this:&lt;br/&gt;&lt;br/&gt;$ ruby ssh_decoder.rb -s -n2 ../tcpick*.dat&lt;br/&gt; * read handshake&lt;br/&gt;cipher: aes128-cbc, mac: hmac-md5, kex_hash: sha256, compr: none&lt;br/&gt; * bruteforce DH&lt;br/&gt;DH shared secret : 480a7ee6d32d09fb5a6a931ba0fca33e ... &amp;lt;trimmed&gt; ...&lt;br/&gt; * derive keys&lt;br/&gt; * decipher streams&lt;br/&gt; * successful authentication packet&lt;br/&gt;{:testic=&gt;1,&lt;br/&gt; :username=&gt;&quot;username&quot;,&lt;br/&gt; :keytype=&gt;&quot;ssh-dss&quot;,&lt;br/&gt; :key=&gt;&lt;br/&gt;  {:type=&gt;&quot;ssh-dss&quot;,&lt;br/&gt;&amp;lt;trimmed&gt;&lt;br/&gt; :nextservice=&gt;&quot;ssh-connection&quot;,&lt;br/&gt; :auth_method=&gt;&quot;publickey&quot;}&lt;br/&gt; * deciphered streams saved to &quot;sshdecrypt.0.client.dat&quot; &amp;amp; &quot;sshdecrypt.0.server.dat&quot;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The output files sshdecrypt* represent the plaintext data of the vulnerable OpenSSH/OpenSSL implementation.  If both the client and server are vulnerable, then you'll have plaintext data in both.  If only one end of the session is vulnerable, then one file will be encrypted and the other will be plaintext.&lt;br/&gt;&lt;br/&gt;One sesiously missing tool to round out this vulnerability is a mechanism to decrypt a non-vulnerable OpenSSH server implementation when the public/private keypair is known.  Unfortunately, to the best of my knowledge, there is no method to decrypt a non-vulnerable OpenSSH session.  This is something I'm working on, and will post more information here as I get things working.&lt;br/&gt;&lt;br/&gt;-Josh</description>
    </item>
  </channel>
</rss>

