Wie finden Hacker Exploits?



  • Gibt es da eine bestimmte Vorgehensweise wenn ein Hacker aktiv mit einem 0-Day Exploit in ein System eindringen will?
    Jetzt mal abgesehen von bekannten Eploits, deren Infos er sich lediglich im Internet zusammensuchen muss.

    Wie wird der 0-Day Exploit da gefunden?
    Nimmt er einen Kopie der Serversoftware, sofern er die bekommt und reverse engineered er die dann daheim um eine Sicherheitslücke zu finden?

    Oder wird der Server auf Gut Glück durch Probe bei der Eingabe auf Sicherheitslücken untersucht?
    Und falls ja, gibt es bei der Eingabe entsprechende Eingabesequenzen die erfolgversprechend sein könnten?

    Und falls er die Lücke dann gefunden hat, wie nützt er diese dann aus um Rootzugriff zu erhalten?

    Inbesondere wenn er den Bufferüberlauf durch gut Glück gefunden hat, von woher weiß er dann, welche Opcodes er schicken muss um an Features wie Address Space Layout Randomization (ASLR) und Data Execution Prevention (DEP) vorbei zu kommen und das ohne, dass der anzugreifende Serverdienst beim ersten Versuch einfach abstürzt und dadurch für den Hacker nichts nutzbares mehr hinterlässt, außer vielleicht ein Reboot, sofern der Admin den Einbruchversuch nicht bemerkt?



  • Heutzutage sind Exploits auf Grund der (vergleichsweise) hohen Sicherheitsstandards meist sehr tiefgehend. Sprich, man holt sich wohl zuerst alles an Informationen die man über das Zielsystem bekommen kann, auch hier gibt es schon verschiedenste Techniken (über ein einfaches Port-Scannen bis hin zu Social Engineering). Danach werden mögliche Angriffsvektoren auf das System analysiert. Spezialisten für den Vektor versuchen dann einen Exploit in einem Teilsystem zusammenzubringen und diesen schlussendlich dazu zu nutzen eine Rechteausweitung zusammenzubringen. Erst dann wird das Ergebnis am Zielsystem "ausprobiert". Je nach Ziel gibt es dann natürlich noch viel eingehender Analysen, Anti-Erkennungs-Maßnahmen, etc. pp.

    MfG SideWinder



  • Ich glaub, da sind mehrere Fragen zusammengewürfelt. Ich interpretiere zumindest raus, dass der TE wissen will, wie man eigentlich Sicherheitslücken in Software findet. Da gibts viele Möglichkeiten, z.B. eben viele verschiedene Eingabedaten durchprobieren, nennt sich Fuzzing. Oder man schaut sich bei Open Source den Code an. Oder man reverse engineered. Oder man findet zufällig einen Fehler und versucht den zu reproduzieren.
    Wie man die Sicherheitslücke dann ausnutzt, ist wieder eine andere Frage, das wäre das, was SideWinder schon beantwortet hat.



  • Ja wie mach ich das?

    1. Fuzzing ist wie Mechanics gesagt hat eine Methode.
    2. Blindes Versuchen ist eine andere Methode (ähnlich wie 1.)
    3. von bekannten Lücken sich durchzuhangeln zu neuen Ufern
    4. Code verstehen und nach bugs suchen (schwierigster Weg)
    5. logins von Foren-admins erraten/testen (klappt durchaus auch)
    6. Mit Geschichten wie nach Lücken mit nmap zu suchen will ich erst gar nicht anfangen.
    ...

    There's more than one way to skin a cat.

    Um einen server dann noch zu rooten ist noch eine ganz andere Geschichte. Eher was für die Lektion #2.



  • Hab noch was vergessen: SQLi - einer meiner Lieblinge.
    Admin-Passwort finden und gut is. Damit kannst du kompletten ftp-access o.ä. bekommen.
    Ich hab das natürlich noch nie gemacht, aber ich kenne einen, der einen kennt, der einen kennt...



  • SideWinder schrieb:

    Spezialisten für den Vektor versuchen dann einen Exploit in einem Teilsystem zusammenzubringen und diesen schlussendlich dazu zu nutzen eine Rechteausweitung zusammenzubringen. Erst dann wird das Ergebnis am Zielsystem "ausprobiert".

    D.h. der beste Schutz gegen Remote Angriffe wären also selbst geschriebene Serverdienste, denn die besitzt der Hacker ja nicht und kann somit daran keine Tests durchführen, außer eben an dem echten anzugreifenden System.

    Als Angriffsvektor würde bei so einer Konstellation nur noch Fuzzing funktionieren, wenn Social Engineering auch nicht möglich ist.
    Aber dieses Fuzzing müsste dann am echten System ausgeführt werden, weil der Hacker die Software ja nicht hat und das fällt dann schnell auf.

    Kann man das so sagen?



  • D.h. der beste Schutz gegen Remote Angriffe wären also selbst geschriebene Serverdienste, denn die besitzt der Hacker ja nicht und kann somit daran keine Tests durchführen, außer eben an dem echten anzugreifenden System.

    Nein, das würde ich so nicht sehen. Selbstgebastelte Anwendungen leiden meistens unter erheblichen Sicherheitslücken und sind oft sehr einfach für geschulte Angreifer zu attackieren.

    MfG SideWinder



  • SideWinder schrieb:

    D.h. der beste Schutz gegen Remote Angriffe wären also selbst geschriebene Serverdienste, denn die besitzt der Hacker ja nicht und kann somit daran keine Tests durchführen, außer eben an dem echten anzugreifenden System.

    Nein, das würde ich so nicht sehen. Selbstgebastelte Anwendungen leiden meistens unter erheblichen Sicherheitslücken und sind oft sehr einfach für geschulte Angreifer zu attackieren.

    MfG SideWinder

    Wie, wenn der Hacker die Software nicht kennt, sie lokal nicht besitzt und man sich vor dem Entwickeln gezielt das KnowHow angeeignet hat, Lücken zu vermeiden?

    Das verhindert zwar nicht gänzlich, dass die Software keine Bugs enthält, aber wie genau dringt der jetzt in ein System ein, dass für ihn eine Blackbox ist?

    Mal angenommen die Serveranwendung erwartet einen String, die Länge wird geprüft und nur wenn der String eine ganz bestimmte Konstellation hat, führt das zu einem Pufferüberlauf.

    Wie kriegt das ein Hacker nun raus?
    Brute Force via Fuzzing alle möglichen Stringkombinationen durchgehen oder wie genau würdest du da vorgehen?



  • Mümel schrieb:

    Mal angenommen die Serveranwendung erwartet einen String, die Länge wird geprüft und nur wenn der String eine ganz bestimmte Konstellation hat, führt das zu einem Pufferüberlauf.
    Wie kriegt das ein Hacker nun raus?

    Indem ich mir alle links deiner Seite besorge und sie mir ganz einfach erstmal händisch ansehe.
    Mit etwas Erfahrung erkennst du schnell die angreifbaren Kandidaten.
    Da brauchst gar kein fuzzing oder sowas.



  • lol
    EOP, du Brovieh *verbeug*



  • hustbaer schrieb:

    lol
    EOP, du Brovieh *verbeug*

    Du besorgst dir einen exploit-debugger, lernst damit umzugehen und ich schenke dir 2-3 meiner shells. Versprochen.



  • Ne sorry, bin beschäftigt, muss Logfiles lesen.



  • EOP-hat-wiedermal schrieb:

    Mümel schrieb:

    Mal angenommen die Serveranwendung erwartet einen String, die Länge wird geprüft und nur wenn der String eine ganz bestimmte Konstellation hat, führt das zu einem Pufferüberlauf.
    Wie kriegt das ein Hacker nun raus?

    Indem ich mir alle links deiner Seite besorge und sie mir ganz einfach erstmal händisch ansehe.
    Mit etwas Erfahrung erkennst du schnell die angreifbaren Kandidaten.
    Da brauchst gar kein fuzzing oder sowas.

    Was für Links?
    Und ich sprach auch nirgends von einem Webserver.



  • Mümel schrieb:

    Was für Links?
    Und ich sprach auch nirgends von einem Webserver.

    Naja, ich bin automatisch von einem webserver ausgegangen. Kenne mich nur damit aus.
    Wie sollte ich auch Zugriff kriegen auf irgendwas, das nur auf deinem heimatlichen Spielecomputer läuft? Wieso auch?

    So andere Geschichten, wie die iranische Atomindustrie zu hacken traue ich mir auch nicht zu.

    Ansonsten gilt, was ich schon gesagt habe: Code lesen und verstehen, falls du rankommst.
    Assembler zu kennen schadet auch nix.


  • Mod

    EOP schrieb:

    So andere Geschichten, wie die iranische Atomindustrie zu hacken traue ich mir auch nicht zu.

    So schwer ist das aber (grundlegend) nicht, vorausgesetzt, man hat etwas IT-Insider-Know How. Gerade hier zeigt sich doch gut, wo so mancher "Hack"-Ansatz "versteckt" liegt.

    EOP schrieb:

    Assembler zu kennen schadet auch nix.

    Hex- und Binärcodes lesen ebenfalls nicht. Aber bei den neuen Intel Compis sind mittlerweile viele Befehle zum Lernen da, das wird echt müßig.
    Braucht man ja auch nicht unbedingt.
    Man kann das Hacken schon als eine Art Ausbildungsform betrachten, je länger dabei, desto mehr Erfahrung, wie bei jeder anderen Ausbildung auch und dann kommt noch die Liebe zur Sache dazu oder wo ein Wille ist ist auch ein Weg.



  • Ich mach den ganzen Kram fast auch gar nicht mehr.
    Ich sitze schon lange nicht mehr 12-16 Stunden ohne Essen und Trinken vor TurboDebugger.
    Internetseiten "besuche" ich schon mal noch hin und wieder und hinterlasse meine Reviermarke.


Anmelden zum Antworten