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)
– 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