Raspberry Pi with Kali Linux: Implementation, Coding and Advanced Networking

Duration:

10 Days*

Audience:

This class is strictly available to Government Agencies and Law Enforcement Personnel.

Course Overview:

Advanced Linux Networking Implementations Using Raspberry Pi, Python3, Scapy, and Linux bash shell scripting.  This course consists of some lecture, but mostly is hands-on.

  • Raspberry Pi and Adafruit GPS – Hardware, building, installing, configuring
  • TCP/IP Networking, including subnetting IPv4 and IPv6
  • Routing & Switching
  • Configuring Networking on Linux (routing, NAT, bridging, firewalling)
  • SSH & AutoSSH
  • Linux Screen
  • IPtables
  • Python3 (variables, lists, tuples, sets, dictionaries)
  • Scapy
  • Python3/MySQL integration
  • BASH scripting (variables, scripting using if/then, for & while loops, case, functions)
  • More BASH scripting (awk, sed, tr, cut, sort)
  • Geolocation using Google APIs

Prerequisites:

This is a moderate-to-advanced level course. Assumptions we make about people attending this course:

  • You don’t need to be an expert at the Linux command line but knowledge of the basics is assumed (cd, mv, cp, ls, rm, etc.). Unless absolutely necessary, we don’t us a GUI on our Raspberry Pis.
  • A basic understanding of IP networking is assumed but you don’t have to be an expert on day one.

However, this is not an ‘intro to networking’ course. After a brief review, we break into a sprint.

Detailed Course Outline:

  • Build your own Raspberry Pi, including image setup, configuration, case building and the soldering necessary to connect a GPS HAT.
  • Explore the hardware architecture of the Raspberry Pi to include an understanding of the use of the GPIO pins.
  • A detailed and thorough review of TCP/IP networking, especially as it relates to understanding physical and logical addressing, node behavior on network segments and a practical analysis of why we care about the structure and content of headers. Our ability to interpret and/or modify these headers is fundamental to achieving a variety of security objectives, especially edge-case scenarios that are atypical of ‘normal’ networking.
  • Subnetting IPv4 and IPv6 for LAN segments and for larger enterprise deployments. IPv4 subnetting is must-have knowledge for any form of network/security professional.
  • A detailed discussion and hands-on analysis of how IPv6 works. We explore IPv6 address types, as well as the behavior of nodes in an IPv6-capable network.
  • A detailed overview of IP routing (v4 and v6) and ethernet switching.
  • Configuring IPv4 and IPv6 on Linux systems. We fully explore the files and services involved in Linux networking and how to configure them to achieve a variety of networking objectives. You will learn how to configure your Raspberry Pi to be a NAT, a firewall, a bridge and both an IPv4 and IPv6 router.
  • Configuring WLAN networking profiles, especially on systems that are NOT using Network Manager (but we cover that, too!)
  • Linux Screen. An insanely powerful tool for those who need to connect to a remote system and do a lot of different things. By the time you leave class, you’ll be a screen virtuoso.
  • A rigorous analysis of SSH use on Linux systems. How is the service configured, what are the options, where are the relevant key files and how do you use them to achieve your security objectives. We cover it all, including local and remote SSH forwarding (i.e. SSH tunneling).
  • AutoSSH – We thoroughly dissect autossh and configure your Raspberry Pi to use it throughout class. Using cloud VPS instances you create during class you will configure AutoSSH and understand its inner workings so you can always get back in to your Pi.
  • IPtables: The Linux firewall. It’s incredibly powerful but all that power comes with some complexity. We dissect it all and get you configuring IPv4 and IPv6 firewall rules to control traffic flows, translate traffic and mangle packets.
  • Python3 – We make no assumptions about your python3 knowledge so we start from the beginning but we move fast, with an emphasis on you doing what it takes to learn to code your own tools: by writing code. This course is jam packed with python3 and, whenever possible, an emphasis on its use in networking/wireless scenarios is illustrated and emphasized. You will learn:
    • Variables
    • Functions
    • Lists, Tuples and Sets
    • Dictionaries
    • Regular Expression usage in python
    • Working with files
    • Interacting with the OS
    • Dissecting web pages using BeautifulSoup
    • Automating SSH login and command execution using python
    • Regular Expressions (RegEx). You will learn the fundamentals of regular expressions and develop the ability to create pattern matching RE’s of your own to help with whatever it is you’re trying to find. Are you looking for MAC addresses, IPv4/IPv6 addresses, DNS FQDNs, email addresses, phone numbers, uncommented values in a file? There’s a Regex for that. You’ll learn how to make your own and then save them for easy reuse in your python code.
  • Python3 and Scapy – You learn how to use scapy to forge your own packets, capture packets (including using BFP filters) and even write your own WLAN analysis tools. Once you harness scapy fundamentals, you are limited only by your imagination.
  • Integrating MariaDB/MySQL and python with an emphasis on using scapy to capture WLAN data and write desired information to a database. This includes learning to install and setup MariaDB/MySQL on your Raspberry Pi, create databases, tables, and then manage them. You will also learn to use python to create tables and read/write/delete records to/from the database.
  • Kismet 2018 – You will learn to install and configure the new version of Kismet (Kismet 2018) on a Raspberry Pi and configure it to start on boot.
  • Shell Scripting using Linux bash – You will learn the fundamentals of Linux IO (STDIN, STDERR, STDOUT), variables, wildcards, the power of backticks, test, as well as:
    • if/then statements
    • for loops
    • while loops
    • case
    • functions
    • awk, sed, tr, cut, sort and xargs
  • Using Google’s Geolocation APIs in order to programmatically get
    • Latitude & Longitude when only WLAN signals is available
    • Get a street address from LAT/LON coordinates
    • Get a street address when only WLAN signal is available.

*Course length can be customized to your group’s needs.