Estilo de programación de Pen Tester [cerrado]

2

Me gradué recientemente y ahora trabajo como desarrollador de software, pero en algún momento de mi carrera, me gustaría hacer la transición a Pruebas de Penetración.

Sé que los evaluadores de bolígrafos a veces escriben sus propias herramientas, pero tengo curiosidad por saber si siguen y usan los patrones de diseño, los principios SÓLIDOS y pretenden escribir código limpio, o si se trata más de hacer que el programa haga su tarea.

    
pregunta Pr0f 07.11.2016 - 21:41
fuente

2 respuestas

11

Hay una gran distinción entre los evaluadores de lápiz que escriben un poco de código y los desarrolladores de herramientas de seguridad.

Durante una prueba de lápiz, es posible que deba escribir algún código personalizado. Por ejemplo, si encuentra una inyección de plantillas en el lado del servidor, es probable que no haya un exploit que funcione en este escenario exacto. Pero con un poco de codificación puedes obtener un shell. Estos scripts simplemente hacen el trabajo; los patrones de diseño son irrelevantes.

Muchas herramientas de seguridad son mucho más complejas que los scripts únicos. Metasploit es un buen ejemplo. Antes de Metasploit, la mayoría de los exploits se desarrollaban como scripts de prueba de lápiz de un disparo. El exploit apuntaría a una vulnerabilidad específica y entregaría una carga útil específica. Metasploit introdujo la modularidad y la estructura en el desarrollo de exploits. En particular, separando los conceptos de: exploits, payloads y encoders.

De hecho, ahora hay todo tipo de herramientas de seguridad que se desarrollan teniendo en cuenta las prácticas de diseño sólidas, aunque muchas de ellas son comerciales, por ejemplo. Nessus, Checkmarx, Burp Suite.

    
respondido por el paj28 07.11.2016 - 22:15
fuente
3

Para trabajos de pentestación, es probable que uses muchas bibliotecas diferentes y creo que es el aspecto principal del trabajo.

Sabiendo esto, también es un poco de trabajo organizar estos proyectos, tener todas las bibliotecas en su sistema, etc. Un proyecto / carpeta por cada utilidad que cree es bastante trabajo.

Para las utilidades pentesting, no necesita muchos patrones de diseño o cosas por el estilo. Es posible que necesite algo como el motor de flujo de trabajo para ejecutar sus utilidades, al igual que lo hace metasploit.

Recomiendo usar uno de los motores de flujo de trabajo existentes y tratar de escribir solo utilidades / complementos. De esta manera puedes lograr mucho sin llegar a las aguas altas.

Otro bit es decidir tu lenguaje de programación para que puedas mantenerte en uno solo la mayor parte del tiempo. Leyendo de tu pregunta, podrían ser Python, Ruby, Java, C #, etc. que son excelentes para propósitos de scripting.

    
respondido por el Aria 08.11.2016 - 08:32
fuente

Lea otras preguntas en las etiquetas