Перейти к содержанию
Иван

Эволюция технологий самозащиты вредоносных программ

Recommended Posts

Иван

Алиса Шевченко из Касперского написала статью

Эволюция технологий самозащиты вредоносных программ

Мы попробуем проследить пути зарождения «инстинкта самосохранения» вредоносных программ, его эволюцию под давлением все более жестких для вируcов условий и оценить, каково нынешнее положение дел.

Но прежде необходимо определить, что именно мы будем понимать под словосочетанием «самозащита вредоносных программ». Оно не столь однозначно, как кажется на первый взгляд. Нападение на антивирус — это, очевидно, вид самозащиты. Сокрытие следов функционирования — тоже в каком-то смысле самозащита, хотя уже не столь явная. И уже совсем не очевидно, что самозащитой является и сам факт эволюции вредоносных программ. Однако это так. Ведь одной из мотиваций вирусописателя к поиску новых платформ для заражения, новых лазеек в системе является в том числе и желание выпустить свое детище в свободную среду — в такую область, куда еще не смотрит ни одна пара глаз, потому что там никогда ничего не находили.

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

http://www.viruslist.ru/analysis?pubid=204007553

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vaber

Интересная статья, достаточно обширная.

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

Основной уклон делается в сторону поведенческого анализа, с чем лично я, собственно, согласен.

Была затронута тема бестелесых вирусов - в частности который хранит свой бинарник в параметре реестре. Вероятно имелся ввиду 0x48k Registry Backdoor от Cr4sh (hellknights.void.ru/releases.php).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
EP_X0FF

Интересная статья, ничего нового в ней нет. Это скорее констатация собственной беспомощности.

Вопрос к автору, когда это Gromozon стал использовать DKOM, для чего отрастил драйвер и загрузился в ядро?

По поводу "Заключения".

Посмеялся от души минуты две.

"Фи какие вы противные, безответственные и ам0ральные".

А кого, извините, е*?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Иван

жестокий циничный вы человек :D

надо верить в светлое и прекраное, атор обращается к этим чувствам читателя :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
A.

Вадим Богданов, Алексей Де-Мондерик, Евгений Касперский

Сентябрь 1992

Несколько советов авторам вирусов

Успокойтесь! Не надо готовить ругательства или, наоборот, потирать руки. Мы не хотим делиться своими идеями с авторами компьютерных вирусов. Все значительно проще - через наши руки прошло несколько сотен образцов компьютерных животных, и слишком часто в них встречались одни и те же ошибки. С одной стороны, это хорошо - такие вирусы часто оказываются "маложивущими", но с другой стороны, малозаметная ошибка может привести к несовместимости вируса и используемого на компьютере программного обеспечения. В результате вирус "вешает" систему, компьютер отдыхает, а пользователи мечутся в панике с криками: "Пусть хоть 100 вирусов, лишь бы компьютер работал!!!" (завтра сдавать заказ, не запускается самая любимая игрушка, компилятор виснет при выходе в DOS и т.п.). И все это происходит при заражении довольно безобидным вирусом.

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

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

(Ст.98 УК РСФСР)

Правило 0. Не надо писать вирусы - на свете так много интересного! Если нечего делать, то перепишите что-нибудь с DOS на Windows, если хочется прославиться - сделайте то же самое, но потом раздайте свою программу всем желающим и нежелающим.

Правило 1. При запуске вирус должен сохранять все регистры, которые передает DOS загружаемой программе (то есть не только AX, DS и ES, но и остальные), а при переходе на программу восстанавливать их (за исключением корректировки SS:SP, если это нужно). Почему? Объясняем.

Существуют (и обязательно появятся еще) программы, которые используют для своих нужд значения регистров, передаваемых из DOS'а при загрузке. Например, довольно популярный архиватор COM- и EXE-файлов DIET (версия 1.10а) при распаковке запускаемых COM-файлов предполагает, что значение регистра ВХ обязательно должно быть равно 0000h. Если подобная программа будет заражена вирусом, который не восстанавливает регистры при передаче управления на тело программы, то она скорее всего "умрет" при загрузке.

При загрузке регистры принимают значения (верно для MS-DOS 3.30 - 5.0): AX = BX - корректность имени диска в командной строке (0 или 00FF); CX, BP - не определены; DX=DS; SI=IP; DI=SP.

Правило 2. Если вы используете или корректируете системные области DOS (буферы, стек, фрагменты обработки прерываний), вы обязательно должны проверять, в какой системе находитесь. Почему? Объясняем.

Как правило, каждая следующая версия DOS своей внутренней организацией не похожа на предыдущую. Это касается и буферов, и стека, и многого другого. Поэтому, если вы полностью дизассемблировали и разобрали по косточкам версию MS-DOS 3.30, это вовсе не значит, что вы постигли все тайны фирмы Microsoft и вам можно ставить памятник. Нет! Вам следует перекурить и приниматься за версию 4.0х, потом 5.00 а в минуты отдыха и по ночам потрошить DR-DOS.

Правило 3. При заражении программ сначала записывайте вирус, а затем модифицируйте начало файла (в случае, если вирус пишется в начало или середину файла - сначала сохраните стираемую часть, а затем записывайте вирус). Почему? Объясняем.

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

Правило 4. Если вы заражаете COM- и ЕХЕ- файлы, сохраняйте первые два байта заражаемой программы и проверки "COM или ЕХЕ" проводите только по ним (напомню - в начале ЕХЕ-файлов должна быть сигнатура - 4D5Ah или 5A4Dh). Говорим об этом только потому, что участились случаи появления вирусов, которые проверяют "COM или ЕХЕ" по способу: равен регистр CS регистру DS (ES) или нет (некоторые даже умудряются проверять по регистру IР, - равен он 100h или нет). Это в корне неверно, так как при запуске ЕХЕ-файла регистр CS может быть равен регистру DS (если в ЕХЕ-заголовке по смещению 16h стоит слово FFF0h), а регистр IР- 100h (слово по смещению 14h - 100h). Мы, например, при работе с вирусами иногда используем именно такие файлы.

Кстати, до сих пор попадаются вирусы, которые определяют формат файла по расширению его имени (.COM или .EXE). О том, что это является грубой ошибкой, знают даже в детских садах!

Правило 5. При заражении ЕХЕ-файлов обязательно сравнивайте длину файла с длиной загружаемого модуля. Если они не совпадают, то такой файл лучше не трогать, так как вы либо уничтожите оверлей, либо программа перестанет загружаться в память. Для ЕХЕ-файлов также следует проверять значения стековых регистров, иначе в некоторых случаях вирус будет уничтожен стеком. Так же проверяйте длину СОМ-файлов: не следует их делать больше, чем 64 Кбайта.

Правило 6. Учтите, чем дальше, тем больше вашим вирусам придется сталкиваться с защищенным режимом процессоров 80х86, в котором, как известно, перехват прерывания 21h является довольно тонким вопросом. Если вы перехватываете int 21h "по-старинке", то многие новые продукты (например, Borland С++ 3.0) будут зависать, а Windows при нескольких DOS-задачах в фоновом режиме может выдать "unrecoverable application error".

Для того, чтобы избежать этого, помимо всех известных правил подмены критических прерываний (установка флагов и регистров на выходе), существуют еще два:

* непосредственно перед вызовом OLD 21 нужно запретить аппаратные прерывания (cli);

* для всех функций, которые не обрабатывает ваш резидент, OLD 21 нужно выполнять через JMP, а не через CALL.

Правило 7. Теперь насчет порчи программ и дисков. Сравните вирусы зарубежного и отечественного производства. Вам сразу бросится в глаза, что почти каждый советский вирус, в отличие от зарубежных (не считая тайваньских: "Восток - дело тонкое"), что-нибудь, да испортит. Даже большая группа болгарских вирусов не идет ни в какое сравнение с нашими вирусами по части пакостей. Что это - особенности русской (точнее - советской) души или наследие сталинизма?

Короче, если вы пишете вирус, старайтесь воздерживаться от вставки пакостей - это может вам же выйти боком. Несмотря на отсутствие в нашем уголовном законодательстве статьи о написании вирусов, там есть другая статья - "причинение материального ущерба". Вот по этой статье вас и посадят, тем более, что такой случай уже был (по сообщению Н. Н. Безрукова). Ну, а если и не посадят, то пострадавшие могут найти и, извините, морду набить. И такие случаи тоже бывали.

Ну а уж если вы все-таки вставили какую-то гнусность, то запускайте свой вирус на своем компьютере и - наслаждайтесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Михаил Кондрашин

A.

Как все было славно в начале славных дел...

Что можно было бы написать авторам современных угроз? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сергей Ильин

Я бы назвал этот документ "Памяткой вирусописателя" :-)

A., спасибо! Я думаю многим было очень интересно с ним ознакомиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Сообщения

    • demkd
      а вот это странно, надо будет почитать может еще что-то отключать надо
    • SQx
      В моем случае я кажется нашел этот - DhcpDomain папаметр: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\{64846981-4885-4d8b-af0b-1097a90e00f6} EnableDHCP REG_DWORD 0x1 Domain REG_SZ NameServer REG_SZ DhcpServer REG_SZ 192.168.2.1 Lease REG_DWORD 0x3f480 LeaseObtainedTime REG_DWORD 0x6145e5fe T1 REG_DWORD 0x6147e03e T2 REG_DWORD 0x61495bee LeaseTerminatesTime REG_DWORD 0x6149da7e AddressType REG_DWORD 0x0 IsServerNapAware REG_DWORD 0x0 DhcpConnForceBroadcastFlag REG_DWORD 0x0 DhcpNetworkHint REG_SZ 8616070797 RegistrationEnabled REG_DWORD 0x1 RegisterAdapterName REG_DWORD 0x0 IPAddress REG_MULTI_SZ SubnetMask REG_MULTI_SZ DefaultGateway REG_MULTI_SZ DefaultGatewayMetric REG_MULTI_SZ DhcpIPAddress REG_SZ 192.168.2.103 DhcpSubnetMask REG_SZ 255.255.255.0 DhcpDomain REG_SZ home DhcpNameServer REG_SZ 192.168.2.1 DhcpDefaultGateway REG_MULTI_SZ 192.168.2.1 DhcpSubnetMaskOpt REG_MULTI_SZ 255.255.255.0 DhcpInterfaceOptions REG_BINARY FC00000000000000000000000000000043880400790000000000000000000000000000004388040077000000000000000000000000000000438804002F000000000000000000000000000000438804002E000000000000000000000000000000438804002C000000000000000000000000000000438804002B0000000000000000000000000000004388040021000000000000000000000000000000438804001F000000000000000000000000000000438804000F000000000000000400000000000000C339F780686F6D6506000000000000000400000000000000C339F780C0A8020103000000000000000400000000000000C339F780C0A8020101000000000000000400000000000000C339F780FFFFFF0033000000000000000400000000000000C339F7800003F48036000000000000000400000000000000C339F780C0A8020135000000000000000100000000000000C339F78005000000 DhcpGatewayHardware REG_BINARY C0A8020106000000B8D94D42ED7E DhcpGatewayHardwareCount REG_DWORD 0x1 также я могу его пинговать. >ping -a home Pinging home.home [192.168.2.1] with 32 bytes of data: Reply from 192.168.2.1: bytes=32 time=1ms TTL=64 Reply from 192.168.2.1: bytes=32 time=1ms TTL=64  
    • SQx
      Мне ЛК, также написали:
        Но пользователь сказал, что не было галочки на "Автоматически определять настройки".
    • PR55.RP55
      Например есть  пакет с драйверами ( сотни... тысячи драйверов ) Предполагается использовать этот пакет для обновления системных драйверов, или WIM Часть драйверов подписана, часть нет... Хотелось бы, чтобы uVS  ( по команде в меню: Файл ) - создала из этих драйверов пакет установки\обновления. Копию только из подписанных ( прошедших проверку ( и проверенных по SHA ) драйверов. Копию по типу программы: " Double Driver" http://soft.oszone.net/program/5936/Double_Driver/ + Возможность создать копию системных драйверов, системы - но, опять таки... копировать только подписанные драйвера и те, что есть в базе SHA.  
    • demkd
      гляну, но это дыра с wpad все равно закрывается лишь отключением автонастройки прокси в браузере, больше никак.
×