Currently working as a Senior Consultant at Netcompany spending my full-time job solving the SharePoint riddles. In the free time I'm expanding my understanding of cybersecurity through hacking activities. Git fanboy.
I can't guarantee any model would have enough calculation power - but I think version 3 would be sufficient. I'm using the Raspberry Pi 4B - which I finally received as a reward for the most interesting write-up from the DataDog CTF.
SD Card
Officially recommended card size is 16GB with a Class 10. I would say 32GB is an optimal - and maybe a minimum when you are going for GUI.
Remember that SD card is the weakest link in this setup, be prepared that sooner or later you will have to replace the SD card. Make frequent backups.
Second system
Connected to the same network as Raspberry Pi. Needed to handle first configuration and write a Kali image on SD.
Official Kali Linux ARM image
Plain and simple - go to download pages and grab an image for your Raspberry.
Download image
">
I'm having a Raspberry Pi 4B, and I'm choosing the 32bit version, so I'm downloading the Raspberry Pi 2, 3, 4 and 400 (32-bit) version.
Remember to verify your download. For that copy, the SHA256sum and save it in the following format:
I want to reduce overhead on the device, so I'm deciding to run the Kali only via SSH.
Dynamic IP
Leave dynamic IP settings using DHCP if you are planning moving your Raspberry between locations.
After connecting it to network (via Ethernet cable) first thing you should do is running nmap ping sweep from other system connected to the same network to find out what IP address got assigned to Raspberry.
$ nmap.exe -sn 192.168.1.1/24
Local private networks are most often configured as 192.168.*.* or 10.*.*.* so you also have to figure that out by discovering IP address and Gateway address for the other system (ip addr or ipconfig /all).
Alternatively, you can run following commands to use the Product info from MAC Address Vendor info
# Ubuntu and Mac OS# may require `sudo apt install net-tools`
arp -na | grep -i "b8:27:eb"
arp -na | grep -i "dc:a6:32"# Raspberry Pi 4# Windows
arp -a | findstr b8-27-eb
arp -a | findstr dc-a6-32 # Raspberry Pi 4
Static IP
If you are setting up the Raspberry to be connected only to one network, you can assign it the static IP, so you can skip the discovery step each time the device is powered on.
$ sudo nano /etc/network/interfaces
Find the line
iface eth0 inet dhcp
And replace it with this, where address fits within network range dedicated by mask and gateway address.
In this example I could choose any IP in range 192.168.0.2-254 (excluding existing IP reservations). 192.168.0.1 is a gateway address and 192.168.0.255 is a broadcast address on mask 255.255.255.0 (or /24 in CIDR notation) Read more in the subnetting overview here.
Or setup it on your gateway - in my DHCP settings I can specify MAC address to have the same IP every time it is connected.
Set up DNS
Right now, you don't have the connection to the Internet (unless you have a DNS Server at default configuration).
$ sudo nano /etc/resolv.conf
nameserver 8.8.8.8
Resize partition
Most probably that you have installed the Kali on the SD Card bigger than 10GB, so right now you have much unused space and - like me - you can encounter space issue when running next steps.
If we would not use Raspberry Pi dedicated image, this process would be more complicated (but not too complicated). I have linked some gudies in the Additional readings) section.
Simply run
sudo raspi-config --expand-rootfs
After that completes, you will be asked to restart the device. Type sudo reboot and connect again after Raspberry is booted and SSH service is running.