*WBZIN*
Wstęp
W ostatnich dwóch tygodniach systemy, które mam pod opieką padły celem dość poważnej w skutkach infekcji wirusem. Sieci dość duże i złożone (po kilkaset komputerów), w teorii wielostopniowe zabezpieczenia a jednak się stało... Cały czas zastanawiam w jakim tonie powinien być ten wpis:
[item]poradnika "jak zapobiegać takim atakom" - troszkę dziwnie, żeby osoba, która dostała dwie "kosy" pod żebra tłumaczyła techniki obrony przed atakiem nożem,[/item][item]płaczliwym: "nie znacie dnia ani godziny" - nic się nie da zrobić, nie ma sensu walczyć z wiatrakami, ogólnie Vanitas vanitatum et omnia vanitas,[/item][item]BOFHowym* - wszystko było dobrze, tylko to wina tych niedobrych użyszodników. PEBKAC*[/item][img=zly]
Sytuacja wyjątkowo mało ciekawa, gdy trzeba odciąć dostęp do zasobów siecowych praktycznie wszystkim użytkownikom: świadomość nadchodzących strat finansowych wynikających z zastoju firmy, oraz utraty (przy odpowiednich wiatrach...) "tylko" kilku godzin pacy. Może mieć to też konsekwencje w utracie zaufania do osób/firmy inkasującej często konkretne kwoty za zapobieganie takim awariom systemu.
Początek katastrofy
Czwartek zapowiadał się dość spokojnie. Duże wdrożenie zamknięte, w systemie ticketowym w miarę spokój: do piątku pozostały już tylko jakieś maszynowe "roboty głupiego" - zestawić kilka tuneli VPN, przygotować serwer pocztowy do migracji w chmurę ("cutover migration"), skonfigurować prosty backup, odpowiedzieć na kilka maili. Gdzieś tam przewinęła mi się przez monitoring informacja o wzmożonej aktywności serwera plikowego u jednego klientów - nie odbiegało to jednak szczególnie od norm: "ot, skanowanie antywirusowe". Helpdesk odebrał zgłoszenie, że jeden z użytkowników ma "problem z otwarciem plików Excel na serwerze", czyli w teorii coś związanego z pakietem biurowym, ewentualnie skojarzenia plików systemu operacyjnego:
"hłehłehłe - pewnie znowu próbowała otwierać .xls Acrobat Readerem"
Pomoc techniczna oddzwania, wejście na zdalny pulpit i pada sakramentalne "motyla noga" (czy jakoś tak, kolega mógł powiedzieć troszkę inaczej). W udziałach sieciowych (katalogach na serwerach) zaczęły pojawiać się dość jednoznaczne zestawy plików:
[item] HELP_DECRYPT.TXT[/item][item] HELP_DECRYPT.URL[/item][item] HELP_DECRYPT.HTML[/item][item] HELP_DECRYPT.PNG[/item]
Statek nabiera wody
Niektórym czytelnikom bloga już pewnie na tym etapie pojawił się uśmiech od ucha do ucha: "jak dobrze, że nie trafiło na mnie". Tak, to niestety Cryptolocker (w najnowszej wersji CryptoWall 3.0).
Z racji tego, że infekcję Cryptoleckerem przerabiałem już kilka razy pierwszy odruch to spakować kubeczek i wyjechać w Bieszczady - wyłączyć telefon, zaczekać kilka dni i wrócić: "może sama się rozwiąże?". Cryptolocker (pisał o tym na DP Adam "eimi" Golański ) jest klasifikowany jako koń trojański a dokładniej "ransomware", czyli "okup za Twoje dane". Sam proces infekcji nie przebiega jakoś magicznie: głównym źródłem jest wpuszczenie szkodnika przez nieświadomego użytkownika ("drive-by download "): załącznik do maila informujący o niezapłaconej fakturze, albo dołączone do strony internetowej ze szczególnym naciskiem na serwisy społecznościowe (Facebook wiedzie tu prym). Efekt działania jest dość upiorny. Program najpierw łączy się do swoich zewnętrznych serwerów, gdzie informuje o nowym zarażonym komputerze (wysyła adres IP "internetowy", informację o systemie operacyjnym, lokalizację). Kolejny etap do generacja silnej 2048-bitowej pary kluczy RSA ściśle powiązanej z zaatakowanym systemem (niepowtarzalnych), gdzie część publiczna pozostaje "na ofierze", za to część prywatna ląduje na zewnętrzym serwerze grupy przestępczej. No i tu zaczyna się główne działanie: pliki zarówno na komputerze lokalnym, jak i na zasobach sieciowych (serwerach"podmapowanych" jako litery dysków), urzadzeniach USB do których ma dostęp zostają zaszyfrowane - tyczy się to głównie dokumentów arkuszy kalkulacyjnych (xls*), tesktowych (doc*) i PDF. Należy pamiętać, że dotyczy to także podpiętych zasobów Dropbox, Google Drive, SkyDrive. Oryginał i klucze deszyfrujące zostają oczywiście usunięte. Robal doczekał się już trzeciej wersji, gdzie autorzy bardzo dziękują za porady jak uniemożiwić prostą deszyfrację, przechwycenie kluczy itp. Na koniec wirus stara się jeszcze zatrzymać usługę VSS (Volume Shadow Copy) przy okazji czyszcząc "cache" zmian na plikach: jednym słowem "uwala wersjonowanie":
[code=]vssadmin.exe Delete Shadows /All /Quiet[/code]
Statek tonie
Jak już wspomniałem, w katalogach z zaszyfrowanymi danymi pojawiają się jednocześnie pliki z informacją co się dokładnie stało (HELP_DECRYPT):
Na końcu dodane są linki z unikalnym adresem strony:
[item]ofiara ma tydzień na wpłacenie okupu o równowartości 500USD (BTC),[/item][item]po upływie tego czasu kwota się podwaja,[/item][item]autorzy wspaniałomyślnie informują jak najprościej kupić BTC,[/item][item]po podaniu ID transakcji BTC zostanie przesłany klucz deszyfrujący.[/item]Nie miałem jeszcze "okazji" wpłacać okupu, ale podobno rzeczywiście wywiązują się z umowy - ot, kultura.
Wypompowywanie wody z tonącego statku
Na tym etapie najważniejsze jest powstrzymanie dalszej infekcji a w przypadku środowiska biznesowego - odcięcie użytkowników od zasobów sieciowych. Wykrycie źródła ataku jest proste ze względu na właściciela plików HELP_DECRYPT:
Zablokować port sieciowy na zarządalnym switchu/odebrać prawa użytkownikowi do zasobów sieciowych/wyłączyć prąd* - niepotrzebne skreślić. Użytkownik ma natychmiastowo zniknąć z sieci. Na tym etapie zaczyna już się pewnie odbijanie piłeczki - kto jest winny. To jeszcze nie czas na takie dyskuje, warto mimo wszystko przywrócić firmę do pracy.
Najpierw trzeba ocenić straty. Już sama spersonalizowana strona informuje, że będzie ciekawie: 50.000 plików to już całkiem sporo:
Z racji wspomianego pliku HELP_DECRYPT.TXT można też w przybliżeniu ocenić liczbę katalogów i gdzie koń trojański miał dostęp:
6000 katalogów nie napawa optymizmem. Tu zaczyna się najprzyjemniejsza część "zabawy". Przez głowę przechodzą myśli: "czy oby są pewne kopie bezpieczeństwa", oraz "kto poinformuje, że trzeba przywrócić pliki z ostatniego backupu". Sporo dłubania, czasem skryptowania: temat na osobny wpis. W uproszczeniu: [item]uzyskać z zarażonego komputera listę zaszyfrowanych plików[/item] Informacja o tym jest przechowywania w rejestrze w gałęzi:
[code=] HKCU\Software\<unikalny_identyfikator_komputera>\<losowy_klucz>[/code]
Jest kilka narzędzi do tego służących, ja korzystałem najczęściej z ListCWall od BleepingComputer - bardzo ładnie wyrzuca do pliku potrzebne informacje:
[item]przeparsowowanie pliku[/item]Lista zaszyfrowanych plików będzie miała najczęściej ścieżki względne, np.:
[code=]Z:\2015\Sprawozdanie_05.2015.xls[/code]
gdzie "fizycznie dane znajdują się "bezwlędnie" na dysku serwera:
[code=]E:\Shared\Accounts\2015\Sprawozdanie_05.2015.xls[/code]
Tu wchodzą wyrażenia regularne - pod Windowsem używam Notepad++, jednak poprzez to, że "wychowałem" się na *nix wygodniej mi to robić pod Linuksem (kto co lubi: grep, sed, awk, perl itd.). [item]wrzucenie tego do skryptu, który zastąpi uszkodzone pliki,[/item][item]usunięcie plików HELP_DECRYPT[/item]To warto zostawić na sam koniec. [item]zabezpiecznie ostatniego "dobrego" backupu[/item]Istotny element - znając prawa Murphyego po trzech miesiącach okaże się, że jest jeszcze zaszyfrowany jeden dokument Excela od którego zależy istnienie firmy - a polityka backupu (retencja) nie zabezpiecza już go.
Czy musiało do tego dojść?
Sytuacja opanowa, firma powoli wraca do życia, jednak minęło kilka godzin: NIESMAK POZOSTAŁ.
Wróćmy jednak do części czysto technicznej - jak do tego doszło? Czy winny jest program antywirusowy? IDS? Procedury, albo sami użytkownicy? A może to wina tego "niedobrego niedopracowanego Windowsa" a receptą są stacje robocze wyposażone w system opearcyjny bazujący na jądrze Linuksa?
Skupmy się jednak na faktach:
[item]po stronie serwerowej Windows 2012,[/item][item]po stronie klienckiej Windows 7/8.x Pro, brak w sieci urządzeń bazujących na Vista/XP i starszych wydaniach tego OS.[/item] Zacznijmy od samego "dołu". Stacje robocze wyposażone w silnik antywirusowy "Vipre", aktualizacje sprzed kilku godzin. Osobiście już widziałem Cryptolockera bezpardonowo omijającego AVG, Trend Micro. Mimo tego, że mam pewne uprzedzenie do Endpointów Symanteca, mają pewną zaletę - po infekcji komputer jest praktycznie nie do użytku (obciążenie procesora, pamięci), więc użytkownik bardzo szybko zgłosi problem a Cryptolocker nie będzie miał zasobów do szybkiego działania (tak, to był sarkazm w stosunku do Nortona). Mam nadzieję, że nie będzie to uznane za reklamę z mojej strony, ale jestem miło zaskoczony endpointami od Bitdefendera. AV reaguje całkiem rześko na Cryptolockera i przycina go w zarodku. Wracając do tematu: stacje robocze skonfigurowane nadgorliwie, można powiedzieć, że faszyzm od IT bije na kilometr (wytyczne zarządu tamtej firmy): [item]użytkownik nie ma uprawnień lokalnego administratora,[/item][item]jako że mam uczulenie na wektor ataku możliwy od strony Flasha - dosłownie ze trzy komputery w sieci mają pluginy do tego dzieła szatana,[/item][img=funny-Flash-bed-girl]
[item]Zminimalizowanie możliwości uruchamiania programów przez użytkowników ("Disallowed Security Level" w GPO)[/item]
[code=] "%username%\Appdata\Roaming\*.exe" C:\<random>\<random>*.exe "%temp%\\*.exe" "%userprofile%\Start Menu\Programs\Startup\*.exe” "%username%\Application Data\*.exe” "%userprofile%\*.exe” "%username%\Appdata\*.exe” "%username%\Appdata\\Local\*.exe” "%username%\Application Data\Microsoft\*.exe” "%username%\Local Settings\Application Data\*.exe” "%appdata%\Microsoft\Windows\Start Menu\Programs\Startup\.*exe" [/code]
Polecam to rozwiązanie, pierwsza linia helpdesku bardzo za to nam podziękuje - przebite opony w samochodzie, etc. - zwiększy to obciążenie pomocy technicznej znacząco...
[item]filtrowanie poczty internetowej[/item]W dzisiejszych czasach nie wyobrażam sobie, aby emaile nie przechodziły przez filtry antyspamowe i antywirusowe. Nie trzeba tego robić na własnych gratach (w przypadku lokalnego serwera pocztowego wiadomości mogą iść przez zewnętrzne "odpluskiwacze", koszty tego nie są aż tak wysokie),
[item]Przepuszczanie przez całego ruchu WAN przez porządny "appliance"[/item]Zaraz będzie "hur durr, takie brzydkie obce słowo". Głównie chodzi o odsiewanie wirusów na poziomie ruchu wchodzącego, oraz odpowiednie reguły firewall. Można to "klepać" ręcznie, ale mimo wszystko lepszym rozwiązaniem jest automatyka bazująca na sprawdzonych rozwiązaniach (CISCO, czy inny Fortinet).
[item]Dropboxy, Skydrive i inne gdrive[/item]Standardem już jest w wielu firmach zakaz korzystania z przenośnych urządzeń USB (pendrive, dyski twarde), za to "chmura" bije popularność zarówno w nieautoryzowanym wynoszeniu danych z firmy, jak i przynoszeniu do niej niebezpiecznych dla biznesu plików
[item]Serwisy społecznościowe[/item]Temat na osobny wpis. Nie mam nic przeciwko samej ideii FB i innych Twiterów:
"zrobiłem kupę, oto zdjęcie"
Nie moja sprawa, to nie płacę ludziom za wrzucanie zdjęć: "oto ja na wakacjach w basenie". Mnie interesuje jednak część techniczna, czyli głupkowate uruchamianie wszystkiego, co jest na takich stronach. Niektórzy sami w ten sposób piszą "podanie" o web filtering.
[item]przeszkoleni pracownicy[/item]Komentarz do tego punktu może w następnym wpisie... ;‑)
Dziura w statku
Wróćmy jednak do samej infekcji, bo zacząłem się niepotrzebnie rozpisywać o kwestiach technicznych. Stało się, jest poważny przestój w firmie. Zawiodły wszelkie zabezpieczenia. W tym przypadku był to czynnik ludzki. Grom hejtu spadnie oczywiście na IT, jednak w każdej większej firmie jest przynajmniej jednen cwaniak.
Wie zawsze lepiej, czyta "Komputer Świat" a po cichu "Niebezpiecznik". Pierdoła, gnom, co przyniesie z domu stary router, wepnie do wolnego portu pod biurkiem ("bo chciałem rozdzielić tylko internet na komputer i laptop"), przy okazji ogłupi serwer DHCP ("no przecież to tylko switch! Jaki DHCP?"). Taki mały karakan, co jeszcze pobiegnie do kierownictwa: "no przecież to powinno być zaimplementowane na zarządzalnym switchu, aby odłączać nieautoryzowany serwer DHCP na porcie, czytałem o tym w Chwili dla Ciebie". Potem wiedząc, że nie może tego robić i łapy powinien mieć ucięte na wysokości miejsca, gdzie plecom kończy się ich szlachetna nazwa podepnie się do zasobów sieciowych (zna przecież nazwę swojego użytkownika i hasło) i jeszcze zamapuje dyski sieciowe (gdyby stosował ścieżki UNC, to Cryptowall by nawet nie wiedział o tych danych).
Do czego dążę...
Podmywajcie się dziewczyny, nie znacie dnia ani godziny
Czas na jakieś podsumowanie tego chaotycznego wpisu. Moim konikiem są dwie dziedziny: wirtualizacja, oraz szeroko pojęta kwestia DR ("Disaster Recovery "), którego częścią są kopie bezpieczeństwa (backup). Wielu pewnie czytając ten tekst powie, że "w mojej firmie nigdy nie było takiej sytuacji, IT to brzydale bez szkoły z miodem w uszach a pracownicy tej firmy to idioci". Przy kilku latach doświadczenia z wieloma "gaszenami pożaru" mam prawo stwierdzić, że nie ma zabezpieczenia, które całkowicie chroni przed takimi sytuacjami. Przy okazji wielu szkoleń słyszałem dość ważną kwestię: "wykryć, że już się coś stało i jak najszybciej zatrzymać rozprzestrzenanie się problemu". IDSy/IPSy to podstawa - wykrywanie anomalii w sieci, stacjach roboczych i na serwerach. Nawet proste stałe parsowanie logów z audytu systemu plików po stronie serwera. No i jak wspomniałem: kopie bezpieczeństwa. Backup, który jest testowany i przynajmniej dwa różne narzędzia do tego - np. lokalne snapshoty i kopia na zewnątrz ("off-site backup"). Co rozumiem przez testowanie i gdzie można sobie wsadzić niektóre procedury DR? O tym już w następnym wpisie.
[code=]-----------------------------------------------------------------------[/code]
* WBZIN - Wpis Bez Żadnej Interesującej Nazwy (celowe nawiązanie do "TWAIN ") * BOFH [EN: B@stard Operator From Hell PL: POPR: Pi@przony Operator z Piekła Rodem] * PEBKAC - Problem Występuje Pomiędzy Klawiaturą a Krzesłem (wina użytkownika).
http://www.techrepublic.com/article/cryptowall-what-it-is-and-how-to-p...
http://blogs.cisco.com/security/talos/cryptowall-3-0
[code=]-----------------------------------------------------------------------[/code]
< Wszystkie literówki, błędy ortograficzne i stylistyzne w tekście są celowym zabiegiem artystycznym :-) >