¿Cómo encuentro vulnerabilidades en el software? [cerrado]

-3

Leí una respuesta aquí que hablaba sobre cómo convertirse en PenTester. La respuesta dice que tienes que aprender a romper el software. Publiqué un comentario en la respuesta preguntando dónde empiezo a aprender a romper el software, pero no recibí ninguna respuesta, así que decidí hacer mi propia pregunta. ¿Cómo aprendo a romper el software? Ya soy programador y conozco Java, C ++. También estoy familiarizado con JavaScript, CSS, HTML, Python y C. Regularmente leo sobre vulnerabilidades de seguridad, pero ahora quiero saber cómo puedo encontrarlas.

Gracias.

Editar: He hecho cosas como usar el encabezado winnt.h en C ++ para cambiar los puntos de entrada de los ejecutables, y agregar nuevas secciones a los ejecutables, demonios, he escrito una ventana de trabajo completa ejecutable solo con un editor hexadecimal.

Editar: Reduciendo la pregunta: Estoy interesado en las vulnerabilidades del sitio web y del servidor, las vulnerabilidades del sistema operativo, las vulnerabilidades en la memoria de la computadora como MemoryLeaks, cosas como virus, etc.

    
pregunta nom 19.06.2015 - 11:50
fuente

3 respuestas

7

No hay una sola manera de encontrar vulnerabilidades. Pero aquí hay algunos pasos que puedes seguir.

Destino

Primero debes elegir una plataforma y un software para atacar. Para empezar elegiría algo que sea de código abierto. Hay varias ventajas a esto; El principal es que puedes mirar el código fuente. A continuación, debe elegir un aspecto que le gustaría atacar. Por ejemplo, tal vez desee atacar la implementación UDP de la pila de redes de Linux.

Realizar un análisis en una pieza de software de código cerrado significa que estás desensamblando el binario, revisando las instrucciones y depurando el proceso. Esto es largo y tedioso. Es mejor comprender qué rompe el código con el código fuente antes de buscarlo en el desmontaje.

Al ser específico en su objetivo le permite analizar sistemáticamente una pieza de software.

Analizar

Con su target en mente, comience su análisis de la parte del software que desea encontrar vulnerabilidades.

  • Determine qué archivos de código fuente afectan su objetivo.
  • Con el código abierto puede insertar mensajes de depuración para asegurarse de que comprende el flujo de código. Esto puede ser extremadamente importante. Saber a qué secciones del código se llaman, y las variables que conducen a ese resultado es clave para entender lo que está sucediendo.
  • Ejecutar herramientas de análisis de código sobre el proyecto. Dependiendo del proyecto, esto podría ser un punto discutible, pero pueden ser útiles y detectar errores comunes de programación.
  • Habilite todas las banderas de compilación del compilador . Tu objetivo es encontrar errores de programación. Qué mejor manera que el compilador le diga dónde cree que el código es malo.

Estas son solo algunas de las cosas que puede hacer para analizar el software. Cree una lista de posibles errores de codificación.

Activación

Ahora, con una lista de posibles fallas de codificación, debe determinar si puede desencadenarlas. Una vez más, los mensajes de depuración le ayudarán. Regrese al código fuente y determine qué es exactamente lo que debe suceder para que cada falla de codificación rompa el software. No está buscando una explotación completa, solo quiere que el código se bloquee o haga algo inesperado. Es necesario determinar qué podría desencadenar una falla de codificación. Esto podría ser algo que afecte a una variable de longitud, engañar a una función para que tome la ruta para procesar datos de manera incorrecta, etc. Algunas fallas de codificación simplemente no son desencadenantes, pero esa es la naturaleza del análisis de vulnerabilidad.

En este punto, tiene una lista de fallas y una lista de ideas para cada falla sobre lo que podría provocar que haga algo inesperado.

Fuzzing

Ahora escribes código. Usar prácticamente cualquier lenguaje de programación es conveniente para el software que está atacando. Podría escribir código Python para lanzar paquetes específicos en dispositivos de red para intentar eliminar la implementación UDP de un dispositivo basado en Linux.

El objetivo es implementar sus activadores y esperar que el código funcione de la manera que usted piensa. Sus mensajes de depuración serán útiles aquí.

  • Ellos pueden decirle si la ruta del código tomada es anormal.
  • Pueden mostrarte las variables que intentas manipular
  • Se aseguran de que su activador esté haciendo lo que usted espera y puede ajustarlo en consecuencia.

Con un poco de suerte, puedes hacer que suceda algo diferente. Tal vez eso puede llevar a la ejecución del código, tal vez no. Es un caballo de un color diferente.

Realidad

El análisis de vulnerabilidad lleva tiempo. Un montón de tiempo. No vas a pasar un día analizando software y encontrando 10 vulnerabilidades. El promedio no oficial para el análisis de vulnerabilidad es 1 vulnerabilidad por cada 3 meses de análisis. Puede duplicar ese tiempo si está analizando un proyecto de código no abierto.

    
respondido por el RoraΖ 19.06.2015 - 13:36
fuente
1
  1. Este tipo de investigación es, no es, no será o será ilegal según el lugar donde viva, y puede tener consecuencias no deseadas. Evite hacer eso con la red de su empleador o, lo que es peor, con la conexión de su cónyuge.

  2. Algunas vulnerabilidades pueden ser localizadas por fuzzing. Una vez que se ha encontrado una vulnerabilidad, puede aprender cómo evaluarlos leyendo la prueba de conceptos. Por ejemplo, enlace

respondido por el user2987828 19.06.2015 - 13:36
fuente
1

Para explicar en breve:

Primero que todo, para su comprensión, comprenda la diferencia entre crear un código y romper un código, ya que usted es un programador que conoció en el desarrollo de la página de inicio de sesión de la aplicación web.

Ahora, como un buscador de vulnerabilidades, la forma en la que necesita realizar la prueba es: primero póngase en forma de pirata informático e infrinja todo lo que pueda. Como es consciente de las vulnerabilidades del sitio web, explore la web cómo probar la vulnerabilidad dentro de su aplicación: por ejemplo, soy consciente de que hubo una inyección de SQL de vulnerabilidad:

  • Identificar la vulnerabilidad
  • ¿Cómo puedo probar la vulnerabilidad?
  • categorice si se puede verificar manualmente o se debe detectar con herramientas

Déjame dar un ejemplo:

  • vulnerabilidad: inyección de SQL
  • la página web debe ser probada: login.aspx
  • herramientas utilizadas: rastrear la página de inicio de sesión con inyección SQL
  • es vulnerable? Si es así, cámbielo como desarrollador, hay herramientas listas para usar disponibles en el mercado para cada vulnerabilidad de aplicación web.

En general, puede verificar el estándar owsap y el manual del pirata informático de aplicaciones web para empezar.

En resumen, para su pregunta es similar a su desarrollo.

En desarrollo: obtenga el requisito - > desarrolle el requisito - > test - > fix - > release.

En seguridad: desarrollar - > identificar vulnerabilidad - > explorar vulnerabilidad - > hacer coincidir vulnerabilidad con su aplicación desarrollada - > test - > fix

    
respondido por el BlueBerry - Vignesh4303 19.06.2015 - 12:46
fuente

Lea otras preguntas en las etiquetas