TCP/IP Wie "mithören"?



  • Man hört ja immer wieder dass wenn man wichtige Informationen über das Internet verschickt man die Nachrichten verschlüssen soll, damit keiner mitlesen kann.
    Doch wie genau funktioniert das? Da die Nachrichten (z.b E-Mail oder Internetformulare), so denke ich das zumindest, von Server zu Server weiter geschickt werden, muss es einer von diesen Servern sein der die Daten neben dem weiterschicken auch bei sich selbst abspeichert. Aber nun werden doch normalerweise die Pakete nicht alle über die gleichen Weg verschickt, somit kann man auch nur Bruchstücke abfangen, anstatt ganze Nachrichten?!

    Auch wie man es bewerkstelligt bei einem Buffer Overflow es hinzubekommen dass genau an der Stelle wo der Zeiger auf einen falschen Bereich zeigt, der eigene Code "liegt", verstehe ich nicht.

    Kennt jemand eine Quelle die erklärt warum und auch wie, anhand (simplen) Beispielen, so etwas möglich wird?

    Versteht mich bitte nicht falsch, ich will keine Seite die einem Programme zum E-Mails abfangen oder ICQ Gespräche belauschen gibt.

    PS: Leider bin ich mir nicht ganz sicher in welches Forum das hier gehört, da es eigentlich (imo) Sprachunabhängig ist. Aber gut wäre ev. eine Seite die sich auf C++ bezieht, wobei auch andere Sprachen wie C oder C# kein Problem wären.



  • Man hört ja immer wieder dass wenn man wichtige Informationen über das Internet verschickt man die Nachrichten verschlüssen soll, damit keiner mitlesen kann.
    Doch wie genau funktioniert das? Da die Nachrichten (z.b E-Mail oder Internetformulare), so denke ich das zumindest, von Server zu Server weiter geschickt werden, muss es einer von diesen Servern sein der die Daten neben dem weiterschicken auch bei sich selbst abspeichert. Aber nun werden doch normalerweise die Pakete nicht alle über die gleichen Weg verschickt, somit kann man auch nur Bruchstücke abfangen, anstatt ganze Nachrichten?!

    Das ist normalerweise Paket sniffing, dass heisst, das da jemand im Netzwerk den ganzer Verkehr abhört und dann die relevanten Pakte abfängt und entschlüsselt.
    Kannst dir ja mal Wireshark runterladen und mal sehen, dass sich so in deinem Netzwerk tut. Da siehst du auch, dass es nicht ganz so einfach ist spezifische Sachen abzufangen und zu etwas sinnvollem hinzubiegen. (Also für dich noch unmöglich)

    Auch wie man es bewerkstelligt bei einem Buffer Overflow es hinzubekommen dass genau an der Stelle wo der Zeiger auf einen falschen Bereich zeigt, der eigene Code "liegt", verstehe ich nicht.

    Du scheinst dich über Hacking informieren zu wollen.
    Naja, Buffer Overflows sind ja an sich was einfaches, aber das richtig auszunutzen ist Recht schwer und funktioniert auch bei Profis nicht immer so, wie sie wollen. 😉 (Live miterlebt :D)

    Was den Rest angeht. Mach dir da keine Gedanken dazu. Beschäftige dich intensiv mit Programmiersprachen. Aber vor allem Benutzersystemen, Computer, deren Architektur und Funktionsweise usw.

    Denn ich denke, dass die Programmierung nicht (oft) das Problem der Umsetzung ist, sondern den technischen Hintergrund, der notwenig ist, um so etwas umzusetzen.



  • Suomynona schrieb:

    Man hört ja immer wieder dass wenn man wichtige Informationen über das Internet verschickt man die Nachrichten verschlüssen soll, damit keiner mitlesen kann.
    Doch wie genau funktioniert das? Da die Nachrichten (z.b E-Mail oder Internetformulare), so denke ich das zumindest, von Server zu Server weiter geschickt werden, muss es einer von diesen Servern sein der die Daten neben dem weiterschicken auch bei sich selbst abspeichert.

    Das wird nicht von Server zu Server verschickt, sondern dazwischen liegen Router. Jeder Router kann die Komplette nachricht im klartext lesen, wenn du nicht verschlüsselst.

    Suomynona schrieb:

    Aber nun werden doch normalerweise die Pakete nicht alle über die gleichen Weg verschickt, somit kann man auch nur Bruchstücke abfangen, anstatt ganze Nachrichten?!

    Das ist zwar im Prinzip richig. Da aber meistens doch der gleiche Weg genommen wird, da bestimmte Router einfach eine bestimmte Routing-Tabelle haben, kann der Router meistens den ganzen Verkehr mitlesen. Außerdem kann mindestens dein Internet-Provider deinen ganzen Internet-verkehr mitlesen, wenn er will, denn über den wählst du dich ja ein.

    Suomynona schrieb:

    Auch wie man es bewerkstelligt bei einem Buffer Overflow es hinzubekommen dass genau an der Stelle wo der Zeiger auf einen falschen Bereich zeigt, der eigene Code "liegt", verstehe ich nicht.

    Was ist daran nicht zu verstehen?



  • Ich war eigentlich besonders auf der Suche nach Konkreten Beispielen mit Quelltext. :>



  • Suomynona schrieb:

    Ich war eigentlich besonders auf der Suche nach Konkreten Beispielen mit Quelltext. :>

    Falls du nicht gerade den Router betreibst, über den die Daten gehen, hast du eh keine Chance. Ansonsten schau dir (Win)PCap an.



  • Suomynona schrieb:

    Ich war eigentlich besonders auf der Suche nach Konkreten Beispielen mit Quelltext. :>

    copy&paste hacker 😮



  • ProgChild schrieb:

    Suomynona schrieb:

    Auch wie man es bewerkstelligt bei einem Buffer Overflow es hinzubekommen dass genau an der Stelle wo der Zeiger auf einen falschen Bereich zeigt, der eigene Code "liegt", verstehe ich nicht.

    Was ist daran nicht zu verstehen?

    vllt. liegt sein IQ nicht bei 210 so wie deiner, so dass er unter Umständen das ein oder andere nicht versteht bzw. die Umsetzung/Ausführung nicht korrekt hinkriegt. 😃



  • Fake oder Echt schrieb:

    vllt. liegt sein IQ nicht bei 210 so wie deiner, so dass er unter Umständen das ein oder andere nicht versteht bzw. die Umsetzung/Ausführung nicht korrekt hinkriegt. 😃

    Vielleicht sollte er ja sagen, was er nicht versteht. Dann könnte man ihm helfen. Jetzt hier anfangen zu raten, was er nicht versteht ist ein bisschen viel Arbeit.



  • Nun, ich weiß wie ich einen Buffer Overflow hinbekomme und wie ich sehen kann wo im Speicher dieser passiert. Aber wie bekomme ich es nun konkret hin das mein eigener Code dort liegt und dieser Ausgeführt wird? Wie bewerkstellige ich das?



  • Genau das ist ja die Kunst davon.

    Aber normalerweise geht das so, dass du dort, wo du das Loch hast einen string einschleust, der zuerst mal einen noop (no operation) sleed hast um den Code im speicher zu überschreiben und dann muss dein Code folgen, den du ausführen möchtest. Und da gibt es auch noch zu beachten, dass du keine Null Terminierung im Code hast, da dort ja bekanntlicherweise ein String beendet wird.

    Das Problem ist hald, dass der Ort, wo dein Code ausgeführt werden soll (fast) immer an einer anderen Stelle ist. Und wenn es nicht genau stimmt, bekommst du nichts anderes als einen langweiligen Absturz des Programms.



  • Suomynona schrieb:

    Nun, ich weiß wie ich einen Buffer Overflow hinbekomme und wie ich sehen kann wo im Speicher dieser passiert. Aber wie bekomme ich es nun konkret hin das mein eigener Code dort liegt und dieser Ausgeführt wird? Wie bewerkstellige ich das?

    Wenn du einen Buffer-Overflow hast. Dann kannst du meistens so lange weiterschreiben, bis du an der Rücksprungaddresse der aktuellen Funktion angekommen bist. Wenn du also diese durch einen anderen Wert ersetzt, kannst du es erreichen, dass das Programm zu der Stelle springt, an der du vorher deinen Code plaziert (den musst du halt vorher mitsenden) hast und diesen ausführt.



  • Windows Vista hat Mechanismen um das Überschreiben der Rücksprungadr. zu erkennen.



  • Suomynona schrieb:

    Ich war eigentlich besonders auf der Suche nach Konkreten Beispielen mit Quelltext. :>

    Es gibt da mittlerweile ein Gesetz, daß die Verbreitung von solchen Programmen explizit unter Strafe stellt.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ~john schrieb:

    Suomynona schrieb:

    Ich war eigentlich besonders auf der Suche nach Konkreten Beispielen mit Quelltext. :>

    Es gibt da mittlerweile ein Gesetz, daß die Verbreitung von solchen Programmen explizit unter Strafe stellt.

    wo steht das ?

    buffer overflow hack: http://www.linuxjournal.com/article/2902


Anmelden zum Antworten