Аудит и дизассемблирование exploit'ов

         

Как препарируют exploit'ы


Основной код exploit'а, как правило, пишется на переносимом высокоуровневом языке таком как Си/Си++, Perl, Python. Экзотика типа Ruby встречается намного реже, но все-таки встречается. В практическом плане это означает, что администратор ### кодокопатель должен владеть десятком популярных языков хотя бы на уровне беглого чтения листингов. Впрочем, в девяти из десяти случаев, ничего интересного в них не встречается, и весь боевой заряд концентрируется в "магических" строковых массивах, оформленных в стиле "\x55\x89\xE5…\xC7\x45\xFC". Вот это и есть shell-код в ASCII-представлении. Высокоуровневый код— всего лишь обертка, образно говоря, тетива или пусковая установка, а shell-код — разящие острие.

Достаточно многие исследователи допускают роковую ошибку: анализируя shell-код, они забывают о том, что основной код может содержать вредоносные инструкции наподобие "rm -rf /". При знании языка, пакости подобного типа обнаруживаются без труда, если, конечно, злоумышленник не стремился воспрепятствовать анализу. Существует масса способов замаскировать вредоносный код в безобидные конструкции. Взять хотя бы строку '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see', разворачиваемую Perl'ом в команду "rm -rf /", которая при запуске из-под root'а уничтожает все содержимое диска целиком.

Отсюда вывод: никогда не запускайте на выполнение код, смысла которого до конца не понимаете и уж тем более не давайте ему администраторских полномочий! Не поддавайтесь на провокацию!

Даже на авторитетных сайтах проскакивают exploit'ы, созданные с одной-единственной целью — отомстить если не всему человечеству, то хотя бы его части. Помните, что самая большая дыра в системе — это человек, знающий пароль root'а (администратора) и запускающий на рабочей машине все без разбора!

Больше на анализе базового кода мы останавливаться не будем (если вы знаете язык — это тривиально, если нет — не надейтесь, что автору удалось уложить многостраничные руководства в скромные рамки журнальной статьи ### главы).



Содержание раздела