26.12.2016

Повышение безопасности при обмене с банком через текстовый файл

В последнее время участились атаки на информационные системы банков и их клиентов с целью хищения денежных средств клиентов. Один из способов хищения заключается в подмене данных в файлах, выгружаемых из учетных систем клиентов и передаваемых в системы для дистанционного обмена данными клиентов с банком (системы типа «клиент-банк»). Подмену осуществляют вредоносные программы, которыми заражается компьютер клиента банка.
Об этом сообщает Центр мониторинга и реагирования на компьютерные атаки в кредитно-финансовой сфере (FinCERT) Центрального банка России в письме FinCERT PC-V: BN-1C-FAKE -20161129-02.
По информации FinCERT,  вредоносные программы отслеживают появление файла, обычно имеющего имя 1c_to_kl.txt, выгружаемого из учетных программ и предназначенного для загрузки в программы Клиент-Банк. Вредоносные программы подменяют в файле данные об исходящих платежах. Если пользователь загрузит этот файл с подмененными данными в систему Клиент-Банк и не проверит данные перед отправкой в банк, то платеж уйдет по подложным реквизитам, указанным злоумышенниками.
Чтобы защитить подготовленные в учетных программах системы "1С:Предприятие 8" файлы с данными для загрузки в программы Клиент-Банк специалистами фирмы 1С предлагаются дополнительные способы проверки файлов на модификацию. Проверка выполняется после загрузки данных в программу банка, но до их отправки на исполнение.
Способ реализации данной рекомендации приведен ниже.

Сценарий использования:

  1. Пользователь выгружает подготовленные платежи в текстовый файл из программы "1С:Предприятие". При этом появляется блокирующее окно

    Пример блокирующей формы:

  2. Пользователь выполняет действия в соответствии с указаниями, написанными на форме.
  3. Если проверка пройдена успешно, то загруженные платежи в программе банка пользователь отправляет на исполнение. Если проверка не пройдена и обнаружена модификация файла, то  необходимо удалить загруженные платежи в программе банка и выполнить проверку компьютера антивирусным программным обеспечением.

Пример успешной проверки файла:

Пример обнаружения модификации файла:

Исходные условия:

  1. Файл выгрузки формируется из серверного общего модуля и двоичные данные помещаются во временное хранилище.
  2. На клиент возвращается ссылка на временное хранилище, содержащее двоичные данные файла.

Реализация:

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

    Пример генерации уникального названия файла:

    Копировать в буфер обмена
    &НаКлиенте
    Процедура ВыборФайлаДляВыгрузки(Элемент) Экспорт	
    	ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    	ДиалогВыбора.Фильтр                  = НСтр("ru = 'Текстовый файл'") + " (*.txt)|*.txt";
    	ДиалогВыбора.Заголовок               = НСтр("ru = 'Выберите папку для выгрузки данных из 1C'");
    	ДиалогВыбора.ПредварительныйПросмотр = Ложь;
    	ДиалогВыбора.Расширение              = "txt";
    	ДиалогВыбора.ИндексФильтра           = 0;
    	НазваниеФайла = СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", "");
    	
    	ДиалогВыбора.ПолноеИмяФайла          = ?(ПустаяСтрока(Элемент.ТекстРедактирования),
    		НазваниеФайла + ".txt", Элемент.ТекстРедактирования);
    	ДиалогВыбора.ПроверятьСуществованиеФайла = Ложь;
    
    	ОписаниеОповещения = Новый ОписаниеОповещения("ВыборФайлаДляВыгрузкиЗавершение", ЭтотОбъект);
    	ДиалогВыбора.Показать(ОписаниеОповещения);
    	
    КонецПроцедуры
    
  2. После выгрузки файла данных на клиенте открыть блокирующую форму и передать ссылку на временное хранилище двоичных данных файла и путь к файлу на клиенте.

    Пример открытия формы:

    Копировать в буфер обмена
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("АдресИсходныхДанных", АдресФайлаВоВременномХранилище);
    ПараметрыФормы.Вставить("ПутьКФайлу", Объект.ФайлВыгрузки);
    ОткрытьФорму("Обработка.КлиентБанк.Форма.ПроверкаДанныхПриВыгрузке", ПараметрыФормы);
  3. При создании формы на сервере необходимо получить исходный текст выгруженных данных и сохранить в реквизите формы.

    Пример создания формы на сервере:

    Копировать в буфер обмена
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    	ДвоичныеДанныеИсходногоФайла = ПолучитьИзВременногоХранилища(Параметры.АдресИсходныхДанных);
    	ВремФайл = ПолучитьИмяВременногоФайла();
    	ДвоичныеДанныеИсходногоФайла.Записать(ВремФайл);
    	ТекстовыйДокумент = Новый ТекстовыйДокумент;
    	ТекстовыйДокумент.Прочитать(ВремФайл);
    	ТекстВыгрузкиСтрокой = ТекстовыйДокумент.ПолучитьТекст(); // Сохранение исходного текста в реквизите формы
    	УдалитьФайлы(ВремФайл);
    
    КонецПроцедуры
  4. На форме разместить кнопку Проверить и реализовать код для контрольной проверки выгруженных данных.

    Пример контрольной проверки файла:

    Копировать в буфер обмена
    &НаКлиенте
    Процедура Проверить(Команда)
    	Файл = Новый Файл(Параметры.ПутьКФайлу);
    	Если Файл.Существует() Тогда
    		ТекстовыйДокумент = Новый ТекстовыйДокумент;
    		ТекстовыйДокумент.Прочитать(Параметры.ПутьКФайлу);
    		Если ТекстВыгрузкиСтрокой = ТекстовыйДокумент.ПолучитьТекст() Тогда
    			Сообщить("Проверка выполнена успешно. Отправьте платежи на исполнение в программе банка.");
    		Иначе
    			Сообщить("Файл выгрузки изменен вредоносной программой. Удалите все загруженные платежи из программы банка.");
    		КонецЕсли;
    	Иначе
    		Сообщить("Файл удален. Отключите удаление исходного файла в программе банка, удалите загруженные платежи и повторите операцию.
    				|Файл также может быть удален вредоносной программой.");
    	КонецЕсли;	
    КонецПроцедуры

 

Пример обработки клиент-банк с безопасной выгрузкой данных в программу банка

Обработка КлиентБанк.epf для конфигурации Бухгалтерия предприятия 3.0 на платформе 1С:Предприятии 8.3 находится в каталоге: 1CIts/EXE/EXAMPLES/

Вы можете скопировать обработку прямо сейчас.

Копировать