информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыВсе любят медСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / site updates
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Собственно идея-то совсем другая 07.02.03 15:24  Число просмотров: 1735
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> VCG.Belka тоже такими вещами занимается в меру
> возможностей. ЛовИмо.
Кроме эквивалентных преобразований нод я предусматривал еще и вставку новых нод (которые затем тоже участвуют в мутации) и перемещение готовых веток и оптимизацию (тоже стохастическую): несколько нод объединяются в одну или несколько других и тоже затем участвует в мутации. Кроме того, так как фактически происходит компиляция, и функциональность мутируемого алгоритма известна, то компилятор (полиморфный движок) может принимать решения о дисперсии данных (раскидать, допустим, int или массив на несколько битовых наборов и пустить их в разные ветки для обработки), причем переход в каждую конкретную ветку может быть условным: на одном этапе генерируется нода-ветвление с одной веткой - unreacheable (примерно такой какая выкидывается большинством современных компиляторов), после нескольких итераций мутаций данные для этой ноды тоже могут прийти из нескольких других ветвей. Возможно и дальнейшее развитие идеи.

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

> если известен алгоритм, по которому строятся такие ветви,
> то по нему же их можно и обнаружить.
Алгоритм стохастический и одни и те же ноды могут быть получены мутацией различных начальных. Если при этом учесть внесенный "мусор" и опять таки стохастическую оптимизацию - объединение нод (при этом возможно объединение "мусорных" с валидными), то восстановление - не такая уж тривиальная задача. См по поводу восстановления исходного текста по скомпилированному с оптимизацией.

> функционально это только упрощает задачу, поскольку по
> расшифровщику уже можно сказать многое.
Нужно еще понять что это именно расшифровщик. И что именно он делает. Кроме того на самом деле такой метод ничего не делает с функциональностью - можно делать не ксорку со случайно сгенеренным (состоящим из команд не имеющих сигнатур) генератором гаммы, а DES, например, или любой другой алгоритм имеющий прямое и обратное преобразование (tg - arctg, разложенные в ряд или еще что-нить). Расшифровщик нужет только для эффективности (чтоб ядро работало как можно быстрее) и для сокрытия кода (по дереву, включенному в инсталлятор, восстановить первоначальный алгоритм очень легко)

> > ЗЫ: А с полиморфизмом АВ-ы так и не справились по
> > человечески имхо.
> ...ввиду простоты языка описания баз вирусов.
Ну да. Обнаружить такой алгоритм можно, но при это программа специально заточенная для этого должна быть размером с IDA. Вирусы не обладают такими возможностями. А использование такой методики в самих вирусах тоже проблематично - движок будет на порядок больше активной части вируса и распространяться на дискетах или через инет будет им ой как неудобно. Кстати именно для защиты одного AntiSpyware от самих SpyWare я и разрабатывал данную систему (но потом из за цейтнота ограничился ксоркой по гамме, которая генерится случайным набором команд - тоже не очень легко найти: около 50 опкодов с произвольными парами регистр-регистр и регистр-константа, но можно и не слишком большими усилиями)

> ерунда. неоптимизированный полиморфик (замена операций
> эквивалентными из известного набора) разбирается как
> регулярное или стековое выражение. кю.
Кроме замены используется добавление пустышек, объединение операций тоже по заданным критериям, перестановка информационно-независимых друг от друга (информационные потоки в компиляторе тоже отслеживаются), разбиение информационных потоков на несколько и т.д.. И все это делается в несколько десятков итераций.

> нынешние сканеры обламываются из-за несовершенства языка
> описания вирусов и недостаточной длины сигнатуры
> (регулярного выражения).
Если нынешние сканеры обламываются даже на таких примитивных (относительно) конструкциях как в современных полиморфиках (примитивные они просто из-за ограниченности допустимого размера - несколько килобайт)

> CodeRed обращался к внешней DLL, а не к коду IIS.
> полиморфизм IIS ни к чему не привел бы.
Собственно статья о другом применении данного подхода. В моем случае я защищался от кода, который уже находится на машине и может исследовать, что у меня там творится, а первоначальная статья защищает от сетевых атак. И было ясно указано, что все dll-ки для данного процесса должны загружаться по новым адресам, перемещается стек и куча. Переполнение буфера все так же происходит, но при этом большинство известных методик передачи исполнения только что загруженному коду будет просто валить процесс, который только что скомпрометирован. В случае удаленных атак алгоритм перемещения опять-таки известен, но неизвестны конкретные адреса по которым произошло перемещение. Если на компьютере выполняется код, который может сообщить злоумышленнику новые адреса, то ему гораздо легче открыть реверсивную телнет сессию и не заморачиваться переполнением буферов.
<site updates> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach