Читаем Защити свой компьютер на 100% от вирусов и хакеров полностью

eval { eval "#" }; return length($@) != 0;

}

sub am_taint_checking {

my($k,$v) = each %ENV;

return is_tainted($v);

}

После обфускации:

sub z109276e1f2 { ( my $z4fe8df46b1 = shift ( @_ ) ) ; ( my

$zf6f94df7a7 = substr ( $z4fe8df46b1 ,

(0x1eb9+ 765-0x21b6) , (0x0849+ 1465-0x0e02) ) ) ; local $@ ;

eval { eval ( (

"" ) ) ; } ; return ( ( length ( $@ ) != (0x26d2+ 59-0x270d) ) )

; } my ( $z9e5935eea4 ) ; if ( @z6a703c020a ) { ( my (

$z5a5fa8125d , $zcc158ad3e0 ) =

File::Temp::tempfile ( "" , (0x196a+ 130-0x19eb) ) ) ; print (

$z5a5fa8125d "" ) ; ( print ( $z5a5fa8125d @z6a703c020a

) or die ( ( ( ( "" . $zcc158ad3e0 ) . "\x3a\x20" ) . $! ) ) ) ;

print ( $z5a5fa8125d "" ) ; ( close ( $z5a5fa8125d ) or die ( ( (

( "" ) ) ) ; ( @z8374cc586e = $zcc158ad3e0 ) ; ( $z9e5935eea4 =

(0x1209+ 1039-0x1617) ) ; } exit ; sub z021c43d5f3 { ( my (

$z0f1649f7b5 , $z9e1f91fa38 ) = each ( %ENV ) ) ; return (

z109276e1f2 ( $z9e1f91fa38 ) ) ; }

Как видите, в простейшем случае процедура обфускации заключается в переводе кода в нечитаемое (но рабочее) состояние.

Вышеописанные примеры – примеры так называемой высокоуровневой обфускации "мирного назначения". Если же ее экстраполировать на вирусный код, то изменится немногое: разве только то, что при маскировке вирусного кода используют в большинстве случаев низкоуровневую обфускацию (с применением команд ассемблера), а также программы для автоматической обфускации, например Afx!AVSpoffer, EPProt и PETools.

Технология обфускации может подразумевать следующие процедуры:

изменение таблиц импорта, экспорта и переадресации;

маскировка оригинальной Entry Point (точка входа в программу);

использование полиморфного варианта распаковки.

Продолжим рассмотрение вариантов сокрытия и рассмотрим особенности руткит-технологий.

<p>Руткит-технологии</p>

Термин руткит (от англ. root kit – «набор для получения прав администратора») есть не что иное, как программа или набор программ для скрытого взятия под контроль взломанной системы.

В контексте сокрытия вирусного кода в системе Windows под rootkit принято подразумевать такой код, который, будучи внедренным в систему, способен перехватывать системные функции (Windows API). Нетрудно догадаться, что такой перехват и модификация API-функций позволяют руткиту легко и просто замаскировать свое присутствие во взломанной системе.

Упрощенно все rootkit-технологии сокрытия можно разделить на две категории:

работающие в режиме пользователя (user-mode);

работающие в режиме ядра (kernel-mode).

User-mode-категория руткитов основана на перехвате функций библиотек пользовательского режима, kernel-mode – на установке в систему драйвера, осуществляющего перехват функций уровня ядра.

В настоящее время можно выделить следующие методы перехвата API-функций в режиме пользователя (user mode):

модификация таблицы импорта;

модификация машинного кода прикладной программы;

модификация программного кода API-функции;

перехват функций LoadLibrary и GetProcAddress.

Модификация таблицы импорта. Пожалуй, именно эта методика сокрытия претендует на звание классической. Технология такой маскировки заключается в следующем: rootkit находит в памяти таблицу импорта исполняемой программы и корректирует адреса интересующих его функций на адреса своих перехватчиков. Кажется, что все достаточно просто.

В момент вызова API-функции программа считывает ее адрес из таблицы импорта и передает по этому адресу управление. Поиск таблицы импорта в памяти несложен, поскольку для этого уже известны специализированные API-функции, позволяющие работать с образом программы в памяти.

Данная методика достаточно универсальна, к тому же она проста в реализации, но у нее есть существенный недостаток – при таком механизме перехватываются только статически импортируемые функции.

Модификация машинного кода прикладной программы. Как следует из названия, суть метода заключается в модификации машинного кода, отвечающего в прикладной программе за вызов той или иной API-функции. Реализация методики достаточно сложна, обусловлено это богатым разнообразием языков программирования и версий компиляторов, к тому же и сама реализация вызовов API-функций может быть различна.

Модификация программного кода API-функции. Методика заключается в том, что rootkit должен найти в памяти машинный код интересующих его API-функций и модифицировать его. При этом вмешательство в машинный код перехватываемых функций минимально. В начале функции обычно размещают две-три машинные команды, передающие управление основной функции-перехватчику. Основным условием такой методики является сохранение исходного машинного кода для каждой модифицированной им функции.

Перейти на страницу:

Похожие книги

1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих

Книга предоставляет полное описание приемов и методов работы с программой "1С:Управление небольшой фирмой 8.2". Показано, как автоматизировать управленческий учет всех основных операций, а также автоматизировать процессы организационного характера (маркетинг, построение кадровой политики и др.). Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, формировать разнообразные отчеты, выводить данные на печать. Материал подан в виде тематических уроков, в которых рассмотрены все основные аспекты деятельности современного предприятия. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов. Все приведенные в книге примеры и рекомендации основаны на реальных фактах и имеют практическое подтверждение.

Алексей Анатольевич Гладкий

Экономика / Программное обеспечение / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии