Вскрытие червяка Крис Касперски aka мыщъх Спецвыпуск Xakep, номер #045, стр. 045-044-4 Долг перед видом, или Рожденный, чтобы умереть Считается, что естественная цель всех живых организмов (и червей в том числе) – это неограниченная экспансия, или, попросту говоря, захват всех свободных и несвободных территорий. На самом деле, это неверно. Чтобы не подохнуть от голода, каждый индивидуум должен находиться в гармонии с окружающей средой, поддерживая баланс численности своей популяции в равновесии. Нарушение этого правила оборачивается неизменной катастрофой. Червь должен бережно относиться к ресурсам кибернетического мира – оперативной и дисковой памяти, процессорному времени и пропускной способности сетевых каналов, по-братски разделяя их с остальными обитателями "глубины". Предоставленные сами себе, черви размножаются в геометрической прогрессии, и численность их популяции взрывообразно растет. А ведь толщина магистральных интернет-каналов не безгранична! Рано или поздно сеть перенасыщается червями и "встает", не только препятствуя их дальнейшему размножению, но и поднимая с постели матерящихся администраторов, устанавливающих свежие заплатки и перетирающих червей в труху. Поймите же вы наконец, что администраторы объявляют войну лишь тем червям, которые им сильно досаждают. Ведите себе скромнее! Будьте тише воды, ниже радаров! Тактика и стратегия Основные враги ниндзя – это темнота, неизвестность, колючая проволока и волкодавы, снующие по охраняемой территории. Подготовка к заброске shell-кода начинается с определения IP-адресов, пригодных для вторжения. Если червь находится в сети класса С, три старших бита IP-адреса которой равны 110, то ее можно и просканировать (распотрошите любой сканер, если не знаете как). Сканирование сетей остальных классов занимает слишком много времени и немедленно привлекает к себе внимание администраторов, а этим черви предпочитают не злоупотреблять. Вместо этого они выбирают пару-тройку случайных IP-адресов, выдерживая каждый раз секундную паузу, дающую TCP/IP-пакетикам время рассосаться и предотвращающую образование "запоров". Червь Slammer, поражающий SQL-сервера, не делал такой паузы и поэтому сдох раньше времени, а вот Love San жив и поныне. Nimda и некоторые другие черви не играют в кости и определяют целевые адреса эвристическим путем: анализируя содержимое жесткого диска (перехватывая проходящий сквозь них трафик), они ищут url'ы, е-mail'ы и прочие полезные ссылки, занося их в список кандидатов на заражение. Затем кандидаты проходят предварительное тестирование. Червь должен убедиться, что данный IP-адрес действительно существует, удаленный узел не висит и на нем установлена уязвимая версия сервера или операционная система, известная червю и совместимая с shell-кодом одной или нескольких его голов. Первые две задачи решаются предельно просто: червь отправляет серверу легальный запрос, на который тот обязан ответить (для web-сервера это запрос GET), и, если сервер что-то промычит в ответ, значит жив, курилка! Заметим, что отправлять серверу эхо-запрос, более известный в народе как ping, неразумно, так как его может сожрать недружелюбно настроенный брандмауэр. |