Jak w miarę anonimowo hakować

Pokazujemy sposoby na małą anonimizację nmapa, sqlmapa i wpscana.

Opis problemu

Zakładając, że przeprowadzam testy RedTeam w organizacjach, to chciałbym pozostać w miarę anonimowy. Jak to osiągnąć?

Rozwiązanie problemu

Anonimowość jest aktualnie bardzo złożonym problemem, którego nie da się rozwiązać jednym wpisem na tej stronie. Zanim zaczniesz przeprowadzać realne testy penetracyjne, to sprawdź wszystko w środowisku laboratoryjnym. W tym artykule zostanie pokazane, jak ukryć swój prawdziwy adres IP podczas skanowania za pomocą oprogramowania Nmap, sqlmap, wpscan oraz kilku innych narzędzi.

Instalacja Tor-a

Instalacja Tora jest najprostszą rzeczą, jaka zostanie tutaj omówiona. Aby zainstalować oprogramowanie TOR na dystrybucji kompatybilnej z Debianem, wykonujemy następujące polecenie:


adrian@adrian-K55VM:~$ sudo apt-get install torsocks tor

Kolejny krok to konfiguracja usługi. Wpisujemy w konsoli:


adrian@adrian-K55VM:~$ sudo nano /etc/tor/torrc

I dodajemy następujące linie:


AutomapHostsOnResolve  1
DNSPort                53530
TransPort              9040

Na koniec wystarczy, że zrestartujemy usługi:


adrian@adrian-K55VM:~$ sudo systemctl start tor
adrian@adrian-K55VM:~$ sudo systemctl enable tor
Synchronizing state of tor.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable tor
adrian@adrian-K55VM:~$ 

ProxyChains i ProxyChains-NG

ProxyChains posiada błąd związany z użyciem oprogramowania nmap. Jeśli spróbujesz normalnie podać nazwę hosta, to wywali błąd. Zobaczmy:


adrian@adrian-K55VM:~$ proxychains nmap -sT -PN -sV -n -6 --open https://akademiahakerow.pl
ProxyChains-3.1 (http://proxychains.sf.net)
Starting Nmap 7.80 ( https://nmap.org ) at 2020-07-02 20:29 CEST
Unable to split netmask from target expression: "https://akademiahakerow.pl"
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.29 seconds
adrian@adrian-K55VM:~$ 

Aby obejść ten problem, użyjemy ProxyChains-NG. ProxyChains-NG przechwytuje połączenia do gniazd w dynamicznie podłączanych programach i przekierowuje je przez jeden lub więcej serwerów proxy lub http proxy. ProxyChains-NG to kontynuacja nieistniejącego projektu proxy. Aby zainstalować ProxyChains-NG używamy następujących komend:


adrian@adrian-K55VM:~$ sudo apt-get install git gcc
adrian@adrian-K55VM:~$ sudo apt-get remove proxychains
adrian@adrian-K55VM:~$ git clone https://github.com/rofl0r/proxychains-ng.git
adrian@adrian-K55VM:~$ cd proxychains-ng
adrian@adrian-K55VM:~/proxychains-ng$ ./configure --prefix=/usr –sysconfdir=/etc
adrian@adrian-K55VM:~/proxychains-ng$ make
adrian@adrian-K55VM:~/proxychains-ng$ sudo make install
adrian@adrian-K55VM:~/proxychains-ng$ sudo make install-config

I teraz możemy spokojnie uderzyć na dany adres, ja wybrałem akurat swoje IP:

adrian@adrian-K55VM:~$ proxychains4 nmap -sT -PN -sV -n --open 77.55.229.241

Rzeczy prostsze, czyli sqlmap i wpscan

Sprawa jest tutaj znacznie prostsza. W przypadku sqlmap wydajemy polecenie:


adrian@adrian-K55VM:~$ sqlmap  77.55.229.241 --proxy socks5://127.0.0.1:9050

Tylko że to skanowanie nie jest do końca anonimowe. Każdy porządny IDS lub IPS wykryje TOR-a i was odrzuci. Więc spróbujmy:


adrian@adrian-K55VM:~$ sqlmap  77.55.229.241 --proxy socks5://127.0.0.1:9050--user-agent="Googlebot (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Podobnie mamy w przypadku wpscan:


adrian@adrian-K55VM:~$ wpscan  77.55.229.241 -e p,vt,u --proxy socks5://127.0.0.1:9050

Dodatkowo polecam użyć następującej konfiguracji, żeby trochę przyspieszyć scan:


adrian@adrian-K55VM:~$ wpscan  77.55.229.241 -e p,vt,u --proxy socks5://127.0.0.1:9050 --request-timeout 500 --connect-timeout 120

Anonimowe skanowanie Nmapem przez Tora - to tabu, to temat zakazany, to nie dla niekumatych, ani nie dla wydyganych.

Uchachany siadasz do kompa i zaczynasz skanowanie sieci. Zadowolony z siebie robisz słabszemu serwerowi DdoS, a za dwa dni masz polską policję na karku. Co do skuteczności polskiej policji i skuteczności lania pałą na komendzie nie będę się wypowiadał, ale najlepiej nie dać się zastraszyć i zapomnieć o wszystkim, nawet imienia i nazwiska.

Ale dobra, chcielibyśmy trochę pochodzić po wolności i zajmujemy się testami penetracyjnymi typu Red Team. Co powinniśmy wiedzieć? Po pierwsze TOR nie obsługuje ruchu generowanego za pomocą programu Nmap. Nie możesz załączyć skanowania przez TOR-a w żaden normalny sposób. Po drugie nmap to jeden z najbardziej niebezpiecznych programów, jeśli chodzi o anonimowość.

Ale załóżmy, że chcesz jednak anonimowy podczas testu RedTeam i nie chcesz się tłumaczyć przed panem z milicji partyjnej z niepełną podstawówką. Jeśli już chcemy pozostać anonimowi, to musimy naprawdę dobrze zrozumieć opcję -sT. Jeśli skorzystamy z pomocy oprogramowania nmap możemy się dowiedzieć więcej o tym typie skanowania. Przejdźmy więc po kolei przez tą opcję oraz kilka innych przydatnych opcji.

-sT (skanowanie połączenia TCP)

Skanowanie TCP jest domyślnym typem skanowania, natomiast SYN jest już opcjonalne. Skanowania TCP używa się wtedy, kiedy z jakiegoś powodu nie mamy dostępu do generowania surowych pakietów. Jak to działa? Zamiast tworzyć surowe pakiety lub pakiety innego typu, nmap prosi Twój system operacyjny o nawiązanie połączenia z maszyną docelową i portem, wykorzystując funkcję systemową connect. Connect jest takim samym wywołaniem, jakiego używają przeglądarki internetowe, czy sieci typu P2P aby ustanowić połączenie. Zamiast czytać odpowiedzi surowych pakietów, nmap używa kawałka Berkley Sockets API do uzyskiwania informacji o danego systemu przy każdej próbie połączenia.

Kiedy tylko mamy dostępne skanowanie typu SYN, to zawsze będzie to o wiele lepszy wybór. Wtedy nmap ma mniejszą kontrolę nas połączeniami, niż w przypadku TCP. Ogólnie TCP jest średnio wydajne, ponieważ zawsze kończy połączenia z otwartymi portami docelowymi i nie wykonuje resetowania do połowy, co robi skan SYN. W przypadku skanowania TCP każdy docelowy komputer zarejestruje takie działanie. W przypadku skanowania SYN dopiero przyzwoity IDS jest w stanie wyłapać skanowanie, ale większość maszyn nie posiada żadnych systemów IDS.

Dodatkowo w przypadku, kiedy coś łączy się a następnie zamyka połączenie do hosta, to większość systemów doda informację do sysloga oraz komunikat o błędzie. Każdy devops, czy sysadmin jeśli widzi kilka prób połączenia w syslogu, to już wie, że jego maszynka została przeskanowana. Teraz uwaga: niektóre usługi skanowane przez TCP potrafią się wypieprzyć, a nie chcemy się tłumaczyć przed troglodytą z milicji, że przypadkiem zdosowaliśmy usługę biznesową.

Uruchomimy więc nmap z opcją -sT, ale bez sudo, ponieważ program nie wymaga już uprawnień roota.


adrian@adrian-K55VM:~$ proxychains4 nmap -sT  77.55.229.241

Dodatkowymi opcjami mogą być:

  • -Pn – potraktuj wszystkie hosty jako hosty dostępne, pomijając wykrywaniem
  • -sV – sprawdź otwarte porty, aby określić informację o usłudze i wersji
  • --open – pokaż tylko otwarte porty

Dodatkowo pamiętaj, że używanie dowolnych serwerów proxy spowalnia skanowanie i zwiększa opóźnienia w odpowiedziach, a więc przydatne będą następujące opcje:

  • -F – tryb szybki – skanuje mniej portów niż skanowanie domyślne
  • -p – określa porty do skanowania
  • -n – nie stosuje tłumaczenia adresów IP na nazwy serwerów. Warto to wyłączyć.

Nareszcie możesz użyć funkcji –-proxies i …. o 6 rano możesz mieć wizytę mundurowych. A więc należy unikać używania opcji, których się nie zna. Zobaczmy jak to działa:

  • --proxies Rozdzielona przecinkami lista adresów URL serwerów proxy (Przekaż połączenia TCP przez łańcuch serwerów proxy)

--proxies prosi nmap o ustanawianie połączeń TCP poprzez łańcuch serwerów proxy za pomocą portów HTTP lub SOCKS4. Prosi Nmap o ustanowienie połączeń TCP z ostatecznym celem poprzez łańcuch dostaw jednego lub więcej serwerów proxy HTTP lub SOCKS4. Użytkownicy mogą odpowiednio dostosować limity czasu Nmapa i inne parametry skanowania. W szczególności może pomóc niższy paralelizm - max., ponieważ niektóre serwery proxy odmawiają obsługi tylu równoczesnych połączeń, ile Nmap otwiera domyślnie.

Ta opcja przyjmuje listę serwerów proxy jako argument, wyrażoną jako adresy URL w formacie proto: // host: port. Użyj przecinków, aby oddzielić adresy URL węzłów w łańcuchu. Żadne uwierzytelnianie nie jest jeszcze obsługiwane. Prawidłowe protokoły to HTTP i SOCKS4.

Ostrzeżenie: ta funkcja jest wciąż w fazie rozwoju i ma ograniczenia. Jest zaimplementowana w bibliotece nsock, a zatem nie ma wpływu na fazy pingowania, skanowania portów i wykrywania systemu operacyjnego podczas skanowania. Z tej opcji korzystają tylko NSE i skanowanie wersji - inne funkcje mogą ujawnić Twój prawdziwy adres. Połączenia SSL nie są jeszcze obsługiwane, podobnie jak rozpoznawanie DNS po stronie proxy (nazwy hostów są zawsze rozwiązywane przez Nmap).

Jak widać, flaga --proxies nie zwiększa anonimowości. To może być bardzo mylące. A więc jak użyć w miarę anonimowego skanowania? Oto pełne polecenie:


adrian@adrian-K55VM:~$ proxychains4 nmap -sT -PN -sV --open -n  77.55.229.241

Jeśli użyjecie tego polecenia, zobaczycie wiele nadmiarowych informacji. Aby się ich pozbyć wykonujemy komendę:


adrian@adrian-K55VM:~$ proxychains4 nmap -sT -PN -sV --open -n  77.55.229.241 2>/dev/null