Имя: Пароль:
IT
 
обфускация кода как метод защиты от вирусов и атак
0 Adept
 
15.09.14
12:56
Вопрос к знающим товарищам, хорошо знакомым с низкоуровневым программированием. Ряд атак на сетевые сервисы да и не только используют технологию переполнения буфера или стека, когда за счет того что какая то функция не безопасно читает данные удается получить доступ к счетчику команд процессора, и передать управление на блок кода который атакующий предполагает запустить. Эта технология подразумевает что атакующий знает по какому адресу окажется этот код. Если каждый экземпляр программы будет рандомно обфусифицирован, то такого знания быть не может в принципе, так это или нет, подскажите?
1 Adept
 
15.09.14
12:57
+(0) Под обфусификацией подразумевается изменение потока выполнения, ложные функции и т.д
2 NikVars
 
15.09.14
12:58
... обфускация - это ж фишка для человека... Вирусу пофик. Он свой код исполняет.
3 Adept
 
15.09.14
13:01
(2) Ну вирус же "рассчитывает" на определенный адрес внедренного  кода,  а тут у каждого пользователя свой вариант программы
4 Adept
 
15.09.14
13:01
+(3) Типа за счет фековых функций адреса функций в памяти будут разными для каждой скомпилированной проги
5 Rebelx
 
15.09.14
13:09
(0)если аката направлена на конкретную версию и релиз конкретного ПО - то да, это может иметь смысл. Однако это почти не реально. Скорее всего вирус найдет нужные ему блоки даже в модифицированном коде по сигнатурам кода (например вызовы системных библиотек - их изменить не получится).
6 Torquader
 
15.09.14
13:10
Если у вас самописное решение, то для взлома злоумышленнику придётся каким-то образом получить это решение и проанализировать его.
Если решение тиражное, то у всех оно будет одинаковое.
7 NikVars
 
15.09.14
13:13
(3) Повторяю: вирус исполняет свой код. Как написан вирус, так и будет работать. Не исключено, что он будет работать не так, как ты предполагаешь.
8 1Сергей
 
15.09.14
13:14
фигню какую-то придумал
9 Adept
 
15.09.14
13:15
(5) Ок, если так же обфусифицировано ядро и библиотеки(я про линукс), изменит ли это адреса вызова системных функций?
(6) Если приложение в исходных кодах, можно ж?
(7) Ну вопрос не про работу, а про внедрение ж
10 Torquader
 
15.09.14
13:17
Перекомпиляция библиотек может изменить адреса процедур, но в этом случае придётся перекомпилять и всё, что использует эти библиотеки.
В php-коде обычно находятся дыры, которые не требуют обращения к системным библиотекам, а просто позволяют исполнять код на php, загруженный в запросе.
11 zulu_mix
 
15.09.14
13:18
(9) у тебя в любом случае должна быть таблица соответствия имени функции в библиотеке и ее текущем положении в памяти. иначе ты ничего не вызовешь. вот эту таблицу вирь и будет атаковать
12 NikVars
 
15.09.14
13:18
(9) То есть внедряясь вирусы не исполняют свой код, а они его исполняют только "работая"?
13 DGorgoN
 
15.09.14
13:22
(0) 2 программы если общаются друг с другом. то они должны находить общий язык. А ты предлагаешь изменить язык каждого экземпляра программы. Угу, "вирусы" не пройдут, но и система работать перестанет.
14 DGorgoN
 
15.09.14
13:23
А если имеется ввиду обычная программа - *.exe то вирусу вообще пофик - он в начале свой загрузчик прилепляет и все.
Да и вообще сейчас актуальнее даже не вирусы как таковые а вредные программы-шифровальщики.
15 Adept
 
15.09.14
13:23
(10)Вопрос о конкретном виде атаки на срыв стека, понятно что за всеми скриптами не уследишь
(11) Немного не силен в теории, эти адреса не линковщиком задаются на этапе компиляции ?
(12) Ну конечно исполняют, но они же его должны как то внедрить, вот вопрос о защите от срыва стека и идет
(13) Если вся система перекомпилирована у тебя с нуля (gentoo)? почему нет?
16 Kamas
 
15.09.14
13:26
Если каждый экземпляр программы будет рандомно обфусифицирован, то такого знания быть не может в принципе, так это или нет, подскажите?- не так у клиента будет откомпиленая вещь которая не будет меняться и не важно обфуцирована она или нет.
17 Adept
 
15.09.14
13:28
(16) Да но для анализа этой вещи, нужна будет именно эта вещь, так? А не бинарник который можно получить с сайта разработчика
18 NikVars
 
15.09.14
13:28
(15) http://sp.sz.ru/overflows_.html
https://securityvulns.ru/articles/bo.asp
Роешь в этом направлении?
19 kosts
 
15.09.14
13:30
Предположу, что вирусу не нужно знать расположение функций взламываемой программы, ему нужно будет знать расположение адреса собственного тела, которое возможно и сейчас находится в разных местах на разных компах (что не мешает вирусу внедряться).
20 Adept
 
15.09.14
13:32
(18) Ну типа проблема в этом. Вопрос  в защите :)
21 NikVars
 
15.09.14
13:33
(20) Я думаю, обфускация тут мало поможет. У нее другая цель.
22 Woldemar22LR
 
15.09.14
13:33
(15) Скрипт ? На php или на perl срывает стек?
(10) если ты смог загрузить php на сервак и исполнить его - значит ты уже взломал сервак.

ЗЫ Вы че нанюхались что ли :) валяюсь ....
23 Adept
 
15.09.14
13:34
(19) Ну ему надо для начала на комп как то попасть и записаться, если это только не жалостливый китайский вирус который просит его запустить а потом разослать 10 своим друзьям.
24 Adept
 
15.09.14
13:36
(21) Ну может не правильно выразился, просто обфусификация может менять поток выполнения, вот именно это меня интересует, появление в коде случайных функций которые бы меняли "адресную картину" бинарника.
25 kosts
 
15.09.14
13:38
(23) Тело может попасть хоть с письмом, хоть со страницей html, прямо внутри страницы. Для этого делать ничего не нужно, стоит только открыть сайт...
26 Lama12
 
15.09.14
13:42
(0) Что то мне подсказывает что в (0) глупость.
В машинах по схеме фоннеймана, нет различия памяти для программы и для данных. Эта задача возлагается на операционку.
Если операционка может не корректно отрабатывать это разграничения, то возможна атака путем переполнения буфера. Когда участок памяти выделяемый под стек пересекается с участком памяти под код программы. Естественно в стек можно писать просто последовательность байтов, которая означает безусловный переход по определенному адресу. И атакующей программе совершенно без разницы абфусцирован код жертвы или нет. Главное что б в нужном месте памяти был нужный вредоносный код, к которому будет осуществлен безусловный переход.

Возможно ошибаюсь. Если поправите, буду благодарен.
27 vde69
 
15.09.14
13:43
в старых системах защиты от дебагера использовался прием передачи управления вне сегмента исполняемого кода а в сегмент даты или даже в стек.

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

Но в современных системах с их виртуальными машинами и защищеными режимами таке наверно не возможно.

так-что все эти офбуксатры и прочее - это шаг назад, сейчас технологии идут в двух направлениях
1. изоляция кода (виртуальные машины и т.д.)
2. анализ кода до его выполнения (в очереди процессора)
28 Kamas
 
15.09.14
13:43
вот чесно не слышал про вирусы которые пользовались переполнением буфера, обычно переполнением пользуются не для заражения, а для взлома.
29 _fvadim
 
15.09.14
13:57
(28) есть такие. пользуются дырявыми виндовыми службами для получения прав уровня системы. очень популярен в этом плане svchost.exe
Ошибка? Это не ошибка, это системная функция.