Cómo mejorar como experto en seguridad

33

Soy un desarrollador de software profesional con un gran interés en la seguridad de las aplicaciones web. Diría que probablemente tengo un mejor entendimiento de la seguridad de las aplicaciones web que el desarrollador promedio. Mi problema es que mi conocimiento está muy centrado en la parte teórica de la seguridad web, es decir, he leído muchos libros, sigo blogs y listas de correo, pero mi experiencia práctica es limitada.

Sé la causa raíz de las vulnerabilidades, sé cómo funcionan y cómo detenerlas. Lo que me gustaría hacer es llevar mi conocimiento al siguiente paso: quiero esa experiencia práctica. Sé que probablemente termine haciendo cosas relacionadas con la seguridad en algún momento de mi carrera, pero no todavía, al menos no a tiempo completo. Mientras tanto, me gustaría aumentar mi conocimiento sobre la seguridad de las aplicaciones web y obtener más experiencia, especialmente en campos como las pruebas de penetración.

Mi pregunta para usted, mis queridos expertos en seguridad, ¿qué consejos tiene para mí para obtener la experiencia práctica que tanto deseo? ¿Qué recursos podría recomendar para conocer las diferentes herramientas y técnicas utilizadas en las pruebas de penetración?

Una opción podría ser instalar una aplicación web vulnerable localmente (sé que hay al menos una en el código de Google, no recuerdo su nombre) y luego usar guías como la Guía de pruebas de OWASP para probar las diferentes técnicas. . Sin embargo, probablemente estoy buscando una forma de aprendizaje más guiada, es decir, quiero saber en qué orden debo hacer las cosas, asegurarme de hacer las cosas de la manera correcta y en el orden correcto: pasos de bebé, así que decir.

Cualquier consejo es más que bienvenido.

    
pregunta KLE 29.09.2011 - 20:11
fuente

5 respuestas

23

Es genial que estés aprendiendo mucho por tu cuenta. Estás en el camino correcto. Su entusiasmo por aprender por su cuenta lo colocará un paso por encima de su competencia. Kudos.

Mi principal consejo sería: no te preocupes demasiado por planificar un camino a través de todo el material que quieras aprender. No necesitas un plan cuidadosamente pensado. En cambio, ensucie sus manos, juegue, no tenga miedo de explorar. Cuando vea algo que se vea bien, hágalo de manera oportunista. Al principio puede que te sientas abrumado, pero a largo plazo creo que encontrarás una experiencia valiosa.

Creo que una buena experiencia es participar en una evaluación de seguridad de un sistema de software. Esta sería una experiencia divertida para ti. Puede elegir una aplicación web de código abierto o un marco de programación web y hacer una evaluación de seguridad de la misma: hacer una evaluación de riesgos de arquitectura (lo que Microsoft denomina "modelado de amenazas", con STRIDE y similares), leer el código y hacer una revisión del código de seguridad , prueba algunas herramientas de análisis estático. Luego, escriba sus resultados y publique una entrada de blog con su evaluación. Haz esto unas cuantas veces y creo que la experiencia será extremadamente útil para ti.

Otra muy buena experiencia para usted sería crear una aplicación web no trivial o dos. Me gusta web2py como un marco de programación web por su facilidad de aprendizaje, pero alternativamente, elegir algo que sea más popular (por ejemplo, Ruby on Rails, PHP o uno de sus marcos) puede ser una buena experiencia para ver cuáles son los problemas con los marcos comunes. Escribe una aplicación web, con algún código JavaScript del lado del cliente. Juega y aprende a usar jQuery o similar. Tal vez experimentar con Node.js. Creo que esta será una manera fantástica de exponerse a algunos de los desafíos y la mentalidad que los desarrolladores web probablemente enfrentarán.

Dependiendo de su personalidad, puede resultarle divertido crear un blog y escribir cosas divertidas que haya aprendido, a medida que las aprende. Para muchas personas, el acto de escribir algo lo solidifica en tu cerebro y te obliga a entenderlo mejor.

Usted mencionó practicar la piratería de una aplicación web. Aprender a hackear una aplicación web es divertido, y vale la pena hasta cierto punto. Es bueno tener experiencia práctica en la piratería de una aplicación web, para ayudarlo a pensar en los riesgos y hacer los conceptos concretos. Sin embargo, no lo convertiría en el foco principal de su aprendizaje. Los exámenes de penetración web son una actividad de gama baja en estos días, con oportunidades de carrera menos prometedoras, por lo que no aconsejaría intentar concentrar su energía en aprender a ser un pentestro web. No es así como te aconsejaría que te posiciones, si tienes la opción (y parece que lo haces).

    
respondido por el D.W. 29.09.2011 - 22:18
fuente
11

Puedo identificarme con tu situación :-)
He estado zumbando alrededor de la comunidad infosec por un tiempo, básicamente tratando de ponerme en marcha con las cosas que también quieres hacer. Estos son algunos de los consejos que he recogido sobre cómo ensuciarse las manos.

eLearnSecurity
Para mí, personalmente, he decidido seguir adelante con el curso en eLearnSecurity.

enlace

Está ganando mucha tracción en la comunidad de seguridad por ser muy prácticos. También tienen una configuración que llaman 'The Colosseum', donde tienes a tu disposición un área de juego de aplicaciones web vulnerables.

Esta no es una de esas 'certificaciones por el bien de HR'. Es adecuadamente útil.

DVWA
También puede echar un vistazo a la aplicación web Damn Vulnerable, creada por un compañero mío llamado Ryan Dewhurst: enlace : una especie de como el WebGoat de Owasp, pero en mi opinión mejor. Por ejemplo: le muestra la vulnerabilidad y luego el código PHP sobre cómo prevenir esto.
Una lista con otros como este: enlace

Agnitio
Esta es una herramienta basada en una lista de verificación para la revisión del código de seguridad. Puedes aprender mucho de ello. En general, eche un vistazo al blog de SecurityNinja (David Rook), está lleno de cosas buenas.

enlace

EH-NET
Echa un vistazo a enlace , hay un montón de buenos punteros allí.

Desafíos / juegos de guerra
Estos son buenos por razones obvias: práctica, práctica, práctica. Hay muchos de ellos, y los buenos tienen niveles para principiantes y más allá.

enlace
enlace

Espero que algo de esto te sea de utilidad. ¡Salud!

P.S .: Disculpe que los enlaces no sean enlaces, al parecer no tengo permitido muchos enlaces porque mi reputación no es lo suficientemente alta (esta es mi primera respuesta).

    
respondido por el Dieter 07.10.2011 - 00:28
fuente
4

enlace proporciona algunos problemas prácticos que puede solucionar.

  

Este código muestra cómo se pueden explotar las vulnerabilidades de las aplicaciones web y cómo defenderse contra estos ataques. La mejor manera de aprender cosas es haciendo esto, por lo que tendrás la oportunidad de hacer algunas pruebas de penetración reales, explotando una aplicación real. Específicamente, aprenderás lo siguiente:

     
  1. Cómo se puede atacar a una aplicación usando vulnerabilidades comunes de seguridad web, como vulnerabilidades de secuencias de comandos entre sitios (XSS) y falsificación de solicitudes entre sitios (XSRF).
  2.   
  3. Cómo encontrar, corregir y evitar estas vulnerabilidades comunes y otros errores que tienen un impacto en la seguridad, como la denegación de servicio, la divulgación de información o la ejecución remota de código.
  4.   
    
respondido por el Mike Samuel 30.09.2011 - 01:44
fuente
4

siguiendo la sugerencia de Rory Alsop (arriba):

Si su empleador / organización se compromete periódicamente con una empresa externa para realizar pruebas de vulnerabilidad, pida / suplique / luche / luche para involucrarse en eso, tal vez como la persona de puntos de la red / aplicación.

Esto te permitirá hacer contacto con alguien que está haciendo el trabajo práctico (pregúntales cómo entraron al juego).

Es posible que pueda guiar a su empleador aprovechando sus conocimientos teóricos. Si bien es posible que no haya utilizado realmente las herramientas de prueba empleadas, una comprensión de lo que hacen esas herramientas a un nivel básico y lo que esas herramientas pretenden divulgar le ayudará.

La revisión de la propuesta escrita del trabajo presentado por la empresa externa es útil, así como usted podría hacer sugerencias constructivas sobre lo que pretenden. He podido revisar dichos documentos con mi empleador actual y señalar "placa de calderas" en comparación con lo que es realmente significativo. Y pude ver las citas de tal trabajo a realizar. ¡Guauu!

Por último, el informe escrito de los resultados del evaluador puede parecer triste y abominable para algunos, pero puede ser una oportunidad para que usted se ofrezca como voluntario para participar en cualquier evaluación posterior de riesgos o esfuerzos de mitigación.

Hablando de evaluaciones de riesgo, la sugerencia de D.W. de realizar una contra una aplicación web es buena. Puede descargar la plantilla / herramienta STRIDE de MS (requiere Visio la última vez que la usé) y usarla para crear su producto terminado. También puede emplear la escala MS DREAD para medir el riesgo potencial. El documento NIST 800-30 que es el marco de evaluación de riesgo federal es otra buena fuente para los pasos del proceso y un marco de información. Modelos como STRIDE, DREAD, las publicaciones del NIST se convierten en puntos sólidos de las citas de "mejores prácticas" en cualquier artículo que presente.

En última instancia, la administración serán los consumidores de los resultados que cree. Darles algo que ellos entiendan y sea útil le dará el tipo de exposición necesaria para las tareas de seguridad posteriores.

    
respondido por el jl01 21.12.2011 - 15:46
fuente
2

Tengo que discrepar respetuosamente con D.W. con respecto al atractivo de la seguridad de la aplicación web como un campo y una carrera (pero aquí estoy sesgado). Creo que es un área muy emocionante, dinámica y en crecimiento donde un número creciente de jugadores tiene grandes apuestas. Diría que si tiene un gran interés en la seguridad de la aplicación web, hágalo todo. Si esto le emociona, podrá desarrollar una gran carrera y tener un trabajo interesante y desafiante. ¡Sobre todo, es un campo muy dinámico, por lo que no debe aburrirse durante los próximos 20-30 años! :)

Algunos consejos:

  • continúa trabajando para convertirte en un mejor desarrollador. Su experiencia en el diseño, las pruebas y la codificación, su experiencia en esas áreas, sin duda, lo ayudará cuando se traslade al campo de la seguridad. Lea o vuelva a leer las publicaciones "clásicas": enlace y enlace y continúe por el largo camino hacia el verdadero dominio y comprensión - conocer los idiomas, las computadoras, los sistemas operativos, los protocolos de red, etc. desde adentro hacia afuera te dará un gran impulso y te hará sobresalir cuando comiences a trabajar en el área de seguridad.

  • involucrarse con la comunidad de seguridad [de la aplicación web] (o comunidades). El primer paso correcto es venir a este sitio :) Para la seguridad de la aplicación web: si hay un capítulo de OWASP cerca de usted (https://www.owasp.org/index.php/Category:OWASP_Chapter#Local_Chapters_by_Geographic_Region), póngase en contacto con a ellos y acudir a sus reuniones; ¡Si no, considera comenzar uno!

  • vaya a una conferencia como OWASP, BlackHat o DefCon si puede, o navegue por su sitio web, diapositivas publicadas y webcasts

  • elija sus "modelos a seguir": navegue por los temas de seguridad, publique y elija algunos blogs y cuentas de Twitter que seguiría y que le darían información e inspiración.

  • aprenda un escáner de aplicaciones web, por ejemplo, W3AF enlace También puede involucrarse con el proyecto y ayudar a hacer mejor (o más adecuado para sus propósitos o intereses)

  • Considere realizar una inmersión profunda en la seguridad móvil y / o en la nube; ambas son áreas altamente dinámicas y prometedoras

  • finalmente, más libros, ¡nunca hay suficientes! :) Asegúrese de leer el "Manual de piratería de aplicaciones web" (también conocido como WAHH2) y "The Tangled Web"; Considere pasar por la "Ofuscación de aplicación web" si le interesa su material. Para hacer las lecturas más prácticas y atractivas, intente inventar cosas que ilustren lo que leyó o hacer algunas variaciones en las vulnerabilidades o en las muestras de código. Por ejemplo, pague un par de horas de enlace (compañero de WAHH2) y luego intente codificar demostraciones similares para otros temas.

respondido por el dmitris 20.12.2011 - 16:55
fuente

Lea otras preguntas en las etiquetas