¿Cuál es el proceso en el que los hackers encuentran exploits? ¿Cómo encuentran e identifican vulnerabilidades?

¡Esa es una excelente (y una pregunta muy amplia)! Lo que realmente estás buscando es una vulnerabilidad. Una vulnerabilidad es una falla en un sistema que alguien, como un hacker, podría usar para hacer que el sistema se comporte de una manera inesperada. Nos gusta llamarlo una “característica”, no un error :).

Un exploit, es una pieza de código o un proceso que aprovecha la vulnerabilidad para evitar ciertas restricciones.

Un excelente recurso para encontrar exploits listos es la Base de datos de exploits de Offensive Security. Actualmente contiene más de 35,483 exploits. En otras palabras:

La primera vulnerabilidad que recuerdo haber explotado fue la inyección de comandos en una aplicación web que ofrecía la funcionalidad básica de herramientas de red.

Supongamos que este es el formulario web para esa aplicación vulnerable:

Si ingresa una dirección IP, como “8.8.8.8”, la aplicación tomaría esa entrada y crearía un comando para la línea de comando.

Probablemente se veía así: ping -c 3 8.8.8.8

Aceptar la entrada del usuario y generar comandos del sistema generalmente se considera peligroso … ¡y DIVERTIDO!

Supongamos que un atacante ingresa lo siguiente en el cuadro de dirección IP:

8.8.8.8; cat / etc / passwd

El comando que se generaría sería:

ping -c 3 8.8.8.8; cat / etc / passwd

Si aún no lo sabe, el ‘;’ es un personaje de fin de comando . Marca el final de un comando y le permite iniciar uno nuevo. En otras palabras, una vez que se completa el comando ping, el sistema ejecutará “cat / etc / passwd”.

Por lo tanto, la aplicación web no solo hará ping 8.8.8.8 tres veces, sino que también mostrará el contenido del archivo / etc / passwd, un archivo importante que contiene una lista de nombres de usuario en ese sistema.

¿Cómo encuentras este tipo de vulnerabilidad? Tienes varias opciones diferentes:

  • Busque aplicaciones que ofrezcan funcionalidad que normalmente se realiza en la línea de comando.
  • Obtenga información sobre el código vulnerable y búsquelo en Github y otros repositorios de código fuente en línea. Sugerencia: para PHP es system y passthru

Las aplicaciones web son un excelente lugar para comenzar. Las aplicaciones web no solo son más fáciles de entender (en comparación con los desbordamientos de búfer, desbordamiento de pila, desbordamiento de pila y vulnerabilidades de cadena de formato), sino que también son más fáciles de explotar. Comience leyendo el Proyecto Top Ten de OWASP.

Revisa cada una de las 10 categorías principales de OWASP y aprende todo lo que puedas sobre ella. Una vez que sienta que comprende las vulnerabilidades, puede usar el Proyecto OWASP WebGoat para practicar lo que aprendió.

WebGoat es una aplicación web deliberadamente insegura que puede usar para practicar la búsqueda y explotación de vulnerabilidades.

Sigue practicando y aprendiendo nuevas técnicas. Si te quedas sin cosas que aprender, vuelve a la Base de datos de exploits de Offensive Security y mira los últimos exploits. Terminará encontrando nuevas técnicas de piratería que puede incorporar en su kit de herramientas de crecimiento.

Y sobre todo, ¡disfruta el proceso!

Solo para aclarar. Un exploit es el uso de software, datos o comandos para “explotar” una debilidad en un sistema o programa informático para llevar a cabo alguna forma de intención maliciosa, como un ataque de denegación de servicio, troyanos, gusanos o virus. La debilidad en el sistema puede ser un error, una falla o simplemente una vulnerabilidad de diseño. Un exploit remoto explota la vulnerabilidad de seguridad sin tener acceso previo al sistema. Un exploit local necesita acceso previo al sistema vulnerable y generalmente implica aumentar los privilegios de la cuenta de usuario que ejecuta el exploit. Quienes utilizan exploits a menudo utilizan la ingeniería social para obtener información crítica necesaria para acceder al sistema. Muchos crackers (o hackers) se enorgullecen de su conocimiento de las vulnerabilidades de software y los publican en un sitio web para compartir o presumir con otros crackers. Los navegadores web y los reproductores multimedia a menudo son objetivos de los crackers, ya que ambos tienen acceso a la información del sistema y pueden descargar archivos de Internet. Los parches (o “arreglos”) están destinados a remediar estas vulnerabilidades tan pronto como se revelan y, a menudo, se distribuyen en actualizaciones de software. Por lo tanto, es vital mantener actualizado su software para asegurarse de que se reparen todas las vulnerabilidades conocidas. Un exploit de día cero es uno que el creador del software aún no ha descubierto. Para evitar la pérdida de datos debido a un ataque aprovechando un exploit, es una buena idea mantener copias de seguridad periódicas de sus datos guardados en su computadora

El proceso

-Trucos

Un truco es un “procedimiento o práctica malicioso … diseñado para engañar, engañar o defraudar.1” Los hackers usan trucos para encontrar atajos para obtener acceso no autorizado a los sistemas. Pueden usar su acceso para propósitos ilegales o destructivos, o simplemente están probando sus propias habilidades para ver si pueden realizar una tarea.

Dado que la mayoría de los piratas informáticos están motivados por la curiosidad y tienen tiempo para intentar ataques interminables, la probabilidad de que finalmente encuentren un método sofisticado para acceder a casi cualquier entorno sea alta. Sin embargo, estos no son los tipos de ataques que abordamos en este artículo, porque la mayoría de las intrusiones exitosas se logran a través de vulnerabilidades de seguridad bien documentadas y bien conocidas que no han sido parcheadas, deshabilitadas o tratadas de otra manera. Estas vulnerabilidades se explotan todos los días y no deberían serlo.

-Encontrar vulnerabilidades de acceso

Lo que generalmente sucede es que un hacker avanzado o de élite escribe una herramienta de escaneo que busca vulnerabilidades bien conocidas, y el hacker de élite lo hace disponible a través de Internet. Los piratas informáticos menos experimentados, comúnmente llamados “script kiddies”, ejecutan la herramienta de escaneo 24 x 7, escaneando grandes cantidades de sistemas y encontrando muchos sistemas que son vulnerables. Por lo general, ejecutan la herramienta contra los espacios de nombres asociados con las empresas en las que les gustaría ingresar.

Los kiddies de script utilizan una lista de direcciones IP vulnerables para lanzar ataques, basados ​​en las vulnerabilidades anunciadas por una máquina, para obtener acceso a los sistemas. Dependiendo de la vulnerabilidad, un atacante puede crear una cuenta privilegiada o no privilegiada. Independientemente, el atacante usa esta entrada inicial (también conocida como “toe-hold”) en el sistema para obtener privilegios adicionales y explotar los sistemas con los que el sistema penetrado tiene relaciones de confianza, comparte información, está en la misma red con, y así.

Una vez que se establece una retención de dedos en un sistema, el atacante puede ejecutar herramientas de escaneo contra todos los sistemas conectados al sistema penetrado. Dependiendo del sistema comprometido, estos escaneos pueden ejecutarse dentro de la red de una organización.

-Encontrar vulnerabilidades del sistema operativo

Como se mencionó anteriormente, los piratas informáticos primero buscan vulnerabilidades para obtener acceso. Luego buscan vulnerabilidades del sistema operativo (SO) y herramientas de escaneo que informan sobre esas vulnerabilidades.

Encontrar vulnerabilidades específicas de un sistema operativo es tan fácil como escribir una dirección URL y hacer clic en el enlace correspondiente. Hay muchas organizaciones que brindan información de “divulgación completa”. La divulgación completa es la práctica de proporcionar toda la información al dominio público para que no sea conocida solo por la comunidad de hackers.

-Ataque de vulnerabilidades de Solaris OE

Usemos Solaris 2.6 OE como ejemplo. Una vulnerabilidad bien conocida, para la cual hay parches disponibles, es la

sadmind

explotar. Los hackers utilizan con frecuencia esta vulnerabilidad para obtener acceso de root en los sistemas Solaris 2.6 OE.

Utilizando solo un motor de búsqueda y el número CVE, que se encuentra al buscar en el sitio Mitre mencionado anteriormente, es posible encontrar el código fuente y las instrucciones detalladas sobre cómo usarlo. Todo el proceso lleva solo unos minutos. El hacker encuentra el código fuente en el sitio web SecurityFocus y encuentra instrucciones detalladas en el sitio SANS.

Consideraré un equipo rojo (prueba de penetración avanzada que algunos dirían).

En primer lugar: encuentra vulnerabilidades y las explota, no encuentra vulnerabilidades … investiga, encuentra una forma de utilizar las vulnerabilidades encontradas y explotarlas (utilizando código o algunas herramientas).

Las vulnerabilidades son las debilidades, explotarlas se trata de aprovecharlas. Diferencia entre la debilidad y el ataque para explotarla.

Hay un dicho en infosec: una vulnerabilidad DoS (Denegación de servicio) puede ser un RCE (Ejecución remota de código) oculta.

Con respecto al proceso de encontrar vulnerabilidades y explotarlas, es prácticamente el mismo proceso sea cual sea la tecnología subyacente (más o menos) a pesar de que las técnicas o algunos aspectos pueden ser diferentes.

Se trata de paciencia y metodologías.

1 – Fase de recopilación de información – Evaluar la superficie de ataque: ¿Qué software se utiliza? ¿Cuál es la versión de software utilizada? ¿Dónde la entrada del usuario tiene un efecto en el software o es procesado por él? Etc.

2 – Fase de identificación de vulnerabilidad: compruebe que las entradas se procesen como debería ser. Si no, dependiendo del comportamiento inesperado, es un error o una vulnerabilidad (una vulnerabilidad es un error).

3 – Fase de explotación: encuentra una manera de usar esa vulnerabilidad para inducir un comportamiento inesperado para hacer cosas geniales.

Dependiendo del software / tecnología objetivo, priorizará los ataques e insumos conocidos.

Ahora, la piratería no solo se trata de vulnerabilidades y vulnerabilidades. Sin embargo, sí juega una gran parte del juego.

Hay muchas, muchas, muchas cosas que atraen a las personas. La más común es la debilidad humana y la reutilización de credenciales.

¿El paso más importante de la explotación? Post explotación. Escalada de privilegios y / o recopilación de credenciales, entre otras cosas.

Las credenciales son el rey (contraseñas, claves de criptografía, tokens de seguridad, etc.), si las tiene en sus manos = acceda con los privilegios de los propietarios originales de estas credenciales.

Después de que todo está dicho y hecho, generalmente escribe sobre los hallazgos, mitigaciones / correcciones sugeridas y emite un informe o aviso.

Los errores no son aleatorios. No es que cada enésima línea de código tenga algo explotable. El software que intenta hacer ciertas cosas, falla de ciertas maneras, una y otra y otra vez.

Así que principalmente buscamos los viejos problemas y los trasladamos a sus nuevos hosts.

Hay tres estrategias principales para encontrar errores. Revisión de diseño: solo mire lo que está tratando de hacer y descubra si lo hizo mal. Revisión de código: observe cómo se construye, ya sea como código fuente o binarios compilados (ambos ayudan, ambos importan). Y fuzzing.

Fuzzing es básicamente arrojar ruido al software y ver qué sucede. Es posible que los errores solo muestren una de un millón de pruebas, pero si prueba cosas cientos de millones de veces, obtendrá cien errores.

Fuzzing se vuelve más inteligente cada año que pasa. Lo que eso significa es que, en lugar de arrojar ruido aleatorio al código, observamos lo que sucede mientras hablamos con el software y aprendemos de él. Los errores no son aleatorios, porque el software no es aleatorio. Tienes que * alcanzar * un error para encontrarlo.

Alternativamente, si tiene veinte niveles de profundidad en un programa y encuentra un problema, quién sabe si ese problema es incluso explotable. En cualquier lugar a lo largo de esas 19 capas arriba, puede ser algo que lo detenga. A menudo es una molestia darse cuenta de eso.

Los solucionadores SAT y SMT son tecnologías que automatizan descubrir si las cosas son explotables después de todo. Son bastante efectivos. Estos solucionadores, por supuesto, se utilizan de varias maneras; son probablemente la tecnología de “aprendizaje automático” más efectiva en seguridad en este momento.

La mayoría de las respuestas son geniales, pero quiero compartir recursos educativos. Lo que quieres hacer es buscar en Google tutoriales de pruebas de penetración. Las cinco fases de una prueba de penetración son reconocimiento, escaneo, acceso, mantenimiento de acceso y cobertura de pistas. Desea aprender reconocimiento y escaneo. Un buen lugar para comenzar es Cybrary: capacitación en línea sobre seguridad cibernética, gratuita, para siempre. Tome los cursos de prueba de penetración son gratuitos. Algunas herramientas utilizadas para escanear son. Nmap, OWASP ZAP, Vega, Nessus y OpenVAS. Una vez que obtenga conocimiento de las pruebas de penetración, vaya a Evaluación de vulnerabilidad y Programas de recompensa de errores y Coordinación de vulnerabilidad y participe en sus programas de recompensa de errores para practicar. Si encuentra vulnerabilidades importantes, podría recibir un pago generoso. ¿Responde esto a tu pregunta?

Entrar en su sistema implicaría explotar cualquier servicio expuesto al mundo. Mientras que nodejs y otros servidores web personalizados están ganando popularidad, explotar el servidor web Apache o cualquier aplicación web insegura que ejecute, es un vector de ataque probado y verdadero. Si comprometí su WordPress y lo convencí para que me diera un shell web, ahora tengo derechos de acceso a su servidor web. Mi siguiente paso es escalarlos al nivel raíz.

Veamos la escalada de privilegios después de que de alguna manera obtuve acceso a su sistema, que son sus propios exploits, y ahora tengo acceso a nivel de usuario. No puedo modificar archivos restringidos para crear una puerta trasera.

Hay una manera de marcar una utilidad del sistema para ejecutar con privilegios de “root”. Nos referimos a esto como “raíz suid”. Un sistema típico hoy en día tiene solo unos pocos, pero en el pasado había muchas de estas utilidades.

Mi próximo objetivo para ese sistema es hacer que uno de estos archivos especiales ejecute mi código malicioso con derechos del sistema. Si tengo éxito en hacer eso, encontré un exploit para esa utilidad.

Escribir un exploit generalmente implica escribir el llamado “código shell”. Usted fuerza una herramienta privilegiada para ejecutar este “código shell” y luego obtiene privilegios “root”. Aquí hay información sobre ese Tutorial de Shellcoding para Linux y Windows

El atacante generalmente investigará vulnerabilidades en su propio laboratorio ejecutando exactamente la misma versión de software y una arquitectura de procesador similar a su objetivo.

El proceso por el cual una persona busca un exploit se llama Hacking.

Probablemente se derive del pirateo de contraseñas de Brute-Force donde descubren la contraseña del administrador al compararla con una lista. Simplemente lo piratean y lo piratean hasta que lo resuelven.

Aquellos que no usan contraseñas complejas son vulnerables a este tipo de pirateo.

Uno de mis clientes recién adquiridos, los piratas informáticos adivinaron correctamente que el inicio de sesión de administrador era el nombre del diseñador web porque lo publicó en la página de inicio del sitio web. ¿Bastante fácil, sí?

La inyección SQL es cuando van tras la base de datos. Existen muchos formularios, pero el más simple es cuando intentan obtener información de la tabla Usuarios. El administrador suele ser el número 1 de inicio de sesión, ¿adivina qué hacen los piratas informáticos? Intentan averiguar el nombre de ese inicio de sesión y luego proceden a la fuerza bruta.

Recientemente vi 560 intentos de iniciar sesión en el sitio web de un amigo. Sin embargo, todos fueron bloqueados por el complemento de seguridad.

Instalé WordFence e implementé una política muy estricta.

Si desea obtener más información sobre piratería, puede tomar clases en lo que se conoce como piratería ética. Aprenderá todo lo que quiere saber ADEMÁS de que probablemente pueda hacer una carrera con él.

Aquí hay algunos buenos artículos sobre los tipos de piratas informáticos (advertencia), son muy técnicos para leer: Obtenga más información sobre la seguridad del sitio web – Acunetix

Como de costumbre, me gustaría simplificar el proceso para que más personas puedan entender de lo que estoy hablando. Por lo tanto, tenga en cuenta que mi explicación es extremadamente simplificada.

Hay una forma difícil de encontrar una vulnerabilidad de seguridad, y hay una forma difícil de encontrar una vulnerabilidad.

El camino difícil es más o menos lo que llamamos un ataque / explotación de día cero. Es algo que solo los expertos pueden lograr.

Un exploit de día cero es un agujero de seguridad en la codificación de un software que siempre existió. Ese agujero de seguridad solo se convierte en un exploit de día cero cuando alguien lo descubre.

En cuanto a cómo se está haciendo eso, todo se reduce a la codificación. Mientras más experiencia tenga, más fácil será encontrar un agujero de seguridad en la codificación de un programa al leerlo.

La manera fácil de encontrar un exploit es abusar de las características de un programa para infectar a alguien.

Por ejemplo: MS Word tiene una característica que se llama Macros. Esa característica le brinda la capacidad de colocar y ejecutar un fragmento de código dentro de un documento de MS Word.

Y puede ser útil ya que puede colocar cosas como animaciones, sonidos, crear accesos directos y mucho más, lo que le permite hacer que sus documentos sean más vivos.

Pero, como tiene la capacidad de ejecutar código, también le brinda la oportunidad de infectar fácilmente a alguien con malware.

Tome el malware Ransomware como ejemplo. Se basó principalmente en correos electrónicos y documentos de MS Word con el código malicioso implementado en Macros para infectar a las personas.

Esa es la manera fácil de encontrar vulnerabilidades de seguridad. Simplemente observa ciertas características que tienen ciertos programas y descubre cómo abusar de ellos para violar la seguridad de un sistema. Simple como eso.

Mi opinión es que depende de si estás hablando de sombreros blancos o sombreros negros.

En la mayoría de los casos, los sombreros blancos pueden tomar su tiempo y muy poco esfuerzo. Por ejemplo, puede sentarse y escanear puertos o fuerza bruta un inicio de sesión. Esto suele ser muy lento, pero tiende a funcionar después de un tiempo.

En cuanto a los sombreros negros; Trabajas bajo presión. Tan pronto como haces tu primer movimiento, el reloj comienza a correr. Hago pruebas de lápiz y pido que el equipo / departamento de seguridad no sepa qué va a pasar. Esto me permite trabajar bajo presión y ver si pueden captar lo que está sucediendo. Los sombreros negros encontrarán pequeñas hazañas; por ejemplo, enviar spam a un formulario de inicio de sesión o una página que consulta MySQL y no almacena en caché. Las consultas de MySQL solo tienden a aumentar el uso de la CPU; Sin embargo, esto todavía puede ser perjudicial para una empresa. Otros métodos que no deberían funcionar, pero que aún lo hacen, están tratando de encontrar volcados de contraseña. La mayoría de las personas todavía usan la misma contraseña para todo, y si encuentra un solo volcado con su información de inicio de sesión, es posible que haya obtenido los detalles de inicio de sesión de su empresa.

Al final del día, todo se reduce a tiempo. Como dije antes, una vez que un sombrero negro comienza a funcionar, generalmente necesitan mantenerse unos pasos adelante.

También Kali Linux; siempre Kali Linux.

Hay tres cosas muy diferentes que puede querer decir con esa pregunta.

La primera es ¿cómo encuentran las personas nuevas vulnerabilidades? Ese proceso se llama investigación de vulnerabilidad. Recuerde que un sistema informático tiene cientos de programas diferentes y una vulnerabilidad está asociada con un programa en lugar de un sistema. Los investigadores de vulnerabilidades utilizan programas como analizadores estáticos y fuzzers para encontrar condiciones en las que un programa se porta mal, entender cómo se porta mal y determinar si la falla que descubrieron puede usarse para lograr objetivos más grandes. Esto es todo lo que se necesita para recolectar una recompensa por el error, pero a veces los vendedores quieren un exploit para demostrar que el error realmente tiene serias implicaciones de seguridad. Si su sombrero es de un color más oscuro, necesita un exploit para venderlo como un día 0.

La segunda pregunta es, una vez que sabes que hay un defecto potencialmente explotable, ¿cómo creas un exploit para usarlo repetidamente para esos objetivos más grandes? Eso es explotar el desarrollo. Los investigadores de vulnerabilidades con frecuencia hacen esto, pero los desarrolladores de exploits dedicados también pueden hacerlo. Los grupos más grandes tienen personas especializadas. Una vulnerabilidad encontrada en VR podría hacer que un programa se bloquee. Un exploit puede hacer que suelte un proyectil. Un exploit también podría adaptarse para ser utilizado por un framework como metasploit.

La tercera pregunta es, una vez que tenga todas estas vulnerabilidades, ¿cómo sabe cuáles usar? Esto es parte de lo que con frecuencia se llama piratería, porque es donde pasa de trabajar en sus propios sistemas a trabajar en cosas de otras personas. Hay formas de identificar exactamente qué versiones de qué programas están en uso en una máquina. Correlaciona esto con las vulnerabilidades en su arsenal y luego investiga para ver si un sistema en particular es vulnerable.

Si desea hacer sus propios exploits y cargas útiles, Metasploit es la mejor herramienta. Y después de eso, si desea analizar o hackear mediante exploits y cargas útiles, GoogleExploitDatabase es el mejor.

Hay muchas formas en las que un hacker puede encontrar una hazaña. Todo esto puede depender de su sistema operativo, la seguridad de la red, la seguridad de la contraseña y solo sus hábitos en línea en general. Solo depende del tipo de exploit que estés buscando.

Oye,

Es mi primera respuesta sobre Quora y odio decirlo, pero creo que tendré que reflejar lo que algunas personas ya han respondido a preguntas similares. Que es básicamente: o hackea o no.

En una cafetería, pirateas.

En un baño, hackea.

En un aula, hackea.

Probablemente no hackees el consultorio de tu médico, pero algunos también pueden debatir eso.

Y no me refiero a piratear sus PC, no … Situaciones sociales, procesos de negocios, incluso los miembros de su familia. Hasta cierto punto, todo es pirateable, ya que a nadie le importan las pruebas.

En resumen, es un estilo de vida, no creo que decidas ser un hacker. Pero en caso de que quiera saber cuál es el proceso de algunos hackers consumados, le sugiero que vea este TEDx:

Hay diferentes herramientas disponibles como Metasploit, setoolkit, etc.

Si no sabes como programador, debes mirar de nuevo. Está un poco delante de tu cara. ¿Cómo se explota algo? El eslabón más débil es tu primera pista. Ve hacia eso.