Wpis z mikrobloga

Zreverse-engineerowałem polski portal pobierania dobreprogramy.pl i ich instalator, który jest klasycznym bundlerem adware, sprawiającym problemy użytkownikom co najmniej od 2013 roku (co widać na polskich forach). Zamiast zawierać właściwe oprogramowanie, pobiera on dynamiczną konfigurację XML z CloudFront, która zawiera rzeczywisty link do pobrania. Napisałem narzędzie (CLI/GUI), które wyciąga ten URL poprzez zapytania HTTP (bez uruchamiania oryginalnego pliku .exe)

GitHub: https://github.com/nazarhktwitch/dobreprogramy-extractor

Użytkownicy w Polsce od lat skarżą się na dobreprogramy.pl. Oto prawdziwy wątek z 2013 roku z forum.benchmark.pl:

"Pobrałem program z dobreprogramy.pl. Zamiast programu dostałem ich 'download assistant'. Podczas instalacji opcja zaawansowana była wyszarzona. Asystent zainstalował bez mojej zgody 2 programy spyware i 1 malware: Claro Search, Browser Defender, Delta Search oraz Delta Chrome Toolbar. Te programy integrują się z przeglądarką, instalują własne paski narzędzi i zmieniają domyślną wyszukiwarkę. Nawet po odinstalowaniu fałszywa wyszukiwarka pozostała. To spyware i malware."
- użytkownik "makensis", 2013

Inni użytkownicy potwierdzali problem:

* "Musiałem sformatować dysk, żeby pozbyć się Delta Chrome Toolbar."
* "Dobreprogramy oferuje teraz usługę 'NetFix', żeby 'naprawić' komputer zdalnie — boję się, co mogą tam instalować w tle."
* "Zawsze wybieram instalację zaawansowaną i odznaczam to g---o. Ale czasem opcja zaawansowana jest wyszarzona."

Sytuacja niewiele się poprawiła. Aktualne instalatory z dobreprogramy nadal używają tego samego modelu bundlera

Ich plik wykonywalny to bundler .NET (zaciemniony przy użyciu .NET Reactor), który działa w następujący sposób:

1. Wyciąga numer wersji z nazwy własnego pliku (np. v6.57.0.668.104)
2. Buduje adres URL:
[https://d1q3xlywojqwqp.cloudfront.net/config/dobreprogramy.pl/{VERSION}](https://d1q3xlywojqwqp.cloudfront.net/config/dobreprogramy.pl/{VERSION})
3. Pobiera odpowiedź XML zawierającą właściwy link do pobrania (np. [https://unchecky.com/files/upload/unchecky_setup.exe](https://unchecky.com/files/upload/unchecky_setup.exe))
4. Pobiera i uruchamia ten instalator, często z dodatkowymi ofertami bundled

Analiza

Otworzyłem plik .exe w dnSpy (po deobfuskacji przy użyciu NETReactorSlayer) i znalazłem:

string text = ConfigParser.GetConfig().GetConfigValue("URLDYNAMICCONFIG", "");
string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(Process.GetCurrentProcess().MainModule.ModuleName);
string version = VersionFromFileName(fileNameWithoutExtension);
text = text + "/" + ACNM + "/" + version;

Czyli wersja jest parsowana z nazwy pliku przy użyciu regexa

Analiza dynamiczna

Uruchomiłem instalator z Fiddlerem i przechwyciłem:

GET /config/dobreprogramy.pl/v6.57.0.668.104 HTTP/1.1
Host: d1q3xlywojqwqp.cloudfront.net

Odpowiedź (XML):

<root>
<URLPRODUCT>https://unchecky.com/files/upload/unchecky_setup.exe</URL_PRODUCT>
<PRODUCT
LOGOURL>https://img.dobreprogramy.pl/.../logo.png</PRODUCT_LOGO_URL>
<PRODUCT
TITLE>Unchecky</PRODUCT_TITLE>
</root>

To po prostu prosta ścieżka przekierowań HTTP. Bundler dodatkowo pobiera endpointy /sec i /report, prawdopodobnie w celach analitycznych i do dodatkowych ofert.

Moje narzędzie w Pythonie odtwarza tę logikę, bez uruchamiania oryginalnego pliku .exe.

Uwagi:

* Niektóre linki wygasają — jeśli dostajesz 404, wersja może być nieaktualna albo link został usunięty
* Odpowiedź XML zawiera więcej niż tylko URL — są tam też nazwy produktów, logotypy i inne metadane. Może to być użyte do głębszej analizy działania bundlera

Zastrzeżenie:

To narzędzie jest wyłącznie do celów edukacyjnych i badawczych. Nie omija żadnych zabezpieczeń — jedynie wyciąga publicznie dostępne URL-e, które i tak pobiera sam instalator. Zawsze sprawdzaj podpis cyfrowy pobranego pliku przed uruchomieniem. Autor nie ponosi odpowiedzialności za jakiekolwiek niewłaściwe użycie tego narzędzia.
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@nazarhk: Dobra, ale trochę niepotrzebna robota, bo akurat dobreprogramy dają linki bezpośrednie po prawej stronie. To by się przydało do gówien pokroju softronic, albo instalki.net.

EDIT: Widzę, że instalki.net też już dają linki bezpośrednie.
  • Odpowiedz
@nazarhk: dlatego kiedyś komputer świat zrobił wersję ks+ gdzie, miałeś bezpośrednie linki, na płytach były kody i mogłeś sobie je zarejestrować. fakt niektóre pełne wersję po czasie już byly niedostępne ale ułatwiało to życie, aż do czasu kiedy skasowali wszystko bo zamknęli gazetę czy zmienili profil
  • Odpowiedz