Олег Бойцев - Защити свой компьютер на 100% от вирусов и хакеров
- Название:Защити свой компьютер на 100% от вирусов и хакеров
- Автор:
- Жанр:
- Издательство:046ebc0b-b024-102a-94d5-07de47c81719
- Год:2008
- Город:СПб.
- ISBN:978-5-388-00347-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Олег Бойцев - Защити свой компьютер на 100% от вирусов и хакеров краткое содержание
Подумайте, сколько ценной информации хранится на вашем компьютере – начиная с достаточно безобидных сведений о вас и вашей работе и заканчивая действительно конфиденциальными данными (пароли к кредитным картам, финансовые документы, личная переписка и т. д.). А теперь представьте, что ваш компьютер взломали и вся зга информация стала доступна посторонним людям. Или злобный вирус уничтожил половину содержимого жесткого диска, и вы потеряли готовый проект, который необходимо сдавать через два дня. Представили? Понравилось?
Самое страшное, что эти случаи – вовсе не фантастика. Достаточно пару раз пренебречь несложными правилами компьютерной безопасности – и злоумышленнику не составит никакого труда получить доступ ко всей вашей информации, а вирусы будут плодиться на вашем компьютере один за другим. Согласитесь, вам есть что терять – и есть что защищать.
Именно для тех, кто желает защитить свой компьютер и себя от неприятных сюрпризов, и написана эта книга. С ее помощью вы научитесь защищаться от вирусов и прочих вредоносных программ, распознавать и отражать хакерские атаки, уловки интернет-мошенников, контролировать доступ к тем ресурсам, которые не должен посещать ваш ребенок.
Защити свой компьютер на 100% от вирусов и хакеров - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Упаковка
Начнем с упаковки как самого популярного метода сокрытия вирусного кода. К слову будет сказано, именно упаковка является самым простым инструментом, чтобы скрыть вирус, который уже засветился в антивирусных базах.
Упаковка заключается в сжатии исполняемого файла и прикреплении к нему кода, необходимого для распаковки и исполнения.
Как метод сокрытия упаковка представляет собой довольно грозное оружие. Достаточно привести пример: грамотно упакованный червь способен вызвать не менее серьезную, чем его первообраз, эпидемию, ведь такой червь распознается антивирусами как новый экземпляр. Не секрет, что большинство из ныне присутствующих в сети вредоносных программ есть не что иное, как модификации посредством упаковки. Например, широко известный троянский конь Backdoor.Rbot распространяется упакованным множеством различных упаковщиков (Ezip, Exe32Pack, ExeStealth, PecBundle, PECompact, FSG, UPX, Morphine, ASPack, Petite, PE-Pack, PE-Diminisher, PELock, PESpin, TeLock, Molebox, Yoda, Ezip, Krypton и др.).
Когда антивирусу попадается упакованный файл, он его, понятное дело, пытается распаковать. Получается, что чем с большим количеством упаковщиков способен работать антивирус, тем больше у него шансов обнаружить упакованный код.
Поддержка большого количества разновидностей упаковщиков и архиваторов особенно критична для проверки почтовых систем, так как подавляющая часть вирусов пересылается по почте в архивированном виде.
Вам наверняка интересно понять разницу между архиватором и упаковщиком. А разница в том, что сжатое упаковщиком разжимается в память, архиватором – на диск.
Понятно, что добраться до упакованного кода можно, лишь распаковав его. Но и это не всегда просто. Посмотрим почему.
Распаковщики делятся на динамические и статические. Динамические распаковщики (например, procdump или PEiD) запускают файл и создают распакованный вариант файла из образа, загруженного в память. Однако, если этот файл содержал вирус (а он его содержит!), система может быть повреждена раньше, чем антивирус успеет что-либо сделать. Кроме того, у упаковщиков существует ряд приемов борьбы с динамической распаковкой, например расшифровывать код не полностью, а лишь по мере исполнения, или, например, расшифровывать и запускать вирус целиком только в определенный день недели.
Статические распаковщики – это те, которые пытаются распаковать файл, не запуская его (например, CUP386 или UNP). Очень часто статические распаковщики оказываются бесполезны, если алгоритм упаковки требует запуска файла.
Чтобы представить себе весь размах упаковки, достаточно привести этот скромный список упаковщиков, применяемых при сокрытии вирусного кода: EP (ExE Pack), ACProtect, Active PE Scrambler, AHTeam UPX Mutanter, Armadillo SPS, ASPack, ASProtect, ASProtect SKE, aUS [Advanced UPX Scrambler], Beria, DEF, Enigma Protector, Exe Stealth, Exe32Pack, EXECryptor, EXERefactor, eXPressor, Fake Ninja, fileEncrypt, FSG, GPcH Protect, Hide PE, HidePX, hyings PE-Armor, JDPack, KByS Packer, kkrunchy, Krypton The Krypter, Mew 11 SE, MoleBox Pro, Morphine, mPack, MSLRH, nPack, NsPack, Obsidium, ORiEN, Packman, PC Guard, PE Diminisher, PECompact, PELock, PEQuake, PESpin, PeStubOEP, Petite, PeX, Private exe Protector, PseudoSignerRLP, SDProtector Pro, Special EXE Password Protector, SHProtector, ShrinkWrap, SLVc0deProtector, Spirits PE Crasher, Stealth PE, tElock, Themida,
TPPpack, TrueEP, Unopix, UPX, VB AntiCrack, VMProtect, WinUpack, yoda Crypter, yoda Protector, [G!X]s Protector.
Кому-то из читателей этот список, наверное, может показаться большим – а ведь это всего лишь десятая часть от того, что в настоящее время применяется.
Очень часто, чтобы запутать антивирус и сделать так, чтоб тот не смог распознать, чем запакован код, вирус дополнительно пропускают через утилиты типа PEiD, основной задачей которого является изменение точки входа в программу, но об этом более подробно в подразд. "Обфускация" этого раздела.
Полиморфизм
Полиморфизм представляет собой способность вируса в процессе работы менять свой код таким образом, чтобы максимально затруднить процесс своего обнаружения путем сигнатурного сканирования и частично эвристики.
Особо следует отметить тот факт, что и сама процедура, определяющая мутацию кода, не должна быть постоянной. Такая процедура изменения вируса видоизменяется при каждом новом заражении.
На самом деле обнаружение грамотно написанного полиморфного вируса средствами обычного сигнатурного сканирования невозможно. Неудивительно, что с появлением полиморфизма во многих антивирусных продуктах появились принципиально новые техники обнаружения: эвристика и эмуляторы кода.
Первый известный полиморфный вирус 1260 был написан Марком Вашберном (Mark Washburn) уже в далеком 1990 году.
Пожалуй, самый простой способ реализации полиморфизма заключается в том, чтобы побайтно зашифровать основную часть вируса операцией XOR (листинг 5.3).
Листинг 5.3. Побайтное шифрование – простейший пример
mov cx, code_length
mov si, offset begin_code
mov al, xor_key
_loop:
xor [si+cx], al расшифровываем байт
loop _loop ;берем следующий байт
jmp si
;...
;...
begin_code:
;зашифрованная часть тела вируса – здесь!
;она ответственна за заражение новых файлов
;и создание новой процедуры расшифровки
В качестве примера уместно привести описание следующего полиморфного вируса (www.virusList.com).
Virus.Win32.Zombie – сложный полиморфный вирус, который использует уникальную технологию встраивания в файлы: вирус "разбирает" (дизассембли-рует) PE EXE-файл на составные части, встраивает свой код и собирает заново, перемешивая при этом свой код и код заражаемого файла. Virus.Win32.Zombie использует уникальную технологию декриптования своего тела для обхода эвристических анализаторов.
Обфускация
Обфускация (от лат. obfuscare – «затенять, затемнять») – техника, направленная на запутывание кода программы, то есть приведение исходного текста или исполняемого кода к работающему виду, но затрудняющему анализ такого кода.
Обфускация может быть проведена на уровне алгоритма, на уровне исходного текста или вообще ассемблерного текста. Так, создание запутанного ассемблерного текста может быть достигнуто путем использования специализированных компиляторов. Такие компиляторы, как правило, заново создают код, используя для этого недокументированные возможности среды выполнения программы.
Для создания "запутанного" кода существуют специализированные утилиты, которые так и называются– обфускаторы.
В контексте сокрытия вирусного кода суть метода заключается в том, чтобы запутать программный код и устранить в нем большинство логических связей, делая код максимально неузнаваемым антивирусным ПО (листинги 5.4, 5.5).
Листинг 5.4. Некоторые примеры обфускации кода. Пример № 1
int COUNT = 100;
float TAX_RATE = 0.2;
for (int i=0; i
{
tax[i] = orig_price[i] * TAX_RATE; price[i] = orig_price[i] + tax[i];
}
Код после обфускации:
for(int a=0;a<100;a++){b[a]=c[a]*0.2;d[a]=c[a]+b[a];}
Листинг 5.5. Некоторые примеры обфускации кода. Пример № 2 (Perl)
Читать дальшеИнтервал:
Закладка: