it-swarm.dev

Linguaggio di programmazione per la sicurezza della rete

Sto lavorando come tester ora. Sto programmando di passare al dominio della sicurezza come un CEH o un CISSP. Ma molti dicono che per essere un grande hacker devi conoscere bene 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 lingua dovrei imparare in modo che mi possa essere utile passare al dominio della sicurezza?

14
Madusudanan

Non esiste un progetto definito su quale sia la lingua migliore da imparare. Pertanto, vorrei menzionare due buone alternative che io (e molti altri) ritengo sia una buona lingua da imparare in termini di sicurezza informatica.

[~ ~ #] lua [~ ~ #]

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

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

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

Nota a margine: anche il grande successo di Blizzard World of Warcraft ha il supporto per gli script LUA all'interno del gioco :) Per chiunque possa essere rilevante.

Python

Sono un po 'di parte su Python dopo aver iniziato a leggere il libro " Grey Hat Python: Python Programmazione per hacker e ingegneri inversi ". Concordo con molti dei punti di questo libro sul perché è utile imparare questa lingua per un hacker (comunemente noto come specialista della sicurezza :)).

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

è facile da scrivere rapidamente e ha il supporto e le librerie di basso livello che rendono felici gli hacker.

È anche molto comodo poter interagire al volo con l'interprete nella tua shell Python.

Modifica: Vista grafica dei sondaggi di HackerNews sui linguaggi di programmazione preferiti/non apprezzati: python wins

Modifica 2: 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%
26
Chris Dale

Non esiste quel tipo di connessione tra i linguaggi di programmazione e la sicurezza, quello che potrebbe essere un modo migliore di vederlo è quello di imparare i linguaggi comuni (quindi Java sarebbe un ragionevole punto di partenza) come tutti i linguaggi 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, ed essere in grado di analizzare il traffico ai livelli 1 - 4 può essere d'aiuto, ma questo è ampiamente indipendente dal linguaggio.

avere una buona lettura delle altre domande taggate istruzione professionale per una guida più ampia.

9
Rory Alsop

Alcune parti della sicurezza di rete implicano una manipolazione dei piccoli dettagli dei pacchetti TCP/IP quando vengono inviati e ricevuti; per fare ciò, devi essere in grado di intercettare i pacchetti a basso livello ed emettere anche pacchetti artigianali (sotto Linux, ad esempio, questo è noto come l'utilizzo di un SOCK_RAWsocket ). Non tutti i linguaggi di programmazione forniscono API utilizzabili per questo; a volte è richiesta 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 ti farà bene; Java va bene in questo senso.

9
Thomas Pornin

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

Ci sono due percorsi tra cui puoi scegliere e sfortunatamente (IMHO) né includere Java.

C è un ottimo linguaggio di sistema. Puoi lavorare con unix e linux e scavare vicino al metal - chiamate di sistema, spazio del kernel, rete di basso livello, ecc.

L'altro percorso è un linguaggio di scripting che 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 basso accesso a livello.

Ora per affrontare la falsità nella tua domanda ... essere un grande hacker trascende i linguaggi di programmazione. Essere un grande hacker è uno stato d'animo. Incorpora mettere in discussione tutto e essere in grado di risolvere in modo creativo i problemi. Se riesci a farlo, imparerai le lingue che ti servono perché sarai auto-diretto verso di loro.

7
Bradley Kreider

Non puoi davvero imparare le lingue per imparare la sicurezza. La maggior parte dei problemi di sicurezza sono molto più sottili di così. L'unica eccezione è rappresentata dalle query SQL: a un certo punto, è necessario comprendere la differenza tra la combinazione di stringhe e query con parametri. Ma le query SQL vengono create utilizzando un altro linguaggio, Java, PHP, Ruby e così via.

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

Hai già iniziato con Java, quindi ti suggerisco di continuare ad imparare Java. Scopri come usare Java sul server web per la creazione di webapp con un backend SQL. Scopri come usare Java per creare semplici programmi da riga di comando.

Dopo aver acquisito esperienza nella scrittura di codice in qualsiasi lingua, inizia a diramare in altre lingue. Un buon passo successivo sarebbe JavaScript. JavaScript può essere utilizzato sia sul server per creare webapp, sia sulla riga di comando. Ma soprattutto, lo usi nel browser, quindi è l'unica lingua che devi 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.

6

Sono d'accordo con molto di ciò che è stato detto sopra. In particolare, però, vorrei sottolineare in qualche modo l'importanza di Ruby. Nella mia mente, Ruby è un ottimo linguaggio "hacker" per alcuni motivi:

  1. (Soggettivo) È un linguaggio bello, intelligente ed espressivo, che rende possibile hackerare soluzioni rapide e sporche ai problemi in breve tempo.
  2. Metasploit è scritto in Ruby
  3. La biblioteca di gemme di Ruby è vasta e potente, il che, ancora una volta, rende relativamente facile risolvere i problemi rapidamente.
2
Chris Allen Lane

Consiglio vivamente nmap , socat, lft e curl durante l'apprendimento di qualsiasi comando Unix relativo alla sicurezza della rete. Spesso ci sono pochi motivi per reinventare queste ruote.

OpenVAS supporta un linguaggio di script specifico per la sicurezza della 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 fantastici che ho visto di recente sono il resto-burp, buby, wXf e shrapnel.

È utile anche utilizzare una sorta di app di acquisizione dei pacchetti, che si tratti di tcpdump, snort, Wireshark, Network Miner o HTTP Scoop.

Molti ritengono che Lua, Python e Ruby siano considerevolmente migliori per i progetti di sicurezza della rete a breve termine e intermedi rispetto a qualsiasi altra lingua, sebbene i DSL descritti da Metasploit, wXf e watir-webdriver rappresentino un caso interessante per supportare Ruby MRI e JRuby rispetto ad altri. Al contrario, Lua ha molto supporto per tecnologie basate su filtri, come Wireshark, mod-security e snort (PCRE è anche molto trovato comunemente in queste tecnologie).

In sintesi, se si sta modificando un codice da progetti di sicurezza di rete, è più probabile che si stia sborsando verso un programma C, ma chiamando un'estensione di libreria o framework scritta in Ruby, Python o Lua. Se il tuo focus è sull'invio di traffico (in particolare HTTP o exploit), Ruby è una scommessa migliore - ma se il tuo focus è sulla ricezione del traffico (in particolare IDS o acquisizione di pacchetti), Lua è un scommessa migliore. Per l'apprendimento generale, ho visto dpkt in Python fa alcune cose incredibili molto rapidamente durante una fase di prototipazione.

Dai un'occhiata al libro Coding for Penetration-Testers per ulteriore materiale di riferimento.

2
atdre

Ho svolto lo sviluppo di sistemi per anni a partire da Basic e Cobol, quindi dBase III +, VB6, Asp.Net utilizzando Access e SQL Server. Sono anche un CISSP.

Penso che dovrebbe imparare il linguaggio dell'Assemblea. Anche se può sembrare irrilevante, gli darà una solida base nell'ingegnerizzazione inversa e lo aiuterà anche a comprendere le basi di C, C++ ecc. Quando il codice sorgente non è disponibile, dopo l'ingegneria inversa quello che avrai sarà l'Assemblea.

0
Djesu