[recovery mode] Как защита от Microsoft удалила код на серверах. Байка о Defender

Сегодня на календаре 16 Августа 2016.
Windows Defender удалил рабочий код с хоста. Как это было:

Обсуждая с коллегой новости о череде проблем у Microsoft, которые пестрят в новостях. Там зависло, там пропало, там еще что-то — видимо накаркал себе проблем.
Работая на виртуальном сервере с кодом под IIS вдруг получаю предупреждение о том что Windows Defender обнаружил Worm внутри многих ASP файлов на хосте и настоятельно рекомендует удалить.

Вся прелесть в том что вариантов не предлагает Defender. Файлы уже пустые и залоченные. До вчера этой проблемы не существовало. Любая попытка восстановить с репозитория файлы — вызывает возмущение у Defender, с последующим удалением файлов.
Проверка настроек показала что Windows Defender обновился 8/15/16 до версии 1.225.3982.0.
Сканер настойчиво видел Worm: VBS/VBSWGbased.gen в ASP (VBScript) файлах.
Проверка одного из файлов на virustotal.com показала теже результаты. Из 53х тестовых проверок — только Microsoft Defender находит Worm: VBS/VBSWGbased.gen.

Далее идет много часовая попытка понять, что именно заставило найти вирус и удалить код. Перебирая варианты строк и проверяя сканером каждую строчку — удалось удалить все и получить минимальный тестовый файл который вызывает безумие у Defender.

Function SafeSQLLogin()
  Execute(SafeSQLLogin())
End Function
Function Stream_StringToBinary(Text)
  Set BinaryStream = CreateObject("ADODB.Stream")
  BinaryStream.Type = adTypeText
  BinaryStream.CharSet = "us-ascii"
  BinaryStream.Open
  BinaryStream.WriteText Text
  BinaryStream.Position = 0
  BinaryStream.Type = adTypeBinary
  BinaryStream.Position = 0
  Stream_StringToBinary = BinaryStream.Read
  Set BinaryStream = Nothing
End Function
Function strCrypt()
  For i = 1 To Len(Text)
End Function

Код странный только потому что я удалил максимально все что смог, пока сканер все еще видел Червя. Этот текст минимальный, любое изменение или удаление одной из строк — перестает сводить с ума Defender.

Update:
более свежая версия текста для принятия его за вирус:

Function S
Execute S
End Function
For i To Len T

Сохранив текст в файл как test.txt и отправив на virustotal.com все еще выдает потверждение о Черве, несмотря на то что Defender уже получил несколько новых обновлений.
Вот результат от virustital.com
Result

Попытка связаться с Tech центром от Microsoft в режиме чата, слегка подняло настроение. Девушка+специалист настойчиво пыталась помочь мне восстановить систему и RestorePoint выдавая команды типа SCN и др. Все попытки пояснить что проблему не у меня с компьютером, вели вокруг настойчивой попытки решить мою проблему с моим компьютером. Поняв что сообщить о проблеме с Defender не получится, я связался с Администраторами хостов с предупреждением, что у нас могут возникнуть проблемы на всех серверах.
Администраторы как обычно не доступны. Надеюсь что они отзовутся не как обычно, когда уже что-то рухнуло. (сарказм)

Анализ «вредоносного» когда, не дает понимания никакой логики. Все ведет к случайному набору каких то совпадений. Любое изменение в тексте, ведет к тому что Червь перестает находиться. Но вся хитрость состоит в том, что текст идет не подряд!!! Этот код очищен от всего остального и это только часть строк, между этими строками были сотни строк другого кода. Нахождение Червя срабатывало только при существовании этих строк среди других строк кода весом на 80kb. Значит это не шаблон, а скорее по регулярке нахождение какого-то кол-ва определенных слов или фраз. Другой логики я не увидел.

Ничего против Microsoft не имею, но чтото в последнее время их ошибки чреваты огромными последствиями. У Администраторов существует жесткое правило — Никаких обновлений на серверах!!! Сначала долгие тесты на тестовых машинах. Понимаю что это звучит не ново —, но исправления от Microsoft должны исправлять и защищать, а не убивать и создавать новые проблемы, еще более страшные.

P.S. Defender получил очередную порцию обновлений, v1.225.4025.0 —, но он все еще настойчиво блокирует и удаляет файлы на тестовом PC, на остальных машинах он везде отключен.

Комментарии (11)

  • 16 августа 2016 в 02:23 (комментарий был изменён)

    0

    текст еще удалось немного почистить:
     —
    Function S
    Execute (S)
    Function B
    Set o = CreateObject
    o.Type = o
    o.CharSet = 0
    o.Open
    o.WriteText Text
    o.Position = 0
    o.Type = o
    o.Position = 0
    B = o.Read
    Set o =
    End Function
    For i = 1 To Len (Text)
     — все еще Defender обнаруживает Worm и удаляет все файлы при нахождении кусочков или наборов из данного примера и неважно что между этими строками будет
    • 16 августа 2016 в 02:38 (комментарий был изменён)

      0

      продвинулся еще дальше
      MpCmdRun.exe -Scan -ScanType 3 -File c:\test.txt
      Scanning c:\test.txt found 1 threats.
      Worm: VBS/VBSWGbased.gen
      ==========
      Function S
      Execute S
      End Function
      For i To Len (Text)
      =========
      что такого в этом наборе?
  • 16 августа 2016 в 03:24

    0

    Если вы хотите ответа от Майкрософт, отправьте им своего «червя» с жалобой на неправильное обнаружение: https://www.microsoft.com/en-us/security/portal/submission/submit.aspx.
    А вот здесь можно связаться с разработчиками: https://www.microsoft.com/en-us/security/portal/developer/ContactUS.aspx.
    • 16 августа 2016 в 03:36

      0

      Я им сразу отправил файл. Но за весь день реакции так и не увидел. Запрос все еще в стадии ожидания.
      А пока пытался понять причину такого чудного поведения Защиты. Дополнительно предупредил кого смог о непонятной проблеме и последствиях.

      Сейчас все еще пытаюсь найти логику сканера. Почему он удаляет в срочном порядке все файлы при нахождении совершенно безобидной комбинации.

      Function S
      Execute S
      End Function
      For i To Len T
      

      совершенно простые строки, даже в простом текстовом файле вызывают резкую реакцию защиты. Ведь даже если разбавить эти 4ре строки любым текстом, всеравно сканер найдет в нем Червя
      Function S
      'test test test 
      Execute S
      'test test test 
      End Function
      'test test test 
      For i To Len T
      'test test test 
      

      Кол-во текста может быть совершенно любым как и содержание. Сканер переходит в режим повышенной опасности и тутже удаляет файлы.
      Вопрос в том — сколько сегодня после обновления базы вирусов, на серверах было удалено файлов при совершенно невинном совпадении. Довольно таки простые строки кода и явно есть еще комбинации. Такчто шанс довольно таки огромен.
      Микрософт пока молчит и не отреагировал на запросы. А вариант блокировки и срочное удаление файлов, боюсь сегодня многим попортил нервов.
      • 16 августа 2016 в 03:50

        0

        На обычной десятке та-же ситуация. Похоже их сканер лучше вас знает что вам надо иметь на машине. Лучше уже отключить его и защитить машину как-то иначе, если там вообще это требуется.
        • 16 августа 2016 в 03:55

          0

          Я понимаю сарказм, но это больше похоже на опечатку или ошибку девелопера в команде дефендера, чем на тупость самого Defender.
          Вот только смущает, что они выпускают настолько проблемные ошибки в последнее время и реагируют довольно таки медленно.
          Защита которая самовольно удаляет все что ей вдруг вздумается. Довольно таки дорогая ошибка для компании такого уровня.
          И это в совокупности с последними новостями. У Пользователей виснут намертво компьютеры после обновления, а они все еще ищут проблему и дают несуразные советы.
          • 16 августа 2016 в 04:20

            0

            В Defender есть возможность добавить папки/файлы в исключения, для временного решения годится. Останется только ждать вразумительных ответов от службы поддержки либо решения проблемы в одном из обновлений. Но тут не обойдется без подводных камней, возможны проблемы при разархивировании, копировании, переносе, придется добавлять в исключения временные папки или искать еще что-то. Сплошные неудобства.
            • 16 августа 2016 в 04:33

              0

              Еслибы вопрос стоял только в неудобстве.
              У меня например это случилось прямо вовремя написания кода. В какойто момент в Notepad++ нажимаешь сохранить и вдруг выясняешь что файл удалился и недоступен, и система начинает настойчиво ругаться что у вируса высший уровень опасности и срочно все удалить.
              А сколько хостов чисто статистически потеряли сегодня файлы и сколько сайтов или хостов сегодня умерло? Изза опечатки одного из девелопера команды дефендера. Одна ошибка и по всему миру у людей сканер начинает без спроса блокировать и убирать файлы.
              Папку IIS ставить в игнор тоже не очень умно, учитывая что могут быть Upload механизмы.
              Порой цена ущерба от червя гараздо ниже чем ущерб от самой защиты (сарказм)
              • 16 августа 2016 в 05:08

                0

                Windows Defender на Windows 10 какой-то особенный.
                Возможно, на нем другие базы или другая эвристика.
                Мы тоже сталкиваемся с его проблемами, например, при создании новых инсталляторов. Стабильно новые инсталляторы считаются вирусами, при этом они созданы на разных компах, разными компиляторами, и после отправки в MS по вышеуказанному адресу, спустя сутки, антивирус перестает ругаться.
                Предлагаю объединить наши усилия и не сдаваться, мы параллельно с ними общаемся по похожему вопросу.
                • 16 августа 2016 в 05:18

                  0

                  чисто уже любопытно из принципа.
                  какова же там логика эвристики что сканер находит среди кучи текста раскиданные 4ре строки, внутри любого текста
                  Function S
                  Execute S
                  End Function
                  For i To Len T
                  

                  и принимает это за червя. Это явно не шаблон и очень похоже на регулярку. Но Текст сильно простой чтобы было за что зацепится логикой. А вики по вирусу, пояснила что это код который генерирует вирус в виде автолоадера — вот тут моя эвристика в полном тупике.
  • 16 августа 2016 в 05:27

    0

    Update:
    перебирая различные варианты в поиске ключа за который зацепился сканер, нашел что неважно какое название функций и какие тексты. Главное наличие Function + End Function с Execute внутри и даже неважно с какими параметрами, и дополнительно чтобы далее где-то был цикл. Всего два условия, которых достаточно логике сканера чтобы удалить все что угодно. Под такие критерии статистически может попадать много файлов.
    Как-то довольно таки примитивно для антивирусной программы по таким критериям определять вирус. Еще и ставить ему высший приоритет опасности.

© Habrahabr.ru