Pracując tam, gdzie pracowałem, miałem kilka razy utarczki z "biznesem" na temat tego jak powinny być wybierane nazwy domenowe (głównie dla stron WWW). Dla biznesu najważniejsza była ich chwytliwość i możliwość skonstruowania kampanii marketingowej z ich wykorzystaniem. Z mojego punktu widzenia kwestie bezpieczeństwa przy wybieraniu nazwy domenowej są również istotne. Wybieraniu nazwy i patrzeniu co się dzieje w jej okolicach...
Fuzzowanie nazw domen
O jakich okolicach mówię? Jeśli istnieje serwis (popularny), to można:
- podszyć się pod niego (oszukać jego użytkowników/klientów),
- wykorzystać jego popularność do własnej promocji,
- wykorzystać jego popularność do szerzenia ZŁA (np. różnego malware)
Jak to można zrobić? Może na początku prosty przykład - domena interia.pl. Napisałem prosty skrypt, który w oparciu o podaną nazwę domeny generuje inne, podobne. W celu generowania podobnych napisałem kilka fuzzerów:
- pomijanie litery,
- podwojenie litery,
- zmiana litery na inną znajdującą się blisko na klawiaturze,
- jednoczesne wprowadzenie drugiego znaku znajdującego się blisko na klawiaturze,
- zamiana kolejności kolejnych liter,
- zamiana znaku na inny znak lub ciąg znaków wizualnie podobnych,
Skrypt ten sprawdza, czy dana domena istnieje. W tym celu odpytywany jest serwer DNS, jeśli zostanie uzyskana inna odpowiedź niż NXDOMAIN, domena jest uznawana za istniejącą.
Jakie są rezultaty?
- interai.pl
- intera.pl
- lnteria.pl
- intwria.pl
- itneria.pl
- interiaa.pl
- ihteria.pl
- imteria.pl
- intria.pl
- interiia.pl
- interja.pl
- inteeria.pl
- jnteria.pl
- intereia.pl
- inreria.pl
- ineria.pl
- intteria.pl
- inheria.pl
- intetia.pl
- interias.pl
- intrria.pl
- interia.pk
- interiz.pl
- interua.pl
- interria.pl
- onteria.pl
- interi.pl
- inteeia.pl
- interdia.pl
- interis.pl
- iteria.pl
- interioa.pl
- unteria.pl
- interka.pl
- ibteria.pl
- intreria.pl
- inteira.pl
- iinteria.pl
- inetria.pl
- inferia.pl
- intewria.pl
- interiq.pl
- interoa.pl
- nteria.pl
- intyeria.pl
- ingeria.pl
- innteria.pl
- intweria.pl
- interiaz.pl
- intertia.pl
- niteria.pl
- intetria.pl
- inrteria.pl
- ointeria.pl
- intreia.pl
- inyeria.pl
W sumie 56 domen mniej lub bardziej podobnych do domeny wyjściowej. Część z nich jest tylko zarejestrowana, pod częścią adresów można zobaczyć ciekawe rzeczy, a to sklep erotyczny, a to serwis z oponami.
Jeszcze ciekawsze rezultaty można osiągnąć, gdy domena wyjściowa, to domena jakiegoś banku. Dla przykładu mbank.com.pl. Wpisy rozpoczynające się od * to tak zwane wildcardy:
- *.corn.pl
- rnbank.com.pl
- *.c9m.pl
- mbnak.com.pl
- mbanki.com.pl
- *.cok.pl
- *.comn.pl
- *.con.pl
- *.xom.pl
- mank.com.pl
- *.vom.pl
- mbamk.com.pl
- *.c0m.pl
- bank.com.pl
- nbank.com.pl
- *.dcom.pl
- *.coom.pl
- mbankcom.pl
- *.fcom.pl
- *.comm.pl
- *.coj.pl
- mabnk.com.pl
- *.dom.pl
- *.co.pl
- *.cmo.pl
I teraz pierwsza z brzegu domena rnbank.com.pl - wizualne zlepek liter r i n przypomina literę m. Zresztą właściciel strony bez zbytniego krępowania przyznaje się, że właśnie o takie podobieństwo mu chodziło. Na podobnej zasadzie opiera się wildcard *.corn.pl.
Niektórzy właściciele domen zdają sobie sprawę, że pomyłki przy wprowadzaniu adresu mogą się zdarzyć i rejestrują domeny dla najbardziej prawdopodobnych pomyłek.
Mój skrypt...Skrypt jest dostępny tutaj. napisany jest w Python (testowałem TYLKO pod 2.5 i TYLKO pod Windows), do działania wymaga biblioteki obsługującej DNS, konkretnie dnspython. Szybkość działania skryptu zależy w znacznym stopniu od tego jak szybko odpowiada serwer DNS, z którego się korzysta...
EDIT: nowsza wersja skryptu dostępna jest tutaj.
W celu uruchomienia wystarczy rozpakować go do katalogu i uruchomić DNSSearch.py -d
debian:/usr/src/phishfinder-0.0.2# ./DNSSearch.py -d -f
: command not founde 29:
./DNSSearch.py: line 33:
Script searching for domain names similar to given one.
: DNSSearch.py 31 2007-06-15 21:14:19Z pawel.golen $
: command not found
: command not founde 34:
./DNSSearch.py: line 35: import: command not found
./DNSSearch.py: line 36: import: command not found
: command not founde 37:
from: can't read /var/mail/helpers.phishfinder
: command not founde 39:
: command not founde 40:
./DNSSearch.py: line 41: OPTS: command not found
./DNSSearch.py: line 42: ccTLD:: command not found
./DNSSearch.py: line 43: gTLD:: command not found
./DNSSearch.py: line 44: fuzz:: command not found
./DNSSearch.py: line 45: search:: command not found
./DNSSearch.py: line 46: print_only:: command not found
./DNSSearch.py: line 47: fuzzers:: command not found
: command not founde 48: }
: command not founde 49:
: command not founde 50:
./DNSSearch.py: line 51: syntax error near unexpected token `('
'/DNSSearch.py: line 51: `def search_for_domains(domain_to_search, \