Lenguaje de programación para la seguridad de la red

14

Estoy trabajando como probador ahora. Estoy planeando mudarme al dominio de seguridad como un CEH o CISSP. Pero muchos dicen que para ser un gran hacker necesitas conocer bien al menos un lenguaje de programación. Ya sé un poco de Java. Pero solo quería saber qué idioma está más cerca de la seguridad de la red y los dominios relacionados. Entonces, ¿qué tipo de lenguaje debería aprender para que me ayude a moverme al dominio de la seguridad?

    
pregunta Madusudanan 14.02.2012 - 12:17
fuente

9 respuestas

26

No hay un plan definido sobre cuál es el mejor idioma para aprender. Por lo tanto, me gustaría mencionar dos buenas alternativas que yo (y muchas otras) creo que son buenos idiomas para aprender en seguridad informática.

LUA

Explicación de Lua de wikipedia : Lua es un lenguaje de programación ligero y multipantigma diseñado como un script. Lenguaje con "semántica extensible" como objetivo principal.

La razón por la que menciono que LUA es un buen lenguaje para aprender es que es el motor de scripting para MUCHAS herramientas de seguridad populares. Esta es una muy buena razón para aprender este idioma. Algunos de los idiomas incluyen:

  • NMAP (herramienta de mapeo de red)
  • Snort (IDS de código abierto)
  • Wireshark (herramienta de rastreo de paquetes)
  • Vim (muy popular editor de texto de Unix)
  • Cisco ASA (firewall, IPS, VPN)
  • Herramientas de servicios de red (Apache, lightHttpd, FreePop)

En una nota al margen: Incluso el gran éxito de Blizzard, World of Warcraft, tiene soporte para scripts LUA dentro del juego :) Para cualquier persona que pueda ser relevante.

Python

Estoy algo interesado en Python después de haber comenzado a leer el libro " Gray Hat Python: Programación de Python para hackers y Ingenieros Inversos ". Estoy de acuerdo con muchos de los puntos de este libro por qué es bueno aprender este idioma para un pirata informático (comúnmente conocido como especialista en seguridad :)).

Citado en Amazon Python es un buen lenguaje para aprender porque:

  

es fácil de escribir rápidamente, y tiene el soporte de bajo nivel y las bibliotecas que hacen felices a los piratas informáticos.

También es muy cómodo poder interactuar sobre la marcha con el intérprete en tu shell de Python.

Editar: Vista gráfica de las encuestas de HackerNews en lenguajes de programación favoritos / no le gustan:

Edición2:De encuesta de Digininjas :

Language    Number  Percentage
Python  245 81%
Bash Scripting  241 79%
Ruby    127 42%
C   123 40%
Windows Powershell  111 37%
Batch Scripting 108 36%
PHP 107 35%
C++ 66  22%
Java    65  21%
Perl    57  19%
Other   57  19%
VB  29  10%
C#  26  9%
Lua 23  8%
    
respondido por el Chris Dale 15.02.2012 - 07:46
fuente
9

No existe ese tipo de conexión entre los lenguajes de programación y la seguridad, lo que podría ser una mejor manera de verlo es aprender lenguajes comunes (por lo que Java sería un punto de partida razonable), ya que todos los lenguajes tienen problemas de seguridad. También analice los problemas de seguridad en una amplia gama de aplicaciones web y plataformas en lugar de algo esotérico.

Comprender los protocolos de red es una buena idea, y poder analizar el tráfico en las capas 1 a 4 puede ayudar, pero esto es en términos generales del lenguaje.

lea bien las otras preguntas etiquetadas Professional-Education para obtener una orientación más amplia.

    
respondido por el Rory Alsop 14.02.2012 - 12:30
fuente
9

Algunas partes de la seguridad de la red implican unir los pequeños detalles de los paquetes TCP / IP a medida que se envían y reciben; para hacer eso, debe poder interceptar paquetes en un nivel bajo y emitir paquetes hechos a mano también (en Linux, por ejemplo, esto se conoce como usar SOCK_RAW socket ). No todos los lenguajes de programación proporcionan API utilizable para eso; a veces se requiere el conocimiento de C para utilizar estas funciones.

Aparte de eso, cualquier lenguaje de programación versátil que no tenga problemas para recibir y enviar bytes arbitrarios será bueno para usted; Java está bien en ese sentido.

    
respondido por el Thomas Pornin 14.02.2012 - 13:03
fuente
7

Nota: Me di cuenta de que esto está muy sesgado hacia los sistemas y lejos de la seguridad genérica. La seguridad es un proceso e involucra más que la tecnología.

Hay dos rutas que puedes elegir y desafortunadamente (IMHO) tampoco incluyen Java.

C es un lenguaje de sistemas muy bueno. Puede trabajar con Unix y Linux y profundizar cerca del metal: llamadas al sistema, espacio del kernel, redes de bajo nivel, etc.

La otra ruta es un lenguaje de scripting que le permite pegar rápidamente herramientas y programas a un nivel superior. La mayoría de los lenguajes de scripts como perl, python y ruby te darán acceso a abstracciones a nivel de socket. Estoy predispuesto por Python, porque puedes escribir módulos C fácilmente si necesitas rendimiento o acceso de bajo nivel.

Ahora, para abordar la falsedad en su pregunta ... ser un gran hacker trasciende los lenguajes de programación. Ser un gran hacker es un estado de ánimo. Incorpora cuestionar todo y poder resolver problemas de forma creativa. Si puede hacer esto, aprenderá los idiomas que necesita porque será autodirigido hacia ellos.

    
respondido por el rox0r 15.02.2012 - 00:18
fuente
6

Realmente no puedes aprender idiomas para aprender seguridad. La mayoría de los problemas de seguridad son mucho más sutiles que eso. La única excepción a esto son las consultas SQL: en algún momento, realmente necesita comprender la diferencia entre combinar cadenas y consultas parametrizadas. Pero las consultas SQL se crean utilizando otro idioma, ya sea Java, PHP, Ruby, etc.

Pero necesitas entender los lenguajes de scripting. Necesita escribir sus propias herramientas y personalizar las herramientas existentes. Los buenos lenguajes de scripting para aprender incluyen JavaScript, PERL, PHP y Ruby.

Ya has comenzado con Java, por lo que te sugiero que continúes aprendiendo Java. Aprenda cómo usar Java en el servidor web para crear aplicaciones web con un backend SQL. Aprenda a usar Java para crear programas simples de línea de comandos.

Una vez que tenga experiencia en escribir código en cualquier idioma, comience a bifurcarse a otros idiomas. Un buen siguiente paso sería JavaScript. JavaScript se puede usar tanto en el servidor para crear aplicaciones web, como en la línea de comandos. Pero lo más importante es que lo usa dentro del navegador, por lo que es el idioma que debe aprender.

Java y JavaScript usan una sintaxis similar a C. Es una buena idea familiarizarse con la diferencia con otros lenguajes similares a C, a saber, C, C ++, C # y PHP.

    
respondido por el Robert David Graham 15.02.2012 - 06:26
fuente
2

Estoy de acuerdo con mucho de lo que se ha dicho anteriormente. En particular, sin embargo, me gustaría enfatizar un poco la importancia de Ruby. En mi opinión, Ruby es un gran lenguaje "hacker" por varias razones:

  1. (Subjetivo) Es un lenguaje hermoso, inteligente y expresivo, que hace posible eliminar soluciones rápidas y sucias a problemas en poco tiempo.
  2. Metasploit está escrito en Ruby
  3. La biblioteca de gemas de Ruby es vasta y poderosa, lo que, una vez más, hace que sea relativamente fácil resolver problemas rápidamente.
respondido por el Chris Allen Lane 26.03.2012 - 22:09
fuente
2

Recomiendo altamente nmap , socat, lft y curl cuando se aprende cualquier comando de Unix relacionado con la seguridad de la red. A menudo hay pocas razones para reinventar estas ruedas.

OpenVAS admite un lenguaje de script específico para la seguridad de la red llamado NASL, aunque originalmente proviene de la herramienta Nessus, donde NASL se basó en CASL (del CyberCop Scanner de Network Associates).

Muchos fuzzers HTTP / TLS han agregado soporte para servicios web y otros controles de programación potentes. Los geniales que he visto últimamente son resty-eructar, buby, wXf y metralla.

También es útil utilizar algún tipo de aplicación de captura de paquetes, ya sea tcpdump, snort, Wireshark, Network Miner o HTTP Scoop.

Muchos consideran que Lua, Python y Ruby son considerablemente mejores para proyectos de seguridad de red a corto plazo e interinos que cualquier otro idioma, aunque los DSL descritos por Metasploit, wXf y watir-webdriver constituyen un caso interesante para apoyar a Ruby MRI y JRuby sobre otros. A la inversa, Lua tiene mucho soporte para tecnologías basadas en filtros, como Wireshark, mod-security y snort (PCRE también se encuentra con mucha frecuencia en estas tecnologías).

En resumen, si va a modificar cualquier código de los proyectos de seguridad de la red, es más probable que esté lanzando un programa de C, pero llamando a una biblioteca o extensión de marco de trabajo escrita en Ruby, Python o Lua. Si se enfoca en enviar tráfico (especialmente HTTP o exploits), Ruby es la mejor opción, pero si se enfoca en recibir tráfico (especialmente IDS o captura de paquetes), entonces Lua es la mejor opción. Para el aprendizaje general, he visto a dpkt en Python hacer cosas increíbles muy rápidamente durante una fase de creación de prototipos.

Consulte el libro, Codificación para probadores de penetración para obtener más información de referencia.

    
respondido por el atdre 27.03.2012 - 04:14
fuente
0

He estado desarrollando sistemas durante años, comenzando con Basic y Cobol, luego con dBase III +, VB6, Asp.Net usando Access y SQL Server. También soy un CISSP.

Creo que debería aprender lenguaje ensamblador. Aunque puede parecer irrelevante, le dará una base sólida en ingeniería inversa y también lo ayudará a entender la base de C, C ++, etc. Cuando el código fuente no esté disponible, luego de la ingeniería inversa lo que tendrá es ensamblaje.

    
respondido por el Djesu 10.02.2015 - 13:14
fuente
-1

Al contrario de una de las respuestas, por seguridad, Visual Basic 6.0 es solo uno de los idiomas preferidos. Hace solo dos días vi un escáner de red profesional publicado en Facebook (komodolabs.com/network-scanner-news/). Malwarebytes y muchos antivirus son una mezcla de Visual Basic 6.0 y el lenguaje ensamblador ... por lo tanto, Visual Basic 6.0 (pero no VB. NET) es uno de los favoritos.

Visual Basic 6.0: un gigante más poderoso que nunca

    
respondido por el user129856 27.01.2016 - 04:18
fuente

Lea otras preguntas en las etiquetas