![]() |
UNIX Netzwerk-ToolsProf. Jürgen Plate |

Mit zunehmender Abhägigkeit von Servern im Rechnernetz spielt die Verfügbarkeit dieser Systeme eine immer größere Rolle. Neben Verfahren der Fehlertoleranz zur Steigerung der Zuverlässigkeit spielen Verfahren der Rechnersicherheit eine wichtige Rolle, um die Verfügbarkeit von Rechnersystemen zu steigern. Weiterhin sind Rechner mit Anschluß an Netze, insbesondere an öffentliche Netze, zusätzlichen Anforderungen an die Sicherheit ausgesetzt, da sie von dort Angriffen ausgesetzt sein können. Der Zugang zum Netz und die Sicherheit im Netz sind sich durchaus manchmal widersprechende Anforderungen.
| Eine ausführliche Beschreibung der wichtigsten Aspekte befinden sich im Skript Netzwerksicherheit. Deshalb werden an dieser Stelle nur einige Aspekte zusammengefasst, die sich auf UNIX/Linux-Server beziehen, administrative Ergänzungen gebracht und einige Standard-Tools beschrieben. |
Linux ist ein mächtiges Betriebssystem, das viele nützliche Dienste anbietet. Die meisten davon werden aber nicht gebraucht und stellen ein potentielles Risiko. Der erste Ansatzpunkt ist die Datei /etc/inetd.conf. Diese Datei legt fest, auf welche Dienste der Daemon lauscht. Im Ursprungszustand ist der inetd für eine Vielzahl von Diensten konfiguriert. Es werden alle Zeilen auskommentiert, die nicht benötigte Dienste enthalten ("#" an den Zeilenanfang setzen). Zur Sicherheit können Sie sich alle noch aktiven Dienste mittels grep -v "^#" /etc/inetd.conf anzeigen lassen. Danach muß der inetd ein HUP-Signal bekommen. Da aber nach allen Arbeiten der Rechner sowieso nochmals gebootet wird, kann man sich das an dieser Stelle sparen.
Der nächste Ansatzpunkt sind die Start-Skripte. Diese Skripte bestimmen, welche Dienste durch den init-Prozess gestartet werden. Man findet sie je nach Distribution in /etc/init.d, /sbin/init.d oder /etc/rc.d. Hier werden alle nicht benötigten Start/Stop-Skripte durch Anhängen von ".inaktiv" umbenannt. Kritisch sind hier unter anderem:
telnetd (Telnet abschalten, Logins nur per ssh erlauben) portmap (wird von rpc-Diensten wie NIS oder NFS benötigt) netfs (Der NFS-Client) rstatd (Man sollte versuchen, auf alle "r"-Dienste zu verzichten) rusersd rwhod rwalld bootparamd (Für diskless clients, abschalten) yppasswdd (Nur bei NIS-Servern, ein extrem verwundbarer Dienst) ypserv atd (Wird vom "at"-Dienst benutzt) snmpd (SNMP daemon, kann detaillierte Informationen über das System geben) named (DNS server) routed (RIP: abschalten!) lpd (Druckdienste) nfs (Benötigt für den NFS Server, sonst abschalten) amd (AutoMount daemon) gated (für andere Routingprotokolle wie OSPF) sendmail (man kann dann immer noch E-Mails senden, nur keine empfangen oder weiterleiten) ypbind (nötig, wenn man ein NIS-Client ist) xfs (X font Server) innd (News Server) linuxconf (Fernkonfiguration per Browser. Der Traum jedes "bösen Buben")
Nach der Anpassung der Skripte (und einem Reboot), kann man sich mit dem Kommando ps -aux ansehen, wwelche Prozesse noch laufen. Außerdem sollte man feststellen, welche Dienste noch laufen: netstat -na --ip
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -L -i -oDie -l Option sorgt dafür, daß jede ftp-Sitzung im syslog protokolliert wird. Wird das -L flag gesetzt, werden bei Aufruf des ftp-Servers alle USER-Befehle mitprotokolliert. Die -i Option bewirkt, daß alle Dateien, die der FTP-Server empfängt, in der Datei xferlog mitprotokolliert werden und durch die Option -o werden alle Dateien, die der Server gesendet hat, in der Datei xferlog mitprotokolliert.
Der nächste Schritt besteht darin, die meisten Systemaccounts aus der Datei /etc/passwd zu entfernen. Linux stellt diese Accounts für verschiedene Systemdienste zur Verfügung, die eventuell nicht gebraucht werden. Je mehr Benutzer es gibt, um so einfacher ist es, Zugriff auf ein System zu bekommen. Ein Beispiel ist der User "news". Wenn kein Newsserver läuft, ist dieser Benutzer überflüssig
Jetzt wird die Datei /etc/ftpusers angepaßt. Jeder Benutzer, der in dieser Datei aufgeführt wird, darf sich nicht per FTP anmelden. Diese Anpassung verbietet es gängigen Systemaccounts wie root oder bin FTP-Sitzungen aufzubauen. Bei Linux existiert diese Datei standardmäßig. Stellen sie sicher, das root auf jeden Fall enthalten ist.
Die Datei /etc/securetty listet auf, mit welchen ttys sich root verbinden darf. Lassen sie nur die Konsol-ttys (tty1, tty2 usw.) in dieser Datei um Root-Logins auf lokale Terminals zu beschränken.
Kontollieren Sie alle cron-Aufträge (/etc/crontab, /etc/cron.d, die Crontab von root usw.), ob da nur das enthalten ist, was Sie wirklich wollen.
Wenn man sich ohne Vorbereitung versucht anzumelden wird man wie gewohnt nach einem Passwort gefragt. Vorher wird noch sichergestellt, ob man sich mit dem Rechner überhaupt verbinden will:
$ ssh tralala The authenticity of host 'tralala (192.168.1.32)' can't be established. RSA key fingerprint is 69:fd:32:d8:cf:d6:f3:8c:37:41:97:3f:54:25:90:0b. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'tralala,192.168.1.32' (RSA) to the list of known hosts. plate@tralala's password: geheim ...
Ein TCP-Wrapper kann zwar nicht verschlüsseln, ist aber in der Lage zu protokollieren und zu kontrollieren wer Zugriff auf den Server hat. Es handelt sich hier um ein Programm, das sich zwischen den inetd und die Dienste wie telnet und ftp schaltet. Anhand der Dateien /etc/hosts.allow und /etc/hosts.deny wird die Zugriffsberechtigung überprüft. Wenn der Zugriff berechtigt erfolgt, übergibt der Wrapper die Verbindung an das entsprechende Programm. Ansonsten wird die Verbindung gekappt. Die Konfiguration wurde bereits in Kapitel 3.4 besprochen. Deshalb hier nur noch zwei Empfehlungen für den Einsatz von TCP-Wrappern:
Welche Tools liegen auf meiner Platte?
| bash, perl | Werkzeuge zur Steuerung von Komponenten für den Netzwerkzugriff, mit dem Ziel, aus vorgefertigten Bauteilen schnell massgeschneiderte Angriffstools zusammenstellen zu können. |
| ldaplib | Bibliothek zum Erstellen von Programmen zum Auslesen von fremden Passwortservern (Active Directory-Angriffe) |
| free | Arbeitsspeicherverwendung |
| df | Speicherplatz auf gemounteten Geräten |
| uptime | Anzeige der Systemlast und der Uptime |
| hostname, uname | Host- und OS-Namen anzeigen |
| ifconfig, iwconfig | Informationen über Netzwerkgeräte (als root) und WLAN anzeigen |
| top | kurze Systeminformationen (Last, Speicher, etc) und Anzeige der Prozesse. htop macht das Ganze noch komfortabler. |
| ps, pstree | Anzeige der Prozesse (auch in Baumform) |
| netstat | Informationen über Netzwerkverbindungen, Routingtabelle, etc. |
| dmesg | Alle Systemstart-Informationen des Kernels (u.a. auch die Erkennung der Hardware) |
| iptraf | Viele Möglichkeiten zur Überwachung des IP-Verkehrs |
| wipe | Werkzeug zur Datenlöschung, spezifisch mit dem Zweck spätere Rekonstruktion der gelöschten Daten zu erschweren. |
| mysqllib | Unabdingbare Bibliothek zum Auslesen fremder Datenbankserver. |
| sash | "System Administrator Shell", kleines Tool, mit dem ein Eindringling auch dann viele Sysadmin-Funktionen aufrufen kann, wenn der Eigentümer des Systems die notwendigen Administrationswerkzeuge eigentlich nicht installiert hat. |
| net_tool | enthält mit "arp" ein Werkzeug zum Fälschen der Mac-Adressen von Systemen und damit zum Address-Spoofing. |
| rzsz, kermit | Werkzeuge zum übertragen von binären Dateien über Datenkanäle, die eigentlich nur zur Übertragung von Text geeignet sind. |
| lsof | Werkzeug zur Systemanalyse, kann verwendet werden, um versteckte Systemmonitore zur erkennen, Auditing zu unterlaufen. |
| bindutil | Alle notwendigen Werkzeuge, um DNS-Anfragen zu simulieren, fremde DNS-Zonen auszuspionieren und ggf. auch einen Nameserver mit falschen Informationen zu füttern. |
| tcpdump, etherreal | Netzwerksnooper, ideal geeignet, um in einem fremden Netz Passworte aufzuschnappen. |
| netcat | DAS Tool zum Faken von Serverdiensten, zum Redirect von legitimen Servern auf illegale Dienste und zum Tricksen und Tarnen schlechthin. Zusammen mit nmap und tcpdump essentielle Bestandteile in jedem Hackerwerkzeugkasten. |
| nmap | Portscanner zum Ausschnüffeln von offenen Serverdienste und zum Erstellen von Netzwerkplänen in Opfernetzwerken. |
| saint, nessus | Vulerability Scanner. |
| wget | Werkzeug zum Raubkopieren fremder Websites und geeignet, um DDOS-Angriffe auf fremde Websites zu treiben. |
| cracklib | Bibliothek zum Schreiben und Betreiben von Passwortcrackern. |
| gdb, ddd, strings | Werkzeuge zur Analyse fremder Binärprogramme. |
Eine Liste der Top 75 Security Tools finden Sie bei http://www.insecure.org/tools.html.
| /proc/cpuinfo | Informationen zur CPU (u.a. Name, Taktfrequenz, Cache-Größe) |
| /proc/meminfo | Informationen über den Arbeitsspeicher (u. a. Gesamtgröße, Cache, Swap) |
| /proc/partitions | Informationen über Partitionen des Massenspeichers (u. a. Partitionsname, Anzahl der Blöcke) |
| /proc/modules | Übersicht über die geladenen Module (u. a. Name, Speicheradresse) |
| /proc/devices | Übersicht über vorhandene Char- und Block-Devices |
| /proc/version | Informationen über die Kernelversion |
| /proc/loadavg | aktuelle Systemauslastung |
| /proc/stat | Prozesse |
| /proc/interrupts | Übersicht über Interrupts |
| /proc/net/dev | Statistik der Netzwerkgeräte (u.a. übertragene Bytes, Fehler) |
| /proc/bus | Informationen und Übersichten über die Busse im Rechner. |
| /proc/bus/*/devices | Übersichten über die jeweiligen Geräte des Bus |
| /proc/ide | Hier finden sich die IDE-Geräte |
| /proc/ide/*/model | Die Modellbezeichnung des Geräts |
| /proc/acpi/thermal-zone/THRG/temperature | CPU-Temperatur |
| /proc/acpi/battery/BAT?/state | Batteriezustand |
| /proc/acpi/ibm/fan | Lüfterstatus |
| /proc/<PID>/cmdline | Kommandozeile des Prozesses mit der Nummer PID |
tcpdump optionen filter-expressionWesentliche Optionen kontrollieren die Art der Ausgabe:
| -dd | nur die "filter-expression" darstellen |
| -e | Ethernet-bezogen (statt IP-bezogen) |
| -s len | Paketlänge |
| -t | kein Zeitstempel |
| -v | mehr Information |
| -x | Hex-Dump der Paketdaten |
Ohne filter-expression wird alles angezeigt. Eine filter-expression wird bezüglich eines Pakets interpretiert:
tcpdump -dtxv host infosrv and udp port domain (000) ldh [12] (001) jeq #0x800 jt 2 jf 16 (002) ld [26] (003) jeq #0x81bbce28 jt 6 jf 4 (004) ld [30] (005) jeq #0x81bbce28 jt 6 jf 16 (006) ldb [23] (007) jeq #0x11 jt 8 jf 16 (008) ldh [20] (009) jset #0x1fff jt 16 jf 10 (010) ldxb 4*([14]&0xf) (011) ldh [x + 14] (012) jeq #0x35 jt 15 jf 13 (013) ldh [x + 16] (014) jeq #0x35 jt 15 jf 16 (015) ret #65535 (016) ret #0
filter-expression kann sich also auf die Felder der verschiedenen Header beziehen und diese logis und-, oder- bzw. nicht-verknüpfen und auch arithmetisch prüfen. Dies ist hinter einer Vielzahl von symbolischen Namen und relativ verwirrenden Abkürzungen versteckt:
term: C-constant Literal PROTOCOL [ offset : size ] ether ip icmp arp rarp udp tcp 1, 2, oder 4 Bytes len Paketlaenge product: term * term ... term / term ... sum: product + product ... product - product ... bit-and: sum & sum ... bit-or:bit-and | bit-and ... primitive: bit-or RELOP bit-or < <= > >= != =
Bis hierher kann man mit einer C-ähnlichen Syntax Bytes in den Protokoll-Schichten bit-weise untersuchen. Mit Abkürzungen, die syntaktisch ebenfalls als primitive gelten, kann man die interessanten Felder symbolisch abfragen, zum Beispiel:
primitive: ether proto NAME \ip \arp \rarp ip proto NAME \icmp \tcp \udp ether src NAME Ethernet-Host ether dst NAME ether host NAME ether broadcast Ethernet Broadcast src host NAME IP-Host dst host NAME host NAME ip broadcast IP Broadcast (0 oder 1) PROTOCOL dst port NUMMBER \udp \tcp Port-Nummer PROTOCOL src port NUMMBER PROTOCOL port NUMMBER
Man kann vieles davon weglassen, denn Angaben werden auch von primitive zu primitive kopiert. Es gibt auch Tests für Pakete, die das lokale Netz verlassen.
primitive werden verknüpft, wobei fehlende Angaben zu Feldern immer als Wildcard interpretiert werden:
negation: not primitive primitive ( union ) intersection: negation and negation ... union:intersection or intersection ...
| palermo | 80:2a:fe:e2:ef:41 | 10.10.10.200 |
| ragusa | 80:2a:fe:11:15:da | 10.10.10.209 |
| catania | 80:2a:fe:20:bb:2f | 10.10.10.205 |
| messina | 80:2a:fe:26:17:79 | 10.10.10.210 |
ARP: Beim Start von messina versucht catania, messina zu finden; messina antwortet selbst. Außerdem versucht messina, den (nicht-existenten) Router zu finden:
$ tcpdump -tev host messina and arp tcpdump: listening on en0 80:2a:fe:20:bb:2f Broadcast arp 64: arp who-has messina tell 10.10.10.205 80:2a:fe:26:17:79 80:2a:fe:20:bb:2f arp 64: arp reply messina is-at 80:2a:fe:26:17:79 80:2a:fe:26:17:79 Broadcast arp 64: arp who-has 10.10.10.254 tell messina
Führt man auf messina ping palermo aus, muß messina palermo finden:
$ tcpdump -texv host messina and arp tcpdump: listening on en0 80:2a:fe:26:17:79 Broadcast arp 64: arp who-has 10.10.10.200 tell messina 0001 0800 0604 0001 0060 0826 1779 83ad 0dd2 0000 0000 0000 83ad 0dc8 c8c8 c8c8 c8c8 c8c8 c8c8 c8c8 c8c8 c8c8 c8c8 44d4 0d39 80:2a:fe:e2:ef:41 80:2a:fe:26:17:79 arp 68: arp reply 10.10.10.200 is-at 80:2a:fe:e2:ef:41 0001 0800 0604 0002 000a 27e2 ef46 83ad 0dc8 0060 0826 1779 83ad 0dd2 c8c8 c8c8 c8c8 c8c8 c8c8 c8c8 c8c8 c8c8 c8c8 44d4 0d39 3457 5e14
ping selbst findet in IP-Paketen statt (ist aber ICMP):
$ tcpdump -txv host messina and icmp tcpdump: listening on en0 messina > 10.10.10.200: icmp: echo request (ttl 32, id 37376) 4500 003c 9200 0000 2001 e5cc 83ad 0dd2 83ad 0dc8 0800 415c 0300 0900 6162 6364 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 7576 7761 6263 10.10.10.200 > messina: icmp: echo reply (ttl 255, id 14654) 4500 003c 393e 0000 ff01 5f8e 83ad 0dc8 83ad 0dd2 0000 495c 0300 0900 6162 6364 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 7576 7761 6263
Auf ragusa kann man mit nslookup direkt DNS-Anfragen bearbeiten. Der DNS-Server muß erreichbar sein, sonst finden ARP-Anfragen zwecks Routing statt:
$ tcpdump -txv host ragusa and udp port domain tcpdump: listening on en0 ragusa.1055 > messina.53: 15645+ A? foo. (21) (ttl 64, id 2536) 4500 0031 09e8 0000 4011 4dd7 83ad 0dd1 83ad 0dd2 041f 0035 001d 256f 3d1d 0100 0001 0000 0000 0000 0366 6f6f 0000 0100 01
Macht man das auf messina, muß man völlig anders filtern:
$ tcpdump -txv host messina and ip broadcast tcpdump: listening on en0 messina.137 > 10.10.10.255.137: udp 50 (ttl 128, id 60160) 4500 004e eb00 0000 8011 2c73 83ad 0dd2 83ad 0dff 0089 0089 003a 8110 00c2 0110 0001 0000 0000 0000 2045 4745 5045 5043 4143 4143 4143
Hier wird UDP auf Port 137 verwendet (NETBIOS von Windows).
SYN- und FIN-Pakete beim TCP-Verbindungsauf- und -abbau kann man beobachten, indem man die relevanten Flags filtert und zum Beispiel einen TELNET-Anruf tätigt:
$ tcpdump -t 'host messina and tcp[13:1] & 3 != 0' & tcpdump: listening on en0 $ telnet messina ragusa.1143 > messina.telnet: S 3305751711:3305751711(0) win 32768 <mss 1460,nop,wscale 0,nop,nop,timestamp[|tcp]> (DF) [tos 0x10] messina.telnet > ragusa.1143: S 3550809343:3550809343(0) ack 3305751712 win 32120 <mss 1460,nop,nop,timestamp 7325201[|tcp]> (DF) messina.1032 > ragusa.auth: S 3548526334:3548526334(0) win 32120 <mss 1460,sackOK,timestamp 7325203[|tcp]> (DF) telnet> q ragusa.1143 > messina.telnet: F 75:75(0) ack 122 win 33304 <nop,nop,timestamp 124467 7325216> (DF) [tos 0x10] messina.telnet > ragusa.1143: F 122:122(0) ack 76 win 32120 <nop,nop,timestamp 7329858 124467> (DF)
Man sieht, daß eine Reihe von Optionen übermittelt werden und daß der TELNET-Server ohne Erfolg versucht, eine Verbindung zurück zu einem Authentication-Server aufzubauen, der ihm die Benutzer-Identität mitteilen soll.
Das abschließende ACK des Drei-Wege-Handshake wird durch die Filterung unterdrückt.
Beispiel 2: In diesem Beispiel belauscht tcpdump an ippp0 eine traceroute-Session. Der Parameter -q ist bei traceroute auf 1 gesetzt, damit pro Hop nur eine UDP-Probe gesendet wird, zudem ist der Parameter -m, time to live, auf 5 gesetzt, sodass nur max 5 Hops abgefragt werden. Die lokale IP-Adresse bei dieser Session ist 217.0.16.33. Die Remote-IP-Adresse ist 212.185.255.125. Die Adresse des Name-Servers ist 194.25.2.129. traceroute und tcpdump laufen in 2 unterschiedlichen Textkonsolen. traceroute wurde auf einen Hostnamen und nicht auf eine IP-Adresse ausgeführt, von daher enthält der Dump ausser den traceroute Anfragen und Antworten auch noch Anfragen auf einen Nameserver und dessen Antworten.
Konsole 1: traceroute
# traceroute -q 1 -m 5 www.example.com traceroute to www.example.com (192.0.34.166), 5 hops max, 40 byte packets 1 212.185.255.125 (212.185.255.125) 22 ms 2 62.225.244.61 (62.225.244.61) 20 ms 3 WAS-E4.WAS.US.NET.DTAG.DE (62.154.14.134) 126 ms 4 p16-1-0-3.r20.asbnva01.us.bb.verio.net (129.250.9.141) 118 ms 5 p64-0-0-0.r21.asbnva01.us.bb.verio.net (129.250.2.35) 132 ms
Konsole 2: tcpdump. tcpdump diesmal mit Parameter -t ausgeführt, damit der Zeitstempel nicht mit ausgegeben wird. Die Zeilennummern am Zeilenanfang wurden nachträglich eingegeben, damit sich die Erklärungen darauf beziehen können.
# tcpdump -t -i eth0 tcpdump: listening on eth0 01 217.0.16.33.1024 > 194.25.2.129.domain: 26428+ A? www.example.com. (33) (DF) 02 194.25.2.129.domain > 217.0.16.33.1024: 26428 1/0/0 A 192.0.34.166 (49) (DF) 03 217.0.16.33.34345 > 192.0.34.166.33435: udp 12 [ttl 1] 04 212.185.255.125 > 217.0.16.33: icmp: time exceeded in-transit 05 217.0.16.33.1024 > 194.25.2.129.domain: 26429+ PTR? 125.255.185.212.in-addr.arpa. (46) (DF) 06 194.25.2.129.domain > 217.0.16.33.1024: 26429 NXDomain 0/1/0 (119) (DF) 07 217.0.16.33.34345 > 192.0.34.166.33436: udp 12 08 62.225.244.61 > 217.0.16.33: icmp: time exceeded in-transit [tos 0xc0] 09 217.0.16.33.1024 > 194.25.2.129.domain: 26430+ PTR? 61.244.225.62.in-addr.arpa. (44) (DF) 10 194.25.2.129.domain > 217.0.16.33.1024: 26430 NXDomain 0/1/0 (117) (DF) 11 217.0.16.33.34345 > 192.0.34.166.33437: udp 12 12 62.154.14.134 > 217.0.16.33: icmp: time exceeded in-transit 13 217.0.16.33.1024 > 194.25.2.129.domain: 26431+ PTR? 134.14.154.62.in-addr.arpa. (44) (DF) 14 194.25.2.129.domain > 217.0.16.33.1024: 26431 1/0/0 (83) (DF) 15 217.0.16.33.34345 > 192.0.34.166.33438: udp 12 16 129.250.9.141 > 217.0.16.33: icmp: time exceeded in-transit 17 217.0.16.33.1024 > 194.25.2.129.domain: 26432+ PTR? 141.9.250.129.in-addr.arpa. (44) (DF) 18 194.25.2.129.domain > 217.0.16.33.1024: 26432 1/0/0 (96) (DF) 19 217.0.16.33.34345 > 192.0.34.166.33439: udp 12 20 129.250.2.35 > 217.0.16.33: icmp: time exceeded in-transit (DF) 21 217.0.16.33.1024 > 194.25.2.129.domain: 26433+ PTR? 35.2.250.129.in-addr.arpa. (43) (DF) 22 194.25.2.129.domain > 217.0.16.33.1024: 26433 1/0/0 (95) (DF) 22 packets received by filter 0 packets dropped by kernel
| Zeile 01: | Eine Nameserver-Anfrage. |
| Zeile 02: | Die Auflösung des Namens in eine IP-Adresse. |
| Zeile 03: | Das erste von traceroute abgeschickte UDP-Packet mit dem Quellport 34345 und dem Zielport 33435. |
| Zeile 04: | Die erste ICMP Time Exceeded Nachricht für den ersten Hop. |
| Zeile 05: | Die nächste Nameserver-Anfrage. Allerdings diesmal ein Reverse-Lookup. |
| Zeile 06: | Die Auflösung der IP-Adresse in einen Namen. |
| Zeile 07: | Das zweite von traceroute abgeschickte UDP-Packet mit dem Quellport wieder 34345, Zielport jedoch 33436. |
| Zeile 08: | Die ICMP Time Exceeded Nachricht für den zweiten Hop. |
Im Single Mode versucht John, die in der Password-Datei gespeicherten GECOS-Informationen (General Electric Comprehensive Operating System), also die persönlichen Daten zu jedem User wie z.B. Name, Telefonnummer ect, als Passwort einzusetzen. John braucht eine Passwort-Datei (/etc/passwd) im alten Stil, d.h. mit gespeichertem Passwort. Heute wird jedoch in der Regel das Passwort in der Datei /etc/shadow gespeichert. In diesem Fall hilft das Programm "unshadow", das die beiden Dateienm zusammenführt. Dieser Mode ist natürlich nur dann effektiv, wenn die User auch ihre persönlichen Informationen als Passwort verwenden. Allerdings ist dieser Mode auch sehr schnell, weshalb man ihn nicht unterschätzen sollte. Die Effektivität dieses Modes steigt mit der Anzahl der in der Password-Datei enthalten User, da er die GECOS-Informationen jedes Users bei allen anderen Usern auch als mögliches Passwort überprüft.
Der zweite Modus ist der Wordlist Mode. Die Effizienz dieses Modes hängt von der Größe und vor allem von der Qualität der verwendeten Wortliste ab. So kann man server- bzw. adminspeziefische Wordlists erstellen und damit die Erfolgswahrscheinlichkeit erhöhen, da man sämtliche zur Verfügung stehenden Informationen benutzen kann; und genau darin liegt die Stärke dieses Modes. In der Wordlist-Dateisteht in jeder Zeile nur eine Zeichenfolge. Auch sollte darauf geachted werden, dass die Wordlist beispielsweise alphabetisch sortiert ist, da John ein wenig schneller arbeitet wenn aufeinaderfolgende Wörter oder Zeichenfolgen sich nicht allzu stark voneinander unterscheiden.
Der Incremental Mode ist Johns mächtigster Modus. Er kann jedes existierende Password, unabhängig davon ob es aus Buchstaben, Sonderzeichen, Zahlen oder Kombinationen besteht, decrypten indem er sämtliche möglichen Kombinationen überprüft. Diese Methode wird auch Brute-Force genannt. Hierbei ist allerdings zu beachten, dass die zum decrypten benötigte Zeitspanne (abhängig von Prozessorleistung, Passwortlänge und der im Passwort verwendeten Zeichen) sehr groß sein kann.
Der External Mode ist eher für die erfahrenen Benutzer ausgelegt, da er vollständig konfiguriert werden muss. Durch das definieren der Parameter hinter [LIST.EXTERNAL:MODE] in der john.ini Datei, wird ein komplett neuer, individueller Mode erstellt. Dadurch wird es vor allem den Benutzern, die mit John schon Erfahrungen gemacht haben, ermöglicht einen Mode ihren persönlichen Bedürfnissen anzupassen.
Die wichtigsten Befehle von John sind:
| john -single | dieser Befehl started John im Single-Mode |
| john -i | dieser Befehl started John im Incremental-Mode |
| john -w:namederwordlist | dieser Befehl started John im Wordlist-Mode |
| john -e:MODE | dieser Befehl started John im External-Mode unter Verwendung der bei LIST.EXTERNAL: definierten MODE Eigenschaften |
| john | dieser Befehl lässt John zuerst den Single- dann den Wordlist und schließlich noch den Incremental-Mode durchlaufen |
| john -show | dieser Befehl zeigt die decrypteten Passwörter an |
Hinter jedem dieser Befehle muss noch die Passwort-Datei angegeben werden. Ohne Parameterangabe listed John alle verfügbaren Parameter auf.
Die neusten Versionen von John the Ripper findet man unter www.openwall.com/john/.
Der kostenlose Port-Scanner unterstützt beispielsweise:
Bezugsquelle:
Die Installation erfolgt nach Standard-Schema:
gzip -cd nmap-VERSION.tgz | tar xvf - cd nmap-VERSION ./configure make su root make installFür Linux gibt es passende RPM-Archive.
Nmap wird über zahlreichen Kommandozeilenparameter gesteuert. Sind angebene Kombinationen nicht sinnvoll, gibt Nmap eine entsprechende Warnmeldung aus und informiert den Nutzer darüber. Wenn Sie sich nicht sicher sind, können Sie sich die einzelnen Parameter auch anzeigen lassen. Dies geschieht über die Eingabe von: nmap -h.
Bezugsquelle: http://www.nessus.org/download.html
Zum vorhergehenden Abschnitt |
Zum Inhaltsverzeichnis |
Zum ersten Abschnitt |