Pregunta:
¿Cuál es su proceso de descubrimiento de vulnerabilidades?
Rolf Rolles
2013-03-27 15:13:57 UTC
view on stackexchange narkive permalink

Yo mismo soy un tipo de análisis estático; Casi siempre abandoné la ingeniería inversa dinámica hace diez años. Entonces, en estos días, mi proceso generalmente es ubicar donde mi entrada ingresa al módulo que me interesa, y luego realizar un análisis estático pesado para determinar cómo mi entrada manipula el estado del programa. He encontrado algunos errores geniales como la divulgación de información de esta manera; sin embargo, sin duda soy mucho más lento que mis contrapartes que emplean mucho análisis dinámico y generación de entrada dinámica (por ejemplo, fuzzing aleatorio).

¿Qué pasos suele seguir para descubrir vulnerabilidades en programas de código cerrado?

Esto suena muy parecido a una encuesta, que generalmente no funciona bien en los sitios de StackExchange.
One responder:
joxeankoret
2013-03-27 23:18:11 UTC
view on stackexchange narkive permalink

Así es como lo hago normalmente, aunque depende en gran medida del objetivo / proyecto y es solo cómo me gusta hacerlo yo mismo:

  • Comience (probablemente tonto) a confundir la aplicación como tan pronto como tenga el objetivo.
  • Mientras tanto, analice estáticamente la aplicación para comprender cómo funciona y, tal vez, para encontrar vulnerabilidades fáciles de alcanzar.
  • Trate de comprender si puede hacer que su fuzzer sea más inteligente una vez que tenga suficientes estructuras y funciones descubiertas en IDA.
  • Si tiene un éxito en su fuzzer, descubra la causa raíz del problema y si podría ser explotable. Sin embargo, si no es así, vale la pena verificar en profundidad el área donde ocurrió el accidente, ya que es un indicador probable de un área interesante en la que concentrarse.
  • Si tiene un impacto mientras realiza un análisis estático , intente escribir un activador simple para él.
  • Concéntrese en la parte donde existe el error para continuar analizando estáticamente.
  • Una vez que tenga 1 vulnerabilidad verdadera encontrada a través de fuzzing o estáticamente análisis, escriba reglas / scripts para encontrar vulnerabilidades similares.
  • Posiblemente escriba un exploit para él y vuelva a 2.
  • Cuando esté cansado de encontrar tales vulnerabilidades y después de comprender el funcionamiento interno de la aplicación, intente encontrar fallas lógicas.

PD: Leer la documentación también es una buena manera de encontrar algunas vulnerabilidades, así como leer registros de cambios, parches de diferencias , enviar mensajes, etc ... si tiene acceso al código fuente (a veces puede tener acceso parcial al código fuente del objetivo, incluso para aplicaciones de código cerrado).

Solo mis 2 centavos.

¿Podría elaborar un poco más sobre "escribir reglas / scripts para encontrar vulnerabilidades similares"? Supongamos que encontró una vulnerabilidad al confundir qué tipo de reglas va a escribir. ¿Quiere decir algo como limitar el espacio de búsqueda de entrada de parámetros para su fuzzer o?
Me refiero a crear reglas / scripts para encontrar patrones similares al código donde encontró una vulnerabilidad, en el código binario. Es muy probable que haya más vulns / bugs similares al que encontraste. Aunque no es una vulnerabilidad, esto puede dar un [ejemplo] (http://joxeankoret.com/blog/2012/08/05/simple-bug-finding-tools-fugue-i/).


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...