
Passiver Dienst-Locator, ein Python-Sniffer, der Server, Clients, Namen und vieles mehr identifiziert
Passiver Service-Locator, ein Python-Sniffer, der Server, Clients, Namen und vieles mehr identifiziert
Kurze Hinweise für den Einstieg mit passer, dem passiven Service- Sniffer. Sie sind dafür verantwortlich, die Erlaubnis zum Sniffen einzuholen.
Passer kann mit einem Live-Paketmitschnitt oder aus einer pcap-Datei arbeiten (Kommandozeilenparameter, siehe Beispiele unten). Es meldet Live-Dienste und Clients, Ethernet-Karten im LAN, DNS-Einträge, Betriebssysteme und Router – alles passiv!
Wenn Sie Windows verwenden oder Ihre Pfade zu den Support-Dateien aus irgendeinem anderen Grund nicht mit meinen übereinstimmen, teilen Sie mir mit, wo sie sind, und ich werde gerne das Skript aktualisieren.
# Install system dependencies
sudo apt-get install arp-scan ettercap-text-only nmap wireshark
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py
# Install system dependencies
sudo yum install arp-scan ettercap nmap wireshark
# Install python dependencies
sudo pip install -r requirements.txt
# Prevent Scapy from performing DNS lookups
echo 'noenum = [ Resolve(), TCP_SERVICES, UDP_SERVICES ]' >> ~/.scapy_startup.py
Zur Installation von scapy siehe die Installationsanleitung.
Passer ist auch als Docker-Image verpackt. Falls Docker noch nicht vorhanden ist, gibt es hier eine schnelle und einfache Möglichkeit, es unter Linux zu installieren:
curl -fsSL https://get.docker.com | sh -
Andernfalls folgen Sie den Installationsanweisungen für Ihr Betriebssystem.
Für die meisten Anwendungsfälle empfehlen wir das in diesem Repository enthaltene Skript passer. Dieses Skript übernimmt alle docker-spezifischen
wget https://raw.githubusercontent.com/activecm/passer/master/passer
chmod +x passer
Du kannst dieses Skript dann genauso verwenden wie in jedem der folgenden Beispiele. Zum Beispiel:
./passer -i eth0
# The equivalent without using the included script would be:
docker run --rm --name=passer -i --init --net=host --cap-add=net_raw activecm/passer -i eth0
Um den Passer-Lauf zu stoppen:
docker stop passer
/path/to/passer.py
Dies liest von allen Netzwerkschnittstellen und sendet alle Ausgabezeilen an deine Konsole.
sudo /path/to/passer.py
oder
su - -c '/path/to/passer.py'
/path/to/passer.py -i IfaceName
Der Aufruf von route sollte einige Live-Schnittstellen anzeigen, die Sie möglicherweise verwenden können.
❕
-iist nicht mit-rkompatibel.
/path/to/passer.py -r /path/to/packets.pcap
❕
-rist mit-inicht kompatibel.
cat packetdata.pcap | ./passer.py -r /proc/self/fd/0
zcat packetdata.pcap.gz | ./passer.py -r /proc/self/fd/0
bzcat packetdata.pcap.bz2 | ./passer.py -r /proc/self/fd/0
tcpdump -i eth0 -qtnp -w - | ./passer.py -r /proc/self/fd/0
# etc...
Damit können Sie Pakete mit jedem Tool erfassen, das Pakete in einer pcap-Datei speichern kann, und sie später mit passer auf einem anderen System verarbeiten.
/path/to/passer.py -l /path/to/networkinfo.txt
/path/to/passer.py 2>/dev/null
/path/to/passer.py -h
/path/to/passer.py -u /path/to/oddpackets.pcap
Dies ist im Allgemeinen für den Entwicklungsprozess gedacht; Pakete, die in diese Datei gespeichert werden, sind solche, für die Signaturen geschrieben werden müssen. Beiträge zu ungewöhnlichen Paketen, Beschreibungen von Diensten und Patches für das Programm werden dankbar angenommen.
Dies sollte so einfach sein, dass der BPF-Filter in einfachen Anführungszeichen am Ende der Befehlszeile platziert wird. Ab Version 1.16 scheint die zugrunde liegende Bibliothek den bereitgestellten Filter nicht erfolgreich zu verwenden, aber es gibt einen Workaround. Verwenden Sie tcpdump, um die Filterung durchzuführen, und übergeben Sie die reduzierte Menge an Paketen an passer über stdin, wie oben:
tcpdump -r packets.pcap -w - 'icmp or arp' | ./passer.py -r /proc/self/fd/0
Siehe den Abschnitt „Beispielfilter“ unten für einige Vorschläge zu Filtern, die entweder beim vorherigen Erfassen von Paketen oder beim Live-Sniffing verwendet werden können.
socket.error: (1, 'Operation not permitted')
Du versuchst wahrscheinlich, live als Nicht-Root-Benutzer mitzuhören. Entweder melde dich als root an, verwende sudo/su oder arbeite mit pcap-Dateien.
Wenn passer abstürzt oder auf deinem System nicht funktioniert, erstelle bitte ein Issue, das die Fehlermeldung, falls vorhanden, und alle Details zu deinem Betriebssystem enthält.
Passers Ausgabe geht nach stdout und, wenn du den Kommandozeilen-
parameter -l /path/to/logfile angibst, auch in diese Datei. Hier ist das Format:
| Type | IPAddr | Proto | State | Optional description (may be empty) |
|---|---|---|---|---|
| 'IP' | IPaddr | 'IP' | dead or live | p0f OS description |
| 'MA' | IPaddr | 'Ethernet' | MacAddr | ManufDescription |
| 'TC' | IPaddr | 'TCP_'Port | closed or open | client description |
| 'TS' | IPaddr | 'TCP_'Port | closed or listening | server description |
| 'UC' | IPaddr | 'UDP_'Port | open or closed | udp client port description |
| 'US' | IPaddr | 'UDP_'Port | open or closed | udp server port description |
| 'DN' | IPaddr | 'A' or 'PTR' | hostname | possible extra info |
| 'RO' | IPaddr | 'TTLEx' | router | possible extra info |
Die Zeilen sind durch Kommas getrennt, um das einfache Laden in eine Tabellenkalkulation oder einen SQL-Import zu ermöglichen. Keines der Felder sollte Kommas enthalten. Es gibt eine Beispieldatei unter http://www.stearns.org/passer/passer-sample-log.txt .
Hier sind einige Beispiele, wie du die gewünschten Daten aus diesen Zeilen extrahieren kannst:
cat /var/tmp/passer-log | sort -u | less
cat /var/tmp/passer-log | sort -t, -k2 -u | less