¿Qué exploit y qué uso de carga útil?

0

Estoy aprendiendo pruebas de penetración. He leído la guía de Metasploit Unleashed sobre seguridad ofensiva. Aprendí los fundamentos de Metasploit y el uso de msfconsole.

Después del reconocimiento y la exploración de mi objetivo, tengo suficiente información para pasar a la siguiente fase.

Algunos datos que tengo son puertos abiertos con servicios en ejecución relacionados, nombres de los servicios, versiones del servicio, sistema operativo del dispositivo, firewalls utilizados, etc.)

He lanzado el msfconsole.

Debería encontrar el exploit y la carga útil correctos, en función de la información recopilada para obtener acceso. Pero no entiendo la manera de empezar todo esto.

Suponiendo que mi destino tiene 20 puertos abiertos, quiero probar la vulnerabilidad utilizando una carga útil de explotación que no requiere la interacción del usuario. Las posibilidades de que exploten y utilicen las cargas útiles ahora se reducen, pero son demasiadas. ¡Buscar y probar todos los exploits y cargas útiles para cada puerto no es bueno! Entonces, si no conozco la vulnerabilidad del objetivo, ¿cómo puedo proceder?

Me gustaría ser consciente de lo que hago y no intentarlo sin entenderlo. El exploit remoto es solo un ejemplo. Quiero saber el concepto detrás de la elección de un exploit. ¿Por qué uso el exploit A y no B antes de verificar si A y B explotan el trabajo en el objetivo?

    
pregunta Davide Quarantiello 11.05.2018 - 16:22
fuente

2 respuestas

3

Es genial ver que estás tratando de entender qué explotar y la carga útil elegir, y más importante, POR QUÉ. Esa es la manera de hacerlo. Esto te ahorrará mucho tiempo a medio / largo plazo y te ayudará a convertirte en un mejor pentester.

  

Debería encontrar el exploit y la carga útil correctos, en función de la información recopilada para obtener acceso. Pero no entiendo la forma de comenzar todo esto.

Por lo general, la carga útil es la parte fácil. Depende principalmente de lo que intenta lograr en el sistema víctima (obtenga un shell, instale una puerta trasera para poder conectarse a él más adelante, haga el servicio / aplicación, etc.), pero también del reducido conjunto de opciones disponibles. para el exploit particular que terminarás eligiendo.

  

Suponiendo que mi destino tiene 20 puertos abiertos, quiero probar la vulnerabilidad utilizando una carga útil de explotación que no requiere la interacción del usuario. Las posibilidades de que exploten y utilicen las cargas útiles ahora se reducen, pero son demasiadas. ¡Buscar y probar todos los exploits y cargas útiles para cada puerto no es bueno! Entonces, si no conozco la vulnerabilidad del objetivo, ¿cómo puedo proceder?

Para elegir el exploit correcto, la mayoría del tiempo tendrás que investigar un poco. A veces un poco, a veces mucho. Por supuesto, desea realizar este proceso de la manera más eficiente posible para ahorrar tiempo (esta parece ser su pregunta principal).

En situaciones de la vida real, un host normalmente solo tendrá un par de puertos abiertos, tal vez algunos, pero casi nunca encontrará uno con un número de puertos abiertos tan grandes como 20. Esto reduce la búsqueda un poco. Para los dos puertos abiertos que encuentre abiertos, querrá identificar el software (incluida la versión) que se ejecuta en cada uno y luego tratar de identificar las posibles vulnerabilidades de este software (consulte la nota [1] a continuación). Si su objetivo es simplemente obtener acceso al sistema, querrá optar por la "fruta que cuelga", una frase popular en la comunidad de seguridad (ver [2] a continuación). Esto significa que primero verá los servicios que tienen mayores posibilidades de ser vulnerable. Por ejemplo, HTTP suele ser uno de los primeros servicios, ya que las aplicaciones web en general tienen muchas más probabilidades de tener vulnerabilidades en comparación con otro tipo de software. Un servidor MySQL / SQL estaría en algún lugar en medio de la lista, mientras que un servidor SSH usualmente sería el último (asumiendo que se está ejecutando una versión reciente). Pero para tomar estas decisiones, primero debe identificar todos los servicios / versiones.

A veces, los objetivos más fáciles no dependerán estrictamente del tipo de servicio en sí, sino de lo mal configurados / mantenidos que puedan estar. Los ejemplos son el uso de credenciales en blanco, predeterminadas o fáciles de adivinar, que tienen problemas obvios de inyección de SQL, faltan parches críticos de seguridad, etc. La mayoría de estos se aplican a diferentes tipos de software / servicios.

No hay mucha teoría detallada sobre la "fruta de baja altura". La experiencia práctica que ganas con los años hace una gran diferencia. Encontré una imagen útil en enlace que vale la pena compartir:

ObservecómoHTTP/80,HTTPS/443ySMB/445tienenelmayornúmerodevulnerabilidadescríticasyaltas,ytambiénungranporcentaje(55-90%)delasquesepuedenexplotar.Porotrolado,apesardequeSSHtambiéntieneungrannúmerodevulnerabilidadesaltas/críticas,soloel3%deellassonrealmenteexplotables.

[1]Labúsquedadevulnerabilidadesenunapiezaespecíficadesoftwareesunpocodecienciaensímisma.Porlogeneral,empiezosimplementebuscandoenGoogleelsoftwareylaversióncombinadosconlaspalabrasvulnerabilidady/oexploit.AmenudoencuentroGooglemuchomásrápidoqueusandootrasherramientas,pero,porsupuesto,tambiénusootrasherramientas:lafunciónsearchenMetaSploitFramework,www.exploit-db.comysusearchsploitherramientaincluidaenKali, enlace , sitio web del proveedor de software específico (anuncios de seguridad), etc.

[2] En ocasiones, querrá intentar identificar y explotar cada una de las vulnerabilidades del sistema de destino, y no solo una que le permita acceder. Esto es particularmente cierto para algunos compromisos de Pentest, ya que el cliente desea que su sistema o red sea lo más seguro posible, por lo que es muy valioso para ellos obtener un informe que enumere todas las vulnerabilidades encontradas, las diferentes formas en que fueron explotados (o podrían potencialmente ser explotado), pasos de remediación, etc. Si solo incluye uno, el cliente puede parchearlo pero aún podría tener muchos otros problemas de seguridad que podrían resultar en que su sistema o red se vea comprometido.

    
respondido por el act1vand0 13.05.2018 - 04:57
fuente
3

Tienes razón en que el lanzamiento a ciegas de exploits en una máquina no es el camino correcto.

En su lugar, deberías usar todos los datos que recopilaste para ver si alguna de esas cosas tiene vulnerabilidades. Por ejemplo, tienes los nombres y las versiones del servicio. Busque (en Metasploit o en cualquier otra base de datos de vulnerabilidades) si esa versión del servicio tiene una vulnerabilidad conocida. Así es como usted reduce sus opciones.

    
respondido por el schroeder 11.05.2018 - 16:34
fuente

Lea otras preguntas en las etiquetas