Aprenda la arquitectura de von Neumann, aprenda sobre códigos de operación, memoria, marcos de funciones C, ensamblador.
Una vez que pueda escribir programas de ensamblador simples en X86, continúe y aprenda C lo mejor posible.
Aprende a jugar con punteros de cualquier manera posible.
Ahora aprenda el compilador de C, aprenda cómo funciona lo que significa ctor, dtor. Aprenda todos los conceptos básicos de cómo el compilador de C convierte el código fuente en un binario.
Probablemente quiera hacer esto para Linux primero, luego para que Windows cubra el sistema operativo principal. Es bastante similar de todos modos.
En ese camino probablemente aprendiste mucho sobre las bibliotecas estándar, por lo que no las menciono.
Entonces, ahora comprende cómo se programan los procesadores, cómo funciona un binario compilado internamente.
- ¿Cuáles son algunas deficiencias de algunos productos o software de Microsoft?
- ¿Cuál es la mejor aplicación que has encontrado?
- ¿Cuál es el mejor software de contabilidad gratis con IVA?
- ¿Alguien me puede dar su formulario de solicitud de gerente AIESEC lleno?
- ¿Cuál es la importancia del software de seguimiento de asistencia?
Ahora es el momento de aprender sobre cifrado, hash, algoritmos.
Tal vez no sea demasiado profundo, dependiendo de cuán grande quieras ser, no soy un fanático de las matemáticas, así que dejé de poder modificar un código protegido MD5sum sin cambiar realmente su suma MD5.
Si llega tan lejos, tiene una buena comprensión del hash, incluso si MD5 se está desactualizando lentamente para tales operaciones (todavía se usa demasiado, cualquier niño puede romperlo).
Por supuesto, espero que entiendas el cifrado básico de asym / sym, su implementación, SSL también.
La mejor manera de entenderlos, al menos en lo básico, es implementarlos.
Debe comprender el kernel de Linux, cómo está construido y al menos un conocimiento mínimo de la programación del kernelspace. Esa es una, aunque no hay mucha información adecuada en la red. De hecho, compré libros para el núcleo.
Las redes no son tan difíciles, querrás saber cómo funcionan los enrutadores.
Tal vez aprenda el conocimiento básico de CCNA, que también cubre el modelo OSI.
Aprenda sobre la pila TCP / IP, escriba algunos protocolos binarios de bajo nivel en C para comprender cómo funcionan los protocolos.
Aprenda a establecer una conexión con un servicio típico (https, ntp, etc.).
Aprenda netfilter / iptables, cómo usarlo y cómo escribir pequeños módulos propios para él. Bastante simple en comparación y muy divertido.
Aprenda cómo funcionan ARP, ICMP, TCP, UDP, RIP, BGP, HTTP y HTTP, POP3, SMTP y todos los demás protocolos esenciales. Mira su apretón de manos, todo es bastante simple y similar de todos modos, ya que dominaste el modelo OSI y la pila tcp / ip.
Ahora que conoce los conceptos básicos, puede comenzar a explotar.
Encontrarás algunos tutoriales, recuerdo algo llamado “destrozar la pila por Alpeh” o algo similar de mi tiempo.
Una vez que haya entendido los diferentes trucos, todo es simple para usted, podrá encontrar formas propias.
Una vez que sea capaz de escribir exploits simples para el montón, desborde de búfer de pila y desbordamientos de cadena de formato (son divertidos, lamentablemente raros desde el bombo) puede entrenarse descargando demonios obsoletos.
Hay innumerables errores en los programas que se han solucionado, solo descarga un demonio donde sabes que fue voluble y explotado.
Intenta encontrar el error (puedes hacer trampa con los registros de cambios) y explótalo tú mismo.
Una vez que domine esto, ya estará bastante lejos, ahora se trata de aprender a sortear los sistemas de protección.
Hay muchas formas diferentes de proteger un binario para que realmente no se inyecte con shellcode.
Algunos protegen el marco / memoria de la función agregando bytes de seguridad adicionales (protección canaria), algunos protegen áreas de memoria completa para no permitir la ejecución de la función.
Todos se pueden eludir, pero necesitará algunos negocios complicados, tendrá muchas más limitaciones en las áreas de memoria en las que puede agregar shellcode y en los métodos utilizados para obtener shellcode allí.
Hace 10 años hubo “juegos de guerra de codificación”, no estoy seguro de si algunos todavía están allí, pero fue divertido hacerlo una vez que sabes cómo hacerlo.
Es un desafío de código explotar su camino hacia un servidor y aumentar los privilegios en su camino hacia arriba. Al igual que los niveles en un juego normal.
Ya no conozco ningún nombre, la última vez que revisé la mayoría se habían ido.
Es una ruta larga y solo puedes ir por esa ruta si te encanta.
Es mucho trabajo, necesitas ser joven 🙂
Idiomas que tal vez quieras aprender como comienzo:
ASM, C, C ++, Bash, Perl, PHP
Algunas herramientas para dominar:
gdb, tcpdump, todas las herramientas predeterminadas (strace, ltrace, netstat, iptables, etc.)
En Windows es un poco más doloroso, no tan intuitivo y rápido.