Giter VIP home page Giter VIP logo

airbash's Introduction

airba.sh

Codacy Badge

Airbash is a POSIX-compliant, fully automated WPA PSK PMKID and handshake capture script aimed at penetration testing. It is compatible with Bash and Android Shell (tested on Kali Linux and Cyanogenmod 10.2) and uses aircrack-ng to scan for clients that are currently connected to access points (AP). Those clients are then deauthenticated in order to capture the PMKID and/or handshake when attempting to reconnect to the AP. Verification of captured data is done using hcxpcaptool and hcxpcapngtool from hcxtools by ZeroBeat. If one or more PMKIDs and/or handshakes are captured, they are entered into an SQLite3 database, along with the time of capture and current GPS data (if properly configured).

After capture, the database can be tested for vulnerable router models using crackdefault.sh. It will search for entries that match the implemented modules, which currently include algorithms to compute default keys for Speedport 500-700 series, Thomson/SpeedTouch, UPC 7 digits (UPC1234567) and HOTBOX routers.

For more information on the PMKID attack, New attack on WPA/WPA2 using PMKID is a good read.

Sample Run

asciicast

Requirements

WiFi interface in monitor mode (on Android this can be achieved by using bcmon if the device is compatible)

aircrack-ng (for Android android_aircrack prebuilt binaries can be used)

SQLite3 (Android: installed by default on CyanogenMod 10.2)

openssl for compilation of modules and hcxtools

hcxpcaptool and hcxpcapngtool from hcxtools for detection of PMKIDs and/or handshakes and conversion to hashcat formats

In order to log GPS coordinates of access points, configure your coordinate logging software to log to .location/_.txt (the filename can be chosen as desired). Airbash will always use the output of cat "$path$loc"*.txt 2>/dev/null | sed '2q;d', which equals to reading all .txt files in .loc/ and picking the second line. The reason for this way of implementation is the functionality of GPSLogger, which was used on the development device.

Calculating default keys

After capturing a new PMKID or handshake, the database can be queried for vulnerable router models. If a module applies, the default keys for this router series are calculated and used as input for aircrack-ng to try and recover the passphrase.

Compiling Modules

The modules for calculating Thomson/SpeedTouch and UPC1234567 (7 random digits) default keys are included in src/

Credits for the code go to the authors Kevin Devine and mailto:[email protected].

On Linux:
gcc -fomit-frame-pointer -O3 -funroll-all-loops -o modules/st modules/stkeys.c -lcrypto
gcc -O2 -o modules/upckeys modules/upc_keys.c -lcrypto

In order to enable auto detection, please move the binaries to airbash/bin (will be added to PATH during execution) or a directory that's on PATH.

If on Android, you may need to copy the binaries to /system/xbin/ or to another directory where binary execution is allowed.

Usage

Running install.sh will create the database, prepare the folder structure and create shortlinks to both scripts which can be moved to a directory that is on $PATH to allow execution from any location.

After installation, you may need to manually adjust INTERFACE on line 46 in airba.sh. This will later be determined automatically, but for now the default is set to wlan0, to allow out of the box compatibility with bcmon on Android.

./airba.sh starts the script, automatically scanning and attacking targets that are not found in the database. ./crackdefault.sh attempts to break known default key algorithms.

To view the database contents, run sqlite3 .db.sqlite3 "SELECT * FROM hs" in the main directory.

Update (Linux only ... for now)

Airbash can be updated by executing update.sh. This will clone the master branch into /tmp/ and overwrite the local files.

Output

_n: number of access points found

__c/m: represents client number and maximum number of clients found, respectively

-: access point is blacklisted

x: access point already in database

?: access point out of range (not visible to airodump anymore)

The Database

The database contains a table called captures with seven columns.

id: incrementing counter of table entries

latitude and longitude: GPS coordinates of the handshake (if available)

bssid: MAC address of the access point

essid: Name identifier

pmkid: WPA PMKID, if captured

psk: WPA Passphrase, if known

processed: Flag that gets set by crackdefault.sh to prevent duplicate calculation of default keys if a custom passphrase was used.

Currently, the SQLite3 database is not password-protected.

Contributing

Contributions are very welcome, especially additional modules to be able to crack more default keys. A template module is included in modules/. crackdefault.sh contains a template elif statement to include the new module.

If you want to contribute, make sure your code is licensed under the MIT License (like this project). When contributing shell scripts, please make sure the code is POSIX-compliant. Other than that, just open up an issue briefly describing the changes and create a pull request!

Contributors: D4rk4 (committed the HOTBOX module!)

airbash's People

Contributors

codacy-badger avatar d4rk4 avatar tehw0lf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

airbash's Issues

Airodump_Bin Errors

I get these errors everytime i run airba.sh:

airba.sh: line 95: 2688 Killed "$AIRODUMP_BIN" -w $path$ofile -o csv $INTERFACE &> /dev/null 
_1/4
 __1/4
 _2/4 
airba.sh: line 103: 2752 Killed "$AIRODUMP_BIN" -c $c --bssid $i -w $path$i -o pcap $INTERFACE &> /dev/null 
__3/4 
_3/4 
airba.sh: line 103: 2873 Killed "$AIRODUMP_BIN" -c $c --bssid $i -w $path$i -o pcap $INTERFACE &> /dev/null 
__2/4 
_4/4 
airba.sh: line 103: 2997 Killed "$AIRODUMP_BIN" -c $c --bssid $i -w $path$i -o pcap $INTERFACE &> /dev/null 
__4/4 
airba.sh: line 103: 3127 Killed "$AIRODUMP_BIN" -c $c --bssid $i -w $path$i -o pcap $INTERFACE &> /dev/null 
_______ 1!

What do these errors indicate?

Add interface variable

The interface is currently hardcoded to wlan0. Using a variable will make the code more flexible.

Add backend with HTTP API

To use the new frontend, we need a tested backend that enables interaction with the database.

This includes updating the readme with instructions on how to compile and run the backend.

When starting airbash, we might want to start the backend automatically if it has been compiled previously.

Fix database interaction

The database interaction in the modules are not up to date, preventing passphrases from being saved to the database.๏ปฟ

Replace wlanhc2hcx with hcxpcaptool

Even though hcxpcaptool is already deprecated, it is a great tool that provides conversion of capture files to both .hccapx format and PMKID hash format, amongst other useful information.

It also supports checking for handshakes/PMKIDs substantially faster than aircrack-ng.

The packet captures done with airodump-ng can contain PMKIDs already, if the access point is compatible. Now we can detect them ๐ŸŽ‰

Add modules

The modules section is permanently open to pull requests to pwn more default keys!

A template module is included in modules. crackdefault.sh contains a template elif statement to include the new module.

Contributing a module generally means to gather an existing open source implementation that exploits a weak key algorithm for a specific router series, which can be used to generate default passwords. In case the implementation is not a shell script but needs to be compiled, README.md should be updated with compilation instructions instead of providing pre-built binaries.

Please ensure that all shell scripts are POSIX-compliant and licensed under the MIT License.

error init.csv

i get this error why?

airba.sh: line 144: /home/max/tools/airbash/initlist-01.csv: No such file or directory
airba.sh: line 148: /home/max/tools/airbash/initlist-01.csv: No such file or directory

Verbose mode

The current output is designed with obscurity in mind, so that even if the user is being watched while using the script, it's not blatantly obvious what is happening.

This decision was based on the idea that airbash was to be used in wardriving (or rather warwalking, considering the fact that the user needs to stay in the range of the initial scan in order to get results).

When operating on Linux, though, we might want to be more verbose instead of only showing lines and numbers.

The current way should not be removed though, so there should be a command line argument for choosing display mode. On Linux, we may then default to the verbose output.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.