Dropbox desktop client zhakowany

Oficjalna strona Stowarzyszenia Polska Grupa Użytkowników Pythona

Dropbox desktop client zhakowany Na konferencji USENIX 2013 w Waszyngtonie, programiści Dhiru Kholia i Przemysław Węgrzyn zaprezentowali wyniki swoich badań w zakresie bezpieczeństwa chmurowej usługi Dropbox i kodu źródłowego jej desktopowego klienta, którego udało się odpakować, odszyfrować i zdekompilować. Na tej podstawie odtworzono i przeanalizowano jego funkcjonalność.

Odkrycie jakiego dokonali umożliwia podsłuchanie komunikacji SSL klienta i serwera aplikacji, co przyczyniło się do odtworzenia (nieudokumentowanego) API Dropboxa. Ponadto, programiści ominęli system dwu-składniowego uwierzytelniania użytkowników i zaprezentowali sposób na przejęcie całego konta użytkownika.

Temat nie bez powodu "trafił na tapetę" naszego serwisu. Desktopowy klient Dropboxa (w większości) napisany jest w Pythonie i udostępniany w postaci zamrożonych binariów. Do utworzenia pliku wykonywalnego (.exe) użyto pakietu py2exe. W przypadku Linuxa wykorzystano bbfreeze, który w przeciwieństwie do swojego windowsowego odpowiednika, stosuje statyczne linkowanie dla interpretera Pythona i biblioteki OpenSSL.

py2exe to exe-wrapper, który tworzy wykonywalną wersję pythonowego skryptu w środowisku Windows. Uzyskuje się w ten sposób gotowy do dystrybucji program, w którego skład (przeważnie) wchodzi:

  • plik wykonywalny (.exe),
  • biblioteka języka Python (np. python27.dll),
  • archiwum .zip zawierające moduły i pakiety w postaci kodu bajtowego (.pyc lub .pyo),
  • biblioteki skompilowanych modułów Pythona (.pyd).

Za pomocą pakietu py2exe można również utworzyć pojedynczy plik wykonywalny (.exe), zawierający wewnątrz siebie wyżej przedstawione składowe. Takie oto podejście zastosowano dla klienta Dropbox.exe.

"Dekompilacja" Dropbox.exe, a właściwie jego rozpakowanie, daje dostęp m.in. do kodu bajtowego aplikacji. Standardowo, przywrócenie źródeł skryptów Pythona z jego wersji skompilowanej jest możliwe za pomocą pakietów decompyle, depyc, uncompyle2, UnPyc, oraz pyRetic. W przypadku kodu bajtowego pozyskanego bezpośrednio z pliku Dropbox.exe, wszystkie wymienione pakiety i znane dotychczas metody zawiodły. Stało się tak dlatego, iż w binariach klienta Dropbox osadzono zmodyfikowany interpreter Pythona, a pliki .pyc poddano obfuskacji. Twórcy klienta DropBox celowo zmienili również magic number - ciąg znaków zawarty w nagłówku pliku .pyc, odwzorowujący wersję Pythona, którego użyto do jego kompilacji. Żadna z tych przeszkód nie powstrzymała jednak Kholia i Węgrzyna do pozyskania oryginalnych źródeł programu.

Po odkodowaniu kodu bajtowego - proces szczegółowo opisano w abstrakcie konferencyjnym Breaking the (Drop)box - do pozyskania źródeł .py klienta DropBox, użyto najbardziej skutecznego dekompilatora jakim jest uncompyle2. Pakiet ten, napisany w Pythonie 2.7, przywraca źródła skryptów Pythona wersji 2.5-2.7 i jest bardzo prosty w obsłudze.

Dostęp do źródeł klienta Dropbox dał programistom możliwość pełnej analizy API aplikacji i poznania jej funkcjonalności, w wyniku czego poza zdiagnozowanymi problemami z dziedziny bezpieczeństwa, opracowano prostą, ale otwarto-źródłową wersją klienta desktopowego.

Prezentację video, audio oraz slajdy z prelekcji Looking Inside the (Drop) Box, można znaleźć na stronie konferencji.

Dodał: Piotr Tynecki, Kategorie: News
Data: 2013-08-31 18:11:43


Copyright © 2007-2014 by Polish Python Coders Group
Język programowania Python  Open Source

Powered by Pigmej CMSv.0.2
Hosted by DmTEC