it-swarm-eu.dev

Programovací jazyk pro zabezpečení sítě

Nyní pracuji jako tester. Mám v plánu přejít do oblasti bezpečnosti, jako je CEH nebo CISSP. Ale mnozí říkají, že chcete-li být skvělým hackerem, musíte dobře znát alespoň jeden programovací jazyk. Už vím trochu Java. Jen jsem chtěl vědět, který jazyk je blíže k zabezpečení sítě a souvisejícím doménám. Jaký jazyk bych se tedy měl učit, aby mi pomohlo přejít do oblasti bezpečnosti?

14
Madusudanan

Neexistuje žádný definovaný plán toho, který jazyk je nejlepší se naučit. Proto bych rád zmínil dvě dobré alternativy, o kterých si myslím (a mnoho dalších), že jsou dobré jazyky, které se v počítačové bezpečnosti učím.

LUA

Vysvětlení Lua z wikipedia : Lua je lehký program s více paradigmy navržený jako skriptovací jazyk, jehož primárním cílem je „rozšiřitelná sémantika“.

Důvod, proč jsem zmínil LUA, je dobrý jazyk, který se učím, je to, že se jedná o skriptovací stroj pro mnoho oblíbených bezpečnostních nástrojů. To je velmi dobrý důvod, proč se tento jazyk učit sám. Mezi langaugy patří:

  • NMAP (nástroj síťového mapování)
  • Snort (ID open source)
  • Wireshark (nástroj pro čichání paketů)
  • Vim (Velmi populární textový editor unixu)
  • Cisco ASA (firewall, IPS, VPN)
  • Nástroje síťových služeb (Apache, lightHttpd, FreePop)

Na vedlejší poznámku: I Blizzardův hlavní hit World of Warcraft má podporu pro skriptování LUA uvnitř hry :) Komu to může být relevantní.

Python

Jsem trochu zaujatý na Python poté, co jsem začal číst knihu " Gray Hat Python: Python Programování pro hackery a reverzní inženýry ". Souhlasím s mnoha body z této knihy, proč je dobré se naučit tento jazyk pro hackera (běžně známý jako bezpečnostní specialista :)).

Citováno z Amazonu Python je dobrým jazykem pro výuku, protože:

je snadné psát rychle a má nízkou úroveň podpory a knihovny, díky nimž jsou hackeři šťastní.

Je také velmi pohodlné být schopen komunikovat za chodu s tlumočníkem v Shell Python Shell).

Edit: Grafický pohled na ankety HackerNews na oblíbené/neoblíbené programovací jazyky: python wins

Upravit 2: Z Digininjas hlasování :

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

Neexistuje takový druh spojení mezi programovacími jazyky a bezpečností, což by mohl být lepší způsob, jak se na to dívat, je naučit se společné jazyky (takže Java by byl rozumným výchozím bodem) jako všechny jazyky mají bezpečnostní problémy - můžete se také podívat na bezpečnostní problémy na celé řadě webových aplikací a platforem, spíše než na něčem esoterickém.

Porozumění síťovým protokolům je dobrý nápad a schopnost analyzovat provoz ve vrstvách 1 - 4 může pomoci, ale to je obecně jazyková agnostika.

dobře si přečtěte další otázky označené Professional-Education pro širší vedení.

9
Rory Alsop

Některé části zabezpečení sítě zahrnují hraní s malými detaily paketů TCP/IP, jak jsou odesílány a přijímány; k tomu musíte být schopni zachytit pakety na nízké úrovni a také vysílat ručně vytvořené pakety (například v Linuxu se to nazývá pomocí SOCK_RAWsocket ). Ne všechny programovací jazyky k tomu poskytují použitelné API; K použití těchto funkcí je někdy nutná znalost C.

Kromě toho bude pro vás jakýkoli všestranný programovací jazyk, který nemá potíže s přijímáním a odesíláním libovolných bajtů; Java je v tomto ohledu v pořádku).

9
Thomas Pornin

Poznámka: Uvědomil jsem si, že je to velmi zkreslené směrem k systémům a od obecné bezpečnosti. Zabezpečení je proces a zahrnuje více než technologii.

Existují dvě trasy, ze kterých si můžete vybrat a bohužel (IMHO) ani nezahrnují Javu.

C je velmi dobrý systémový jazyk. Můžete pracovat s unixem a linuxem a kopat v blízkosti metalu - systémová volání, prostor v jádře, síť na nízké úrovni atd.

Druhou cestou je skriptovací jazyk, který vám umožní rychle slepit nástroje a programovat na vyšší úrovni. Většina skriptovacích jazyků, jako je Perl, python a Ruby vám poskytne přístup k abstrakcím na úrovni soketu. Jsem zkreslená pro python, protože pro něj můžete snadno napsat moduly C, pokud potřebujete výkon nebo nízkou úroveň -úrovňový přístup.

Nyní řešíme lži ve vaší otázce ... být skvělým hackerem překračuje programovací jazyky. Být skvělým hackerem je stav mysli. Zahrnuje zpochybňování všeho a schopnost tvořivě řešit problémy. Pokud to dokážete, naučíte se jazyky, které potřebujete, protože budete vůči nim směřovat sami.

7
Bradley Kreider

Opravdu se nemůžete učit jazyky, abyste se naučili bezpečí. Většina bezpečnostních problémů je mnohem jemnější než ta. Jedinou výjimkou jsou dotazy SQL: v určitém okamžiku je skutečně nutné pochopit rozdíl mezi kombinováním řetězců a parametrizovaných dotazů. Dotazy SQL jsou však vytvářeny pomocí jiného jazyka, ať už Java, PHP, Ruby atd.

Ale musíte rozumět skriptovacím jazykům. Musíte napsat vlastní nástroje a upravit stávající nástroje. Mezi dobré skriptovací jazyky, které je třeba se naučit, patří JavaScript, Perl, PHP a Ruby.

Už jste začali s Javou, takže vám doporučuji pokračovat v učení Java. Naučte se, jak používat Java na webovém serveru pro vytváření webových aplikací s backendem SQL). Naučte se, jak používat Java pro vytváření jednoduchých programů příkazového řádku).

Až budete mít nějaké zkušenosti s psaním kódu v jakémkoli jazyce, začněte odbočit do jiných jazyků. Dobrým dalším krokem by byl JavaScript. JavaScript lze použít jak na serveru k vytváření webových aplikací, tak na příkazovém řádku. Ale co je nejdůležitější, používáte jej v prohlížeči, takže je to jediný jazyk, který se musíte sorta naučit.

Java a JavaScript používají syntaxi podobnou C. Je dobré se seznámit s rozdílem oproti jiným jazykům podobným C, jmenovitě C, C++, C # a PHP.

6

Souhlasím s mnoha výše uvedenými skutečnostmi. Zejména bych však chtěl trochu zdůraznit Rubyho význam. Podle mého názoru Ruby je skvělý „hackerský“ jazyk z několika důvodů:

  1. (Subjektivní) Je to krásný, chytrý a expresivní jazyk, který umožňuje rychle a špinavě řešit problémy v krátkém pořadí.
  2. Metasploit je psán v Ruby
  3. Knihovna drahokamů Ruby je obrovská a silná, což opět umožňuje relativně rychle řešit problémy.
2
Chris Allen Lane

Důrazně doporučuji nmap , socat, lft a curl, když se učím jakékoli příkazy Unix týkající se zabezpečení sítě. Není často důvod znovu objevovat tato kola.

OpenVAS podporuje skriptovací jazyk specifický pro zabezpečení sítě nazvaný NASL, ačkoli původně pochází z nástroje Nessus, kde NASL byl založen na CASL (ze skeneru CyberCop Network Associates).

Mnoho fuzzerů HTTP/TLS přidalo podporu pro věci, jako jsou webové služby a další výkonné programové ovládací prvky. Ty skvělé, které jsem viděl v poslední době, jsou resty-burp, buby, wXf a šrapnel.

Užitečné je také použití nějaké aplikace pro zachytávání paketů, ať už se jedná o tcpdump, snort, Wireshark, Network Miner nebo HTTP Scoop.

Mnozí považují Luu, Pythona a Ruby) za výrazně lepší pro krátkodobé a prozatímní projekty zabezpečení sítě než kterékoli jiné jazyky, ačkoli DSL popsané Metasploitem, wXf a watir-webdriverem umožňují zajímavý případ podpory Ruby MRI a JRuby před ostatními. Na druhou stranu, Lua má hodně podpory pro technologie založené na filtru, jako je Wireshark, mod-security a snort (PCRE je také velmi běžně se vyskytující v těchto technologiích).

Stručně řečeno, pokud se chystáte modifikovat jakýkoli kód z projektů zabezpečení sítě, je pravděpodobnější, že budete vyhazovat program C, ale voláte knihovnu nebo rozšíření rámce napsané v Ruby, Python nebo Lua. Pokud se zaměřujete na odesílání provozu (zejména HTTP nebo využívá), Ruby je nejlepší sázka - ale pokud se zaměřujete na příjem provozu (zejména IDS nebo zachytávání paketů), pak Lua je nejlepší sázka. Pro všeobecné učení jsem viděl dpkt v Python dělat některé úžasné věci velmi rychle během fáze prototypování).

Podívejte se na knihu, Coding for Penetration-Testers pro další referenční materiál.

2
atdre

Vývoj systémů provádím roky od Basicu a Cobolu, poté od dBase III +, VB6, Asp.Net pomocí Accessu a SQL Serveru. Jsem také CISSP.

Myslím, že by se měl naučit jazyku shromáždění. Ačkoli to může znít nepodstatně, bude mu to silným základem v reverzním inženýrství a také mu pomůže porozumět základům C, C++ atd. Když zdrojový kód není k dispozici, pak po reverzním inženýrství, co budete mít, je shromáždění.

0
Djesu