Analiza behawioralna dropboxa

29

Related:

Ostatnio w sieci polskiej zawrzało na temat tego, jak to dropbox czyta pliki użytkownika i wysyła je podstępnie na serwery NSA dropboxa.

Przykładowe linki:
http://technologie.gazeta.pl/internet/1,104530,17514977,Podejrzana_aktywnosc_Dropboxa__Sprawdza_co_masz_na.html
http://www.spidersweb.pl/2015/03/dropbox-nie-dziekuje.html
http://zaufanatrzeciastrona.pl/post/dropbox-przeglada-wszystkie-pliki-i-katalogi-na-twoim-komputerze/
http://niebezpiecznik.pl/post/dropbox-ma-dostep-do-wszystkich-twoich-plikow-i-moze-je-wysylac-chmury/
http://programyzadarmo.net.pl/ciekawostki-dotyczace-zlosliwego-oprogramowania-f27/dropbox-szpieguje-t22900.html
http://www.frazpc.pl/b/321921 ("dropbox cie szpieguje" "czemu mnie to nie dziwi")
Ale jest tego dużo więcej.

Tak więc, zgodnie z obietnicą wcześniej, przeprowadziłem małą analizę zachowania dropboxa.

Uwaga, będzie dużo screenów. W dodatku dośc dużych.
[Uwaga, będą też komentarze od @dzek69 mające na celu wytłumaczenie zjawisk prostymi słowami]

No więc, zaczynamy od uruchomienia procmona. Ustawiamy filtry na:
ProcessName is dropbox.exe then allow

e6efe8881b.png

Więcej groźnych screenów:
9c6e0d4bdf.png

Jak widać na pierwszy rzut oka, SPISEK, dropbox czyta pliki i wysyła te inforamcje na serwery dropboxa. Jeszcze tylko niezbyt powiązany screen z wiresharka i "dziennikarski" artykuł gotowy. [#]_

Ale pójdziemy dalej. Na początek, co takiego czyta ten dropboxowy trojan?

e234fc968a.png

(Stacktrace) Ok, wychodzi na to że czyta tylko nazwy plików.
Czyli co, wychodzi na to że czyta nazwy plików i wysyła gdzieś? To przyjrzyjmy się dokładniej tej komunikacji sieciowej:

3e0a084372.png

Warto spojrzeć na czas - między kolejnymi synchronizacjami występuje dokładnie 15 sekund. Z zegarkiem w ręku.
Dalej, popatrzmy co takiego wysyła nasz dropbox w świat - pakiety TCP o wielkości 346 bajtów. W 346 bajtach wiele się nie zmieści, ale ważne jest to że każdy pakiet TCP wysyłany z mojego (i drugiego testowanego) komputera jest długości 346 bajtów, niezależnie od aktywności na dysku. Albo to niesamowyty zbieg okoliczności, albo szpiedzy z dropboxa niesamowicie dobrze się maskują.

[Czyli - Dropbox co 15 sekund odpytuje serwer. Nie jest to nic dziwnego - w końcu czasem trzeba się dowiedzieć czy na koncie nie pojawiło się coś do synchronizacji. W czasie rzekomego zaglądania do plików spoza folderów synchronizacji ruch sieciowy nie zmienia się. Nie jest doklejany ani jeden bajt do standardowego żądania do serwera, ani tych żądań nie ma więcej. Jasno wskazuje to na to, że Dropbox nie wysyła nic dodatkowego w trakcie, gdy następują rzekome "odczyty" plików spoza folderu synchronizacji. - @dzek69]

To jeszcze dalej, zauważmy ciekawy fakt - jeśli nie przeglądamy plików na dysku, dropbox nie czyta żadnych plików. Czy to może być przypadek? Popatrzmy na załączonym screenie (filtr: tylko queryopen file):
b2e4b5a78d.png

Hmm, dropbox "czyta" zawsze tylko te pliki które znajdują się w odwiedzanym folderze.

Spróbujmy zapisac jakiś plik za pomocą notatnika:
8657311db5.png

Tak, savefiledialog powoduje taki sam efekt. Wniosek: dropbox czyta jedynie nazwy tych plików, które mają zostać wyświetlone w jakimś okienku explorera.
Jeśli to nie krzyczy shell extension (dropboxowe ikonki przy plikach) to ja nie wiem.

[Czyli - Dropbox odczytuje jedynie nazwy plików, na które "patrzymy" w explorerze. Jak zapewne użytkownicy Dropboxa zauważyli - przy każdym synchronizowanym pliku pojawia się ikonka określająca stan synchronizacji (niezsynchronizowany/w trakcie/ok). Dropbox komunikuje się z explorerem w momencie, gdy explorer otwiera folder i odczytuje nazwę (a dokładniej pełną ścieżkę), żeby powiedzieć explorerowi czy potrzebna tu jest jakaś dodatkowa ikonka stanu, czy nie (a zrobić to może porównując ścieżkę każdego pliku i ścieżkę do synchronizowania). Koniec zagadki. - @dzek69]

Mógłbym w tym momencie skończyć, ale zrobimy jeszcze jedno.
Uruchomimy procmona z filtrem na dropbox.exe, oraz śledząc tylko operacje na plikach i sieciowe.
Poczekamy 10/20 minut.
Wyeksportujemy do CSV
Przeanalizujemy wyniki:

# hack napisany w 2 minuty a nie dobry kod
import csv
from collections import defaultdict

dataops = defaultdict(int)
netops = defaultdict(int)
with open('data.csv') as data:
    reader = csv.DictReader(data)
    for row in reader:
        time = row['Time of Day']
        op = row['Operation']
        if op.startswith('TCP') or op.startswith('UDP'):
            netops[time[:5]] += 1
        else:
            dataops[time[:5]] += 1

for key in sorted(netops.keys()):
    print key, netops[key], dataops[key]

Wynik:

minuta ilość_operacji_sieciowych ilość_operacji_na_plikach
23:07 16 56
23:08 30 113
23:09 30 1337
23:10 32 9848
23:11 41 143
23:12 30 1192
23:13 30 237
23:14 30 113
23:15 32 113
23:16 30 113
23:17 30 113
23:18 32 113
23:19 30 113
23:20 32 113
23:21 30 0
23:22 30 6344
23:23 41 143
23:24 31 113
23:25 32 113
23:26 32 113
23:27 30 223
23:28 32 237
(byłoby jeszcze równiej, ale nie jest jednak aż tak idealnie co pół minuty i czasami dwie synchronizacje wpadały do jednego bucketa)

Dla osób które nie wiedzą jak to czytać (wiem, nie ma tu takich) przygotowałem nawet wykres (operacje na plikach przekalowane razy 0.1):
f1f1ae216f.png

A na zakończenie dla osób bardziej scisłych, obliczyłem nawet współczynnik korelacji tych dwóch wartości:

b3271fec1f.png
(wzór przepisany do latexa by @Demonical Monk)

X Values
∑ = 683
Mean = 31.045
∑(X - Mx)2 = SSx = 442.955

Y Values
∑ = 21003
Mean = 954.682
∑(Y - My)2 = SSy = 120733250.773

X and Y Combined
N = 22
∑(X - Mx)(Y - My) = 1817.318

R Calculation
r = ∑((X - My)(Y - Mx)) / √((SSx)(SSy))

r = 1817.318 / √((442.955)(120733250.773)) = 0.0079

r = 0.0079

Czyli R wynosi 0.0079. To znaczy (dla takiej ilości danych), że korelacji nie ma żadnej.
Inaczej mówiac, zdarzenia wysyłania informacji do sieci, oraz czytania plików są niezwiązane. [pogrubienie od @dzek69]
Jeszcze inaczej mówiąc, niebezpiecznik (i inni) sieją <abbr title="ang. Fear, Uncertainty, Doubt – strach, niepewność, wątpliwość">FUD</abbr>.

Wniosek: ruch sieciowy dropboxa to grosze na potrzeby podtrzymania połączenia i synchronizacje, operacje dyskowe dropboxa to grosze na potrzeby shell extension (i pobierana jest tylko ścieżka - potrzebne żeby sprawdzić czy pliki są (z)synchronizowane!). Nie ma kompletnie niczego co by sugerowało jakąś niepożądaną działalność w testowanym zakresie (czytane pliki i ruch sieciowy).

Wniosek 2: Wystarczy wrzucić nie do końca sprawdzony artykuł na opiniotwórczą stronę, i od razu może zawojować połowę (polskiego, w tym przypadku) internetu jako fakt

Wniosek 3: Podpadłeś Piotrze.
Samym faktem opublikowania (zdarza się), ale także:

  • moderacją nieprzychylnych komentarzy
  • nieprzyznaniem się do błędu
  • cichym poprawianiem artykułu po opublikowaniu kiedy autor zorientował się że być może jego źródło nie jest tak w 100% wiarygodne.

Jeszcze w nawiązaniu do publikowania materiałów bez sprawdzenia, chciałbym wspomnieć o Adamie (z z3s) - za nieprawdziwą informację o 'włamaniu' na 4p która powisiała długo zanim się ją udało wycofać. (edit: patrz też - odpowiedź @ZaufanaTrzeciaStrona poniżej)

.. [#] Pewnie jeszcze synchronizuje potajemnie cały dysk i wysyła na dyski NSA, jak w dawnych żartach o zgrywaniu internetu na dyskietkę.

edit: Demonical Monk twierdzi że "aktualizacja 17:00" pojawiła się między 19:30 a 20. Sam tego nie sprawdzę, ale skoro tak mówi to pewnie się nie myli.

edit 2: Dzięki @dzek69 za dopisanie jaśniejszej wersji. Jeszcze może które to shell extension odpowiada za ruch na dysku i gdzie go szukać w rejestrze:

PS C:\WINDOWS\system32> Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\Dropbox*

                    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers


                SKC  VC Name                           Property
                ---  -- ----                           --------
                  0   1 DropboxExt1                    {(default)}
                  0   1 DropboxExt2                    {(default)}
                  0   1 DropboxExt3                    {(default)}
0

Dobra robota, a niebezpiecznika... więcej nie odwiedzę...

0

Nasze wypociny trafiły na wykop ;) Jak ktoś ma konto i temat wydaje się interesujący to zachęcam do wykopywania: http://www.wykop.pl/link/2429189/analiza-ostatniej-afery-z-dropboxem-dropbox-nie-przeglada-twoich-plikow/

1

MSM,

Tu Adam z z3s. Ciekawy artykuł i fajnie, że ktoś o odpowiedniej wiedzy rozwiał wątpliwości.

Wymieniłeś mój artykuł na tej samej liście co wpisy Niebezpiecznika, Spidersweb itp. Uważam, że niesłusznie. Artykuł na z3s nie był modyfikowany od momentu kiedy jako pierwszy w polskiej sieci opisałem temat. Od początku pisałem że:

  • "obserwowane objawy mogą być wynikiem zwykłego działania programu, które nie ma nic wspólnego z inwigilacją użytkowników"
  • "Raczej trudno sądzić, by aplikacja synchronizowała pliki znajdujące się poza drzewem katalogowym do synchronizacji przeznaczonym"

W moim artykule nie ma ani słowa o tym, że Dropbox czyta pliki ani że je gdzieś wysyła. Napisałem wprost, że nie jest to prawdą.
Niezależnie od tego na własne oczy widziałem, jak proces Dropboxa przeprowadził enumerację wszystkich podkatalogów dysku G, którego w momencie tej operacji nie dotykał żaden inny program.

Uważam, że mój artykuł był daleki od sensacji, od samego początku kwestionował sensacyjny ton tureckiego oryginału, od którego zaczęła się cała afera i wrzucanie go do jednego worka z niektórymi popisami dziennikarzy poczytnej prasy jest niesprawiedliwe. No ale oczywiście nikt nie musi mojej opinii podzielać - tak tylko chciałem się nią z Wami podzielić.

Pozdrawiam i raz jeszcze gratuluję dobrej analizy.

Pozdrawiam,
Adam

PS. Byłeś uprzejmy również przypomnieć błąd, który popełniłem prawie dwa lata temu, kiedy nieopatrznie zaufałem wiadomości od Czytelnika, który działając w dobre wierze pomylił się odczytując datę powiadomienia o włamaniu na forum. Przeprosiłem za swój błąd, zamieściłem korektę i jeśli tego potrzebujesz, to mogę przeprosić jeszcze raz - co jednak tamten wpis ma wspólnego z historią Dropboksa?

0

Wymieniłeś mój artykuł na tej samej liście co wpisy Niebezpiecznika, Spidersweb itp. Uważam, że niesłusznie. Artykuł na z3s nie był modyfikowany od momentu kiedy jako pierwszy w polskiej sieci opisałem temat. Od początku pisałem że:

Uważam, że mój artykuł był daleki od sensacji, od samego początku kwestionował sensacyjny ton tureckiego oryginału, od którego zaczęła się cała afera i wrzucanie go do jednego worka z niektórymi popisami dziennikarzy poczytnej prasy jest niesprawiedliwe.

Jeśli chodzi o Twój artykuł, to był (jest) bardziej rzetelny i mniej sensacyjny. Zamieściłem go na liście bo chciałem wymienić nawiązanie do tego tematu w polskim internecie (fakt że Twój artykuł nie jest przynajmniej przepisaną wersją tego nieszczęsnego newsa z niebezpiecznika, w przeciwieństwie do wielu innych). Głównie to wylewam tutaj żale na niebezpiecznika (min. bo moje i DMa komentarze o mniej-więcej tym co tutaj napisałem - napisane od razu po wypuszczeniu artykułu - nie przeszły).

PS. Byłeś uprzejmy również przypomnieć błąd, który popełniłem prawie dwa lata temu, kiedy nieopatrznie zaufałem wiadomości od Czytelnika, który działając w dobre wierze pomylił się odczytując datę powiadomienia o włamaniu na forum. (...) Co jednak tamten wpis ma wspólnego z historią Dropboksa?

Nic, wyciągałem swoje dawne żale (związane z tym forum) na z3s :>

0

Swoją drogą temat zrobił się całkiem popularny.
user image

2

W odpowiedzi na (komentarz z wykopu):

Ten gość stwierdził jedynie, że program grzebie mu po dysku ale gdy nie znajdzie czegoś (nie wiadomo czego) to nic nie wysyła w świat.

Ten gośc (ja) stwierdził że dropbox nie czyta niczego z plików, czyta jedynie ich nazwy. A konkretnie robi to "shell extension", czyli to coś od słitaśnych ikonek "niezsynchronizowany"/"w trakcie"/"ok" dropboxa - bo potrzebuje, musi sprawdzić nazwę pliku, żeby wiedzieć jaki status ma plik z taką nazwą, nie?

Taka "analiza" wcale nie wyklucza, że program nie szpieguje kogoś innego u kogo znajdzie jakiś szczególny plik którego zawartość interesuje autora programu.

Wyklucza, bo dropbox nie przeczytał w trakcie badania ani jednego bajta z żadnego pliku poza synchronizowanym folderem. Czytał tylko nazwy.

I jeszcze jedno - to prawda, ten post nie mówi tego że dropbox na 100% nie robi niczego złego. Nie wyklucza np. tego, że dropbox o pełni księzyca w pierwszy piątek trzynastego każdego roku wysyła historię przeglądarki do NSA, pod warunkiem że nazwa użytkownika zawiera literę "a" oraz w systemie jest ustawiony język chiński.
Nie dekompilowałem dropboxa (zresztą można by polemizować z legalnością takiego działania w tym przypadku), tylko odnosiłem się konkretnie do zachowania "opisanego" w zalinkowanych artykułach - i nic takiego nie ma.

Dla ciekawych i lubiących RE, trochę więcej dłubania w dropboxie (nie moje ofc): http://www.slideshare.net/extremecoders/reversing-obfuscated-python-applications-dropbox-38138420 - już wtedy ludzie grzebali w tym dokładnie, i niczego podejrzanego nie znaleźli (a coś tak oczywistego by raczej zauważyli).
Jeszcze więcej analiz technicznych: http://0b4af6cdc2f0c5998459-c0245c5c937c5dedcca3f1764ecc9b2f.r43.cf2.rackcdn.com/12058-woot13-kholia.pdf

Edit
To jeszcze się odniosę do:

A ja nie mam pewności czy ta analiza to nie wałek aby usprawiedliwić dropboxa, i tak większość nie wie o co tam chodzi.

Zawsze możesz powtórzyć wszystko to co zrobiłem, sysinternals suite (https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx?f=255&MSPPError=-2147217396) i analizujesz ;).
Fakt że trochę mało szczegółów co po kolei robić podałem, ale większość tutaj to używanie procmona, który trudny nie jest. Tylko trzeba wiedzieć jak wyniki interpretować, żeby znowu afery z niczego nie zrobić :P.

3

O, nowa zmiana tytułu artykułu na niebezpieczniku. Jest jeszcze bardziej zrównoważona. Ale jak wiemy, w sieci nic nie ginie :P.
(Ja się niczego nie chcę czepiać, po prostu gdyby artykuł od począku wyglądał tak jak wygląda to ten wątek by w ogóle nie powstał, bo nie miałbym po co go tworzyć. A tutaj ktoś próbuje przeszłość zmieniać czy coś. Aż mi głupio ten post pisać)

Obecny: [AKTUALIZACJA] i podejrzane (w treści artykułu żadnej informacji o aktualizacji dzisiaj "aktualizacja 17" była we wtorek)
b6afa6a415.png

Jeszcze niedawno (dwie godzny temu?): podejrzane operacje
34a726cc8d.png

Oryginalny:
28b1f2a54d.png

Edit
Ostateczna aktualizacja:

0bcbd1357e.png
Komputer z którego pisano aktualizacje chyba się znajduje w UTC-4 (może Santo Domingo?) - aktualizacja 15:00, a robiłem przecież przed chwilą screeny tej strony, i tego nie było. Ale nieważne, ważne że w końcu jest. To dziękuję wszystkim :>.

3

Widzę, że pudelniebezpiecznik leci ostro, trzeba będzie robić im mirrory zaraz po naskrobaniu arta ;] (sami wyłączyli sobie google cache)

0

To że program do synchronizacji plików grzebie po dysku to nigdy by mnie nie zastanowiło.

Ale to że mam od Orange program łączący kompa z netem (modem), który po połączeniu w kółko mieli po rejestrze i dysku lokalnym (tak, używałem Filemon) to jest po prostu temat do prasy! Granda!!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1