Si una persona aprende conocimientos de informática y se convierte en un experto en redes sin saber nada, ¿qué necesita aprender en el medio?
Cómo convertirse en un maestro de la red
Esta es una publicación de una BBS extranjera.
No escribo esto porque esté cansado de responder las mismas preguntas una y otra vez, sino más bien considerando que esta es una pregunta significativa que mucha gente (90%) realmente necesita responder. Preguntar y nunca preguntar.
Me han hecho muchas preguntas sobre el campo de la seguridad, como por ejemplo: ¿Qué lenguaje de programación admiras más? ¿Qué libro debería leer para empezar? En definitiva, cómo convertirse en una persona influyente en el campo de la seguridad. Como mi respuesta es diferente a la respuesta general, voy a expresar mi opinión.
1. ¿Por dónde empezar?
Mi opinión puede ser diferente a la opinión general. Si estás empezando, te sugiero que no empieces desde Technotronic, Bugtraq, Packetstorm, Rootshell y otros sitios, ¿verdad? No empieces por ahí (aunque son sitios fantásticos, y no digo que no los visites) por la sencilla razón de que si crees que ser experto en "seguridad" significa conocer las últimas vulnerabilidades, lo descubrirás. al final no obtuve nada.
Estoy de acuerdo en que es necesario saber dónde hay vulnerabilidades, pero estas no pueden sentar una base sólida para su dominio. Por ejemplo, usted sabe que RDS es la vulnerabilidad más reciente, sepa cómo descargarla y utilizarla. Herramienta de script para explotar esta vulnerabilidad y saber cómo parchear esta vulnerabilidad (quizás muchas personas solo saben cómo atacar, pero no saben cómo proteger, sin embargo, 3 meses después, los parches están volando por todo el cielo y). esta vulnerabilidad ya no existe... ¿De qué sirve tu conocimiento ahora? Y es posible que no comprenda en absoluto el análisis de la vulnerabilidad.
¿Qué conocimientos debes aprender? ¿Es análisis? ¿O un método de ataque?
Esto es lo que quiero enfatizar nuevamente. Es posible que la gente no preste atención. Ya hay muchas personas que piensan que son expertos en seguridad siempre que conozcan las últimas vulnerabilidades. ¡NO! saben que es simplemente "vulnerabilidad" en lugar de "seguridad".
Por ejemplo: Sabes que existen vulnerabilidades en phf, showcode.asp, count.cgi y test.cgi, pero ¿sabes por qué se convierten en vulnerabilidades CGI? ¿Sabes cómo programar una puerta de enlace universal segura? ¿Juzgarías qué vulnerabilidades o vulnerabilidades podría tener un CGI en función de su estado de funcionamiento? ¿O simplemente sabes que estos CGI tienen errores?
Así que te sugiero que no empieces con vulnerabilidades y actúes como si no existieran (ya sabes a qué me refiero), lo que realmente necesitas hacer es empezar con un usuario normal.
2. Ser usuario
Lo que quiero decir es que debes tener al menos unos conocimientos generales básicos. Por ejemplo: si desea participar en Web Hacking, ¿es posible que ni siquiera sepa cómo utilizar un navegador? ¿Abrirás Netscape o IE? ¡Genial! Ingresarás tu nombre, sabes que HTML es una página web, bueno, tienes que seguir haciendo esto para convertirte en un usuario experto. Distinguirá entre ASP y CGI porque son dinámicos. ¿Qué es PHP? ¿Qué son las redirecciones, las cookies y SSL? Necesita saber todo sobre la Web con la que un usuario normal puede entrar en contacto. No se trata de atacar vulnerabilidades, se trata sólo de usarlas. Sin este conocimiento básico (quizás aburrido), no puedes convertirte en un maestro. Aquí no hay atajos.
Bien, ahora ya sabes todo lo que hay aquí, lo has usado. Antes de hackear UNIX, al menos debe saber cómo iniciar sesión, cerrar sesión, cómo usar comandos de shell y cómo usar programas comunes (correo, FTP, Web, Lynx, etc.).
Para convertirte en administrador, debes dominar las siguientes operaciones básicas.
3. Conviértete en administrador
Ahora que has ido más allá del ámbito de un usuario común y has entrado en un ámbito más complejo, necesitas dominar más conocimientos.
Por ejemplo: ¿Cuál es la diferencia entre el tipo de servidor web y otros servidores? ¿Cómo configurarlo, conocimientos como este, cuanto más sepas, mejor entenderás cómo funciona? ¿Para qué es? ¿Entiendes el protocolo HTTP? ¿Conoce la diferencia entre HTTP1.0 y HTTP1.1? ¿Qué es WEBDAV? ¿Sabía que el alojamiento virtual HTTP 1.1 ayuda a configurar su servidor web?
Necesitas entender el sistema operativo. Si nunca has configurado NT, ¿cómo puedes atacar un servidor NT? ¿Nunca ha utilizado Rdisk, el administrador de usuarios, pero espera descifrar una contraseña de administrador y obtener derechos de usuario? ¿Quiere utilizar RDS, pero sus operaciones bajo NT siempre han utilizado una interfaz gráfica? Debe ser ascendido de administrador a "superadministrador". Esto no significa que tenga la autoridad de un superusuario, sino que sus conocimientos deben cubrir todos sus campos. Muy bien, agregarás usuarios en la interfaz gráfica, ¿también puedes hacerlo en el modo comando? Además, ¿para qué sirven los archivos .exe en system32? ¿Sabes por qué USERNETCTL debe tener privilegios de superusuario? ¿Nunca has entrado en contacto con USERNETCTL? No creas que sólo saber hacerlo es suficiente. Saber todo lo posible y convertirte en un líder técnico, pero...
No se puede saberlo todo.
Este es un hecho que tenemos que afrontar. Si crees que puedes saberlo todo, te estás engañando. Lo que debes hacer es elegir un campo, el que más te interese y aprender más sobre él.
Para convertirse en un usuario experto, en un administrador, en un líder técnico, en la mejor persona en un determinado campo, no se trata sólo de aprender a utilizar un navegador web. Escribe CGI, ¿conoces los principios de HTTP y los servidores web? ¿Alguna idea de cómo hacer que el servidor funcione cuando no funciona correctamente? Cuando tengas cierta experiencia en este campo, naturalmente sabrás cómo atacar y proteger.
Esta es en realidad una verdad muy simple. Si conoces todo el conocimiento en esta área, entonces sabrás dónde está. Los peligros para la seguridad son. Frente a todas las vulnerabilidades (nuevas, antiguas y futuras), usted mismo puede descubrir vulnerabilidades desconocidas (ya es un maestro de la red en este momento).
Puede encontrar vulnerabilidades, pero debe comprender la causa raíz de las mismas. la vulnerabilidad. Entonces, ¿dejas tu copia de Whisker y aprendes qué hace CGI? ¿Cómo hacen que los servidores web a través de HTTP sean vulnerables? Pronto sabrás lo que hace Whisker.
4. Lenguaje de programación
Entre todas las preguntas que se hacen, la más común es: "¿Qué lenguaje de programación crees que deberías aprender?" ¿Crees que depende de la situación específica, como por ejemplo, cuánto tiempo estás dispuesto a dedicar a estudiar? ¿Qué quieres hacer con este idioma? ¿Cuánto tiempo desea que tarde en completarse un programa? ¿Qué tan complejo logrará este programa?
Hay varias opciones a continuación.
Visual Basic
Un lenguaje muy fácil de aprender. Hay muchos libros sobre este tema y también hay una gran cantidad de código fuente público gratuito. Deberías poder usarlo bastante rápido. Pero este lenguaje tiene ciertas limitaciones. No es tan poderoso como C++. Debe ejecutarlo en Windows y en un entorno de programación VB (ya sea pirateado o genuino, de todos modos no es gratuito). Es muy difícil utilizar VB para compilar códigos de ataque o parches.
C++
Quizás el lenguaje más potente. Disponible en todos los sistemas operativos. Hay toneladas de código fuente y libros disponibles en línea de forma gratuita, incluidos entornos de programación. Es más complejo que VB y lleva más tiempo dominarlo que dominar VB. Las cosas simples son fáciles de aprender, pero las cosas poderosas son más difíciles de entender. Esto debe medirlo usted mismo.
Ensamblador
Quizás el lenguaje más complejo, y también el más difícil de aprender. Si piensas que es el primer idioma que debes aprender, te resultará difícil hacer que tu cabeza explote. Sin embargo, una vez que aprendas ensamblador primero, otros lenguajes de programación te resultarán fáciles. Hay algunos libros sobre esta área en el mercado, pero la cantidad de materiales didácticos en esta área está disminuyendo.
Sin embargo, el conocimiento del ensamblaje es fundamental en algunas áreas, como los ataques de desbordamiento del búfer.
perl
Un muy buen lenguaje. Es tan fácil de aprender como VB y tiene las mismas limitaciones que VB. Pero puede ejecutarse en la mayoría de las plataformas operativas (UNIX y Windows), por lo que ésta es su ventaja. Hay muchos libros sobre esto, es completamente gratuito y puede usarlo para crear algunas herramientas de ataque comunes. Se utiliza principalmente para algunas técnicas de ataque basadas en texto y no es adecuado para crear programas binarios.
Creo que esto es todo lo que quieres saber. Es seguro decir que c/c++ es la mejor opción.