Który z tych języków skryptowych jest bardziej odpowiedni do testowania piórem? [zamknięte]

Po pierwsze, chcę uniknąć płomiennej wojny z językami. Języki do wyboru to Perl, Python i Ruby . Chcę wspomnieć, że czuję się dobrze z nimi wszystkimi, ale problem w tym, że nie mogę skupić się tylko na jednym.

Jeśli na przykład zobaczę fajny moduł Perla, muszę go wypróbować. Jeśli widzę ładną aplikację Pythona, muszę wiedzieć, jak jest wykonana. Jeśli widzę Ruby DSL lub jakieś Ruby voodoo, jestem uzależniony od Ruby na chwilę.

Obecnie pracuję jako programista Java, ale plan na podjęcie CEH w najbliższej przyszłości. Moje pytanie brzmi: do pisania narzędzi i rozwoju exploitów, który język uważasz za najbardziej odpowiedni?

Ponownie, nie chcę wywoływać płomiennej wojny ani żadnych kłopotów, chcę tylko szczerych opinii od scenarzystów, którzy wiedzą, co robią.

Jeszcze jedno: może niektórzy z was zapytają " po co rozliczać się na jednym języku?". Aby odpowiedzieć na to pytanie, chciałbym wybrać tylko jeden język, aby spróbować go opanować.

Author: the Tin Man, 2008-09-17

12 answers

Prawdopodobnie chcesz Ruby, ponieważ jest to język ojczysty Dla Metasploitu, który jest de facto standardowym frameworkiem testów penetracyjnych typu open source. Ruby ci da:

  • Metasploit ' S Framework, opcode i shellcode baz danych
  • Metasploit ' s Ruby lorcon bindings for raw 802.11 work.
  • wiązania karmy Metasploita dla przekierowania 802.11 clientside.
  • Libcurl I net / http dla web tool pisanie.
  • EventMachine for web proxy and fuzzing work (lub RFuzz, który rozszerza znany Serwer Www Kundel).
  • Metasm do generowania kodu powłoki.
  • Distorm do demontażu x86.
  • BinData dla formatu plików binarnych.

Drugie miejsce zajmuje Python. Jest więcej bibliotek pentestingu dostępnych w Pythonie niż w Ruby (ale nie na tyle, aby skompensować Metasploit). Narzędzia komercyjne mają tendencję do wspierania Python również - - - jeśli jesteś klientem Canvas lub CORE Impact, chcesz Pythona. Python daje:

Nic dziwnego, że wiele stron internetowych korzysta z narzędzi Java. De facto standardowym narzędziem web pentest jest Burp Suite, czyli aplikacja Java swing. Zarówno Ruby, jak i Python mają warianty Javy, których możesz użyć, aby uzyskać dostęp do takich narzędzi. Ponadto, zarówno Ruby jak i Python oferują:

  • bezpośredni integracja z libpcap do pracy z pakietami surowymi.
  • OpenSSL bindings for crypto.
  • IDA Pro extensions.
  • Dojrzałe (lub przynajmniej rozsądne) interfejsy funkcji obcych C dla dostępu do API.
  • WxWindows for UI work, i przyzwoite stosy internetowe dla Web UI.

Nie pomylisz się z żadnym z języków, choć dla głównego nurtu prac pentest, Metasploit prawdopodobnie przewyższa wszystkie zalety Pythona, a obecnie, dla pracy odwracającej x86, lepsze debugowanie Pythona interfejsy wykorzystują wszystkie zalety Ruby.

Także: jest rok 2008. To nie są "języki skryptowe". To języki programowania. ;)

 27
Author: tqbf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-05 17:09:31

[Disclaimer: jestem przede wszystkim programistą Perla, co może zabarwić mój osąd. Jednak nie jestem szczególnie plemienny i myślę, że w tej konkretnej kwestii mój argument jest dość obiektywny.]

Perl został zaprojektowany tak, aby bezproblemowo wtopić się w krajobraz Uniksa i dlatego wydaje się tak obcy ludziom z pochodzeniem głównie oo (szczególnie Java school of OOP). Z tego powodu jest niesamowicie szeroko instalowany na maszynach z dowolnym Unixoid OS, i wiele narzędzi systemowych dostawców jest w nim napisane. Również z tego samego powodu, serwery, które nie mają zainstalowanego Pythona ani Ruby, nadal prawdopodobnie będą miały na sobie Perla, co ponownie sprawia, że ważna jest znajomość. Więc jeśli Twoja aktywność CEH obejmuje rozległą aktywność na Uniksie, będziesz musiał mieć pewną znajomość Perla i równie dobrze możesz się na nim skupić.

To w dużej mierze kwestia preferencji. Nie ma wiele do odróżnienia języków; ich siła ekspresyjna jest praktycznie identyczna. Niektóre rzeczy są trochę łatwiejsze w jednym z języków, niektóre trochę łatwiejsze w innym.

Jeśli chodzi o biblioteki, Nie wiem, jak Ruby i Python porównują się ze sobą – wiem, że Perl ma je pokonać o margines. Z drugiej strony, czasami (szczególnie, gdy szukasz bibliotek dla wspólnych potrzeb) jedynym efektem tego jest to, że masz oko w oko z wyborami. A jeśli szukasz tylko rzeczy w jakiejś konkretnej dziedzinie co jest dobrze pokryte przez biblioteki dla Pythona lub Ruby, masa Inne rzeczy na CPAN niekoniecznie jest zaletą. W niszowych obszarach ma to jednak znaczenie i nigdy nie wiadomo, jakie nieprzewidziane potrzeby w końcu będziesz miał (err, z definicji).

Dla jednowierszowego użycia w wierszu poleceń, Python jest rodzajem non-startera.

Jeśli chodzi o interaktywne środowisko interpretera, Perl ... uhm ... cóż, możesz użyć debuggera, który nie jest taki świetny, albo możesz zainstalować go z CPAN, ale Perl sam nie wysyła dobrego.

Więc myślę, że Perl ma bardzo niewielką krawędź dla Twoich potrzeb w szczególności, ale tylko po prostu. Jeśli wybierzesz Ruby, prawdopodobnie nie będziesz w gorszej sytuacji. Python może sprawić Ci więcej kłopotu, ale nie jest to zły wybór .

 8
Author: Aristotle Pagaltzis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 08:22:19

Mógłbym argumentować wszystkie trzy : -)

Perl ma wszystkie CPAN-daje ogromną przewagę w szybkim łączeniu funkcjonalności. Ma również przyjemną elastyczną infrastrukturę testową, która oznacza, że możesz podłączyć wiele różnych automatycznych stylów testowania (w tym testy w innych językach) w tym samym frameworku.

Ruby jest pięknym językiem do nauki - i brakuje mu trochę cruft w Perlu 5. Jeśli robisz testy internetowe, to posiada również bibliotekę watir-która jest trez (zobacz http://wtr.rubyforge.org/)

Python-ładny język i (choć nie jest to do moich osobistych preferencji) niektórzy ludzie znaleźć sposób jego struktury łatwiej dostać się do czynienia z.

Każdy z nich (i wiele innych) byłby świetnym językiem do nauki.

Zamiast patrzeć na język-spojrzałbym na twoje środowisko pracy. Zawsze łatwiej jest się czegoś nauczyć, jeśli masz innych ludzi wokół, którzy robią podobne rzeczy. Jeśli aktualnie używasz dev / testing folk to już skupiłem się na jednym z powyższych-poszedłbym na to. Jeśli nie, wybierz ten, który będzie najbardziej odpowiedni/przydatny w bieżącym środowisku pracy. Porozmawiaj z resztą zespołu i zobacz, co myślą.

 4
Author: adrianh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 22:48:56

To zależy od implementacji, jeśli będzie dystrybuowana, to wybrałbym Javę, skoro o tym wiesz, ze względu na jej przenośność. Jeśli jest to tylko do użytku wewnętrznego lub będzie używany w środowiskach częściowo kontrolowanych, a następnie przejdź do tego, co jest najbardziej komfortowe w utrzymaniu, i który ma najlepszą perspektywę długoterminową.

Teraz odpowiadając na pytanie, wybrałbym Perla, ale jestem facetem od Linuksa, więc mogę być w tym trochę stronniczy.

 3
Author: UnkwnTech,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 20:14:39

Jeśli planujesz używać Metasploita do testowania piórem i rozwoju exploita, polecam ruby, jak wspomniano wcześniej, Metasploit jest napisany w Rubim i każdy exploit/moduł będzie wymagał Rubiego.

Jeśli będziesz używać płótna odpornościowego do testowania piórem, to z tych samych powodów polecam Pythona, ponieważ płótno jest napisane w Pythonie. Również wszystkie fuzzing frameworków jak Peach i Sulley są napisane w Pythonie.

Nie polecam Perla jako znajdzie bardzo mało narzędzi/skryptów / frameworków związanych z testowaniem piórem/fuzzingiem/exploitami/... w Perlu.

Jako że twoje pytanie brzmi "pisanie narzędzi i rozwój exploitów", polecam Ruby, jeśli wybierzesz Metasploit lub python, Jeśli wybierzesz CANVAS.

Mam nadzieję, że to pomoże:)

 3
Author: QAZ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-13 12:45:22

Mówiąc jako CEH, nauczyć się materiału CEH pierwszy. Pozwoli to na dostęp do różnych narzędzi i platform używanych do montowania różnego rodzaju ataków. Gdy dobrze zrozumiesz swój cel, przyjrzyj się możliwościom narzędzi i platform już dostępnych (wcześniej wspomniany framework metasploit jest bardzo dokładny i solidny). Jak można je rozszerzyć, aby zaspokoić Twoje potrzeby? Kiedy już to wiesz, możesz porównać możliwości tych języków.

Polecam również biorąc zapoznaj się z narzędziami dostępnymi w dystrybucji BackTrack.

 2
Author: 573f,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 20:48:21

Wszystkie powinny być wystarczające do tego. O ile nie potrzebujesz biblioteki, która jest dostępna tylko w jednym języku, niech osobiste preferencje poprowadzą mnie.

 1
Author: Leon Timmermans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 20:19:25

Jeśli szukasz języka skryptowego, który dobrze zagra z Javą, warto zajrzeć do Groovy. Posiada elastyczność i moc Perla (zamknięcia, wbudowane wyrażenia regularne, tablice asocjacyjne na każdym rogu), ale możesz uzyskać dostęp do kodu Javy, dzięki czemu masz dostęp do ogromnej liczby bibliotek, a w szczególności do reszty rozwijanego systemu.

 1
Author: Rachel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 20:20:05

Metasploit to świetne ramy dla testów penetracyjnych. Jest napisane głównie w Ruby, więc jeśli dobrze znasz ten język, może możesz się tam zaczepić. Jednak, aby używać metasploitu, nie musisz w ogóle znać żadnego języka.

 1
Author: jkramer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 20:22:50

Jeśli jesteś zainteresowany CEH, rzuciłbym okiem na Grey Hat Python . Pokazuje kilka rzeczy, które są dość interesujące i związane.

To powiedziawszy, każdy język powinien być w porządku.

 1
Author: samoz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-11 20:58:06

O jakich wyczynach myślisz? Jeśli chcesz napisać coś, co wymaga rzeczy niskiego poziomu (ptrace, surowe gniazda itp.) następnie będziesz musiał nauczyć się C. Ale zarówno Perl jak i Python mogą być używane. Prawdziwe pytanie brzmi, który bardziej pasuje do Twojego stylu?

Co do toolmakingu, to Perl ma dobre zdolności przetwarzania strun, jest bliżej systemu, ma dobre wsparcie, ale IMHO to bardzo mylące. Preferuję Python: jest to czysty, łatwy w użyciu, łatwy do nauczenia się języka z dobrym wsparciem (pełne odniesienie do języka / lib, biblioteki stron trzecich itp.). I jest (stricte IMHO) fajne.

 0
Author: terminus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-08 07:36:44

Jestem z tqbf. Pracowałem z Pythonem i Ruby. Obecnie pracuję z JRuby. Ma całą moc Ruby z dostępem do bibliotek Javy, więc jeśli jest coś, czego absolutnie potrzebujesz, aby rozwiązać język niskiego poziomu, możesz to zrobić za pomocą języka wysokiego poziomu. Do tej pory nie musiałem używać dużo Javy, ponieważ Ruby miał możliwość zrobienia wszystkiego, czego potrzebowałem jako tester API.

 0
Author: r3nrut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-07 22:24:32