python do testów penetracyjnych

Narzędzia Pythonowe dla pentesterów

Jeżeli jesteś zaangażowany w poszukiwanie dziur i błędów w oprogramowaniu, inżynierię wsteczną do testów penetracyjnych wypróbuj język programowania Python. Posiada on bogaty zestaw przydatnych bibliotek oraz programów. Wymienimy niektóre z nich.

Większość wyszczególnionych tutaj narzędzi jest napisana w Pythonie, pozostałe są tylko zbindowanymi bibliotekami C, jednakże przez zastosowanie Pythona, są łatwiejsze w użyciu.

Niektóre z bardziej agresywniejszych narzędzi (np. frameworki aplikacji penetracyjnych, bluetooth smashers, aplikacji do skanowania serwisów WWW czy dialerów) zostały pominięte, ponieważ stan prawny tych narzędzi w Niemczech (skąd pochodzi spis narzędzi) jest nie do końca jasny, dlatego, aby być pewnym braku łamania przepisów, prezentujemy narzędzia, które spokojnie mogą być użyte bez żadnego ryzyka.

Sieci

– Scapy, Scapy3k – wysyła, podsłuchuje, dissectuje i fałszuje pakiety sieciowe. Uruchamia się samodzielnie lub jako biblioteka, (http://secdev.org/projects/scapy/ , https://github.com/phaethon/scapy)

– pypcap, Pcapy and pylibpcap – biblioteki będące bindami dla Pythona (libpcap), (https://github.com/dugsong/pypcap, https://www.coresecurity.com/grid/index-open-source-tools, http://pylibpcap.sourceforge.net/)

– libdnet – narzędzie niskiego poziomu do sieci Ethernet (frame transmisson, routnges, lookups) (https://github.com/dugsong/libdnet)

– dpkt – szybkie, proste tworzenie pakietów/parsowania z definicji podstawowych protokołów TCP / IP (https://github.com/kbandla/dpkt)

– impacket – tworzy i dekoduje pakiety sieciowe. Obejmuje wsparcie dla protokołów wyższego poziomu, takich jak NMB i SMB (https://www.coresecurity.com/grid/index-open-source-tools)

– pynid – libnids wrapper oferuje sniffowanie, defragmentacje IP, TCP strwam, ponowny montaż oraz port wykrywania skanowania (https://jon.oberheide.org/pynids/)

– dirtbags PY-pcap – odczytywanie plików pcap bez libcap (http://dirtbags.net/py-pcap.html)

– flowgrep – grepowanie pakietów sieciowych z użyciem regularnych wyrażeń (https://monkey.org/~jose/software/flowgrep/)

– Knock Subdomain Scan – wylistowanie subdomen na docelowej domenie za pomocą słownika (https://github.com/guelfoweb/knock)

– SubBrute – szybkie narzędzie wylistowania subdomeny (https://github.com/TheRook/subbrute)

– Mallory – rozszerzenie TCP / UDP dla man-in-the-middle proxy, obsługuje modyfikacje niestandardowych protokołów (https://bitbucket.org/IntrepidusGroup/mallory)

– Pytbull: elastyczne IDS / IPS do testowania freameworków (załadowane z ponad 300 testów) (http://pytbull.sourceforge.net/)

– Spoodle: masowy skaner subdomen + poodle skaner (https://github.com/vjex/spoodle)

– SMBMap – numeracja dysków Samba poprzez całą domenę (https://github.com/ShawnDEvans/smbmap)

Debugowanie i inżynieria odwrotna

– Paimei – inżynieria wsteczna frameworkowa obejmuje PyDBG (https://github.com/OpenRCE/pydbg), Pida, pGRAPH (https://github.com/OpenRCE/paimei)

– Immunity Debugger – skrypty GUI i wiersz poleceń debuggera (http://debugger.immunityinc.com/)

– mona.py – Py Command za Immunity Debugger, który zastępuje oraz poprawia pvefindaddr (https://www.corelan.be/index.php/2011/07/14/mona-py-the-manual/)

-IDAPython – IDA Pro plugin, który integruje się z językiem programowania Python, dzięki czemu skrypty uruchamiane są w IDA Pro (https://github.com/idapython/src)

– PyEMU pełni funkcję skryptu emulatora IA-32, przydatny do analizy malware (https://code.google.com/archive/p/pyemu/)

– pefile – sczytuje i współpracuje z przenośnymi plikami wykonywalnymi (alias PE) (https://github.com/erocarrera/pefile)

– pydasm – Interfejs Pythona dotyczący demontażu biblioteki libdasm (https://code.google.com/archive/p/libdasm/) x86 (https://code.google.com/archive/p/libdasm/source)

– PyDbgEng – Python Wrapper dedykowany dla Microsoft Windows Debugging unhooker – połączenia przechwytują komendy wywołań API wewnątrz DLL, a także dowolnych adresów w pliku wykonywalnym w pamięci (http://pydbgeng.sourceforge.net/)

– diStorm – biblioteka dezasemblera dla AMD64, licencjonowana na warunkach licencji BSD (https://github.com/gdabah/distorm)

– python-ptrace – debugger używający ptrace (Linux, BSD oraz Darwin do przywoływania systemowych procesów napisanych w Pythonie (http://python-ptrace.readthedocs.io/en/latest/)

— VDB / vtrace to wieloplatformowy API proces wdrożony w Pythonie oraz VDB, tam znajduje się debugger, który go używa (https://code.google.com/archive/p/vdebug/)

– Androguard – używany w inżynierii wstecznej (https://github.com/androguard/androguard)

– Capstone – lekki, wieloplatformowy, multiarchitektoniczny asembler frameworkowy powiązany z Pythonem (http://www.capstone-engine.org/)

– Keystone – lekki, wieloplatformowy, multiarchitektoniczny asemblet frameworkowy powiązany z Pythonem (http://www.keystone-engine.org/)

– PyBFD – interfejs Pythona dotyczący biblioteki GNU Binary FIle Descriptor (BFD) (https://github.com/Groundworkstech/pybfd/)

– CHIPSEC – ramy do analizy bezpieczeństwa platform PC, w tym sprzętu, oprogramowania systemowego (BIOS / UEFI) oraz komponentów platformy (https://github.com/chipsec/chipsec)

Fuzzing

– AFL-python – włącza American Fuzzy Lop fork server (http://jwilk.net/software/python-afl)

– Sulley – fuzzer development i tester frameworkowy fuzz, składający się z wielu części (https://github.com/OpenRCE/sulley)

– Peach Fuzz Platforma – rozszerzalny fuzzing frameworkowy do wytwarzania oraz zmian (v2 napisany został w Pythonie) (http://www.peachfuzzer.com/)

– antiparser – test fuzz oraz wykrywanie usterek API injection (http://antiparser.sourceforge.net/)

– TAOF (The Arto of fuzzing), w tym ProxyFuzz, fuzer man-in-the-middle sieci niedeterministycznych (https://sourceforge.net/projects/taof/)

– untidy – przeznaczenia ogólnego XML fuzzer

– Powerfuzzer – wysoce zautomatyzowany i w pełni konfigurowalny internetowy fuzzer (Aplikacja HTTP fuzzer oparta o protokół) (http://www.powerfuzzer.com/)

– SMUDGE

-Mistress (dominanty) – sonda formatów plików oraz protokołów ze zniekształconych danych, oparte na predefiniowanych wzorcach (https://packetstormsecurity.com/fuzzer/mistress.rar)

– Fuzzbox – multikodek mediów (https://isecpartners.com/tools/application-security/fuzzbox.aspx)

– Forensic Fuzzing Tools – generowanie plików fuzzingowych w celu przetestowania odporności narzędzi i systemów

– Windows IPC Fuzzing Tools – narzędzia używane do zastosowań Fuzz, które wykorzystują mechanizmy Interprocess Windows Communication (https://www.nccgroup.trust/us/about-us/resources/windows-ipc-fuzzing-tools/)

– WSBang – przygotowanie do automatycznego testowania zabezpieczeń SOAP, oparte o usługi internetowe (https://www.nccgroup.trust/us/about-us/resources/wsbang/)

– Construct – biblioteka służąca do parsowania oraz budowania struktur danych (binarnych lub tekstowych). Definiowanie struktur danych w sposób deklaratywny (http://construct.readthedocs.io/en/latest/)

– fuzzer.py (feilam) prosty fuzzer Felipe Andresa Manzano

– Fusil – biblioteka Pythona używana do pisania programów fuzzingowych (http://fusil.readthedocs.io/)

Web

– Requests – elegancka i prosta biblioteka HTTP, zbudowana „dla ludzi” (http://docs.python-requests.org/en/master/)

– HTTPie – przyjazne w obsłudze linie poleceń cURL – tak, jak klient http (https://github.com/jkbrzt/httpie)

– ProxMon – procesowanie logów proxy i raportowanie odkrytych błędów (https://www.nccgroup.trust/us/about-us/resources/proxmon/)

– WSMap – znajduje punkty końcowe usług internetowych oraz plików służących do wykrywania (https://www.nccgroup.trust/us/about-us/resources/wsmap/)

– Twill – pozwala przeglądać strony internetowe za pomocą interfejsu wiersza poleceń. Obsługuje automatyczne testowanie sieci Web (http://twill.idyll.org/)

– Ghost.py – WebKit Web Client napisany w Pythonie (http://jeanphix.me/Ghost.py/)

– Windmill – narzędzie służące do testowania, zaprojektowane aby umożliwić i zautomatyzować debugowanie aplikacji internetowych

– spynner – zautomatyzowany moduł przeglądania stron internetowych dla Pythona z obsługą JavaScript / AJAX (http://funkload.nuxeo.org/) (https://github.com/makinacorpus/spynner)

– python-spidermonkey – most na silniku Mozilla SpiderMonkey JavaScript, pozwala ocenić i powołać skrypty oraz funkcje JavaScript (https://code.google.com/archive/p/python-spidermonkey/)

– mitmproxy – jest kompatybilny z SSL-em, przechwytuje proxy HTTP. Interfejs konsoli pozwala na kontrolę oraz edycję pewnych ruchów (https://mitmproxy.org/)

– pathod / pathoc – deamon/client znęcający się nad protokołem http (http://pathod.net/)

Forensics

– Volatility (zmienność) – cyfrowy wyciąg artefaktów z pamięci trwałej (RAM) (http://www.volatilityfoundation.org/)

– Rekall – analiza pamięci frameworka opracowanego przez Google (http://www.rekall-forensic.com/)

– LibForensics – biblioteki służące tworzeniu aplikacji cyfrowych (https://code.google.com/archive/p/libforensics/)

– TrlDLib – identyfikacja typów danych plików wraz z ich podpisami binarnymi (http://mark0.net/code-tridlib-e.html)

– aft – Android forensic toolkit  (https://code.google.com/archive/p/aft/)

Analiza malware

– pyew – linia komend hexadecimal i dezasemblerowych, służąca głównie do analizy malware (https://github.com/joxeankoret/pyew)

– exefilter – filtracja formatów plików e-mail, stron internetowych bądź innych plików. Wykrywa wiele popularnych formatów plików i jest w stanie usunąć aktywną zawartość. (http://www.decalage.info/exefilter)

-pyClamAV – dodanie możliwości wykrywania wirusów do oprogramowania w Pythonie

– jsunpack-n – rodzaj Unpacker JavaScript, emuluje funkcjonalność przeglądarki, wykrywa exploity, które zwalczają przeglądarki oraz przeglądarkę plug-in luk (https://github.com/urule99/jsunpack-n)

-Yara-python – identyfikacja i klasyfikacja złośliwego oprogramowania (https://github.com/plusvic/yara/tree/master/yara-python)

– phoneyc – czysta implementacja honeyclienta napisanego w Pythonie (https://github.com/honeynet/phoneyc)

– CapTipper – analizuje, bada i przegląda złośliwy ruch http z pliku PCAP (https://github.com/omriher/CapTipper)

PDF

– peepdf – narzędzia Pythona służące analizie i odkrywaniu plików PDF w celu sprawdzenia potencjalnej szkodliwości (http://eternal-todo.com/tools/peepdf-pdf-analysis-tool)

– Didier Stevens’ PDF tools – analizuje, identyfikuje i tworzy pliki PDF (zawiera PDFiD, pdf parser i make-pdf oraz mPDF) (https://blog.didierstevens.com/programs/pdf-tools/)

– Opaf – framework do analizy plików PDF, konwersja PDF do formatu drzewa XML, które można modyfikować i poddawać analizie (https://code.google.com/archive/p/opaf/)

– Origapy – Pythonowy wrapper dla modułu Origami Ruby do sanityzacji plików PDF (http://www.decalage.info/python/origapy)

– pyPDF2 pure Python PDF Toolkit – wyodrębnianie informacji, dzielenie, scalanie, przycinanie, szyfrowanie, deszyfrowanie (http://mstamy2.github.io/PyPDF2/)

– PDFMiner – wyodrębnienie tekstu z plików PDF (http://www.unixuser.org/~euske/python/pdfminer/index.html)

– python-poppler-qt4 – Python binduje dla biblioteki Poppler PDF, wraz ze wsparciem dla Qt4 (https://github.com/wbsoft/python-poppler-qt4)

Misc

– InlineEgg – toolbox dla klas do pisania małych aplikacji w Pythonie (https://www.coresecurity.com/grid/index-open-source-tools)

– Exomind – framework do budowania wykresów a także do rozwijania inteligentnych modułów open-source, koncentruje się na serwisach społecznościowych, wyszukiwarkach oraz komunikatorach (https://www.coresecurity.com/corelabs-research/open-source-tools/exomind)

– RevHosts – wylicza ilość wirtualnych hostów dla danego adresu IP (http://www.securityfocus.com/tools/3851)

– PyMangle – narzędzia wiersza poleceń i biblioteka Pythona wykorzystywane do tworzenia listy słów kompatybilnych z innymi narzędziami testów penetracyjnych (https://code.google.com/archive/p/pymangle/)

– Hachoir – edycja i podgląd pliku binarnego krok po kroku (https://bitbucket.org/haypo/hachoir/wiki/Home)

– PY-mangle – narzędzia wiersza poleceń oraz biblioteka Pythona wykorzystywane do tworzenia listy poleceń służących użytkowaniu wraz z innymi narzędziami testów penetracyjnych (https://github.com/praetorian-inc/pentestly)

– wmiexec.py – szybkie i łatwe wykonywanie poleceń za pomocą WMI Pentestly: Python i Powershell Framework do wewnętrznych testów penetracyjnych (https://github.com/CoreSecurity/impacket/blob/master/examples/wmiexec.py)

Pozostałe przydatne narzędzia oraz biblioteki

– Ipython – zwiększa interaktywność shella wraz z jego funkcjami do introspekcji, dostępu do systemowego shella a także własnym systemem komend

– Beautiful Soup – HTML Parser zoptymalizowany dla screen-scraping (https://www.crummy.com/software/BeautifulSoup/)

– matplotlib – tworzy wykresy 2d

– Mayavi – wizualizacja danych naukowych w 3D (http://code.enthought.com/projects/mayavi/)

– RTGraph3D – pomaga tworzyć dynamiczne wykresy w 3D (http://www.secdev.org/projects/rtgraph3d/)

– Twisted – silnik do programowania zdarzeń sieciowych (http://twistedmatrix.com/trac/)

– Suds – lekki SOAP dla użytkowników Web Serices (https://fedorahosted.org/suds/)

– M2Crypto – kompletny wrapper OpenSSL

– NetworkX – biblioteka wykresów (http://networkx.github.io/)

– Pandas – biblioteka o wysokiej wydajności, łatwa w użytkowaniu struktur danych praz narzędzi analitycznych (http://pandas.pydata.org/)

– pyparsing – moduł analizy ogólnej (http://pyparsing.wikispaces.com/)

– lxml – bogata w funkcje oraz łatwa w użyciu biblioteka do pracy z XML oraz HMTL w Pythonie (http://lxml.de/)

– Whoosh – potężna funkcja służąca do indeksowania oraz przeszukiwania biblioteki oraz wdrażania w języku Python (https://bitbucket.org/mchaput/whoosh/wiki/Home)

– Pexpect – kontroluje i automatyzuje inne programy, podobne do Don LIBES ‚EXPECT’ System (https://github.com/pexpect/pexpect)

– Sikuli – technologia wizualna do wyszukiwania i automatyzacji GUI używająca zrzutów ekranu. (Scriptable in Jython) (http://www.sikuli.org/)

– PyQt (https://www.riverbankcomputing.com/software/pyqt/intro) i PySide (https://wiki.qt.io/PySide) – bindowanie Pythona dla frameworka aplikacji Qt ora biblioteki GUI

Książki

– „Violent Python” TJ O’Connora – przewodnik krok po kroku dla hakerów

– „Grey Hat Python” Justina Seitza – programowanie w Pythonie dla hakerów oraz programistów inżynierii wstecznej

– „Black Hat Python” Justina Seitza – programowanie w Pythonie dla hakerów i pentesterów

– „Python Penetration Testing Essentials” Mohita – zastosowanie mocy Pythona dla uzyskania najlepszych efektów w pentestingu

– „Python for Secret Agents” Stevena F. Lotta – analiza, szyfrowanie oraz informacja o danych zawarte w Pythonie

– „Python Web Penetration Testing Cookbook” Camerona Buchana – ponad 60 formuł służących do testowania aplikacji internetowych

-„Learning Penetration Testing with Python” Christophera Duffy – wykorzystanie Pythona w celu testów penetracyjnych

– „Python Forensics” Cheta Hosmera – warsztat wynajdywania oraz udostępniania cyfrowej technologii śledczej

– „The Beginner’s Guide to IDAPython” Alexandra Hanela

Wykłady, slajdy oraz artykuły

– „Python & Reverse Engineering Software’ Aleksandra Hanela

– „Python Arsenal for Reverse Engineering” Dimitriya Evdokimova

Więcej rzeczy

– „SecurityTube Python Scripting Expert (SPSE)” jako certyfikowany kurs online oferowany przez Vivek Ramachandran

– SANS oferuje kurs SEC573: Python dla pentesterów

– Python Arsenal dla inżynierii wstecznej – spora kolekcja narzędzi przeznaczonych do inżynierii wstecznej

– Dokumentacja SANS dotycząca biblioteki Pythona pomocnej w technologii śledczej (PDF)

 

Więcej bibliotek Pythona jest dostępnych pod PyPl, Python Package Index