Защитник Windows идентифицирует мою программу как несколько троянов ("Wacatac" и "Persistence") - предположительно вызвано перезаписью ключа реестра

2 трояна:

Wacatac.G!мл

Стойкость.Г!мл

Вот код, который, как мне кажется, вызывает проблему. Цель состоит в том, чтобы создать/изменить раздел реестра, чтобы программа запускалась при запуске:

      void SoftwareDlg::SetSURegValue() {
    string regSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\");
    string regValueName = "Software";
    string regValue = "D:\\Users\\Skew\\Documents\\repos\\Software\\Debug\\Software.exe"

    try
    {
        size_t bufferSize = 0xFFF;
        auto cbData = static_cast<DWORD>(regValue.size() * sizeof(char));
        HKEY hKey;
        DWORD position;
        
        auto rc = RegCreateKeyEx(HKEY_CURRENT_USER, regSubKey.c_str(), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &position);
        if (position == REG_OPENED_EXISTING_KEY) {
            DEBUG_PRINT("Key already exists & has been opened.")
        }
        else if (position == REG_CREATED_NEW_KEY) {
            DEBUG_PRINT("Created new key.")
        }
        else {
            DEBUG_PRINT("ERROR: Key does not exist, and a new key was not created.")
        }

        if (rc == ERROR_SUCCESS) {
            auto rc = RegSetValueEx(hKey, regValueName.c_str(), 0, REG_SZ, (BYTE*)regValue.data(), cbData);
            if (rc != ERROR_SUCCESS)
            {
                throw std::runtime_error("Windows system error code: " + to_string(rc));
            }
        }
        else {
            DEBUG_PRINT("Error opening key.\n")
        }
    }
    catch (std::exception& e)
    {
        DEBUG_PRINT(e.what())
    }
}

В своих попытках решить эту проблему я начал тестировать различные сценарии создания/изменения ключа, но мои результаты стали неубедительными, когда я понял, что Защитник Windows, по-видимому, перестал регистрировать каждый запуск как «новые угрозы» и, казалось, регистрировал их вместе как одну. "постоянная угроза", я полагаю? Не уверен.

С учетом сказанного, Защитник Windows, похоже, не регистрировал угрозу, когда я изначально создавал ключ или когда открывал его и назначал ему то же значение, но, похоже, регистрировал угрозу, когда я перемещал программу в новый каталог. (и программа попытается изменить значение параметра реестра «Программное обеспечение» на новое местоположение EXE).

Это оставило меня с несколькими вопросами:

  1. Моя программа имитирует поведение двух троянов из-за какой-то ошибки в коде?
  2. Или на моей машине есть какое-то латентное, оппортунистическое вредоносное ПО, которое только и ждало, чтобы им воспользоваться?
  3. Нужно ли удалять существующее значение, прежде чем пытаться его изменить? Поведение RegCreateKeyExприводит меня к мысли, что это не так.
  4. Запись в реестр без повышенных разрешений запрещена? Если да... то почему моя машина позволяет мне это делать?
  5. Я делаю какое-то неправильное преобразование типа в RegSetValueEx()функция?

Если дело № 4, я думаю, я просто очень удивлен, что меня уведомил Защитник Windows, а не Visual Studio или приглашение UAC.

Редактировать 1: Ни один движок на VirusTotal.com не обнаружил файл как вредоносное ПО.

0 ответов

Другие вопросы по тегам