it-swarm-id.com

Bahasa pemrograman untuk keamanan jaringan

Saya bekerja sebagai penguji sekarang. Saya berencana untuk pindah ke domain keamanan seperti CEH atau CISSP. Tetapi banyak yang mengatakan bahwa untuk menjadi peretas hebat Anda harus tahu setidaknya satu bahasa pemrograman dengan baik. Saya sudah tahu sedikit tentang Jawa. Tapi saya hanya ingin tahu bahasa mana yang lebih dekat dengan keamanan jaringan dan domain terkait. Jadi bahasa apa yang harus saya pelajari sehingga akan membantu bagi saya untuk pindah ke domain keamanan?

14
Madusudanan

Tidak ada cetak biru yang ditetapkan tentang bahasa apa yang terbaik untuk dipelajari. Untuk itu saya ingin menyebutkan dua alternatif bagus yang menurut saya (dan banyak lainnya) adalah bahasa yang baik untuk dipelajari dalam keamanan komputer.

LUA

Penjelasan Lua from wikipedia : Lua adalah bahasa pemrograman multi-paradigma ringan yang dirancang sebagai bahasa scripting dengan "semantik yang diperluas" sebagai tujuan utama.

Alasan saya menyebutkan LUA adalah bahasa yang baik untuk dipelajari adalah bahwa itu adalah mesin scripting untuk banyak alat keamanan populer. Ini adalah alasan yang sangat bagus untuk mempelajari bahasa ini. Beberapa bahasa meliputi:

  • NMAP (Alat pemetaan jaringan)
  • Snort (IDS sumber terbuka)
  • Wireshark (Alat sniffing paket)
  • Vim (editor teks unix yang sangat populer)
  • Cisco ASA (firewall, IPS, VPN)
  • Alat layanan jaringan (Apache, lightHttpd, FreePop)

Sebagai catatan: Bahkan Blizzard hit besar World of Warcraft memiliki dukungan untuk LUA scripting di dalam game :) Untuk siapa pun yang mungkin relevan.

Python

Saya sedikit bias pada Python setelah saya mulai membaca buku " Gray Hat Python: Python Pemrograman untuk Peretas dan Pembalik Mesin ". Saya setuju dengan banyak poin dari buku ini mengapa baik untuk mempelajari bahasa ini untuk seorang hacker (umumnya dikenal sebagai spesialis keamanan :)).

Dikutip dari Amazon Python adalah bahasa yang baik untuk dipelajari karena:

mudah untuk menulis dengan cepat, dan memiliki dukungan dan perpustakaan tingkat rendah yang membuat peretas senang.

Sangat nyaman untuk dapat berinteraksi secara langsung dengan penerjemah di Shell Python Anda.

Edit: Tampilan grafik dari jajak pendapat HackerNews pada bahasa pemrograman favorit/tidak disukai: python wins

Edit 2: Dari polling 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

Tidak ada hubungan semacam itu antara bahasa pemrograman dan keamanan, yang mungkin cara yang lebih baik untuk melihatnya adalah dengan belajar bahasa umum (jadi Java akan menjadi titik awal yang masuk akal) karena semua bahasa memiliki masalah keamanan - Anda mungkin juga melihat masalah keamanan pada berbagai aplikasi dan platform web daripada sesuatu yang esoteris.

Memahami protokol jaringan adalah ide yang bagus, dan dapat menganalisis lalu lintas pada lapisan 1 - 4 dapat membantu, tetapi ini adalah agnostik bahasa yang luas.

baca baik-baik pertanyaan lain yang ditandai Pendidikan Profesional untuk panduan yang lebih luas.

9
Rory Alsop

Beberapa bagian dari keamanan jaringan melibatkan mengutak-atik detail kecil paket TCP/IP ketika mereka dikirim dan diterima; untuk melakukan itu, Anda harus dapat mencegat paket pada tingkat rendah, dan memancarkan paket buatan tangan (di Linux, misalnya, ini dikenal sebagai menggunakan SOCK_RAWsoket ). Tidak semua bahasa pemrograman menyediakan API yang dapat digunakan untuk itu; pengetahuan tentang C terkadang diperlukan untuk menggunakan fitur-fitur ini.

Selain itu, bahasa pemrograman serba guna yang tidak mengalami kesulitan menerima dan mengirim byte sewenang-wenang akan baik untuk Anda; Java tidak masalah dalam hal itu.

9
Thomas Pornin

Catatan: Saya menyadari ini sangat bias terhadap sistem dan jauh dari keamanan umum. Keamanan adalah proses dan melibatkan lebih dari teknologi.

Ada dua rute yang dapat Anda pilih dan sayangnya (IMHO) tidak termasuk Java.

C adalah bahasa sistem yang sangat baik. Anda dapat bekerja dengan unix dan linux dan Gali di dekat panggilan sistem logam, ruang kernel, jaringan tingkat rendah, dll.

Rute lainnya adalah bahasa scripting yang memungkinkan Anda untuk dengan cepat menyatukan alat dan program di tingkat yang lebih tinggi. Sebagian besar bahasa scripting seperti Perl, python, dan Ruby akan memberi Anda akses ke abstraksi level socket. Saya bias untuk python, karena Anda dapat dengan mudah menulis modul C untuk itu jika Anda memerlukan kinerja atau rendah Akses tingkat.

Sekarang untuk menjawab kepalsuan dalam pertanyaan Anda ... menjadi peretas hebat yang melampaui bahasa pemrograman. Menjadi seorang hacker yang hebat adalah kondisi pikiran. Ini mencakup mempertanyakan segalanya dan mampu memecahkan masalah secara kreatif. Jika Anda dapat melakukan ini, Anda akan mempelajari bahasa yang Anda perlukan karena Anda akan mengarahkan diri sendiri ke bahasa tersebut.

7
Bradley Kreider

Anda benar-benar tidak dapat mempelajari bahasa untuk mempelajari keamanan. Sebagian besar masalah keamanan jauh lebih halus dari itu. Satu-satunya pengecualian untuk ini adalah query SQL: di beberapa titik, Anda benar-benar perlu memahami perbedaan antara menggabungkan string dan query parameter. Tapi query SQL dibangun menggunakan bahasa lain, apakah Java, PHP, Ruby, dan sebagainya.

Tetapi Anda perlu memahami bahasa scripting. Anda perlu menulis alat sendiri, dan menyesuaikan alat yang ada. Bahasa skrip yang baik untuk dipelajari termasuk JavaScript, Perl, PHP, dan Ruby.

Anda sudah mulai dengan Java, jadi saya sarankan Anda terus belajar Java. Pelajari cara menggunakan Java pada server web untuk membuat aplikasi web dengan SQL backend. Pelajari cara menggunakan Java untuk membuat program baris perintah sederhana.

Setelah Anda memiliki pengalaman menulis kode dalam bahasa apa pun, mulailah bercabang ke bahasa lain. Langkah selanjutnya yang baik adalah JavaScript. JavaScript dapat digunakan baik di server untuk membuat aplikasi web, dan di baris perintah. Tetapi yang paling penting, Anda menggunakannya di dalam peramban, jadi itu adalah bahasa yang Anda harus pelajari.

Java dan JavaScript menggunakan sintaksis yang mirip dengan C. Merupakan ide bagus untuk membiasakan diri dengan perbedaan dengan bahasa mirip-C lainnya, yaitu C, C++, C #, dan PHP.

6

Saya setuju dengan banyak hal yang dikatakan di atas. Khususnya, saya ingin menekankan pentingnya Ruby. Dalam pikiranku, Ruby adalah bahasa "peretas" yang hebat karena beberapa alasan:

  1. (Subyektif) Ini adalah bahasa yang indah, pintar, dan ekspresif, yang memungkinkan untuk meretas solusi cepat dan kotor untuk masalah dalam waktu singkat.
  2. Metasploit ditulis dalam Ruby
  3. Perpustakaan permata Ruby luas dan kuat, yang, sekali lagi, membuatnya relatif mudah untuk menyelesaikan masalah dengan cepat.
2
Chris Allen Lane

Saya sangat merekomendasikan nmap , socat, lft, dan curl ketika mempelajari keamanan jaringan terkait perintah Unix. Seringkali ada sedikit alasan untuk menemukan kembali roda ini.

OpenVAS mendukung bahasa skrip keamanan jaringan khusus yang disebut NASL, meskipun awalnya berasal dari alat Nessus, di mana NASL didasarkan pada CASL (dari Scanner CyberCop Network Associates ').

Banyak fuzzers HTTP/TLS telah menambahkan dukungan untuk hal-hal seperti Layanan Web dan kontrol program yang kuat lainnya. Yang keren yang saya lihat belakangan ini adalah resty-sendawa, buby, wXf, dan pecahan peluru.

Memanfaatkan beberapa jenis aplikasi penangkapan paket juga berguna, apakah itu tcpdump, mendengus, Wireshark, Network Miner, atau HTTP Scoop.

Banyak yang menganggap Lua, Python, dan Ruby menjadi jauh lebih baik untuk proyek keamanan jaringan jangka pendek dan sementara daripada bahasa lain, meskipun DSL dijelaskan oleh Metasploit, wXf, dan watir-webdriver membuat untuk kasus yang menarik untuk mendukung Ruby MRI dan JRuby atas yang lain. Sebaliknya, Lua memang memiliki banyak dukungan untuk teknologi berbasis filter, seperti Wireshark, mod-security, dan snort (PCRE juga sangat umum ditemukan dalam teknologi ini).

Singkatnya, jika Anda akan memodifikasi kode apa pun dari proyek keamanan jaringan, Anda lebih cenderung untuk keluar ke program C, tetapi memanggil ekstensi pustaka atau kerangka kerja yang ditulis dalam Ruby, Python, atau Lua. Jika fokus Anda adalah pada pengiriman lalu lintas (terutama HTTP atau exploit), Ruby adalah taruhan terbaik - tetapi jika fokus Anda adalah pada menerima lalu lintas (terutama IDS atau paket capture), maka Lua adalah Untuk pembelajaran umum saja, saya telah melihat dpkt di Python melakukan beberapa hal menakjubkan dengan sangat cepat selama fase prototyping.

Periksa bukunya, Pengkodean untuk Penetrasi-Penguji untuk bahan referensi lebih lanjut.

2
atdre

Saya telah melakukan pengembangan sistem selama bertahun-tahun dimulai dengan Basic dan Cobol, kemudian dBase III +, VB6, Asp.Net menggunakan Access, dan SQL Server. Saya juga seorang CISSP.

Saya pikir dia harus belajar bahasa Majelis. Meskipun mungkin terdengar tidak relevan, itu akan memberinya dasar yang kuat dalam rekayasa terbalik dan juga membantunya untuk memahami dasar C, C++ dll. Ketika kode sumber tidak tersedia, maka setelah rekayasa terbalik apa yang akan Anda miliki adalah Majelis.

0
Djesu