728 x 90

Obrona przed USB Rubber Ducky i pen drive’ami w Windows

Obrona przed USB Rubber Ducky i pen drive’ami w Windows

Tydzień temu omówiliśmy USBRip, czyli kolejne narzędzie do obrony przed USB Rubber Ducky dla systemu Linux. Co jednak w przypadku Windows? Czy możliwości obrony kończą się na przedstawionym we wrześniu DuckHunterze?

Otóż nie. Wręcz przeciwnie, w systemie Windows historia ochrony portów USB sięga dużo dalej, niż rok 2010, w którym pojawiło się USB Rubber Ducky.

Czasy kafejek internetowych

Początki tej ochrony sięgają tak naprawdę jeszcze końca lat 90-tych, kiedy to w Polsce popularne były tzw. kafejki internetowe, czyli miejsca, w których za niewielką opłatą godzinową można było skorzystać z komputera podłączonego do Internetu (dostęp do Internetu był wówczas zbyt drogi dla wielu osób na korzystanie w domu, nie mówiąc już o braku Internetu mobilnego i smartfonów).

Jedną z typowych uciążliwości w takich kafejkach byli klienci, którzy uporczywie i z rozmysłem (często też odpowiednio przygotowani technicznie) próbowali przeciągać swój dostęp nie płacąc za niego – np. przez pozostawienie w komputerze podłączonego pen drive’a, na który program typu download manager ściągał powoli jakieś pliki, zapychając łącze (którego przepustowość mierzyło się wówczas w pojedynczych megabitach na sekundę) – taki pen drive często był dyskretnie odbierany po kilku dniach, dzięki czemu klient obciążał realnymi kosztami swojej działalności właściciela kafejki i innych uczestników.

Coś dla programistów

Z powodu aktywności wspomnianych wyżej klientów, jeszcze w późnych latach 90-tych zaczęły powstawać różne, mniej lub bardziej udane rozwiązania do obsługi urządzeń USB. Czasem w postaci osobnych programów, a czasem jako fragmenty większych rozwiązań do zarządzania kafejką. Bardzo szybko funkcjonalność nadzoru portów USB zaczęła też być integrowana z oprogramowaniem innego typu – m.in. do kontroli pracy pracowników, czy w rozmaitych rozwiązaniach związanych z bezpieczeństwem.

Większość takich rozwiązań, w szczególności tych bardziej kompleksowych i lepszej jakości, od samego początku miało formę oprogramowania zamkniętego, najczęściej komercyjnego. Da się jednak znaleźć w Internecie kilka przykładowych implementacji obsługi portów USB w języku C++, opartych wyłącznie o natywne API systemu Windows:

  • najstarszym znanym rozwiązaniem jest projekt Detecting Hardware Insertion and/or Removal, opublikowany w połowie 2006 w serwisie CodeProject – przedstawiony tam przykładowy kod po prostu przetwarza zdarzenia związane z podłączaniem lub odłączaniem różnego typu urządzeń USB do systemu i wyświetla je po zdekodowaniu w małym okienku informacyjnym – do programisty należy już dalsza obróbka tych zdarzeń
  • uzupełnieniem powyższego projektu mogą być podpowiedzi i przykłady kodu w tym wątku na StackOverflow
  • nieco inne podejście sugeruje sam Microsoft: użycie mechanizmu WMI zamiast gołych zdarzeń Windows, dzięki czemu w następnym kroku można łatwo zintegrować ten przykład z większą całością, sterującą za pośrednictwem WMI jakąś większą instalacją, niż tylko pojedynczy komputer

Coś dla menedżerów i właścicieli firm

Prawdziwy wysyp różnego rodzaju oprogramowania zabezpieczającego porty USB i nie tylko, rozpoczął się w okolicach roku 2006/2007, gdy ceny pen drive’ów spadły na tyle, że przestały one być narzędziem menedżerów i geeków komputerowych, wchodząc do powszechnego użycia i w niedługim czasie zaczynając być używane również jako narzędzie do różnego rodzaju ataków.

Pierwotnie funkcjonalności takiego oprogramowania obejmowały po prostu programowe odcinanie dostępu do portów USB, w niektórych przypadkach z opcją selektywnego włączania. Wraz z upływem lat i coraz większą dojrzałością dziedziny bezpieczeństwa IT, oprogramowanie to ewoluowało w 4 klasy systemów:

  • systemy typu Internet Security – czyli naturalny kierunek ewolucji jednostanowiskowych programów antywirusowych – pozwalające na blokowanie portów USB, jednak zorientowane na ochronę każdego komputera z osobna, a jeśli posiadające jakieś elementy centralne, to nastawione na proste statystyki prób infekcji wirusowych itp.
  • systemy kontroli wydajności pracy – kierunek najprostszy z systemów centralnych, w którym główny nacisk kładziony jest na właśnie na kontrolę i specyficzną formę „motywowania” pracowników (często tych o relatywnie niskiej pozycji zawodowej, nie do końca zaufanych i/lub nie do końca rozważnych)
  • systemy DLP – kładące główny nacisk już nie na wydajność i monitoring działań pracowników (chociaż często jest on jak najbardziej możliwy), ale na zabezpieczenie firmowych komputerów przed wyciekiem danych, czy to wskutek nierozważnych działań pracowników, czy też ataku
  • systemy EDR/SIEM – najbardziej rozbudowane i zaawansowane, zbierające i korelujące ze sobą różne typy danych z różnych źródeł, potrafiące wskazać zagrożenia, których nie da się skutecznie wychwycić z perspektywy pojedynczego chronionego komputera

Przy czym oczywiście USB to tylko jeden z wielu wektorów ataku, przed którymi należy chronić komputer i firmę – nie ma więc jednoznacznego przełożenia, że im wyższa klasa systemu, tym lepsza ochrona USB.

Jeśli już, podejście do ochrony portów USB zależy od producenta konkretnego rozwiązania: jedni opracowali rozmaite autorskie podejścia utrudniające atak za pomocą USB Rubber Ducky, np. w oparciu o szybkość pisania na klawiaturze, czy pewne cechy statystyczne pisania typowe dla konkretnych osób, inni zatrzymali się na zwykłych filtrach blokujących urządzenia po deklarowanych numerach VID i PID, skupiając się co najwyżej na łatwości grupowego zarządzania tymi filtrami na poziomie całego Active Directory.

Przykłady konkretnych rozwiązań

Podsumowanie: stan bezpieczeństwa USB w praktyce w roku 2020

Od pojawienia się urządzeń USB Rubber Ducky czy Bash Bunny minęło już 10 lat. Większość publicznie dostępnych payloadów dla tych urządzeń również jest już dość stara, co wpływa nie tylko na kompatybilność, ale powoduje, że producenci systemów operacyjnych i innego oprogramowania już dawno zdążyli je uodpornić na stare sztuczki.

Stan faktyczny na koniec 2020 jest niestety taki, że samo urządzenie USB Rubber Ducky (lub jakiś tańszy zamiennik), wyposażone w publicznie dostępny payload, ma szansę skutecznie zaatakować komputer bez jakichkolwiek zabezpieczeń, lub co najwyżej wyposażony w „klasycznego” antywirusa. W przypadku systemów firmowych, o ile samo urządzenie jak najbardziej może poprawnie zadziałać (jeśli dostęp do USB nie został całkowicie zablokowany), o tyle użyty payload najprawdopodobniej nie zdoła wyrządzić już żadnych szkód, za to momentalnie zostanie wykryty jako ewidentna próba włamania.

Czy to oznacza, że urządzenia typu USB Rubber Ducky nie mają już racji bytu? Jak najbardziej nadal mają, aczkolwiek niezbędna jest zmiana podejścia:

  • dużo bardziej subtelne działanie niż to, co można znaleźć w dzisiejszych publicznych payloadach – m.in. ukrycie właściwego ataku w gąszczu działań, które bez dokładnej analizy powinny wyglądać możliwie niewinnie i zbieżnie z tym, czym powinien zajmować się pracownik używający atakowanego komputera (co trzeba najpierw ustalić)
  • główny nacisk na część programową, zbudowaną raczej w oparciu o różne oficjalne, za to mniej oczywiste mechanizmy systemu Windows – a nie tylko szybki strzał i wprowadzenie charakterystycznego polecenia uruchamiającego skrypt Powershella

To już jednak wykracza poza zakres tematyczny niniejszego artykułu. Jeśli chcesz dowiedzieć się więcej:

  • o możliwościach ataku w dzisiejszych czasach – zainteresuj się naszą platformą Sherlock (która może używać urządzeń USB Rubber Ducky, Bash Bunny lub podobnych w roli dopalacza, ale główny nacisk kładziony jest w niej na zupełnie inne aspekty, niż tylko szybkie wstrzelenie polecenia do uruchomienia)
  • o tym, jak się bronić przed zaawansowanymi atakami – przyjrzyj się przedstawionym wyżej materiałom dotyczącym różnej klasy systemów zabezpieczających (pamiętaj, że są to systemy z całkiem różnych półek cenowych, więc warto od początku brać poprawkę na to, ile komputerów zamierzasz chronić i na które z przedstawionych rozwiązań Twoja firma może sobie pozwolić)