Tłumaczenie dużych ilości adresów IP na domeny - HostHunter

W tym wpisie zajmiemy się oprogramowaniem HostHunter do masowego tłumaczenia IP.

Opis problemu

Chciałbym masowo tłumaczyć adresy IP na domeny. Jak to zrobić?

Rozwiązanie problemu

W tym wpisie zajmiemy się oprogramowaniem HostHunter, które przydaje się w sytuacji, kiedy musimy określić dużą liczbę hostów dla dużej ilości adresów IP. Mimo że oprogramowanie jest zaprojektowane do pracy z dużą ilością adresów IP, to i tak można go użyć do zbierania informacji o pojedynczym adresie IP. Dodatkową zaletą programu jest to, że używa on pewnych technik OSINT. Dodatkowo możemy w nim generować pliki raportów w formacie CSV. Ale zaczniemy od krótkiego wprowadzenia.

Jak zmapować adres IP na nazwę hosta

Pierwszym sposobem jest uzyskanie nazwy hosta za pomocą rekordu PTR. Możemy to zrobić w następujący sposób:


adrian@adrian-K55VM:~$ dig -x 77.55.229.241

; <<>> DiG 9.16.1-Ubuntu <<>> -x 77.55.229.241
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37866
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;241.229.55.77.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
241.229.55.77.in-addr.arpa. 3138 IN	PTR	dedicated-aiv241.rev.nazwa.pl.

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: wto lip 07 21:29:25 CEST 2020
;; MSG SIZE  rcvd: 98

adrian@adrian-K55VM:~$ nslookup 77.55.229.241
241.229.55.77.in-addr.arpa	name = dedicated-aiv241.rev.nazwa.pl.

Authoritative answers can be found from:

adrian@adrian-K55VM:~$ 

Ale czasami ten sposób może nam nie odpowiadać, a więc możemy zebrać informacje o hoście za pomocą kilku serwisów, na przykład:

Jednak to nie wyjaśnia jak ujawnić nazwy hostów z dużej ilości adresów IP

Teraz właśnie przechodzimy do sedna, czyli programu HostHunter. Oprogramowanie jako wejście otrzymuje plik z dużą liczbą adresów IP i szuka nazwy hosta dla każdego z nich. To oprogramowanie używa interfejsu Hacker Target API i Bing.com. Aby zainstalować oprogramowanie HostHunter w systemie Linux, musimy wydać następujące polecenia:


adrian@adrian-K55VM:~$ git clone https://github.com/SpiderLabs/HostHunter
adrian@adrian-K55VM:~$ cd HostHunter
adrian@adrian-K55VM:~/HostHunter$ sudo pip3 install -r requirements.txt
adrian@adrian-K55VM:~/HostHunter$ sudo pip3 install selenium
Teraz należy utworzyć przykładowy plik .txt z adresami IP do przetestowania:
adrian@adrian-K55VM:~/HostHunter$ cat ip.txt
77.55.229.241
adrian@adrian-K55VM:~/HostHunter$ 

I na koniec wystarczy użyć programu HostHunter, wskazując mu jako parametr nasz plik .txt:


adrian@adrian-K55VM:~/HostHunter$ python3 hosthunter.py ip.txt

[?] vhosts.csv file already exists, would you like to overwrite it?
Answer with [Y]es or [N]o : y  
                                                                             
 | $$  | $$                      | $$    | $$  | $$                      | $$
 | $$  | $$  /$$$$$$   /$$$$$$$ /$$$$$$  | $$  | $$ /$$   /$$ /$$$$$$$  /$$$$$$    /$$$$$$   /$$$$$$
 | $$$$$$$$ /$$__  $$ /$$_____/|_  $$_/  | $$$$$$$$| $$  | $$| $$__  $$|_  $$_/   /$$__  $$ /$$__  $$
 | $$__  $$| $$  \ $$|  $$$$$$   | $$    | $$__  $$| $$  | $$| $$  \ $$  | $$    | $$$$$$$$| $$  \__/
 | $$  | $$| $$__| $$ \____  $$  | $$ /$$| $$  | $$| $$__| $$| $$  | $$  | $$ /$$| $$_____/| $$
 | $$  | $$|  $$$$$$/ /$$$$$$$/  |  $$$$/| $$  | $$|  $$$$$$/| $$  | $$  |  $$$$/|  $$$$$$$| $$
 |__/  |__/ \______/ |_______/    \___/  |__/  |__/ \______/ |__/  |__/   \___/   \_______/|__/  v1.5


 HostHunter:  v1.5
 Author :  Andreas Georgiou (superhedgy)
 Twitter:  @superhedgy

|-----------------------------------------------------------------------------------------------|

[+] Target: 77.55.229.241
[+] Hostnames: 
akademiahakerow.pl
dedicated-aiv241.rev.nazwa.pl

|-----------------------------------------------------------------------------------------------|

  Reconnaissance Completed!

  2 hostnames were discovered in 2.83 sec

|-----------------------------------------------------------------------------------------------|
adrian@adrian-K55VM:~/HostHunter$

Aby zapisać dane w wersji tekstowej użyjemy:


adrian@adrian-K55VM:~/HostHunter$ python3 hosthunter.py -f TXT ip.txt

Możemy także sprecyzować nazwę pliku:


adrian@adrian-K55VM:~/HostHunter$ python3 hosthunter.py  -o hostnames_list.csv ip.txt

Dodatkowo można użyć wyszukiwarki bing:


adrian@adrian-K55VM:~/HostHunter$ python3 hosthunter.py  -b -o hostnames_list.csv ip.txt
[?] hostnames_list.csv file already exists, would you like to overwrite it?
Answer with [Y]es or [N]o : yes
                                                                             
 | $$  | $$                      | $$    | $$  | $$                      | $$
 | $$  | $$  /$$$$$$   /$$$$$$$ /$$$$$$  | $$  | $$ /$$   /$$ /$$$$$$$  /$$$$$$    /$$$$$$   /$$$$$$
 | $$$$$$$$ /$$__  $$ /$$_____/|_  $$_/  | $$$$$$$$| $$  | $$| $$__  $$|_  $$_/   /$$__  $$ /$$__  $$
 | $$__  $$| $$  \ $$|  $$$$$$   | $$    | $$__  $$| $$  | $$| $$  \ $$  | $$    | $$$$$$$$| $$  \__/
 | $$  | $$| $$__| $$ \____  $$  | $$ /$$| $$  | $$| $$__| $$| $$  | $$  | $$ /$$| $$_____/| $$
 | $$  | $$|  $$$$$$/ /$$$$$$$/  |  $$$$/| $$  | $$|  $$$$$$/| $$  | $$  |  $$$$/|  $$$$$$$| $$
 |__/  |__/ \______/ |_______/    \___/  |__/  |__/ \______/ |__/  |__/   \___/   \_______/|__/  v1.5


 HostHunter:  v1.5
 Author :  Andreas Georgiou (superhedgy)
 Twitter:  @superhedgy

|-----------------------------------------------------------------------------------------------|

[+] Target: 77.55.229.241
[+] Hostnames: 
akademiahakerow.pl
dedicated-aiv241.rev.nazwa.pl
[+] Web Apps:
https://akademiahakerow.pl/aktualnosci/pojedynczy-wpis/czym-sa-domkniecia-w-javascript
https://akademiahakerow.pl/aktualnosci/pojedynczy-wpis/jak-zabezpieczyc-dostep-do-wybranych-aplikacji-uzywajac-htaccess

|-----------------------------------------------------------------------------------------------|

  Reconnaissance Completed!

  2 hostnames were discovered in 6.6 sec

|-----------------------------------------------------------------------------------------------|
adrian@adrian-K55VM:~/HostHunter$ 

Teraz uwaga. Jeśli użyjemy opcji -b, to pojawią się być może nowe hosty, ale czasami są to tylko linki do stron wewnętrznych. Dodatkowe informacje są zapisywane w pliku webapps.txt. Istnieje także możliwość pobrania screenów ze znalezionych domen. Robimy to za pomocą opcji -sc:


adrian@adrian-K55VM:~/HostHunter$ python3 hosthunter.py  -b -sc -o hostnames_list.csv ip.txt

Jak widać, podejmowana jest próba wykonania zrzutu ekranu z każdego adresu IP, niezależnie od tego, czy możliwe było znalezienie nazwy hosta, czy nie. Dla każdego adresu IP podejmowana jest próba uzyskania zrzutu ekranu dla portów 80, 443, 8080.

Jeśli chcesz wyodrębnić tylko hosty z pliku vhosts.csv, w tym celu wykonaj polecenie:


adrian@adrian-K55VM:~/HostHunter$ awk -F '","' '{print $3}' hostnames_list.csv 
Domains
akademiahakerow.pl,dedicated-aiv241.rev.nazwa.pl
adrian@adrian-K55VM:~/HostHunter$

Niektóre linie mogą zawierać jednocześnie kilka hostów, oddzielonych przecinkami, jeśli chcesz, aby każdy host był w osobnej linii, wykonaj następujące czynności:


adrian@adrian-K55VM:~/HostHunter$ awk -F '","' '{print $3}' hostnames_list.csv | tr "," "\n"
Domains
akademiahakerow.pl
dedicated-aiv241.rev.nazwa.pl
adrian@adrian-K55VM:~/HostHunter$ 

Jeśli tego potrzebujesz, możesz nawet użyć HostHuntera, aby wyszukać nazwę hosta dla jednego adresu IP:


adrian@adrian-K55VM:~/HostHunter$ echo '77.55.229.241' | python3 hosthunter.py /dev/stdin

Jak zrobić listę adresów IP - każdy adres w nowej linii

HostHunter obsługuje tylko pliki, w których każdy adres IP jest wymieniony w osobnej linii - używanie notacji z maskami i zakresami nie jest obsługiwane.

Takie listy adresów IP można zestawiać podczas procesu badania danej sieci. Ale czasami trzeba wygenerować takie odpowiednie piki. Weźmy ten przykład: witryna akademiahakerow.pl jest hostowana pod adresem IP 77.55.229.241, i z jakiegoś powodu chcę wiedzieć, którzy hosty są jej sąsiadami. To znaczy, jestem zainteresowany wszystkimi hostami w zakresie od 77.55.229.1 do 77.55.229.255.

W takim przypadku do wygenerowania listy adresów IP można użyć skryptów powłoki bash. Jeśli określisz dwa znaki przez dwa punkty w nawiasach klamrowych, sama powłoka wyświetli wszystkie opcje z tego zakresu. Aby to wyjaśnić, oto kilka przykładów:


adrian@adrian-K55VM:~/HostHunter$ echo {a..c}
a b c
adrian@adrian-K55VM:~/HostHunter$ echo {a..x}
a b c d e f g h i j k l m n o p q r s t u v w x
adrian@adrian-K55VM:~/HostHunter$ echo {0..9}
0 1 2 3 4 5 6 7 8 9
adrian@adrian-K55VM:~/HostHunter$ 

Aby generować zakresy dla HostHuntera musisz użyć polecenia:


adrian@adrian-K55VM:~/HostHunter$ echo 185.117.153.{1..255} | tr " " "\n" > ip.txt

Lub dla jeszcze większej puli:


adrian@adrian-K55VM:~/HostHunter$ echo 185.117.{1..255}.{1..255} | tr " " "\n" > ip.txt

Prawda że proste?