№47. Темная сторона силы: вирусы!

# СловоБредие

1 апреля 2004 года, приватный IRC-чат.

--- Лог начат 1.04.2004 ---

...

< sars>: под нары запинаю, баланду кислую
< n0p>: Купи-ка, лучше, слона!
< sars>: кильку косорылую
< n0p>: нафига тебе килька?
< n0p>: слона купи!
< sars>: слона?
< n0p>: слон индийский, на ходу, растаможенный. Все документы.
< sars>: он вкусный?
< n0p>: он живой!
< sars>: нафига мне живой, я есть хочу!
< Serrgio>: Мужики, название для игрового клуба придумайте! ;)
< n0p>: "Назгул"
< Uri>: Кстати, сорцы w2k у кого-нибудь есть?
< Edmond>: Я так и не скачал. А надо?
< Edmond>: И вообще, рассылку делаем или что?
< FatMoon>: ну надо бы... А кто верстает?
< Edmond>: Ты :))))
< FatMoon>: а я не умею :(
< Edmond>: у тебя дримвивер есть?
< FatMoon>: где-то есть. А как с ним того... работать?
< Edmond>: ну типа справку почитай ;)
< FatMoon>: чукча однако не читатель, чукча писатель.
< FatMoon>: Я лучше бредисловие напишу. Вот...
< Edmond>: Ага, ширнись, ширнись.;)
< Serrgio>: Да, вам ширяться не надо, из вас и так прет

Группа Hi-Tech представляет

Главный редактор: Фунт
Идея: FatMoon [Hi-Tech]
Бредея: Edmond [Hi-Tech]

< Edmond>: А кто такой "Фунт"?
< FatMoon>: Кто, кто... А сидеть потом кто будет? :)
< Edmond>: :) Все :))) Была бы статья, а человек найдется... или наоборот?
< Edmond>: как тебе в голову такое пришло, кстати?
< FatMoon>: А мне на болванку 2003-сервер закатали. Я ее поглаживаю так...
< FatMoon>: ...и говорю "Моя прелесть!" :)) Вот тут-то оно и родилось.

--- Log end ---

Иф ун гимбатул, Аз из дурбатулук

Три CD - для программистов,
С компилятором и справкой.
Семь для юзеров различных,
С фотошопом, базой данных,
Приложением для верстки
Текстов - книг, газет, журналов.
Девять - геймерам патлатым,
Что сидят неделю в клубах,
За игру лишь деньги платят,
И без сна сидят, без пищи.
А один, всесильный -
Властелину Темному,
Чтоб связать их всех
Для служенья коду

Февраль 2004. Лента новостей www.mazafaka.ru

Украден и опубликован исходный код Windows NT 4 и Windows 2000
Исходный код двух операционных систем компании Microsoft просочился в интернет. Первым об этом сообщил сайт Neowin, который назвал весть об утечке кода шокирующей. Согласно сообщению Neowin, на пиратских ресурсах интернета, в первую очередь, в IRC-чатах, появились два файла, один из которых содержит исходный код Windows 2000, а второй - код Windows NT 4...

Официальное заявление MicroSoft по поводу кражи кода Windows
Пока официальная реакция Microsoft довольно краткая: "В четверг компании Microsoft стало известно, что часть исходного кода Microsoft Windows 2000 и Windows NT 4.0 была незаконно выложена в открытый доступ в интернете. Публикация исходного кода Microsoft третьими лицами незаконна, и мы рассматривает этот инцидент со всей серьезностью"...

Водном из тёмных подвалов, которые уже давно забыты временем, обитало необычное существо, называвшееся "сисадмин". Подвал был сисадминский, а значит - сухой и светлый, благоустроенный. По стенам причудливо извивались витые пары, у дверей жужжал вентиляторами хаб, а по углам стояли сервера. Витые пары шли вдоль всей Серверной, как называли подвал юзеры на этажах выше, уходили в стену, а там... там стоял роутер, а за ним простиралась Дикая-Дикая Сеть. Сисадмина звали BillBounce - это был ник в честь какого-то древнего хакера, о котором теперь все забыли. А то, как его звали на самом деле, уже мало кто помнил, включая его самого. Однажды к сисадмину пришел известный хакер CodeGenDalf и с ним 13 программистов из соседнего подвала. И к своему удивлению, проснувшись после 20 литров пива на 15 человек, BillBounce вспомнил, что согласился учавствовать в Очень Распределенной Атаке на сервер одной компании за Бугром. Сервер находился за 12-ю роутерами и шестью брендмауэрами, а в конце их поджидал совершенно кошмарный FireWall. Где-то посередине пути, на 6-м роутере, вся компания отправилась в ближайший бар. И там BillBounce встретил странного опустившегося хакера, который за бутылку отдал ему золотой CD. На нем был записан архив с какими-то исходниками. Хотя они упорно не собирались воедино, оттуда можно было кое-что позаимствовать. В частности, там была процедура сетевой аутентификации, очень похожая на настоящую. И когда подошел черед последнего, самого ужасного FireWall'а, на запрос "Хто ты такой?" BillBounce честно ответил: "Administrator" и предложил пароль, подобранный с помощью той самой процедуры. И он сразу же подошел. Хм... похоже на сказку? Просто для Windows 2005 существует всего несколько паролей, удовлетворяющих требованиям безопастности. Судите сами - буквы не должны повторяться, не должно быть подряд пары букв на одном регистре, пароль не может содержать ни одного из осмысленных слов и словосочетаний из поставляемого в комплекте 400 000-словного словаря... согласитесь, вариантов остается не так уж и много?

Завалив сервер, сисадмин получил от своих новых друзей немного $$$ и свежий софт, после чего сел писать "System Sequrity Red Book". А временами вешал компы слишком наглых юзеров, ломившихся к нему - не без помощи процедурок, позаимствованных с того самого диска. Шло время, компании создавались и распадались, новые операционки теснили старые, старые сопротивлялись как могли - одним словом, происходила нормальная коммерческая борьба. И победа бесплатных open-source систем заставила всех вздохнуть с облегчением и забыть про призрак Врага за спиной...

FreeDev. 40 лет спустя...

После того, как известный во всем FreeDev программист и - ш-ш-ш! немного хакер - Бильбонс исчез из всех чатов, разговоры не стихали несколько дней. Кто говорил, что он подался к хакерам в Дремучий Лес, дело ли это для порядочного программиста - якшаться с хакерами? Кто говорил, что он получил письмо из Inel'a и теперь будет работать за Бугром. Юзеры почти ничего не заметили - вместо Бильбонса остался достаточно смышленый парнишка Фря, которому старый Бильбонс оставил сервера, список юзеров, базу DNS и странный золотой CD. Фря больше всего любил читать разные статьи и книги, а "System Sequrity Red Book" вообще была настольной. Вот и сейчас он увлеченно читал "Вирусное оружие", отхлебывая пиво из большой - специальной! - кружки, тоже подаренной Бильбонсом.

slon

Вирусное оружие

(часть 1)

"Учиться, учиться и ещё раз учиться"
В.И.Ленин

Исходники к статье.

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

ВИРУСНОЕ ОРУЖИЕ - программные средства разработанные специально для вредоносной акции (вирусной атаки).

Таким образом всё множество вирусов о которых вы слышите каждый день, в большинстве своём к вирусному оружию имеет такое же отношение, как стартовый пистолет к магнуму 45 калибра.

Чаще всего вирусное оружие разрабатывается и применятся как уже было сказано с какой-то конкретной целью.

Вирусное оружие теряет свою актуальность после того, как антивирусы начинают его детектировать. И для продолжения его использования его необходимо модифицировать. Сейчас мы наблюдаем полное бессилие антивирусных средств защиты даже перед обыкновенными вирусами. Если же говорить о профессиональном вирусном оружие, то скорее всего данные экземпляры крайне редко попадают к антивирусным компаниям. Следовательно у обычного пользователя (и даже у опытного сис.админа) практически нет никаких средств защиты против данных представителей вирусного семейства.

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

Я предлагаю следующую классификацию вирусного оружия:

1) Локальное вирусное оружие

а) Статичное

б) Динамичное

2) Удалённое вирусное оружие

а) Статичное

б) Динамичное

Локальное вирусное оружие - это то оружие которое не распространяется по LAN и через Internet. К статичному вирусному оружию относятся всяческие троянские кони, логические бомбы, клавиатурные шпионы и т.д. т.п. К динамическому вирусному оружию относятся вирусы.

Удалённое вирусное оружие не так сильно распространено, как локальное. К статичному относятся троянские кони работающие через локальные или глобальные вычислительные сети, к динамичному сетевые черви.

По моему мнению вирусное оружие можно разделить ещё по двум категориям:

1) Похищающее информацию
2) Разрушающее информацию

Чтобы показать возможности локального вирусного оружия мной были разработаны две программы:

1) Статическое вирусное оружие, уничтожающее информацию - "LOGICAL BOMB"
2) Динамическое вирусное оружие, уничтожающее информацию - вирус "PIKADOR"

Начнём с "LOGICAL BOMB" и того что в ней было реализовано:

0) Присоединение к любой "PE" программе
1) Полиморфизм с случайным количеством декрипторов
2) Простая EPO техника с антиэвристическим приёмом
3) Антиотладочные и антидизассемблерные трюки
4) Затирание нулями MBR и FAT

На момент написания статьи данная логическая бомба никакими антивирусами не идентифицировалась. То есть существует потенциальная возможность применения злоумышленниками программ данного класса. Рассмотрим листинг данной программы и подключаемых модулей:

Вначале идёт тело основной программы, в которой выводятся сообщения по её использованию и инфицируется программа носитель(см. l_bomb.asm).

Далее следует модуль генератора случайных чисел, который использует специфическую инструкцию процессора Pentium - rdtsc(см. r_gen32.asm).

Далее следует модуль, который генерирует исполнимый, трудноотлаживаемый мусор с элементами антиэвристических подпрограмм(см. t_gen32.asm).

Далее следует полиморфный генератор PGS, который генерирует от 1..25 декрипторов с тремя различными алгоритмами криптования и естественно случайным выбором ключа и случайными регистрами(см. pgs32.asm).

И вот мы подошли к одному из важнейших модулей данной программы - модулю деструкции. Данный модуль перезаписывает MBR и FAT винчестера, а так же восстанавливает украденные байты с точки входа. В нём находится множество антиотладочных и антидизассемблерных механизмов. (см. death32.asm)

Какие последствия применения данной логической бомбы вы наверное уже себе можете представить. Данная программа была представлена в этом тексте, в качестве доказательства бессилия антивирусных средств против направленно атаки. Что же нужно сделать чтобы не пострадать от аналогичных продуктов кибер подполья? Самое главное это нужно backup'ить архиважную информацию на CD, дискетах, а так же других носителях информации. Следующий шаг это проверка всех программ, которые будут запускаться на вашем компьютере не только антивирусными программами, но и таким устройством как голова. А для такой проверки необходимо: "учиться, учиться и ещё раз учиться".

(часть 2)

...Так кто ж ты, наконец?
-- Я -- часть той силы,
что вечно хочет
зла и вечно совершает благо.
Гете. "Фауст"

В предидущей части текста было рассказано о том, что есть вирусное оружие и каких типов оно бывает. В качестве примера была приведен генератор логических бомб с сильным деструктивным проявлением - "LOGICAL BOMB". Этот генератор производит вирусное оружие локальное статического действия(не самоходное).

В этой же части текста мы рассмотрим локальное вирусное оружие динамического типа. Мы будем рассматривать полиморфный боевой вирус "PIKADOR". Локальным его можно называть с натяжкой так как в нём присутсвует модуль заражения сетевых дисков(DIM). Какие же возможности у данного вируса и для чего он предназначен? Во-первых одной из основных функций данного вируса является конечно же размножение, и другой не менее важной функцией является вывод из строя операционной системы.

Основной целью вируса является вывод из строя ОС на как можно больших компьютерах.

Для размножения он инфицирует текущую директорию и все директории, которые находятся выше. Так же он инфицирует директории Windows и System32. Но для того чтобы миссия вируса была выполнена была несколько расширена возможность "резидентности на процесс"(APPR). Так он перехватывает все вызовы функции FindFirstFile и инфицирует все директории которые передавались данной функции в качестве параметров, а так же все директории, что находятся выше.

Для маскировки данный вирус использует оригинальную технику не излечимости(SPOT) и полиморфизм(PGS). Так же для затруднения изучения вируса применяются антиотладочные и антидизассемблерные трюки(ADEM).

На момент написания текста данный вирус никакими антивирусными средствами защиты не детектировался. В данном модуле используютя многие модули, которые были использованы в генераторе логических бомб - "LOGICAL BOMB".

Далее будут перечислены все файлы необходимые для компиляции "PIKADOR":

(-)pika2.asm
(-)adem32.asm
(-)bios32.asm
(-)dim32.asm
(-)sdm32.asm
(+)pgs32.asm
(+)r_gen32.asm
(+)t_gen32.asm
(+)spot32.asm

Плюсами отмечены те файлы, которые уже есть в первой части текста, а минусами это те файлы которые будут в этой части текста.(cм. pika2.asm)

Вначале самым первым и самым главным файлом идёт основной файл вируса к которму подключаются модули и используются по мере надобности. Следующий модуль отвечает за антиотладочные и антидизассемблерные приёмы. (см. adem32.asm) Далее следует крайне важный модуль, который отвечает за обнаружение адреса kernel32.dll, а так же за использование WIN API фукций.(см. bios32.asm)

Идущий ниже мотор обеспечивает инфицирование всех сетевых дисков, на данном компьютере.(см. dim32.asm) Последний в списке, но не последний по назначению модуль, который отвечает за основную цель программы вывод из строя ОС. Данное действие производится простой и всем известной функции DeleteFileA.(см. sdm32.asm)

Теперь рассмотрим как выглядит файл до инфицирования и после:

1) До инфицирования

Заголовок "PE" файла
Кодовая секция
Различные секции программы
...............
Последняя секция

2) После инфицирования

Заголовок "PE" файла
jmp N1 ->   Кодовая секция
-> jmp Nx ->
 
Различные секции программы
...............
-> Последняя секция с криптованным телом вируса
 

Как вы наверное заметили тело вируса находится в последней секции файла, что позволяет нам определять вирус. Как спросите вы ведь он полиморфный? Предлагаю для этого использовать самый лучший эвристический анализатор - голову. Во первых редко в каких программах в конце идёт исполнимый код. Поэтому если вы его обнаружили, то остаётся несколько вариантов его происхождения:

1) Навесная защита или упаковщик
2) Вирус или другая вредоносная надстройка

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

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

На этой оптимистичной ноте данная часть текста может считаться завершённой.

(часть 3)

"Тому, кто первым приходит на поле
сражения и ожидает врага, будет легко ..."
Сунь Цзы

В данной части текста речь пойдёт об удалённом статическом оружии. К данному виду вирусного оружия можно отнести некоторую часть троянских коней и backdoor'ов. Почему некоторую, потому что все программное обеспечение доступное общественности называться вирусным оружием просто не имеет права. Так и после публикации данного текста все программы приведённые в качестве примеров вирусного оружия таковыми быть перестанут.

В чём же цель использования удалённого статического вирусного оружия? Цель заключается в том, чтобы не только выполнить заранее, какие-то запрограммированные действия, но и позволить взломщику манипулировать данными и программами на подчинённом компьютере.

Теперь перейдём к определению того, что вирусное оружие должно уметь:

1) Запускаться вместе с системой
2) Слушать и отвечать на взаимодействие по определённому порт

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

Мы сделаем нашу программу совместимой со всеми системами Windows, кроме 16 битных версий. Для этого мы не будем редиректить полученные команды через именованные каналы на "cmd.exe". Мы этого делать не будем потому что, у Windows 98/ME, такого командного интерпретатора нет. Мы всё сделаем с нуля при помощи WIN API. (см. t_back.asm)

На момент написания текста данный backdoor антивирусами не обнаруживался, но я бы не рекомендовал его использовать, так сказать "нагишом". Я бы советовал запаковать его Armadillo или Telock. Это бы обезопасило от определения по текстовым строкам. Вот представьте себе ситуацию отправляется данная программа по почте с рассказом, что это супер демо. А получатель берёт и просматривает текстовым редактором этот файл и сразу в уме дизассемблирует, несколько позже начинает опять же таки в уме эмулировать инструкции х86 .... Так, что-то меня не туда понесло, и при помощи текстового редактора он видит: "...Welcome to Backd00r for Win..." и что вы думаете после этого он эту программу когда-то запустит?

Для чего же ещё можно использовать данную программу, ну конечно для удалённого администрирования системы. Но для надёжности в неё необходимо будет добавить парольную идентификацию.

Это всё конечно хорошо, но как с этим бороться, как от backdoor'ов защититься?

Существует несколько способов:

1) Не запускать программ из непроверенных источников, а из проверенных источников программу лучше трижды перепроверить перед запуском.
2) Правильно настроить firewall, это позволит запретить все входящие соединения и исходящие с ненужных портов, которые могут использоваться backdoor'ами.
3) Самому регулярно проводить инспекцию всех портов и исходящих соединений

Но лучше всего использовать все описанные выше три способа одновременно.

(часть 4)

Так, умение поднять
осенний лист не может
считаться большой силой;
способность видеть луну
и солнце не может считаться
острым зрением;
способность слышать звук
грома не может считаться
тонким слухом.
Сунь Цзы "Искусство войны"

Пришло время нам рассмотреть один из самых сложных видов вирусного оружия. Это динамическое удалённое вирусное оружие. К данному виду вирусного оружия относятся различные сетевые черви. Что же такое Интернет червь? Это программа, которая распространяется при помощи сети Интернет, используя или не используя уязвимости в программном обеспечении. Последним из разновидностей программ данного рода является почтовый червь Sobig.F, который распространяется при помощи электронной почты.

Чтобы понять как работают почтовые черви мы разработаем свой почтовый червь. Существует две самые распространённые методики размножения почтовых червей:

1) Используя программу MS Outlook
2) Используя независимый SMTP движок

При первом методе реализации почтового червя письмо отправляется при помощи IMAPI, т.е. за вас письмо отправляет Outlook. Но если Outlook новой версии, то перед отправкой письма он об этом обязательно сообщит пользователю. Данный акт и выдаст почтовый червь с головой.

Поэтому в последнее время всё чаще используют SMTP движки. В чём же заключается механизм работы SMTP движка? А заключается он в том, что движок вычисляет используемый SMTP сервер, затем присоединяется к нему и отправляет письмо. Для того, чтобы это реализовать необходимо работать с сокетами.

Рассмотрим что делает червь на примере Telnet сесии:

    ;------------------------------------------------------------------------------;
    HELO SMTP.SERVER.COM (+CRLF) [ ждём ответа сервера ]
    MAIL FROM: bill_gates@microsoft.com (+CRLF) [ ждём ответа сервера ]
    RCPT TO: gertva@mail.com (+CRLF) [ ждём ответа сервера ]
    DATA (+CRLF) [ ждём ответа сервера ]
    FROM: BILL GATES <bill_gates@microsoft.com>
    TO: Gertva <gertva@mail.com>
    SUBJECT: New Update
       
    Здесь идёт текст письма с вложением
     . (+CRLF)   
    ;------------------------------------------------------------------------------;

Так же необходим алгоритм перекодировки файла в кодировку base 64, для создания вложений и как уже было сказано выше навыки работы с сокетами.

После того, как мы подготовились мы уже можем написать простейшего почтового червяка...(см. fraer.asm)

После того, как мы реализовали почтового червя, нам необходимо так же знать, что делать, чтобы избежать инфицирования Интернет червём.

Я рекомендую следующие шаги:

1) Не запускать никакие вложения в письма если не знаком источник письма
2) Все вложения проверять антивирусом (а вдруг поможет?)
3) Самому анализировать письма
4) Ориентироваться по содержанию письма (у всех червей оно по смыслу сходно).
5) Настроить Firewall
6) Постоянно обновлять антивирусные базы
7) Проверять Task Manager на подозрительные процессы
8) Проверять ключи реестра отвечающие за автозагрузку

Но как и в предидущих статьях от вирусного оружия может спасти только одно - голова на плечах, причём соображающая.

(с) SLON, автор книги Энциклопедия по защите от вирусов

# Эпилог

продолжение в пути...
© 2014-2017 Сергей Воробьев

0.02