it-swarm-tr.com

Ağ güvenliği için programlama dili

Şu anda test kullanıcısı olarak çalışıyorum. CEH veya CISSP gibi güvenlik alanına geçmeyi planlıyorum. Ancak birçoğu harika bir hacker olmak için en az bir programlama dilini iyi bilmeniz gerektiğini söylüyor. Zaten biraz Java biliyorum. Ama sadece hangi dilin ağ güvenliğine ve ilgili alanlara daha yakın olduğunu bilmek istedim. Peki, güvenlik alanına geçmemin yardımcı olması için ne tür bir dil öğrenmeliyim?

14
Madusudanan

Öğrenilecek en iyi dilin ne olduğu hakkında tanımlanmış bir plan yoktur. Bu nedenle, bilgisayar güvenliğinde öğrenmek için iyi bir dil olduğunu düşündüğüm iki ve diğer alternatiflerden bahsetmek istiyorum.

LUA

Lua'nın wikipedia 'dan açıklaması: Lua, birincil hedef olarak "genişletilebilir anlambilim" ile bir betik dili olarak tasarlanmış hafif bir çoklu paradigma programlama dilidir.

LUA'dan öğrenmenin iyi bir dil olduğunu söylememin nedeni, birçok popüler güvenlik aracı için komut dosyası motorudur. Bu dili öğrenmek için tek başına bu çok iyi bir neden. Dillerden bazıları şunlardır:

  • NMAP (Ağ eşleme aracı)
  • Snort (Açık kaynak IDS)
  • Wireshark (Paket koklama aracı)
  • Vim (Çok popüler unix metin editörü)
  • Cisco ASA (güvenlik duvarı, IPS, VPN)
  • Ağ hizmetleri araçları (Apache, lightHttpd, FreePop)

Bir yan not: Blizzard büyük hit World of Warcraft bile oyun içinde LUA komut dosyası desteği var :) Kiminle ilgili olabilir.

Python

Python) biraz önyargılıyım ” Gray Hat Python: Python Hackerlar ve Ters Mühendisler için Programlama ".Bu kitaptan bir hacker (genellikle güvenlik uzmanı olarak bilinir :) için öğrenilmesinin neden iyi olduğunu kabul ediyorum.

Amazon'dan alıntılanmıştır Python öğrenmek için iyi bir dildir çünkü:

hızlı yazmak kolaydır ve bilgisayar korsanlarını mutlu eden düşük seviyeli destek ve kütüphanelere sahiptir.

Ayrıca, Python Shell'inizdeki yorumlayıcı ile anında etkileşimde bulunmak çok rahattır).

Düzenleme: HackerNews anketlerinin favori/beğenilmeyen programlama dillerinde grafik görünümü: python wins

Düzenleme 2: Kimden Digininjas anket :

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

Programlama dilleri ve güvenlik arasında böyle bir bağlantı yoktur, ona bakmanın daha iyi bir yolu ortak dil öğrenmek (yani Java makul bir başlangıç ​​noktasıdır)) güvenlik sorunları var - ezoterik bir şey yerine çok çeşitli web uygulamalarında ve platformlarında güvenlik sorunlarına da bakabilirsiniz.

Ağ protokollerini anlamak iyi bir fikirdir ve 1 - 4 katmanlarındaki trafiği analiz edebilmek yardımcı olabilir, ancak bu geniş bir dil agnostiktir.

daha fazla rehberlik için Profesyonel-Eğitim olarak etiketlenmiş diğer soruları iyi okuyun.

9
Rory Alsop

Ağ güvenliğinin bazı kısımları, gönderilip alındıkça TCP/IP paketlerinin küçük ayrıntılarıyla uğraşmayı içerir; bunu yapmak için, paketleri düşük düzeyde yakalamanız ve el işi paketleri de yaymanız gerekir (örneğin Linux altında, bunun bir SOCK_RAWsocket ). Tüm programlama dilleri bunun için kullanılabilir API sağlamaz; C bilgisi bazen bu özellikleri kullanmak için gereklidir.

Bunun dışında, keyfi bayt alma ve gönderme konusunda sorun yaşamayan çok yönlü programlama dilleri sizin için iyi olacaktır; Java bu açıdan iyidir.

9
Thomas Pornin

Not: Bunun sistemlere karşı çok taraflı ve genel güvenlikten uzak olduğunu fark ettim. Güvenlik bir süreçtir ve teknolojiden daha fazlasını içerir.

Seçebileceğiniz iki yol vardır ve ne yazık ki (IMHO) ikisi de Java içermez.

C çok iyi bir sistem dilidir. Unix ve linux ile çalışabilir ve metal sistem çağrılarına, çekirdek alanına, düşük seviyeli ağa vb.

Diğer yol, araçları hızlı bir şekilde yapıştırmanızı ve daha yüksek bir seviyede programlamanızı sağlayan bir komut dosyası dilidir. Perl, python ve Ruby gibi soket seviyesi soyutlamalarına erişmenizi sağlayacaktır. Python için önyargılıyım, çünkü performansa veya düşük seviyeye ihtiyacınız varsa kolayca C modülleri yazabilirsiniz. düzeyli erişim.

Şimdi sorunuzdaki yanlışlığı gidermek için ... büyük bir hacker olmak programlama dillerini aşar. Büyük bir hacker olmak bir ruh hali. Her şeyi sorgulamayı ve problemleri yaratıcı bir şekilde çözmeyi içerir. Bunu yapabiliyorsanız, ihtiyacınız olan dilleri öğreneceksiniz çünkü onlara karşı kendinize yönlendirileceksiniz.

7
Bradley Kreider

Güvenliği öğrenmek için gerçekten dil öğrenemezsiniz. Güvenlik sorunlarının çoğu bundan daha incedir. Bunun tek istisnası SQL sorgularıdır: bir noktada, dizeleri birleştirmeyle parametreli sorguları arasındaki farkı gerçekten anlamanız gerekir. Ancak SQL sorguları, Java, PHP, Ruby ve benzeri başka bir dil kullanılarak oluşturulur.

Ancak komut dosyası dillerini anlamanız gerekir. Kendi araçlarınızı yazmanız ve mevcut araçları özelleştirmeniz gerekir. Öğrenilecek iyi kodlama dilleri arasında JavaScript, Perl, PHP ve Ruby bulunmaktadır.

Java ile zaten başladınız, bu yüzden Java'yı öğrenmeye devam etmenizi öneririm. SQL arka ucuyla webapps oluşturmak için web sunucusunda Java) nasıl kullanacağınızı öğrenin. Basit komut satırı programları oluşturmak için Java) kullanmayı öğrenin.

Herhangi bir dilde kod yazma konusunda deneyim kazandıktan sonra, diğer dillere dallanmaya başlayın. Bir sonraki iyi adım JavaScript olacaktır. JavaScript hem webapps oluşturmak için sunucuda hem de komut satırında kullanılabilir. Ama en önemlisi, tarayıcıda kullanıyorsunuz, bu yüzden öğrenmeniz gereken tek dil.

Java ve JavaScript, C'ye benzer bir sözdizimi kullanır. C, C++, C # ve PHP gibi diğer C benzeri diller arasındaki farkı tanımak iyi bir fikirdir.

6

Yukarıda söylenenlerin çoğuna katılıyorum. Özellikle, Ruby'nin önemini biraz vurgulamak istiyorum. Aklımda, Ruby birkaç nedenden dolayı harika bir "hacker" dilidir:

  1. (Öznel) Güzel, zeki ve etkileyici bir dildir, bu da sorunlara hızlı ve kirli çözümleri kısa sürede çözmeyi mümkün kılar.
  2. Metasploit Ruby'de yazılmıştır
  3. Ruby'nin mücevher kütüphanesi geniş ve güçlüdür, bu da sorunları hızlı bir şekilde çözmeyi nispeten kolaylaştırır.
2
Chris Allen Lane

Ağ güvenliği ile ilgili Unix komutlarını öğrenirken nmap , socat, lft ve curl değerlerini öneririm. Bu tekerlekleri yeniden icat etmek için genellikle çok az neden vardır.

OpenVAS, NASL adlı ağ güvenliğine özgü bir komut dosyası dilini destekler, ancak orijinal olarak NASL'nin CASL'yi temel aldığı Nessus aracından (Ağ Ortaklarının CyberCop Tarayıcısından) gelir.

Birçok HTTP/TLS kaynaştırıcısı, Web Hizmetleri ve diğer güçlü programlı denetimler gibi şeyler için destek ekledi. Son zamanlarda gördüğüm havalı olanlar huysuz burp, buby, wXf ve şarapnel.

Tcpdump, snort, Wireshark, Network Miner veya HTTP Scoop olsun, bir tür paket yakalama uygulaması kullanmak da yararlıdır.

Birçoğu Lua, Python ve Ruby kısa vadeli ve geçici ağ güvenliği projeleri için diğer dillerden çok daha iyi olduğunu düşünmektedir, ancak Metasploit, wXf ve watir-webdriver tarafından tanımlanan DSL'ler Ruby MRI ve JRuby'yi diğerleri üzerinde desteklemek için ilginç bir durum. Tersine, Lua, Wireshark, mod-security ve snort gibi filtre tabanlı teknolojiler için çok destek veriyor (PCRE de çok bu teknolojilerde yaygın olarak bulunan).

Özet olarak, ağ güvenliği projelerinden herhangi bir kodu değiştirecekseniz, C programına girme olasılığınız daha yüksektir, ancak Ruby, Python veya Lua ile yazılmış bir kütüphane veya çerçeve uzantısını çağırırsınız. Odağınız trafik göndermeye (özellikle HTTP veya açıklardan yararlanma), Ruby en iyi seçenektir - ancak odağınız trafik almaya (özellikle IDS veya paket yakalama) odaklanıyorsa, Lua bir Sadece genel öğrenme için, Python bir prototipleme aşamasında bazı inanılmaz şeyler çok hızlı bir şekilde yapmak dpkt gördüm.

Daha fazla referans materyali için Penetrasyon-Test Cihazları için Kodlama adlı kitaba göz atın.

2
atdre

Basic ve Cobol, daha sonra Access ve SQL Server kullanarak dBase III +, VB6, Asp.Net ile başlayan sistem geliştirme çalışmaları yapıyorum. Ben de CISSP'im.

Meclis dilini öğrenmesi gerektiğini düşünüyorum. Kulağa alakasız gelse de, ona tersine mühendislikte güçlü bir temel verecek ve aynı zamanda C, C++ vb. Nin temellerini anlamasına yardımcı olacaktır. Kaynak kodu mevcut olmadığında, ters mühendislikten sonra sahip olacağınız Meclis'tir.

0
Djesu