Несетевая защита Крис Касперски ака мыщъх Спецвыпуск: Хакер, номер #051, стр. 051-100-4 Шестнадцатеричные редакторы BIEW (http://belnet.dl.sourceforge.net/sourceforge/biew/biew562.tar.bz2) – HEX-редактор, дизассемблер, криптор и инспектор ELF-формата в одном флаконе. Встроенный ассемблер отсутствует, поэтому модифицировать программу приходится непосредственно в машинном коде, что напрягает. Но выбора все равно нет (разве что дописать ассемблер самостоятельно). Дамперы В *nix-системах содержимое памяти каждого из процессоров представлено в виде набора файлов, расположенных в каталоге /proc. Здесь же хранится контекст регистров и все остальное. Однако дамп памяти - это еще не готовый ELF-файл, и к непосредственному употреблению он не пригоден. Тем не менее, дизассемблировать его "сырой" образ вполне возможно. Автоматизированные средства защиты Упаковщики исполняемых файлов используются не только для уменьшения размеров программы, но и для затруднения ее взлома. Под Windows такая мера никого не остановит, а вот *nix – другое дело! Автоматических распаковщиков нет, дамперы и не ночевали, отлаживать нечем (кроме Linux-систем - там-то есть достойный отладчик). Просто пропускаешь файл через упаковщик, и тогда его никто не расковыряет. То есть расковырять, конечно, смогут, но для этого хакеру понадобятся весьма серьезные мотивы к этому, чего у него обычно нет. Минус всех упаковщиков в том, что они серьезно снижают мобильность защищенной программы (в особенности если содержат системно-зависимые антиотладочные приемы), к тому же все известные мне упаковщики нацелены исключительно на Linux и не работают под FreeBSD и другие UNIX-клоны, хотя в написании такого упаковщика нет ничего невозможного. Shiva (www.securereality.com.au) – самый мощный упаковщик из всех имеющихся, хотя и основан на морально устаревших идеях, известных Windows-программистам с незапамятных времен. Реализует многослойную модель шифровки по типу "лука" (onion's layer) или "матрешки", использует полиморфный движок, нашпигованный множеством антиотладочных и анти-дизассемблерных приемов, противодействует Gdb и другим отладчикам, работающим через Ptrace, успешно борется с strace/ltrace/fenris, а также предотвращает снятие скальпа (то есть дампа) программы через /proc. Подробности на Blackhat: www.blackhat.com/presentations/bh-federal-03/bh-federal-03-eagle/bh-fed-03-eagle.pdf. Вопреки распространенному мнению о несокрушимости Shiva, для опытного хакера она не преграда. К тому же агрессивная природа упаковщика приводит к многочисленным проблемам, например, перестает работать Fork. Тем не менее появление Shiva – большой шаг вперед, и для защиты от начинающих взломщиков это лучший выбор! Burneye (http://packetstormsecurity.nl/groups/teso/burneye-1.0.1-src.tar.bz2) – популярный, но не слишком стойкий упаковщик/протектор. Уже давно взломан, и руководство по его преодолению в Сети не найдет только ленивый. Вот только некоторые из них: www.securitylab.ru/tools/32046.html, www.activalink.net/index.php/BurnEye Encrypted Binary Analisis, www.incidents.org/papers/ssh_exploit.pdf. Использует крайне примитивный механизм определения отладчика – просто подает сигнал 5 (Trace/breakpoint trap), в отсутствии GDB или чего-то очень на него похожего передающий управление на специальную процедуру, увеличивающую значение "секретной" ячейки памяти на единицу, а в присутствии – вылетающий в отладчик. При наличии "правильного" отладчика, работающего в обход Ptrace, наподобие THE DUDE или LINICE, ломается элементарно, хотя и не так быстро, как хотелось бы (приходится продираться через тонны запутанного кода, напоминающего мычание коровы, погулявшей на маковом поле). Для защиты от невъедливого хакера Bruneye вполне подходит, а большего нам чаще всего и не надо! |