Kali Linux Custom Raspberry Pi ® Script

Generating Kali Raspberry Pi Images

Kali Linux

“Kali Linux Raspberry Pi Image Updated”

Kali Linux Raspberry Pi Image Updated!” That was supposed to be the “tweet” we would release, telling everyone our new Kali Linux Raspberry Pi image was better than our old one. We often update our followers with news like this on Twitter and this tweet would be no different. However, this time, we thought it would be interesting to tell you about the mechanics of updates like these and shed some light on how these “news items” come about. This post will also give us the opportunity to describe the process of running our custom Kali Linux ARM build scripts, by way of a story. If you couldn’t care less about the story and just want the updated image – head straight to our Kali Linux Custom Image page!

Forever Lurking in IRC

Our Kali Linux dev team lurks around in the #kali-linux IRC channel on a regular basis, looking for interesting cases to support. Many times, these support sessions help uncover bugs or otherwise allow us to test hardware which we otherwise do not have access to. A few days ago, someone in the channel asked about the process of upgrading the Offsec generated Raspberry Pi kernel as their Netgear WNDA4100 (RT3573 chipset) USB wireless adapter was not supported by the current kernel. The driver for this chipset was apparently introduced in kernel 3.12.

Kali Amazon AMI for the Win

Unfortunately, I was in a place with a slow Internet connection and without my development environment…bummer. If only I could somehow quickly set up a remote machine with a good Internet connection as my build environment….but wait… I can! Hurray for Kali Amazon Images.

About 30 seconds later, i was SSH’d into a multiple CPU Amazon Image instance of Kali Linux. Now, my task is to rebuild the Kali Linux image using our Offsec build scripts and make the changes I need to in order to have an upgraded kernel in this image. I git cloned the Offsec ARM image scripts to the Amazon build machine and ran the build-deps.sh script, which installs all the dependencies needed for cross building our ARM images.

root@amazon:~# apt-get install git
root@amazon:~# git clone https://gitlab.com/kalilinux/build-scripts/kali-arm
root@amazon:~# cd kali-arm-build-scripts
root@amazon:~/kali-arm-build-scripts# ./build-deps.sh

Raspberry Pi Kernel Upgrade

Looking at Raspberry Pi rpi.sh script, I could see that this kernel upgrade would require a one line change – the line that git clones the stock Raspberry Pi kernel. So this line in the script:

git clone --depth 1 https://github.com/raspberrypi/linux ${basedir}/kernel

Would change to this:

git clone -b rpi-3.13.y --depth 1 https://github.com/raspberrypi/linux ${basedir}/kernel

With that change made, I could now re-run the rpi.sh script and generate a new Raspberry Pi image with a new, updated kernel.

Optimizing the Image for Size Constraints

Our previous Raspberry Pi image had an image size of 7GB with only 1.2 GB of data on it (as we stripped down the ARM images to bare minimum). What this means is that people with 4GB storage devices would not be able to use them, for no good reason. To deal with this, we can decrease the original image size and introduce a script such as rpi-wiggle, which expands the image and filesystem to the full size of the SD card. To implement these changes, we simply need to alter the hard-coded size of the image in the rpi.sh script:

size=3000 # Size of image in megabytes

…and then introduce the rpi-wiggle script into the /scripts directory inside the Raspberry Pi image.

# rpi-wiggle
mkdir -p ${basedir}/root/scripts
wget https://raw.github.com/dweeber/rpiwiggle/master/rpi-wiggle -O ${basedir}/root/scripts/rpi-wiggle.sh
chmod 755 ${basedir}/root/scripts/rpi-wiggle.sh

Once a user has dd’ed the image and booted the Raspberry Pi, they can run the script in /scripts/ to automatically resize their partitions:

root@kali:~# cd /scripts
root@kali:/scripts# ./rpi-wiggle.sh

Kernel 3.13 and Still no RT3573 Wireless

Once the updated image was rebuilt and kernel updated, the Netgear WNDA4100 still would not work – how annoying! A quick look at the kernel configuration file revealed the reason – the RT3573 kernel module was not selected. In fact, it seems that the default kernel configuration can be improved and have our Kali Linux Raspberry Pi image include a larger variety of wireless adapters.

root@kali:~# zcat /proc/config.gz |grep RT3573
CONFIG_RT2800USB_RT3573 is not set
root@kali:~#

Hey, Can I SSH to Your Box?

The easiest way to generate a new kernel config is probably through the ncurses menu configuration interface. The quickest way to do this would be to SSH to someones Raspberry Pi and generate a better config there…but would anyone agree? Surprisingly, yes. Some brave and trusting souls exist in #kali-linux and a few minutes later, I had a quick and dirty patch which included a few more wireless drivers into the default config. This patching routine was added to the rpi.sh build script and an hour or so later, a new image was ready – with added support for several wireless drivers.

root@amazon:~/kali-arm-build-scripts# ./rpi.sh custom
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id 44C6513A8E4FB3D30875F758ED444FF07D8D0BF6)
I: Retrieving Packages
I: Validating Packages
...

Stronger. Better. Faster.

Once these changes were well tested, we included these updates in the current rpi.sh script and pushed it to Github. The new Raspberry Pi image is available for download as a 1.0.6a release on the Offensive Security Custom Kali Image Download Page. Try it out!

Previous Post
Kali Linux ISO of Doom
Next Post
Kali Linux Trademarks

Related Posts

Menu
X Close

 

Certified Pentesting
Professional

OSCP
course starting at
$800 USD

Take Penetration Testing with Kali Linux to gain invaluable penetration testing skills and earn your OSCP.

  • Self-paced, online course
  • Includes certification exam fee
  • Access innovative virtual labs
  • Hands-on experience
  • Become an OSCP

Certified Pentesting
Expert

OSCE
course starting at
$1200 USD

Take Cracking the Perimeter to take your penetration testing skills to expert levels and earn your OSCE.

  • Self-paced, online course
  • Includes certification exam fee
  • Access innovative virtual labs
  • Hands-on experience
  • Become an OSCE

 

Certified Pentesting
Web Expert

OSWE
course starting at
$1400 USD

Take Advanced Web Attacks and Exploitation, to deep dive into web apps to earn your OSWE.

  • Self-paced, online course
  • Includes certification exam fee
  • Access innovative virtual labs
  • Hands-on experience
  • Become an OSWE

Certified Pentesting
Wireless Professional

OSWP
course starting at
$450 USD

Take Offensive Security Wireless Attacks to acquire knowledge about Wi-Fi attacks and earn your OSWP.

  • Self-paced, online course
  • Includes certification exam fee
  • Access innovative virtual labs
  • Hands-on experience
  • Become an OSWP

Certified Exploitation
Expert

OSEE
course starting at
See
Live Schedule

Take Advanced Windows Exploitation to develop exploits for Windows systems and earn your OSEE.

  • Live training course
  • Includes certification exam fee
  • Maximum instructor interaction
  • Highly challenging
  • Become an OSEE