niedziela, 26 październik 2008

Updates

Mała porcja aktualizacji. Po pierwsze ważność mojego klucza gpg wygasła, tak więc informuje, że podmieniłem kluczyk GPG Key. Klucz można znaleźć także na ogólnodostępnym serwerze pgp pod adresem http://pgp.mit.edu/. Stary klucz również jest widoczny, ale ma status "revoked".
Po drugie mój skrypt EOS zwany także czasem macloc, doznał dosyć dyżych poprawek. Najnowsza wersja dostępna oczywiście w repozytorium SVN pod adresem http://code.derynski.net. Można także tradycyjnie ściągnąć archiwum tar.gz.

piątek, 25 lipiec 2008

Perc 3/Di(saster) ?

Jakiś czas temu w poście pt. Dell PowerEdge 2500 i Debian Etch pisałem, jak to pięknie Dell współpracuje z Debianem, a między innymi, że kernel którego użyłem jest wolny od błędów powodujących wieszanie się kontrolera Perc/3Di. Otóż ostatnimi czasy przytrafiły się dwa restarty jednego z serwerów, który jest wyposażony w owe cudowne urządzenie ;) No i wszystko wskazuje na to, że winny jest kontroler. Tak, więc tyle czasu działało wszystko dobrze, a tu nagle taka niespodzianka "aacraid: Host adapter reset request. SCSI hang ?" później "device set offline", a następnie już tylko desperacki krzyk o pomoc kernela wołającego z uporem maniaka I/O error... No cóż wydaje się, że ktoś już rozwiązywał ten problem jednak sytuacja jest dosyć złożona i nie uwierzę jak nie zobaczę ani jednej zwiechy z tego powodu w mojej piaskownicy ;)

poniedziałek, 21 lipiec 2008

EoS - Jak znaleźć host w sieci LAN ?

Ostatnimi czasy napisałem skrypt w pythonie, który służy do wyszukiwania fizycznego miejsca wpięcia hosta do sieci. Konkretnie rzecz ujmując po podaniu nazwy szukanego hosta lub jego numeru ip program zwraca nam, na którym switchu i jakim numerze jego portu host jest podłączony. Skrypt wyszukuje hosty jedynie w obrębie domeny rozgloszeniowej, w której znajduje się komputer, z którego wysyłamy żadanie szukania. Drugim ograniczeniem jest fakt, że metoda ta działa w oparciu o SNMP, a więc nasze switche muszą obsługiwać ten protokół.
Przy realizacji tego zadania wykorzystałem programy ping, arp i snmpwalk, które są niejako backendem dla mojego skryptu.
Na koniec dwa słowa o nazwie projektu. EoS to akronim od Eye of Sauron, kto oglądał ekranizacje lub czytał dzieło Tolkiena wie o czym mowa ;) Dla niezorientowanych oko Saurona szukało danego obiektu w krainie Mordoru ;) Skrypt do ściągnięcia w formie archiwum tar.gz. Źródła można przejrzeć na webowym svnie na: http://code.derynski.net

piątek, 20 czerwiec 2008

Patient brute force

Ostatnio przeglądając auth loga jednego z systemów, którymi się opiekuję natrafiłem na zapis wart szczególnej uwagi. Fragment ten przedstawię poniżej przeplatając go drobnym komentarzem.

Jun 15 21:26:40 lucy sshd[12345]: Invalid user webmaster from xx.xx.97.30
Jun 15 21:26:40 lucy sshd[12347]: Invalid user webpop from xx.xx.97.30
Jun 15 21:26:40 lucy sshd[12349]: Invalid user wenchi from xx.xx.97.30
Jun 15 21:26:40 lucy sshd[12351]: Invalid user will from xx.xx.97.30
Jun 15 21:26:40 lucy sshguard[98455]: Blocking xx.xx.97.30: 4 failures over 0 seconds.

Jak nie trudno zauważyć odnotowano kolejną próbę ataku siłowego na usługę ssh. Każdy kto kiedykolwiek przeglądał logi systemowe jakiegoś serwera zapewne wie, że praktycznie każdego dnia są podejmowane próby zdobycia kont shellowych taką metodą. Jednak wracając do naszego przypadku po wykryciu czterech prób nieudanego logowania adres ip hosta zostaje zablokowany. Ja korzystam z sshguarda, który jest bardzo dobrą i prostą metodą blacklistowania natrętnych hostów przy użyciu różnego rodzaju backendów w postaci firewali np. iptables, pf, ipfw. Jako, że maszyna, na której log został zapisany obsługiwana jest przez FreeBSD korzystam z domyślnego firewalla tego systemu. Adresy IP hostów nie są blokowane na stałe z czysto praktycznych przyczyn użytkowych. Dany adres po upływie pewnego czasu jest zwalniany:

Jun 15 21:36:46 lucy sshguard[98455]: Releasing xx.xx.97.30 after 606 seconds.

Fakt ten wykorzystuje nasz natrętny host, który podejmuje dalsze próby:

Jun 15 22:03:44 lucy sshd[13149]: Invalid user nathalie from xx.xx.97.30
Jun 15 22:20:14 lucy sshd[13498]: Invalid user archives from xx.xx.97.30
Jun 15 22:20:14 lucy sshd[13500]: Invalid user public from xx.xx.97.30
Jun 15 22:37:14 lucy sshd[13861]: Invalid user oracle from xx.xx.97.30
Jun 15 22:48:38 lucy sshd[14090]: Invalid user oracle from xx.xx.97.30
Jun 15 23:06:52 lucy sshd[14480]: Invalid user oracle from xx.xx.97.30
Jun 15 23:06:52 lucy sshd[14482]: Invalid user oracle from xx.xx.97.30
Jun 15 23:06:52 lucy sshd[14484]: Invalid user oracle from xx.xx.97.30

Zwróćmy uwagę, że blokowanie nie następuje, ponieważ próby podejmowane są "ostrożniej", następują w większych interwałach, wydaje się nawet, że atakujący pamięta po ilu próbach go zablokowano i próbuje seriami po 3 logowania (po 4tym następuje blokada).

Powyższy przykład przechwycony w rzeczywistym środowisku ilustruje bardzo dobrze notkę z securityfocus autorstwa Roberta Lemosa o tytule "Admins warned of brute-force SSH attacks". Autor jasno mówi o technice ataku "low and slow", która coraz częściej zastępuje najprostszy brute force.

Na koniec warto zwrócić uwagę na zagrożenia płynące z takich prób. Oprócz oczywistych szkód jakie może wyrządzić atakujący w systemie ofiary, zdobyte konto posłużyć może również jako hub botnetu, albo miejsce docelowe dla bota lub innego złośliwego oprogramowania. Jeśli kogoś to nie przekonuje warto pomyśleć o serwerach na dużych uczelniach, które posiadają tysiące kont z dostępem do powłoki systemowej. Wiele takich kont jest "bezpańskich", a zabezpieczone są one często trywialnymi hasłami, nie rzadko klasykiem w stylu login==hasło. Jakie możliwości daje taki stan rzeczy i takie jakości łącz wyższych uczelni nie trzeba chyba nikomu powtarzać.