Jak otworzyć 4 miliony zamków hotelowych

dodał 25 lipca 2012 o 17:16 w kategorii Włamania, Wpadki  z tagami:
Jak otworzyć 4 miliony zamków hotelowych

Żródło: rpongsaj

Podczas tegorocznej konferencji Black Hat USA nie brakuje ciekawych wykładów. Podczas jednego z nich Cody Brocious, programista Mozilli, pokazał, jak łatwo, za pomocą wyposażenia wartego 20 dolarów, można otworzyć zamek hotelowy.

Każdy pewnie widział zamki hotelowe, otwierane karta magnetyczną. Obsługa hotelu posiada programator, którym nagrywa na kartę odpowiedni zapis, pozwalający otworzyć drzwi hotelowe tego a nie innego pokoju. Gość hotelowy wkłada kartę do zamka, zamek zapala zieloną lampkę, robi „pik” i się otwiera. Jak się okazuje, jest też i drugi scenariusz. Do zamka podchodzi Cody Brocious z małym pudełkiem, z którego wystaje kabelek wyglądający jak wtyczka zasilania. Cody wkłada wtyczkę w port znajdujący się na spodniej części obudowy zamka, naciska guzik na pudełeczku, zamek robi „pik” i się otwiera. Jak to się dzieje?

Zamki Onity HT

Firma Onity od wielu lat specjalizuje się w produkcji zamków hotelowych. Zamki z serii Onity HT, obecne na rynku od 1993 roku, zostały zainstalowane w ok. 4 milionach pokoi hotelowych na całym świecie. I każdy z nich można otworzyć.

System Onity HT składa się ze stacji kodującej, programującej karty, przenośnego programatora zamków, służącego do ich konfiguracji oraz zestawu zamków zamontowanych na drzwiach pokoi hotelowych. Programator służy do inicjalizacji zamka (wgrania danych startowych), aktualizacji danych, wyświetlenia danych diagnostycznych oraz awaryjnego otwarcia zamka. Każdy zamek wyposażony jest w port diagnostyczny (przypominający port zasilania), znajdujący się na dolnej krawędzi obudowy. Komunikacja z programatorem odbywa się po jednej z żył kabla w postaci prostych, bitowych sygnałów.

Każdy hotel posiada tzw. kod lokalizacji, czyli 32-bitowy ciąg, który jest czymś w rodzaju „magicznego klucza”. Za jego pomocą szyfrowane są dane na karcie a jego wartość przesłana przez programator do zamka umożliwia otwarcie zapadki. Treść kodu lokalizacji nie jest ujawniania właścicielowi hotelu – jest programowana w urządzeniach przez dostawcę systemu.

Jak wydobyć kod lokalizacji

Kod lokalizacji przechowywany jest w pamięci każdego zamka (w celu weryfikacji, czy programator ma uprawnienia do jego awaryjnego otwarcia). Okazuje się, że protokół komunikacji programatora z zamkiem posiada komendę pozwalającą na odczyt wskazanego fragmentu pamięci zamka. Zapytanie pewnie, co z uwierzytelnieniem? Cóż, nie ma go. Programator pyta, zamek odpowiada. Dodajmy do tego taki drobiazg, że każdy zamek posiada identyczną strukturę wewnętrznej pamięci i kod lokalizacji zawsze znajduje się pod tym samym adresem. To trochę tak, jakby każdy z nas trzymał zapasowy klucz pod wycieraczką.

Cody przy pracy ze swoim programatorem

Cody skonstruował swój własny programator w oparciu o kontroler Arduino, opornik i wtyczkę, a wszystkie części zakupił za ok. 20 dolarów. Dzięki stworzonemu przez niego oprogramowaniu urządzenie może w czasie krótszym niż sekunda odczytać kod lokalizacji i użyć go do skutecznego otwarcia dowolnego zamka Onity HT.

Co jeszcze?

Posiadając dane odczytane z zamka można kontynuować zabawę w małego elektronika. Można na przykład nagrać swoją własną kartę gościa, otwierającą zamek. Można także nagrać kartę master, otwierającą całą grupę zamków. Można także stworzyć magiczna kartę „programującą”, używaną w przypadku awarii programatora. Działa ona tak, że po jej włożeniu do dowolnego zamka, kolejna włożona karta zostanie zaprogramowana na otwieranie tego właśnie zamka.

Marna kryptografia karty

Oprócz beznadziejnego z punktu widzenia projektu zamka, przechowującego kod lokalizacji, można go także odczytać z karty – dzięki jej fatalnym mechanizmom kryptograficznym. Zapis na karcie zawiera przewidywalne elementy, takie jak chociażby datę jej ważności. Oprócz tego, jeśli dla dane pokoju zostaną wydane 2 karty to część zapisu tekstu jawnego zostanie zwiększona o 1. Właściwości te pozwalają na szybkie odgadnięcie 32-bitowego kodu lokalizacji, użytego do zaszyfrowania zapisu. W przypadku konieczności przetestowania wszystkich możliwych kombinacji, można to zrobić w ok. pół godziny na zwykłym komputerze (lub w minutę w chmurze Amazona). W ten sposób można odczytać kod lokalizacji mając jedynie dostęp do karty. Może to pozwolić na jej sklonowanie, a nawet na stworzenie karty mastera. Poniżej możecie posłuchać opowieści odkrywcy problemu i zobaczyć demonstrację działania jego urządzenia.

I nie da się tego prosto naprawić

Jak się okazuje, problem z zamkami hotelowymi jest jeszcze większy – nie da się aktualizować ich oprogramowania. usunięcie podatności opisanych powyżej wymaga nie tylko ponownego zaprojektowania całej architektury z niezbędnymi elementami bezpieczeństwa, ale także wymiany wszystkich zamków w całym hotelu. Można się zatem spodziewać, że chociaż odkrycia Cody’ego są rewolucyjne, to rewolucja w dziedzinie bezpieczeństwa zamków hotelowych szybko nie nastąpi. Chowajcie laptopy do sejfów!