Сергеев А.В. (profitdre@gmail.com) - Национальный исследовательский университет «МЭИ», кафедра прикладной математики и искусственного интеллекта (аспирант), Москва, Россия, Хорев П.Б. (pbkh@yandex.ru) - Национальный исследовательский университет «Московский энергетический институт» (профессор), Москва, Россия, кандидат технических наук | |
Ключевые слова: стеганография, скрытие данных, система suricata, язык lua, формат pdf |
|
Keywords: steganography, data hiding, suricata system, lua language, pdf format |
|
|
С каждым годом обеспечение информа-ционной безопасности становится все более важным. Одна из задач информационной безопасности – предотвращение утечки конфиденциальных данных (коммерческой тайны, персональных данных и т.п.). Для ее выполнения разработано множество систем по предотвращению утечки данных (DLP-систем). Однако, как и в любой системе, эффективность использования этих систем во многом определяется правильной настройкой (созданием правил обнаружения конфиденциальной информации в потоке данных и реагирования на эти события), гибкостью средств управления системой, умением подстраиваться под новые разновидности атак. Одной из угроз безопасности, выявленных ФСТЭК России, является УБИ.111 «Угроза пе-редачи данных по скрытым каналам». Угроза заключается в возможности осуществления нарушителем неправомерного вывода защи-щаемой информации из системы, а также в передаче управляющих команд путем нестандартного (незаметного, скрытого) размещения в легитимно передаваемых по сети (или сохраняемых на отчуждаемые носители) открытых данных, замаскировав под служебные протоколы или скрыв в потоке других данных (стеганография) и т.п. Данная угроза обусловлена недостаточностью мер защиты информации от утечки, а также контроля потоков дан-ных [1]. Одним из популярных форматов обмена информации в корпоративной среде является PDF. Данный формат очень привлекателен для нарушителей ‒ неоднократно были зафиксиро-ваны факты его использования в качестве контейнера для распространения вредоносного ПО [2, 3]. Также возможно использование документа в формате PDF как стеганографического контейнера для скрытой передачи конфиденциальных данных. Стоит отметить, что популярные в настоящее время DLP-системы игнорируют такую проблему и не содержат средств для обнаружения скрытой информации в подобных данных. Для самостоятельного анализа исследователями проблемы были предложены и разработаны различные инструменты по обнаружению скрытой информации в стегоконтейнерах (в основном внутри изображений). Но, тем не менее, работ и инструментов для обнаружения стегоконтейнеров внутри документов формата PDF [4, 5] все еще недостаточно. DLP-системы относятся к проприетарному ПО, являющемуся частной собственностью авторов или правообладателей и не удовлетворяющему критериям свободы ПО, поэтому невозможно самостоятельно добавлять в них необходимый функционал. Из анализируемых научных работ стоит выделить статью [6], освещающую проблемы DLP с обработкой зашифрованных и скрытых данных, а также [7], посвященную настройкам средств мониторинга сети по обнаружению угроз. Однако публикаций, касающихся автоматизированных средств по обнаружению скрытых вложений, авторы данной статьи не обнаружили, а потому результат, представленный в работе, в настоящее время имеет очевидную актуальность. Далее в статье рассматривается возможность использования системы обнаружения и предотвращения вторжений (IDS, Intrusion Detection and Prevention System) для включения в них дополнительных средств предотвращения утечек данных. Для достижения цели по минимизации информационных рисков и предотвращению утечки данных рассматривается разработка правил обнаружения скрытых вложений в документах формата PDF и включения их в IDS-систему Suricata. Структура документа PDF PDF поддерживает несколько базовых типов данных ‒ девять типов объектов: null, bool, integer, real number, name, string, array, dictionary и stream. Строки в PDF (String Objects) представляют собой последовательность 8-битных символов с помощью обратного слеша (\73), написанных либо в виде буквенных символов в кодировке UTF-8, заключенных в круглые скобки (и), либо как шестнадцатеричные данные, заключенные в угловые скобки <и>. В документе формата PDF могут также присутствовать и другие элементы, например, заголовок PDF-документа, который может быть указан в качестве вспомогательной информации, используя символ (/), за которым следует строка в кодировке UTF-8 со специальной формой кодирования для любого нерегулярного символа. Нерегулярными являются символы, которые определены вне диапазона от 0x21 (!) до 0x7E (~), а также любые символы пробела. Эти нерегулярные символы кодируются, начиная с символа #, а затем в виде шестнадцатеричного кода с двумя цифрами для символа. В качестве подобных заголовков можно выделить и нежелательные элементы, такие как сценарии на языке JavaScript, дополнительно вложенные в документ файлы. В документ формата PDF можно вложить PDF-файлы и файлы других типов. Далее приведены примеры использования элементов в документе формата PDF. В зависимости от конструктора PDF-документа определяется, как вложенный файл будет представлен ‒ в виде потока или объекта. Основная разница состоит в том, что в потоке вложенный документ будет подвержен сжатию, а в объекте представлен без изменений: - объект потока с использованием Java-Script: 43 0 obj <> endobj; - PDF с вложенным файлом в виде потока: <>/F(1.zip)/Type/Filespec/UF(1.zip)>>; - PDF с вложенным файлом в виде объекта: <>. Вложенные файлы и сценарии представляют собой потенциальную угрозу безопасности, так как могут включать вредоносное содержимое, открывать другие опасные файлы или запускать потенциально опасные приложения. Разработка и анализ результатов IDS (Intrusion Detection System) ‒ система обнаружения вторжений, предназначенная для регистрации подозрительных действий в сети или на отдельном компьютере, ведения журналов событий и уведомления о них ответственного за информационную безопасность сотрудника. Одной из распространенных систем типа IDS является Suricata. Она представляет собой бесплатный многозадачный и надежный механизм обнаружения сетевых угроз с открытым исходным кодом, способный обнаруживать вторжения в реальном времени, контролировать безопасность сети и обрабатывать файлы PCAP (Packet Capture Data), содержащие данные перехваченных сетевых пакетов, в автономном режиме. Пример правила Suricata: alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"ET TROJAN Likely Fake Antivirus Download ws.exe"; flow:established,to_server; content:"GET"; http_method; content:"/install/ws.exe"; http_uri; nocase; reference:url,doc.emergingthreats.net/2010051; classtype:trojan-activity; sid:2010051; rev:4;) Этот пример показывает, что данное правило будет генерировать предупреждение, если выявит пакет с запросом, который отправляется на внешний контур по любому порту, обнаружив в пакете сочетание символов /install/ws.exe (без учета регистра символов). В ходе анализа выяснилось, что только правил Suricata недостаточно, чтобы обнаружить в файлах скрытые элементы. Механизм Suricata поддерживает правила, написанные на встраиваемом языке сценариев Lua. Это значит, что есть возможность извлекать и проверять файлы, передающиеся по HTTP, проверять сжатые данные, производить распознавание по URI с использованием данных cookie, заголовков и других данных. Благодаря модульной структуре системы Suricata можно оперативно подключить новый модуль для перехвата и анализа данных. Для эффективного использования возможности инициализации правила можно добавить условие проверки заголовка файла %PDF-. Пример правила с использованием сценария Lua: alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"Strange PDF File"; flow:established,to_client; file_data; content:"%PDF-"; within:5; luajit:pdfcheck.lua; classtype:policy-violation; sid:1000001; rev:1;) Спецификация формата PDF допускает замену элементов заголовка на буквенно-цифровые символы в шестнадцатеричном представлении. Использование шестнадцатеричного представления в именах – один из способов обфускации имени, позволяющий избежать об-наружения механизмами, которые ищут нормальное, незапутанное имя (/JavaScript). В записи /Java#53cript, например, #53 означает шестнадцатеричное представление буквы S. Стоит отметить, что отсутствуют ограничения на количество символов в имени, которые можно заменить их шестнадцатеричным представлением. Таким образом, для достижения поставленной цели необходимо разработать сценарий для системы Suricata на языке Lua, выполняющий две функции – инициализацию и сопоставление. Для работы с файлами в потоке необходимо воспользоваться функцией init. Покажем правило Lua с выборкой данных из потока. Полученные данные нужны от Suricata для дальнейшего анализа. Для PDF-документа понадобится тело HTTP-ответа: function init(args) return {["http.response_body"] = tostring(true)} end Определим функцию сопоставления, которая должна получить тело ответа HTTP и сравнить с черным списком нежелательных объектов. Этап сравнения выведен в отдельную функцию, которая должна вернуть 1, если что-то будет обнаружено, и 0 в противном случае: function match(args) return PDFCheck(tostring(args["http.response_body"])) end Представим код для обнаружения сценариев JavaScript, вложенных данных с возможной обфускацией. Функция PDFCheck принимает строку в качестве входных данных (Input), затем начинает поиск имен заголовка во входных данных, сравнивая с черным списком (Blacklist), а также осуществляет поиск ключевых слов по окончании объекта и анализ данных между ними. Для каждого найденного имени проверяем, содержит ли оно символ # (например, может ли оно быть запутано), то есть пытаемся преобразовать имя (заменив шестнадцатеричное представление соответствующим кодом ANSI). И, наконец, проверяем, есть ли это имя в черном списке: Blacklist = {["/Desc"] = true;["/EmbeddedFiles"] = true;["/JavaScript"] = true; } function PDFCheck(Input) for HeaderName in Input:gmatch("/[a-zA-Z0-9_#]+") do if HeaderName:find("#") then local ConvName = HeaderName:gsub("#[a-fA-F0-9][a-fA-F0-9]", function(hex) return string.char(tonumber(hex:sub(2), 16)) end) if Blacklist[ConvName] then return 1 end end end return 0 end Следующим шагом работы была апробация полученных результатов, для чего подготовлено 20 PDF-документов, 10 из которых с вложениями и сценарием на JavaScript. Необходимо проверить разработанные средства на наличие в них ошибок первого и второго рода. Полученные результаты были неудовлетворительными, так как обнаружены только 6 из 10 документов с вложениями. Дальнейший анализ позволил выявить следующие особенности формата PDF. 1. Формат чувствителен к регистру имен: достаточно изменить регистр одного из символов, чтобы объект не выполнял свои функции. Например, если изменить в документе объект /EmbeddedFiles на /EmBeddedFiles, то программа для чтения PDF-документов не обнаружит данное вложение. 2. Отсутствует привязка к задекларированным полям: было обнаружено, что после изменения названия объекта на любое другое документ считался полностью корректным и целостным. Пример: изменение /JavaScript на /NOTaScript. Данные выводы были проверены в трех популярных программах для чтения документов формата PDF: Adobe Acrobat XI PRO, Foxit Advanced PDF Editor и PDF-XChange Editor. После анализа полученных результатов был изменен подход к решению поставленной задачи, что привело к использованию белого списка из задекларированных объектов без нежелательных элементов. Исследуя стандарт ISO 32000, описывающий структуру PDF-документа, был составлен белый список (whitelist). Богатый функционал формата PDF позволяет внедрять собственные шрифты, но такая возможность несет опасность внедрения вредоносного кода в виде сте-гоконтейнера. Поэтому в белый список были добавлены 14 стандартных шрифтов, которые поставляются вместе с пакетом Adobe Acrobat. Далее показан измененный код по обнаружению вложенных данных, сценариев JavaScript, вложенных шрифтов и межконтейнерных вложений: function PDFCheck(Input) for HeaderName in Input:gmatch"/[a-zA-Z0-9_#]+" do if whitelist[HeaderName] then return 1 end if HeaderName:find("#") then local ConvName = HeaderName:gsub("#[a-fA-F0-9][a-fA-F0-9]", function(hex) return string.char(tonumber(hex:sub(2), 16)) end) if whitelist[ConvName] then return 1 end end end for sBlock in Input:gmatch"%f[^obj][^%d]*" do if (string.len(sBlock)> 2) then return (string.len(sBlock)) end end return 0 end Заключение Отметим, что поддержка языка Lua в системе Suricata позволяет реализовать достаточно сложные методы анализа PDF-документов, что нельзя сделать с помощью простых правил. Однако каждое дополнительное правило будет влиять на производительность системы обнаружения атак. Разработанные на языке Lua сценарии были внедрены в IDS Suricata, после чего зафиксировано среднее время работы 43 секунды (от 28 до 58 секунд в зависимости от объема документа). Но такое увеличение времени передачи данных, содержащих PDF-документы, можно считать оправданным, поскольку появляется возможность своевременно обнаружить внутри документов формата PDF стегоконтейнер с потенциально опасным содержимым, которое может привести к утечке конфиденциальной информации. Литература 1. Wendzel S., Mazurczyk W., Caviglione L., Meier M. Hidden and uncontrolled – on the emergence of network steganographic threats. ISSE 2014 Securing Electronic Business Processes, 2014, pp. 123–133. DOI: 10.1007/978-3-658-06708-3_9. 2. Stevenson J. Attack Using Steganography Bypasses DLP Systems. 2018. URL: https://www.deep-secure.com/blog/61-attack-using-steganography-bypasses-dlp-systems.php (дата обращения: 13.12.2020). 3. Araujo I.I., Kazemian H. Vulnerability exploitations using steganography in PDF files. IJCNA, 2020, vol. 7, no. 1, pp. 10–18. DOI: 10.22247/ijcna/2020/193270. 4. Sergeev A.V., Khorev P.B. Review of the algorithms steganography in PDF documents and analysis. Proc. MWENT, 2020, pp. 1–4. DOI: 10.1109/MWENT47943.2020.9067465. 5. Sergeev A.V., Khorev P.B. Analysis of methods for hiding information in PDF documents and opportunities for their progress. Proc. Intern. Youth Conf. REEPE, 2020, pp. 1–4. DOI: 10.1109/REEPE49198.2020.9059117. 6. Tahboub R., Saleh Y. Data leakage/loss prevention systems (DLP). Proc. WCCAIS, 2014, pp. 1–6. DOI: 10.1109/WCCAIS.2014.6916624. 7. Singh G., Goyal S., Agarwal R. Intrusion detection using network monitoring tools. SSRN Electronic Journal, 2014, pp. 1–12. URL: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2426105 (дата обращения: 13.12.2020). DOI: 10.2139/ssrn.2426105. References
|
http://swsys.ru/index.php?id=4818&lang=.&page=article |
|