Антивирус NOD32 работает на хакеров - Выбор домашних средств защиты - Форумы Anti-Malware.ru Перейти к содержанию
Иван

Антивирус NOD32 работает на хакеров

Recommended Posts

Иван

Это к заявлениям о том, что вот дескать в касперском и других антивирях находят уязвимости, а вот нод32 безупречен.

http://safe.cnews.ru/news/line/index.shtml?2007/05/24/251713

В антивирусе NOD32 версий до 2.70.37.0 включительно обнаружены две уязвимости, заставляющие его выполнять произвольный код при определённых условиях, сообщает Heise-security.co.uk.

Как сообщили в списке рассылки Bugtraq, две ошибки переполнения буфера срабатывают при лечении, удалении или перемещении файлов в директорию с длинным именем. Вредоносный код при этом необходимо записать как часть названия директории в формате Unicode. Уязвимость, тем не менее, довольно сложно эксплуатировать, однако специалисты утверждают, что работающий эксплоит уже создан.

Компания Eset, разработчик антивируса, выпустила обновление, которое доступно для автоматической загрузки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ego1st

длина пути очень многими плохо обрабатываеться, др.веб тоже падает..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
др.веб тоже падает..

Steps to reproduce для Dr.Web можно? Например, для eicar.com .

Какая версия падает? Релизная, бета? Что падает - спайдер роняет систему в BSOD при проверке или же сканер падает?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ego1st

на rootkits.ru было написано..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
на rootkits.ru было написано..

Погуглил

site:rootkits.ru - 853 результата

site:rootkits.ru Dr.Web - ничего не найдено

Давно было?

Просто насколько я помню, давеча правили что-то похожее. И вроде как исправляли. Поэтому нужно бы поточнее. Если точнее нет, то даже баг не завести.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy

Спасибо, буду смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy

Создал путь длиннее MAX_PATH (260 символов).

Dr.Web не сканирует, но и не падает.

Пишет:

[scan path] E:Longlonglonglonglonglonglonglong

И всё.

Хотя настоящий путь там E:LonglonglonglonglonglonglonglongLonglonglonglonglonglonglonglong... и т.д.

А NOD после исправления уязвимости стал именно сканировать (лечить, перемещать) такие пути или же просто не падает?

Да, ещё вопрос.

Как создать 1024 вложенных папки, если общий путь не превышает 260 символов. Ограничение на 260 символов можно обмануть в Windows, т.е. сделать путь длиннее (что я и сделал). А вот 1024 вложенные папки как сделать, пока не придумал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EP_X0FF
Какая версия падает? Релизная, бета?

любая из существующих.

при просмотре списка дисков и директорий происходит buffer overrun

drwebre5.gif

касперски 7 тоже не блещет, он просто висит на сканировании подобного каталога.

другие не лучше - они либо пропускают либо начиная раскручивать каталог выпадают. аффтарам нод32 надо меньше курить их программа не лучше.

повторить это можно простым кодом в несколько строк.

 strcpyW(buf, '?J:fdir');  CreateDirectoryW(buf, nil);  for i := 0 to 1023 do  begin    strcatW(buf, 'fdir');    CreateDirectoryW(buf, nil);  end;

можно расширить код и запихать в директорию бинарник + стартовать его оттуда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy

EP_X0FF, спасибо за подробную информацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy

EP_X0FF, проверил сегодня по Вашему методу. 4.44 не падает, но и, опять же, не проверяет.

Вот что у меня на VC++ 2005 получилось:

void CMy1024Dlg::OnBnClickedOk(){    CString buf, buf1;    buf = "?C:long";    buf1 = "C:Hello.exe";    ::CreateDirectoryW(buf,NULL);    for (int i=0; i<1030; i++)    {        buf += "long";        ::CreateDirectoryW(buf,NULL);    }    ::CopyFileW(buf1, buf, NULL);    buf += "Hello.exe";    ::ShellExecuteW(0,L"",buf,L"",L"",0);    OnOK();}

Так вот либо CopyFileW не работает, либо ShellExecuteW.

Может, Вы ошибку подскажете?

Или же запустить всё же невозможно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EP_X0FF
4.44 не падает, но и, опять же, не проверяет.

А если раскрыть список директорий в его интерфейсе? :) Вышеприведенный скриншот как раз получен при этом.

Сработал или нет CopyFileW легко проверить, наверняка сработал.

А вот чтобы запустить с такого пути что-либо обычное API неприменимо.

Нужно полностью повторить процесс загрузки и запуска процесса.

1. создать секцию из файла ZwOpenFile, ZwCreateSection

2. создать оболочку - процесс ZwCreateProcess, ZwQuerySection

3. создать стек и первичный поток ZwCreateThread

4. создать и инициализировать структуры процесса RtlCreateProcessParameters

5. уведомить сервер процессов о создании нового процесса

CsrClientCallServer

6. поставить маркер доступа к новому процессу RtlAdjustPrivilege ZwSetInformationThread

По всему этому есть полагающаяся инфа и даже примеры готового кода.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
А если раскрыть список директорий в его интерфейсе? Smile Вышеприведенный скриншот как раз получен при этом.

Да, при планомерном раскрытии таких поддиректорий на определённом моменте получаем вышеопубликованный скриншот, но это менее критично, чем падение на сканировании таких папок. Хотя, конечно, тоже заслуживает внимания.

А вот чтобы запустить с такого пути что-либо обычное API неприменимо.

Нужно полностью повторить процесс загрузки и запуска процесса.

Опять же спасибо за информацию. Буду подумать :)

Добавлено спустя 33 минуты 20 секунд:

Нужно полностью повторить процесс загрузки и запуска процесса.

1. создать секцию из файла ZwOpenFile, ZwCreateSection

2. создать оболочку - процесс ZwCreateProcess, ZwQuerySection

3. создать стек и первичный поток ZwCreateThread

4. создать и инициализировать структуры процесса RtlCreateProcessParameters

5. уведомить сервер процессов о создании нового процесса

CsrClientCallServer

6. поставить маркер доступа к новому процессу RtlAdjustPrivilege ZwSetInformationThread

Кажется, тут схема дописана не до конца :) Или на 6-ом пункте программа уже запустится?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сергей Ильин

Вообще на сколько на ваш взгляд реально использование подобной уязвимости вирусописателями?

Ведь писать malware с расчетом только на Nod32 невыгодно, не такой популярный продукт да и выхлоп не такой большой получится как ни крути, уязвимость быстро закроют.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
Вообще на сколько на ваш взгляд реально использование подобной уязвимости вирусописателями?

А что мешает? Схема указана. Дело за реализацией.

Да и причём тут НОД? Проблема есть у всех, и не думаю, что её так уж легко исправить.

Запустится вирусок из %WINDIR%system32system32system32... (и так 1024 раза), и никто о нём и не узнает, хотя антивирус и не упадёт.

Ы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Inkogn

Интересно.Нету возможности детекта просто длинных путей?Скажем,более 50 вложенных папок уже можно предлагать стирать.Либо сразу иметь возможность подобной установки и по умолчанию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
Нету возможности детекта просто длинных путей?

Есть, конечно. Dr.Web такие пути, например, игнорирует, не сканирует.

Утверждается, что КАВ 7.0 на их скане зависает, но, думаю, там это легко поправят.

Скажем,более 50 вложенных папок уже можно предлагать стирать.

Стирать - не очень правильное решение, даже если спрашивать. А вдруг там что-нибудь нужное? Всегда найдётся пользователь, который не сможет ответить на вопрос - нужно оно ему или нет.

Добавлено спустя 52 секунды:

Да ещё нужно и уметь удалить такой путь.

Проводник и всё на нём основанное, например, не может удалить такие папки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Inkogn

Я цифру 50 наугад взял.А есть ли такие длинные пути вообще,кроме вирусных?То есть,как с неизвестными пакерами,кто-то пользуется дырой.Я бы стирал.Можно цифру и повысить.

Я не программист.Удалить нельзя путём,обратным созданию?Команде,которую выполнила ОС по созданию папки/папки...,должна быть и обратная.Через ответ "стереть" в АВ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
Удалить нельзя путём,обратным созданию?

Да, видимо, можно. Сейчас с этим играюсь. Функцию нашёл соответствующую готовую.

Именно обратным путём:

1. удалением файлов в самой "дальней" папке;

2. удалением самой "дальней" папки;

3. переход на уровень выше

4. Переход на п.1, пока не достигнем корня.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Inkogn

Насколько загружает анализировать в реальном времени команды в кодах,направленные на создание,скажем,>50 вложенных папок?На крайний случай только в небольших файлах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
Насколько загружает анализировать в реальном времени команды в кодах,направленные на создание,скажем,>50 вложенных папок?На крайний случай только в небольших файлах.

Не понял вопроса.

1024 поддиректории у меня создались где-то за минуту. В это время остальные программы нормально продолжали работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Inkogn

Имел ввиду,если АВ это в порядке своей деятельности при доступе к файлам делает.Возможно вообще такую команду отловить,если в файле узнана не была?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy

Сокращать пути до меньших MAX_PATH не так накладно по ресурсам, как оказалось.

Удаляется всё это гораздо быстрее. Если создаётся около минуты, то удаляется несколько секунд.

Можно такие пути "укорачивать" (спрашивая у пользователя) до MAX_PATH, в принципе.

Правда, для удаления я использовал "заточенный" под свой случай код:

void CRemoverDlg::OnBnClickedOk(){    int i,j;    CString path;    for(i=1032;i>=0;i--)    {        path = L"?C:long";        for(j=0;j<i;j++)        {            path += L"long";        }        ::DeleteFileW(path + L"Hello.exe");        ::RemoveDirectoryW(path);    }    OnOK();}

Сделал так, потому что забыл, на каких уровнях оставил файлы Hello.exe :)

Зато теперь можно смело экспериментировать с запуском оттуда.

Думаю, не так сложно сделать удаление всех подкаталогов определённого "длинного" каталога, не зная заранее структуры его подкаталогов, если использовать FindNextFileW и пр.

Добавлено спустя 6 минут 32 секунды:

Возможно вообще такую команду отловить,если в файле узнана не была?

Т.е. детектировать эвристиком/проактивкой создание пути, состоящего из символов, бОльших MAX_PATH?

Не знаю. Наверное, это будет сложнее, чем удалить уже созданный длинный путь при сканировании :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Inkogn

Да,так как до того,как пройдут недели для очередного скана по требованию,успешно спрятанный какой-нибудь даже "знакомец" успешно запустится.Детектировать возможно на стадии создания/превышения пути.Заодно может быть и с новым инициатором.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EP_X0FF

Интересное предложение - удалять такие пути или резать их. FYI Виста может на вполне законных основаниях забабахать путь > MAX_PATH и такие вот резанья ни к чему хорошему не приведут.

Не резать и орать о таких надо - нужно всего лишь добавить в антивирусы, то, что там должно было быть с самого начала. А именно - следование документации на использование путей, а не какой-то константы, которая между прочим, является объектом совместимости.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Сообщения

    • santy
      Актуально, по лучше перенести обсуждение в офтопик.
        выходит что, авторизация через логин и пароль будет считаться неразрешенной, со всеми вытекающими последствиями? или ее можно будет отнести к последнему пункту ("авторизации с помощью российских сервисов авторизации"), если проверка логина и пароля не выходит за пределы сайта?
    • santy
      Актуально, по лучше перенести обсуждение в офтопик.
    • PR55.RP55
      Несколько не по теме. Но для владельцев сайтов актуально... https://www.comss.ru/page.php?id=20880
    • santy
      RP55, По п.10 уже есть реализация: в 5.04 o Переменные окружения всех пользователей с некорректным содержимым теперь добавляются
         в список как подозрительные объекты со статусом "ПЕРЕМЕННАЯ".
         Удаление такого объекта приведет к удалению переменной пользователя или 
         к восстановлению значения по умолчанию если это системная переменная.   по п. 8, для задач в uVS публикуется командная строка, но то что стали модифицировать известные задачи, это да, теперь придется за всеми задачами следить по п.7 В uVS есть указание на то что известный файл размещен по нестандартному пути, по идее тоже должно попасть в подозрительные. по п.6 Ранее уже сталкивались с подобным зловредом,  здесь, https://chklst.ru/forum/discussion/76/kak-udalit-bekdor-crexv-i-vosstanovit-normalnuyu-rabotu-menyu-pusk-v-xpvistaseven  
    • demkd
      ИИ — полезная штука, но, к сожалению, бесплатные версии, как тот же Google Gemini Flash, тупенькие на уровне 12b моделей, делают колоссальное число ошибок по мелочам. Яблочко от яблони... Мало того, "новое" у них обычно старое с отставанием на год, и это в лучшем случае. Я сейчас как раз занимаюсь новой, уже 3-й версией своего "Клавиатурного помощника". В нём будет поддержка локального ИИ, горячих ИИ-клавиш, голосовых команд, голосового ввода и вспомогательной LLM для переводов, правки текста и т.п. Именно локального ИИ без необходимости обращения в сеть и сопутствующих утечек данных И это не для старого железа — нужно как минимум много памяти и современный процессор, в идеале хотя бы RTX 5060 Ti 16 ГБ в качестве ускорителя. А результат, ну, такой себе. ИИ слишком склонен ошибаться, и доверять ему что-то серьёзное пока не стоит, даже код пишет, который как-то работает, но в нём масса мелких и незаметных ошибок и уязвимостей. 
      Текст исправлен с помощью Google Gemma 4 E4B. 
×