Related:
- Rzetelne dziennikarstwo wedł...
- http://4programmers.net/Forum/1118741
- http://4programmers.net/Forum/1118751
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
Więcej groźnych screenów:
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?
(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:
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):
Hmm, dropbox "czyta" zawsze tylko te pliki które znajdują się w odwiedzanym folderze.
Spróbujmy zapisac jakiś plik za pomocą notatnika:
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):
A na zakończenie dla osób bardziej scisłych, obliczyłem nawet współczynnik korelacji tych dwóch wartości:
(wzór przepisany do latexa by @Demonical Monk)
X Values
∑ = 683
Mean = 31.045
∑(X - Mx)2 = SSx = 442.955Y Values
∑ = 21003
Mean = 954.682
∑(Y - My)2 = SSy = 120733250.773X and Y Combined
N = 22
∑(X - Mx)(Y - My) = 1817.318R 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)}