Вообщем так как мне хорошо известно что подобные темы всегда превращаются во флудильню и срач по воле людей которым абсолютно покласть на собственно тему и им просто надо немного передохнуть например на рабочем месте, то я тут больше не буду ничего писать, а модераторам предлагаю тему закрыть. Вообщем-то все что можно тут сказать было я сказал, дальше если у кого-то есть интерес или например похожие собственные проекты (с такими людьми уже беседовал) и вы хотите объединить усилия для создания конкурентоспособной программы стучите/пишите и т.д.
Да, пишите лучше на e-mail или icq а не в PM. Чтобы не было много сообщений надо ввести гибкую систему правил автоматизированного принятия решений как по степени продвинутости настроек так и по степени критичности отношения к тому или иному сорту событий. А в самом понятии подозрительного события сделать градацию его потенциальной опасности. Скажем событие которое может повлечь побег программы из песочницы это куда более серьезное событие чем обращение к сети.
Ну вот к примеру есть такая система уже в авире. Там сравнивается большое количество настроек, параметров, выделяются баллы и т.д. В итоге, файл может оказаться подозрительным по одному только соотношению размеров секций и данных. И тут ты ничего уже не сделаешь. Аналогично и в твоей системе - если делать настолько продвинутую эвристику, что пользователь не будет опрашиваться, не приведет ли это к такому же срачу, как в авире?
1) как же ты его собираешься свободно распространять, если сейчас не хочешь ничего рассказать 2) 99.98% пользователей не понимают даже элементарных правил безопасности (не говоря уже о том где у компьютера процессор). т.о. эффект от твоего софта будет ->0 3) шанс написать программу (тем более такую сложную) без багов, фич и дыр ~ 0 => на любую защиту найдется управа. к примеру обычный xor и соблюдение атрибутов страниц (при записи страница с данными, а при исполнении страница с кодом) не отлавливается ни одной защитой (если при выполнении программа не начинает творить пакости). а при должной реализации оно спокойно пройдет даже Вашу защиту.
у любой (даже самой крутой и не преступной) крепости есть один очень большой недостаток. огромные ворота для входа (иначе такое творение ни кому не нужно). и именно эти ворота причина всех злоключений. т.о. либо вы создаете само замкнутую систему у которой нет ни окон ни дверей, либо она не будет ничем отличаться от уже существующих.
что это тебе объясняет? если никто не откликнется буду распространять свободно, не вижу нестыковки можно рассмотреть например вариант создания системы безопасности для людей которые находятся уровнем по-выше как то системных администраторов, программистов и т.д. Это конечно сильно раскрепощает разработчика подобной системы в том смысле что нет опасений что пользователь не поймет о чем ему говорит программа. Интересная кстати мысль ведь. Есть сегмент пользователей, именно понимающих немного что и к чему, которые не удовлетворены объективной беспомощностью классических антивирусов к современным угрозам. Может сделать ПО для них? Баги есть везде собственно это не предмет дискуссии. Однако тут нет принципиально непреодолимых потенциальных барьеров. Это сейчас об чем речь. Боюсь предположить что речь идет о коде где данные и код в одной секции и что эксплоит будет расположен в который будет гадить в эту секцию сможет передать туда управления? если это об этом то нет не сможет тут дело не в этих всех деталях надо мыслить более общими понятиями. Если это речь о malware то я не понял что имеется ввиду. В любом случае страницы с их аттрибутами а тем более какой-то ксор не имеет отношения к поведенческому анализатору проактивной защиты. Разве как косвенные. Короче это какие-то ненужные сейчас технические детали. Если имеется ввиду пользовательский интерфейс или интерфейсы драйвера, то у меня и тут тоже есть некоторые мысли. Но это больше по части того что не касается собственно HIPSа (тот самый Ex). Если программа находится в песочнице в сфере ответсвенности хипса то закрыть все эти лазейки тупо рутина.
Ну если ты имеешь ввиду классическую антивирусную эвристику то хипс ее вообще не предполагает в принципе. Система хипс базируется на принципе отсутствия любых костылей, коими набиты все классические антивирусы. Его идеология совершенна. Проблема именно в том чтобы организовать грамотный диалог с пользователем это действительно очень актуальный вопрос. А если под эвристикой имеешь ввиду просто тот факт что подход к защите не подразумевает разделение malware на уже известные и не известные науке, то это все к той же проблеме диалога с пользователем. Мне кажется тут можно придумать вполне удобоваримый вариант если сделать настройки гибкими.
к примеру код загружен в сторонний файл приклеенный оверлеем в конце исполняемого файла (или такое запрещается, бедных sfx от WinRAR) и заксоренный. он читается в динамическую память расксоривается, память помечается (ну не помечается, а копируется в исполняемую область памяти) исполняемой и запускается на исполнение косвенным образом. через процедуру из которой нет возврата и процедуру с возвратом чуть (1-2 байта) подальше/поближе.
Я имел ввиду анализ каких-либо факторов и принятие решения без участия пользователя. Вот авира анализирует файлы на основе скажем так статистичеки частой структуры РЕ. Ты, я так понял, будешь выдавать детекты (ну чтобы не беспокоить пользователя) на основе статистически частого поведения обычных файлов. Я просто провожу аналогию в методах принятия решения без участия пользователя, где основой служат статистические анализы, а не ИИ. Имхо, если не привлекать пользователя, то другого пути нет (могу и ошибаться) - но тут будет куча ложных детектов. Если все же опрашивать пользователя - то можешь выкинуть свою систему сразу Многие до сих пор верят в антивирусХР2009 и в письма счастья о наследстве какого-нить короля зимбабвы
Все описанные действия безусловно являются вполне документированными и легальными. Вопрос как я понял в том будет ли ФОЛС аларм? Видимо так, тк он тут потенциально мог бы появиться аж в двух местах. По порядку: 1) При передаче управления на кучу разрешенную для исполнения. Но она ведь разрешена для исполнения? В системах где включен DEP (а моя программа в т.ч. - как часть функционала предоставляет возможность полной софтварной эмуляции DEP) чтобы выделить исполняемую кучу это надо указать явно. Может быть конечно тут и может случиться реальная атака ибо программист не программист и не ведает что творит - бывает, да. Можно отнести подобную манипуляцию к некритически-подозрительным действиям (нечасто согласитесь что-то подобное вытворяет легальный код). Не более. Опять к вопросу гибкости настроек. 2) Процедура из которой возврат чуть по-дальше это определенно false alarm, куда деваться. Много таких процедур видел, из которых возврат чуть по-дальше? Но только это должен быть настоящий возврат по ret'у, который берет адрес возврата оттуда же где был настоящий, тока теперь он на два 2 байта больше. Если нет - то никакого фолс аларма все legitimus. Если нет возврата false alarm тоже не случится. Ну 95% не случится. Вопрос в том как его привлекать. Те нужно провести посредством гибкого интерфейса с пользователем предметный диалог от чего он хочет быть защищен 100%, чего ему следует советовать и что 100% разрешать. Проблема в том чтоб перевести эту беседу с языка понятного системному программису на язык понятный официантке макдонольдса. Если ориентировать софтваре например на защиу серверов (согласитесь защита от эксплоитов там более чем актуальна) или как специализированное средство людей работающих с компьютером, то трудности в таком переводе существенно упрощаются.
А ну и еще к слову о примере max7C4: 1) Помимо DEPа в моем софте есть средства которые впринципе не позволят вообще даже переполниться буферу буть то стек или куча. Остается форматная строка, впринципе если речь идет о практической атаке даже если DEP выклюен то ASLR сведет атаку на форматную строку на нет. DEP, ASLR это тока те методики что известны давно. Как я уже говорил сыр бор начался с того что я сам придумал свои методики. И вообщем-то они ядро того что у меня щас есть. Это по противоэксплоитной стороне вопроса 2) Если говорить о том что допустим такая атака бы проканала (ну например хотя не проканала бы) и это была бы передача управления на кучу из эксплоита - если атакованная программа является недоверенной то малваре из-под нее не сбежит. Исходя из всяких таких логических рассуждений можно придумать целые алгоритмы user-friendly построения диалога. Скажем если программа вела себя добропорядочно и вдруг сучилось событие такой вот странной передачи управления в кучу, и программа начала вести себя по-хакерски, об этом можно уведомить в своих отчетах отдельно
Ну если ориентироваться на специалистов, то в принципе современные системы защиты дают искомый уровень защиты от 99.99% вирусов. Одно ограничение в правах чего стоит (эксплоиты мы относим к оставшимся 0.01%, так?). А теперь, я хотел бы перейти к конкретным примерам. Не будем сильно углубляться. Возьмем банальный OpenProcess с правами на запись. Вот как ты тут поступишь? Запретить? Дык мало ли кто и зачем это делает... Разрешить? Тем более нипанятна... Спросить пользователя? Вот в какой форме например ты бы спросил официантку макдональтса, стоит ли или нет давать процессу svchoct.exe из системной папки права на открытие crss.exe (ну или как он называется) из той же папки?
вот об этом я и говорю - как ты определишь, по-хакерски она себя ведет или нет? к слову, у каспера был поведенческий анализ: если софт копировался в системную папку и прописывался в автозагрузку, то ахтунг, вирусы... А если сначала прописывался в автозагрузку, а потом копировался... то было чисто Часто пользователи спрашивают - как отличить вирус от невируса. А и правда, как? И те, и другие открывают пайпы, загружают драйвера, делают поиск файлов, подключаются к инету... Как отличить? Да еще и достоверно. Да, есть отличия. То же исполнение в стеке например. Но это все! Дальше отличий практически нет! Инжект в эксплорер? Да куча легального софта так делает. Перехват соединения? А вдруг это очередная защитная софтина? Тут имхо ИИ писать надо И одних энтузиастов тут определенно мало
К слову об эвристиках, анализе поведения и умных алгоритмах хочу привести один пример. Есть у меня упаковщик. Обновился несколько месяцев назад битдефендер и стал очень жестоко палить все упаковщики по наличию редких импортов. А что, подход вроде верный - вроде использовать редкие апи не запрещено, но ложных срабатываний у него не было, детектил очень четко. Какой выход? Я за вечер написал утилиту, которая собирала статистику со всего винта. Теперь у меня импорт состоит только из тех апи, которые встречаются наиболее часто (причем для каждой апи есть вероятность ее появления). И все, про проблемы с битдефендером я забыл. И пройдет еще ни один месяц, прежде чем начнут опять палить по какой-нить ерунде, которая исправляется за вечер. Это я к тому, что выделить "хакерское" поведение в огромном количестве легальных действий крайне нетривиальная задача. И даже если такая защита будет создана, обходиться она будет тоже за 1-2 вечера. Тем более, если она будет опенсорц
Как раз тот случай когда цифры не лгут но лишь вводят в заблуждение. 99.99% от чего? от того что было написано за всю историю? там процент по-больше будет. от того что сегодня пишут на делфи и бейсике? Да. Ну и что. Обращаться к такой статистике смысла тут нет. Всем известно что полагаться на антивирус в вопросах защиты от профессионально написанной малваре. Когда она еще 0day например и когда она распространяется например через 0day уязвимости. Думаю даже официантке из макдональса будет понятно что тут антивирус просто бессилен. Проблема в его идеологии, которая ущербна изначально. Совсем нет. Совсем не так. С чего начинается любое малваре? С распространения. Как сегодня распространяется малваре? Я бы сказал что эффективная борьба с эксплоитами это основополагающая часть настоящей объективно универсальной защиты. А вот и ответ - видишь сколько ты дал вариантов? Может быть любой из них. Для этого проводится настройка системы на конкретного пользователя. Грубо говоря если ты поставил опцию защитить систему на максимум, то тебе и процесс-то с именем svchoct.exe запустить не дадут тк тут уже все ясно. Вообще открытие каких-то системных процессов безусловно это серьезное покушение на безопасность системы. Те если система защищена и пользователь указал что он неочень-то компетентен в вопросах вирусов - вопросов не будет просто будет запрет этой операции с соответствующим помещением записи об этом событии в журнал. Если например пользователь заявил о своей продвинутости и изъявил желание быть лично уведомленным о критически опасных событиях то ему выводится уведомление. Вообщем если кто-нибудь изъявит интерес к проекту. То я могу написать подробнее свое виденее таких ключевых вопросов. Но я говорил изначально что не хотел бы делать этого здесь, лучше было бы обсуждать уже вместе и предлагать свои варианты в компании тех кто займется разработкой. такие пироги
тут такое дело. задача хипс заблокировать нелегальное вторжение в систему. а легальную программу поместить в такое место где будет ясно выполняет она действия той или иной степени нетипичности и критичности или нет. Дальше вопрос построения диалога с пользователем. Если ему нужна настоящая безопасность если у него на компе хранятся пароли для запуска ядерных ракет то он выбирает полную защиту и гарантирует себя от атаки. гарантирует и точка. если же нет то тут вступает в действие антирукит. у меня тоже есть разные идеи по общему подходу выявления присутствия руткитов я памяти ядра. за общим подходом будущее. впрочем если говорить о противоруткитах то костыли здесь вообще смотрся совсем уж нелепо и дисфункционально. Если дело происходит в usermode то как бы не крутился вырвавшийся из песочницы процесс вируса он виден из ядра и в эту песочницу попадает снова. ну хотя бы тупо по мониторингу процессов. если же он пытается выкрутасничать будучи вне доверенного процесса из-под которого сбежал то тут вообще непонятки пользователь сразу заметит какойто левый распоясавшийся процесс в системе. Если речь идет о защите себя из ядра (ну пробрался он туда ну что поделать) то тут ставится задача выявить модуль драйвера который ведет себя странно. этот модуль доводится до сведения пользователя если он левый, то модуль изводим. Если код не в драйвере то мы его изводим. И тд.