код сапфира
Feb. 12th, 2003 01:37 pmИнтересный документ (спасибо,
malaya_zemlya): подробный разбор кода червяка "Сапфир", который недавно парализовал большую часть интернета в течение суток где-то. На ассемблере.
Если кто-то не знает, как работают такого рода червяки и эксплойты (?), и знает ассемблер, советую поглядеть -- интересно. Сам код довольно простой. Мне приходилось писать shell code (для интереса, никогда "вживую" ничего не выпускал), хотя года четыре уже этим не занимался. Такой, думаю, легко написал бы, если бы стояла задача и уже известна была дырка в SQL-сервере, которой этот червяк пользуется.
На самом деле, это один из наиболее тревожных аспектов в таких историях -- то, насколько легко хорошо знающий ассемблер грамотный программист может писать такие штуки. В данном случае причём дырка была давно известная и заделанная всякими официальными патчами, которые никто не ставил.
Кстати, проверка правильного местонахождения таблицы экспортов там довольно неудачная, можно было сделать грамотнее, чтобы он лучше работал с разными версиями DLL-я.
Трюк с засовыванием строк в стэк несколькими push-ами (каждый push - четыре символа) милый, но тоже хорошо известный. Я, кажется, всё же не так делал, а совал строки где-нибудь рядом с кодом и выцарапывал их через смещение от eip в какой-то точке.
Если кто-то не знает, как работают такого рода червяки и эксплойты (?), и знает ассемблер, советую поглядеть -- интересно. Сам код довольно простой. Мне приходилось писать shell code (для интереса, никогда "вживую" ничего не выпускал), хотя года четыре уже этим не занимался. Такой, думаю, легко написал бы, если бы стояла задача и уже известна была дырка в SQL-сервере, которой этот червяк пользуется.
На самом деле, это один из наиболее тревожных аспектов в таких историях -- то, насколько легко хорошо знающий ассемблер грамотный программист может писать такие штуки. В данном случае причём дырка была давно известная и заделанная всякими официальными патчами, которые никто не ставил.
Кстати, проверка правильного местонахождения таблицы экспортов там довольно неудачная, можно было сделать грамотнее, чтобы он лучше работал с разными версиями DLL-я.
Трюк с засовыванием строк в стэк несколькими push-ами (каждый push - четыре символа) милый, но тоже хорошо известный. Я, кажется, всё же не так делал, а совал строки где-нибудь рядом с кодом и выцарапывал их через смещение от eip в какой-то точке.
no subject
Date: 2003-02-12 08:17 am (UTC)Well, such programmers tend to be employed and they rarely gonna write such code for free. The number of, hmm, entities, who are ready to pay for such programming, are limited, and they will never attack randomly (unless they are El Qaeda et al, may be, dunno...) The sysadmin of a computer, who expects that it could be attacked, should apply patches regularly.
I mean, there is a threat, but it's not huge.
(sorry for English)
no subject
Date: 2003-02-12 09:20 am (UTC)Напомню также, что внутри известного вируса ILoveYou содержались слова "I hate school".
no subject
Date: 2003-02-12 11:08 am (UTC)Пессимистический прогноз :-(
Date: 2003-02-13 05:31 am (UTC)любой человек имеющий, скажем 300 USD, и НЕ имеющий квалификации, может поставить интернет на колени.
(если написание червя из 300 байт занимает 3 часа, рейт $100/час выглядит неплохо - достаточно найти ОДНОГО специалиста согласного заработать быстрые деньги)
Это один из самых веселых способов потратить $300 (и можно потом газетные вырезки хранить), а уж в случае когда одна группа людей (та же Аль Каида) желает причинить неприятности другой группе, лучшего капиталовложения им не найти!
На мой взгляд решением проблемы является НЕ хорошая работа для программистов, а повышение защищенности сетей.
e.g. если найти - назначить виновного а этой эпидемии (виновный в затоплении города - мэр, который не выделил средств на укрепление дамбы, а не солнышко, которое растапливает снега), то он приложит все усилия, чтоб это не повторилось.
вариант 1 - виновником признается Microsoft, выпустившая дырявый софт.
результат - MS один раз выплачивает хорошую сумму (оплата трафика, рабочего времени админов итд), которая все покрывает, и дальше НА САМОМ ДЕЛЕ пытается делать так, чтобы дырок не было.
вариант 2 - виновником признаются ISP которые хостили уязвимые сервера на своих площадках.
результат - хостинг windows сервера будет стоить в сто раз дороже хостинга unix, который в большинстве случаев более защищен.
от клиентов будет ТРЕБОВАТЬСЯ постоянный апдейт сервера (иначе ISP расторгает контракт). ISP будут наконец то проводить аудит безопасности своих сетей
вариант 3 - виновник - хозяин каждого ломаного сервера.
результат - директора фирм начнут организовывать у себя службы защиты информации, начнут платить деньги админам, которые умеют и делают своевременный патчинг серверов.
пока что, цивилизация воспринимает эпидемии без связи с причинами. Оп-па, червяк морриса N лет назад. Оп-па червяки пошли выходить два раза в год и чаще (если учитывать почтовые вирусы). Пока 'виновный' - это кто-то неопределенный, эти эпидемии не являются ничьей проблемой, никто не меняется, чтобы избежать их. А на самом деле это "преступление" у которого несколько соучастников:
1. алчный производитель дырявого продукта быстрого приготовления (если он не ОБЯЗЫВАЕТ клиентов патчить софт)
2. ленивый админ сервера
3. тупой начальник не уволивший ленивого админа
4. жадный и ленивый ISP который допускает в своей контролируемой им сети такие дырявые сервера
если все они или хотя бы некоторые из них постявят своей целью предотвратить эпидемии, их больше не будет. А пока проблема ни во мне, ни в вас, ни в нашимх знакомых, никто и ничто не изменится.
Re: Пессимистический прогноз :-(
Date: 2003-02-13 07:55 am (UTC)BTW, 3. тупой начальник не уволивший ленивого админа
I would say: stupid manager, who didn't want to spend money to hire a good admin (they tend to be more expensive).
Yet more BTW: Bruce Schneier wrote an article a year ago exactly on that subject.
But I'm not pessimistic about the situation: it will improve eventually, when that managers will be taught more and more times, in that sense even El Qaeda takes it share in the education of Western World :)