12/4/2010
Serwery czasu NTP (ang. Network Time Protocol) kojarzone są głównie z dostarczaniem informacji na temat bieżącego czasu. Niewiele jednak osób wie, że można je odpytać o kilka innych, ciekawych z punktu widzenia atakującego, informacji…
Narzędzie ntpdc
W naszych zabawach skorzystamy z programu ntpdc, który powinien być standardowo dostępny na systemach *nix/OSX.
Narzędzie to przyjmuje kilka parametrów, m.in.:
peers - pokazuje skojarzone serwery NTP
sysstats - dane dotyczące usługi czasu po stronie serwera
monlist - adresy IP klientów, które zapytały o czas
Ostatnia akcja jest naprawdę ciekawa, ponieważ zwraca każdemu, kto o to zapyta, 600 adresów IP, które właśnie skorzystały z badanego serwera NTP :>
Jak wykorzystać adresy IP?
Zastanówmy się teraz, do czego atakujący może wykorzystać wiedzę na temat serwera czasu z jakiego korzysta “ofiara”?
- Niektóre z urządzeń/narzędzi są domyślnie skonfigurowane do korzystania z danego serwera czasu. Mówimy tu o routerach, firewallach, etc. Odpytując “domyślny” dla tych urządzeń serwer NTP o “monlist” poznamy adresy IP, pod którymi mogą pracować w/w urządzenia i narzędzia.
- Badając wynik “monlist” poznać możemy adresy IP, które nidy nie pojawiłyby się w trakcie mapowania sieci “ofiary” przez zapytania (r)DNS.
- Sam serwer NTP można także wykorzystać do 200 krotnego wzmocnienia ataku DDoS
Automatyzacja zabawy w metasploicie
Jeśli nie posiadasz narzędzia ntpdc w swoim systemie, możesz skorzystać z multiplatformowego metasploita:
Kolejnym krokiem pentestu mogłoby być przeskanowanie znalezionych w ten sposób adresów IP pod kątem podatności charakterystycznych dla oprogramowania, które domyślnie korzysta z badanego przez nas serwera NTP…
P.S. Dla maniaków Pythona, firma Sensepost przygotowała skrypt ntp_monlist.
Ciekawe, ciekawe. Nawet nie wiedziałem że jest taka funkcja w NTP ;)
Wydaje się, że wspomniane usługi mogą się też przydać dobrej stronie mocy. Odkąd przekonałem się, że nie znajdę darmowego SOCKS proxy z możliwości zakładania gniazda słuchającego na UDP poprzestałem na projekcie programu do wymiany plików dla dwóch komputerów znajdujących się za różnymi NATami. Problemem był w tym wypadku serwer mediacyjny, bo resztę można zorganizować via e-mail, jabber, etc.
W tym wypadku wystarczy, że poznamy IP drugiej strony, która następnie skorzysta z konkretnego serwera NTP. Wtedy my łączymy się z serwerem, wrzucamy polecenie nonlist i mamy port UDP naszego kolegi, a więc i namiary na tunel, którym możemy się z nim bezpośrednio komunikować pomimo tego, że nie jesteśmy z nim w podsieci i żaden z nas nie ma publicznego IP ;)
Zaczynam się zastanawiać nad powrotem do poprzedniej epoki – OFFLINE.
Serio. Dzięki Wam zacząłem się bać i uświadomiłem sobie, że firewall w routerku wcale nie sprawia, że jestem bezpieczny…
Ojapapiernicze… Czemu to miało służyć?
@Jurgi: jeśli pytasz, czemu miała służyć ta funkcja, to najprawdopodobniej odpowiedzią jest “diagnostyka” serwera NTP :-)
A ja jestem ciekaw skad zalozenie [ciche], ze wielu ludzi korzysta z NTPD? ;)
Jesli to tylko ciekawostka, to rzeczywiscie jest to interesujace.
user: root
password: 1234
sprawdza się w 1/10 przypadków :P
Myślicie, że jesteście cwani i zmieniliście hasło do swojego routera? ;> To teraz sprawdźcie dla jakiego konta ;>
oo, ciekawe – nie wiedziałem, że NTP udostępnia aż tak wiele ficzerów ;)
dzięki za info!
nie zawsze to dziala. standardowo instalowany ntpd chyba jest zapezpieczony przed tym. mam u siebie na debianie najnowszy ntpd i nie odpowiada na zadna komende. A defaultowo ustawiany serwer w confingach ntpd to – 0.debian.pool.ntp.org ktory na pierwsza komende ze skojarzonymi serwerami odpowiada, na druga sysstats tez, na trzecia juz nie :) wiec tu znow chyba jest ze *.gov.pl to malopprofesjonaliscie…
ntpdc> monlist
tempus1.gum.gov.pl: timed out with incomplete data
***Response from server was incomplete
już chyba zalatali? czy za duzo osob probuje sie dopchac? :P
Eeee… Nie jest tak źle. Serwery z których korzystam nie udostępniają monlist. Jeden zaś, timeoutuje każdą operację.
Czyli jak zwykle: ktoś nie skonfigurował serwera.
Kilka dni temu sprawdziłem 19 polskich serwerów NTP podanych na Wikipedii. 11 jest właśnie tak “źle” skonfigurowanych :]]
Tu faktycznie wyjątkowo przydatną opcją jest poznanie adresów wewnętrznych firmy. Wtedy ataki na sieć LAN via przeglądarka stają się o wiele prostsze :]
@Borys oczywiście poinformowałeś administratorów tych serwerów o tym, że mogliby “dokonfigurować” swoje serwery ntp? :D
Tym razem nie. Nie uważam tego za krytyczną lukę, tym bardziej, że problem jest ogólnie znany. To było raczej badanie statystyczne :]
[…] na przykładzie Metasploita. O samym metasploicie pisaliśmy już wielokrotnie, np. przy okazji ataków na serwery czasu, czy opisu Metasploitable, specjalnej maszyny wirtualnej przygotowanej do testowania ataków […]
[…] Gdyby ktoś z Was kontrolował jakieś serwery
czasu, warto je zaktualizować, aby uniemożliwić ataki DDoS przy
pomocy tricku, który kiedyś już opisywaliśmy na łamach
Niebezpiecznika. […]
[…] przez atakujących zwracaliśmy uwagę na Niebezpieczniku już 4 lata temu w tekście pt. “NTP, czyli zabawa serwerami czasu” — opisywaliśmy wtedy jak można wykorzystać polecenie “monlist” lub […]