La ruta básica para explotar una vulnerabilidad relacionada con el desbordamiento es encontrar una falla (a menudo mediante la confusión), evaluar la falla y si presenta una ruta de ataque, y luego construir algo para explotarla.
A veces, donde uno se ve puede implicar el conocimiento de la arquitectura, como cuando Charlie Miller notó que iOS 4.3 tiene una sección de memoria que ejecutar código sin firmar . En el caso de todos sus ataques de Apple, creo que la fuente estaba cerrada. Las debilidades de la inyección de SQL son similares: estás empezando con una cuna sabiendo dónde es un buen lugar para mirar.
Si bien es más sencillo identificar y corregir un error a través de la fuente después de encontrar un fallo, el trabajo para configurar el entorno puede carecer de valor si el objetivo es simplemente escribir un exploit operativo. A menudo, el espacio relevante de un programa implica mirar menos de 1 KB de código de máquina.
Desde mi perspectiva, el código abierto permite ver los errores que se agregan a medida que ocurren y decir: "Oye, ese fragmento del código parece una locura". Más allá de eso, el trabajo para explotar el trabajo de código abierto y de código abierto es a menudo el mismo. En cuanto a la ingeniería inversa, es raro, a menos que intentes alterar o recrear una aplicación en lugar de lanzar un exploit desde ella.
No subestimaría la capacidad de los grupos de hackers para dedicar una gran cantidad de recursos informáticos a una tarea. Los grupos de Warez han sido conocidos a lo largo de la historia de Internet por reunir importantes recursos de almacenamiento y ancho de banda. Podría ser ingenuo pensar que los grupos de hackers no reúnen la misma potencia de CPU.
Finalmente, la mayoría de las personas que hacen esto durante un tiempo lo suficientemente largo conservan uno o dos ataques descubiertos en lugar de liberarlos.