190 likes | 332 Views
Distributed WPA Cracking CSCI5673 - Distributed Systems Spring 2011 University of Colorado. Rodney Beede Ryan Kroiss Arpit Sud. 2011-05-02. Topics. The Team Introduction WPA 1/2 Architecture Master Node Worker Node Test Methodology Results & Conclusions Future Work Questions.
E N D
Distributed WPA CrackingCSCI5673 - Distributed SystemsSpring 2011University of Colorado Rodney Beede Ryan Kroiss Arpit Sud 2011-05-02
Topics • The Team • Introduction • WPA 1/2 • Architecture • Master Node • Worker Node • Test Methodology • Results & Conclusions • Future Work • Questions
Introduction • Cracking WiFi • WEP - easy • WPA - hard • Brute Force • Not practical • 8 character minimum • Dictionary • Common passwords • coWPAtty by Joshua Wright • Generate rainbow table • Search rainbow table
Introduction - Our Idea • Distributed key generation • Already done • Distributed table lookup • Not done • Web service • Fast lookup • Modify existing code
WPA a.k.a. WPA1 • WPA stands for WiFi Protected Access • Meant to replace WEP • WEP failed to meet its security goals • Comes in two flavours • WPA-PSK* (Pre-Shared Key) which uses TKIP • WPA-Enterprise more secure but requires RADIUS authentication server * also known as WPA-Personal
WPA2 • Successor to WPA • Makes PSK more secure as it uses CCMP instead of TKIP • Both WPA-PSK and WPA2-PSK are susceptible to password cracking attacks • No known attacks against Enterprise flavors • The Lesson is....
Attacking WPA-PSK • Authentication handshake required for cracking WPA-PSK • Authentication handshake happens when a client connects to AP (and also when the client "thinks" it is no longer authenticated) • Packet capture is 3-step process • Place wireless card in monitor mode("listen all") • Start packet capture • Send a deauthentication packet to wireless client to induce authentication handshake • A script is provided that performs the above 3 steps
Master Node • Java web application • Accepts jobs • Upload .cap file • SSID name • Queues job • Runs 1 at a time • Tracks worker status • NOT LOADED • LOADED • RUNNING • FINISHED • ERROR
Master Node (cont) • Start / Kill worker clients • Remote ssh • Hand out table offsets • Records web app log • Job Run • User submits job • Master saves to NFS share • Master tells workers • When ready • TCP packet • Location of files and output destination • Master checks SOLUTION file
Worker Node • Started by master • Loads rainbow table into memory • 1000 files x 40MB = 40GB (5GB per worker) • Giant byte array with pointers per SSID • Creates socket to listen for messages from master • Possible message types • START • STATUS • KILL
Worker Node (cont) • STATUS - returns worker status • KILL - kills current job (if applicable) • START command creates new thread • Looks up SSID • Finds corresponding portion of rainbow table • Leverages coWPAtty for password look up • If password is found • Worker outputs solution to file • Master tells other workers to stop • Otherwise, workers report FINISHED after reading through table
Original coWPAtty • Read records in rainbow table • Records contain length, passphrase, and PMK • PMK -> PTK (requires capture data) • PTK -> MAC • Grab key MIC • Compare with MIC found in capture data
Serial Run once and done Reads data from disk Runs on one machine Quick start-up time Less opportunity for optimizations Distributed Runs as a service Loads data into memory Runs on N machines Slow start-up time More opportunity for optimizations Serial versus Distributed
Test Methodology • 996,358 word rainbow table • 1,000 SSIDs • 40MB / SSID • 40GB total size • 8 worker nodes • 1 master node • Cisco C210 M1 (on loan from Cisco) • Two Intel Xeon E5540 (2.5GHz) • 8 logical CPUs • 72GB RAM • Sixteen 10K RPM SAS 6.0 gbps 146GB drives • RAID5
Test Methodology (cont) • Packet capture data with SSID linksys available in SVN • Test data created with the following keys: • First in Dictionary: !8zj39le • Middle in Dictionary: }ttringe • Last in Dictionary: korrelie • Gathered data for time taken to find solution from Master and worker logs • Compared to original coWPAtty running on a single node • Results shown on next slide are average of times recorded by the 3 of us
Results & Conclusions • First in dictionary • Serial = 8 milliseconds • Distributed = 5 milliseconds • Middle in dictionary • Serial = 3056 milliseconds • Distributed = 742 milliseconds • Last in dictionary • Serial = 6014 milliseconds • Distributed = 767 milliseconds • Seemingly small • Scalable • Ideal for web service
Future Work • GUI client for data capture • Distribute table generation • Hybrid disk/memory approach • Thousands of heterogeneous clients • Like SETI@HOME • Rewrite in Java or C++ • Simpler code • Improved data structures
Questions? http://code.google.com/p/distributed-wpa-cracking/ Tips for a secure PSK wireless network: • Use a unique SSID (not linksys or home) • Have a long* & unique key; use special characters *max. 63 characters