Linguaggio di programmazione per la sicurezza della rete

14

Sto lavorando come tester ora. Sto pensando di passare al dominio della sicurezza come un CEH o CISSP. Ma molti dicono che per essere un grande hacker è necessario conoscere almeno un linguaggio di programmazione. Conosco già un po 'di Java. Ma volevo solo sapere quale lingua è più vicina alla sicurezza della rete e ai domini correlati. Quindi che tipo di linguaggio dovrei imparare in modo che possa essere utile per me passare al dominio della sicurezza?

    
posta Madusudanan 14.02.2012 - 12:17
fonte

9 risposte

26

Non esiste un progetto definito su quale sia la lingua migliore da apprendere. Perciò vorrei menzionare due buone alternative che io (e molte altre) ritengo sia un buon linguaggio da apprendere in sicurezza informatica.

LUA

Spiegazione di Lua da wikipedia : Lua è un linguaggio di programmazione multi-paradigma leggero progettato come uno scripting linguaggio con "semantica estensibile" come obiettivo primario.

Il motivo per cui ho menzionato LUA è un buon linguaggio per imparare è che è il motore di scripting di MOLTI strumenti di sicurezza popolari. Questa è una buona ragione per imparare questa lingua. Alcuni dei linguaggi includono:

  • NMAP (strumento di mappatura della rete)
  • Snort (Open source IDS)
  • Wireshark (strumento di sniffing dei pacchetti)
  • Vim (editor di testo unix molto popolare)
  • Cisco ASA (firewall, IPS, VPN)
  • Strumenti dei servizi di rete (Apache, lightHttpd, FreePop)

Nota a margine: anche il grande successo di Blizzard World of Warcraft ha il supporto per lo scripting LUA all'interno del gioco :) A chiunque possa essere pertinente.

Python

Sono un po 'prevenuto su Python dopo che ho iniziato a leggere il libro " Gray Hat Python: Python Programming for Hacker e Reverse Engineers ". Sono d'accordo con molti dei punti di questo libro perché è bello imparare questo linguaggio per un hacker (comunemente noto come specialista della sicurezza :)).

Citato da Amazon Python è un buon linguaggio da imparare perché:

it's easy to write quickly, and it has the low-level support and libraries that make hackers happy.

È anche molto comodo essere in grado di interagire al volo con l'interprete nella tua shell Python.

Modifica Visualizzazione grafica dei sondaggi HackerNews sui linguaggi di programmazione preferiti / sgraditi:

Modifica2:Da sondaggio 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%
    
risposta data 15.02.2012 - 07:46
fonte
9

Non esiste quel tipo di connessione tra i linguaggi di programmazione e la sicurezza, quello che potrebbe essere un modo migliore per guardarlo è imparare le lingue comuni (quindi java sarebbe un punto di partenza ragionevole) dato che tutte le lingue hanno problemi di sicurezza - potresti anche esaminare i problemi di sicurezza su una vasta gamma di applicazioni e piattaforme web piuttosto che qualcosa di esoterico.

Comprendere i protocolli di rete è una buona idea e poter analizzare il traffico ai livelli 1-4 può essere d'aiuto, ma questo è sostanzialmente indipendente dal linguaggio.

buona lettura delle altre domande taggate Professional-Education per una guida più ampia.

    
risposta data 14.02.2012 - 12:30
fonte
9

Alcune parti della sicurezza della rete comportano il giochino con i piccoli dettagli dei pacchetti TCP / IP man mano che vengono inviati e ricevuti; per fare ciò, è necessario essere in grado di intercettare pacchetti a basso livello ed emettere anche pacchetti artigianali (sotto Linux, per esempio, questo è noto come usare SOCK_RAW socket ). Non tutti i linguaggi di programmazione forniscono API utilizzabili per questo; Talvolta è necessaria la conoscenza di C per utilizzare queste funzionalità.

A parte questo, qualsiasi linguaggio di programmazione versatile che non abbia problemi a ricevere e inviare byte arbitrari farà bene a te; Java va bene in questo senso.

    
risposta data 14.02.2012 - 13:03
fonte
7

Nota: ho capito che questo è molto prevenuto nei confronti dei sistemi e lontano dalla sicurezza generica. La sicurezza è un processo e coinvolge più della tecnologia.

Ci sono due percorsi tra cui scegliere e sfortunatamente (IMHO) non includono Java.

C è un ottimo linguaggio di sistema. Puoi lavorare con unix e linux e scavare vicino alle chiamate del sistema di metallo, allo spazio del kernel, alle reti di basso livello, ecc.

L'altra rotta è un linguaggio di scripting che ti consente di incollare rapidamente strumenti e programmi a un livello superiore. La maggior parte dei linguaggi di scripting come perl, python e ruby ti darà accesso alle astrazioni a livello di socket. Sono di parte per Python, perché puoi facilmente scrivere moduli C per questo se hai bisogno di prestazioni o accesso a basso livello.

Ora per affrontare la falsità nella tua domanda ... essere un grande hacker trascende i linguaggi di programmazione. Essere un grande hacker è uno stato mentale. Incorpora la messa in discussione di tutto e la capacità di risolvere creativamente i problemi. Se riesci a farlo, imparerai le lingue di cui hai bisogno perché sarai auto-diretto verso di loro.

    
risposta data 15.02.2012 - 00:18
fonte
6

In realtà non puoi imparare le lingue per imparare la sicurezza. La maggior parte dei problemi di sicurezza sono molto più sottili di così. L'unica eccezione a questa è la query SQL: ad un certo punto, è davvero necessario comprendere la differenza tra la combinazione di stringhe e query parametrizzate. Ma le query SQL vengono create utilizzando un'altra lingua, sia Java, PHP, Ruby e così via.

Ma devi capire i linguaggi di scripting. Devi scrivere i tuoi strumenti e personalizzare gli strumenti esistenti. I buoni linguaggi di scripting da imparare includono JavaScript, PERL, PHP e Ruby.

Hai già iniziato con Java, quindi ti suggerisco di continuare a imparare Java. Scopri come utilizzare Java sul server web per creare applicazioni web con un back-end SQL. Scopri come utilizzare Java per creare semplici programmi da riga di comando.

Una volta acquisita esperienza con la scrittura di codice in qualsiasi lingua, inizia a diramarti in altre lingue. Un buon passo successivo sarebbe JavaScript. JavaScript può essere utilizzato sia sul server per creare webapps, sia sulla riga di comando. Ma la cosa più importante è che lo si utilizza all'interno del browser, quindi è l'unica lingua che si deve imparare.

Java e JavaScript usano una sintassi simile a C. È una buona idea familiarizzare con la differenza con altri linguaggi simili a C, vale a dire C, C ++, C # e PHP.

    
risposta data 15.02.2012 - 06:26
fonte
2

Sono d'accordo con molte cose che sono state dette sopra. In particolare, tuttavia, vorrei sottolineare l'importanza di Ruby in qualche modo. Nella mia mente, Ruby è un ottimo linguaggio "hacker" per diversi motivi:

  1. (Soggettivo) È un linguaggio bello, intelligente ed espressivo, che rende possibile risolvere rapidamente e sporadicamente le soluzioni ai problemi in breve tempo.
  2. Metasploit è scritto in Ruby
  3. La libreria gemma di Ruby è vasta e potente, che, di nuovo, rende relativamente facile la risoluzione dei problemi rapidamente.
risposta data 26.03.2012 - 22:09
fonte
2

Consiglio vivamente nmap , socat, lft e curl durante l'apprendimento di comandi Unix relativi alla sicurezza di rete. Ci sono spesso poche ragioni per reinventare queste ruote.

OpenVAS supporta un linguaggio di script specifico per la sicurezza di rete, chiamato NASL, sebbene provenga originariamente dallo strumento Nessus, in cui la NASL era basata su CASL (dallo scanner CyberCop di Network Associates).

Molti fuzzer HTTP / TLS hanno aggiunto il supporto per cose come i servizi Web e altri potenti controlli programmatici. Quelli che ho visto di recente sono rutti, buby, wXf e shrapnel.

Anche l'utilizzo di un qualche tipo di app per la cattura dei pacchetti è utile, sia che si tratti di tcpdump, snort, Wireshark, Network Miner o HTTP Scoop.

Molti considerano Lua, Python e Ruby notevolmente migliori per i progetti di sicurezza di rete a breve termine e ad interim di qualsiasi altro linguaggio, sebbene i DSL descritti da Metasploit, wXf e watir-webdriver costituiscano un caso interessante per supportare Ruby MRI e JRuby rispetto ad altri. Reversamente, Lua ha un sacco di supporto per le tecnologie basate su filtri, come Wireshark, mod-security e snort (PCRE è anche molto diffuso in queste tecnologie).

In sintesi, se si intende modificare qualsiasi codice dai progetti di sicurezza della rete, è più probabile che si stia eseguendo il bombardamento verso un programma C, ma chiamando una libreria o un'estensione framework scritta in Ruby, Python o Lua. Se il tuo obiettivo è l'invio di traffico (in particolare HTTP o exploit), Ruby è la soluzione migliore, ma se il tuo obiettivo è ricevere traffico (in particolare IDS o acquisizione di pacchetti), allora Lua è la soluzione migliore. Per l'apprendimento generale, ho visto dpkt in Python fare cose incredibili molto velocemente durante una fase di prototipazione.

Guarda il libro, Coding for Penetration-Tester per ulteriori materiali di riferimento.

    
risposta data 27.03.2012 - 04:14
fonte
0

Ho sviluppato sistemi per anni a partire da Basic e Cobol, poi dBase III +, VB6, Asp.Net usando Access e SQL Server. Sono anche un CISSP.

Penso che dovrebbe imparare il linguaggio assembly. Anche se può sembrare irrilevante, gli fornirà solide fondamenta nel reverse engineering e lo aiuterà anche a comprendere le basi di C, C ++ ecc. Quando il codice sorgente non è disponibile, dopo il reverse engineering ciò che si avrà sarà il montaggio.

    
risposta data 10.02.2015 - 13:14
fonte
-1

Contrariamente a una delle risposte, per la sicurezza, Visual Basic 6.0 è solo una delle lingue preferite. Solo due giorni fa ho visto uno scanner di rete professionale pubblicato su Facebook (komodolabs.com/network-scanner-news/). Malwarebytes e molti antivirus sono un mix tra Visual Basic 6.0 e il linguaggio assembly ... quindi, Visual Basic 6.0 (ma non VB. NET) è un preferito.

Visual Basic 6.0: un gigante più potente che mai

    
risposta data 27.01.2016 - 04:18
fonte

Leggi altre domande sui tag