Mit den Worten von Wikipedia, Metasplit ist ein “freies Open-Source-Projekt zur Computersicherheit, das Informationen über Sicherheitslücken bietet und bei Penetrationstests sowie der Entwicklung von IDS-Signaturen eingesetzt werden kann.” Es ist in der Programmiersprache Ruby implementiert, ja es gibt auch eine JavaGui. Dazu später mehr.
Wie wird das nun aber auf einen Raspberry P Zero W installiert?
Ein Github Account und ein aktuelles Debian ist Vorraussetzung.
# System updaten sudo apt-get update sudo apt-get upgrade # ein paar Abhängigkeiten die evl. noch nicht vorhanden sind installieren sudo apt-get -y install \ screen \ build-essential zlib1g zlib1g-dev \ libxml2 libxml2-dev libxslt-dev locate \ libreadline6-dev libcurl4-openssl-dev git-core \ libssl-dev libyaml-dev openssl autoconf libtool \ ncurses-dev bison curl wget postgresql \ postgresql-contrib libpq-dev \ libapr1 libaprutil1 libsvn1 \ libpcap-dev # Key von Michal Papis installieren command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - # Ergebnis: # gpg: key 3804BB82D39DC0E3: public key "Michal Papis (RVM signing) " imported # gpg: Total number processed: 1 # gpg: imported: 1 # gpg: marginals needed: 3 completes needed: 1 trust model: pgp # gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u # gpg: next trustdb check due at 2019-12-26 # Ausführen des bash Script zum installieren von Ruby 2.4.1 curl -L https://get.rvm.io | bash -s stable --ruby # es werden die folgenden Schritte ausgeführt: # # rvm_install_initialize # rvm_install_commands_setup # rvm_install_default_settings # rvm_install_parse_params "$@" # rvm_install_validate_rvm_path # rvm_install_validate_volume_mount_mode # rvm_install_select_and_get_version # rvm_install_main # rvm_install_ruby_and_gems # # Stunden später da das compilieren dauert ... # # ... # To start using RVM you need to run `source /home/pi/.rvm/scripts/rvm` # in all your open shell windows, in rare cases you need to reopen all shell windows. # Ok, dann einmal: source /home/pi/.rvm/scripts/rvm # dann noch eine Default-Gemset erzeugen mit rvm use --create --default 2.4.1@msf # das geht schnell, Ergebnis: # ruby-2.4.1 - #gemset created /home/pi/.rvm/gems/ruby-2.4.1@msf # ruby-2.4.1 - #generating msf wrappers.......... # Using /home/pi/.rvm/gems/ruby-2.4.1 with gemset msf # nun erzeugen wir uns noch ein Verzeichnis für Metasploit mkdir metasploit # und wechseln dahin cd metasploit # nun erzeugen wir auf dem Pi einen SSH Key und hinterlegen in auf GitHub zum clonen des Metasplit repo # erzeugen des Keys, mit einem guten Passwort ssh-keygen -t rsa -f ~/.ssh/github # anlegen der .ssh/confi Datei mit dem Github eintrag: vi ~/.ssh/config Host github.com IdentityFile ~/.ssh/github # unter Personal Settings - SSH keys - New SSH Key geben wir den Inhalt der Datei ~/.ssh/github ein # dann können wir das Repo von Github clonen git clone [email protected]:rapid7/metasploit-framework.git . # Wir werden dann nach dem Key Passwort gefragt, und geben es ein. # nach ein 10 Minuten wenn alles abgeschlossen ist, starten wir die Datenbank sudo /etc/init.d/postgresql start # Ergebnis: # Starting postgresql (via systemctl): postgresql.service. # dann legen wir noch einen eigenen DB User mit Passwort an sudo su postgres createuser msf_user -P # und die DB createdb --owner=msf_user msf_database exit # nun brauchen wir noch einen bundler 1.16.1, den wir installieren mit gem install bundler # Ergebniss # Fetching: bundler-1.16.1.gem (100%) # Successfully installed bundler-1.16.1 # Parsing documentation for bundler-1.16.1 # Installing ri documentation for bundler-1.16.1 # Done installing documentation for bundler after 173 seconds # 1 gem installed # jetzt fehlt noch rake 12.3.0 gem install rake # und Ascii85 gem install Ascii85 # und concurrent-ruby-1.0.5 gem install concurrent-ruby # und i18n-0.9.1 gem install i18n-0.9.1 # und minitest-5.10.3 gem install minitest-5.10.3 # und thread_safe-0.3.6 gem install thread_safe # und tzinfo-1.2.4 gem install tzinfo # und activesupport 5.1.4 gem install activesupport # alles installieren bundle install # nun noch das auto-configure für YARD einschalten für das automatische bauen des yri index für die installierten gems yard config --gem-install-yri # nun können wir zum ersten mal Metasploit starten ruby ./msfconsole -L # und nach ca. 2 Minuten läuft Metasploit 4.16.29 auf dem Raspberry Pi Zero W ... # cool ...
Dann wollen wir uns von der Konsole mal mit der DB verbinden.
# PASSWORT durch das oben vergebene DB Passwort ersetzen db_connect msf_user:PASSWORT@localhost/msf_database # Antwort: [*] Rebuilding the module cache in the background... # Checken ob DB Verbindung steht mit db_status # Anwort: # [*] postgresql connected to msf_database # Super, dann ist ja alles ok und es kann losgehen ...
Nun Checken wir mal mit dem banner Befehl, wieviele “dinge” so installiert sind, hier mal zwei Beispiele der Ausgabe:
Es gibt also aktuell 1717 Exploits und 985 Auxiliaries und 507 Payloads.
Exploits sind Code, mit dem eine Schwachstelle ausgenutzt wird.
Auxiliarys helfen dabei, Informationen über das Zielsystem einzuholen wie Portscanner und DNS-Abfragen.
Payload bezeichnet den eigentlichen Schadcode der in das Zielsystem gebracht wird.
Es ist auch ein nmap 7.4 integriert, dann braucht man auf dem Pi wie hier beschrieben kein eigenes installieren.
nmap -version [*] exec: nmap -version Nmap version 7.40 ( https://nmap.org ) Platform: arm-unknown-linux-gnueabihf Compiled with: liblua-5.3.3 openssl-1.1.0c libpcre-8.39 libpcap-1.8.1 nmap-libdnet-1.12 ipv6 Compiled without: Available nsock engines: epoll poll select
Wie geht es jetzt weiter? Lesen der metasploit-unleashed Anleitung …
Oder ein show exploits in der Konsole, dann sieht man wie lange es auf dem kleinen Pi dauert (10 min) …
Ähnliche Artikel:
- Wie kann das klassische Tool, nmap Version 6.46 zum Analysieren eines LANs (und auch WLANs) auf einem Raspberry Pi installiert werden?
- Wie kann die aktuellste Node.js v0.10.29 auf einem Raspberry Pi (Version Jessie) installiert werden?
- Wie kann auf einem Raspberry Pi ein Subversion und Apache Server installiert werden?