Journal influence
Bookmark
Next issue
Developing rules for detecting hidden data in PDF documents
Abstract:The paper discusses the definition and implementation of rules for analyzing and detecting hidden in-formation inside PDF documents. Currently, there is a lot of work devoted to detecting hidden elements in images, sound, and video, but little attention is paid to hiding data in electronic documents of vari-ous formats. A widespread format in modern electronic document flow is PDF (Portable Document Format), which is also of interest for studying the possibility of its use in steganography (the science of methods of hiding confidential messages inside container objects). Documents in PDF format have not been sufficiently researched (especially in Russian literature) from the point of view of the possibility for introducing hidden data into them. Systems for the prevention of data leaks (DLP, Data Leak Protection) are designed to prevent leak-age of confidential information from the information system to the external circuit through various in-formation transmission channels. DLP systems are based on the analysis of data streams crossing the perimeter of the protected information system. When confidential information is detected in this stream, an active component of the system is triggered and the transmission of a message (packet, stream, session) is blocked. Modern DLP systems are unable to detect data hidden in steganographic containers and do not al-low adding the necessary functions to their composition. For corporate networks with high network traffic and high value of transmitted and processed data, means of detecting steganographic attach-ments in the information flow are required. The paper discusses the PDF document format, as well as one of the popular open-source intrusion detection and prevention systems – Suricata, which has pow-erful support for scripting in the Lua language for detecting information security threats. A script in Lua has been developed to detect PDF documents with unwanted attachments as scripts, various ob-jects, and the use of inter-container space with the possibility of obfuscating (obfuscating) the name.
Аннотация:В статье рассматриваются определение и реализация правил для анализа и обнаружения скрытой информации внутри документов формата PDF. В настоящее время много работ посвящено обнаружению скрытых элементов в изображениях, звуке и видео, но мало внимания уделено скры тию данных в электронных документах различных форматов. Распространенным форматом в со-временном электронном документообороте является PDF (Portable Document Format), который также представляет интерес для исследования возможности его использования в стеганографии (науке о методах скрытия конфиденциальных сообщений внутри объектов-контейнеров). Доку-менты в формате PDF недостаточно исследованы (особенно в отечественной литературе) относительно возможности внедрения в них скрытых данных. Для предотвращения утечек конфиденциальной информации из информационной системы во внешний контур по различным каналам передачи информации предназначены системы DLP (Data Leak Protection). DLP-системы строятся на анализе потоков данных, пересекающих периметр защищаемой информационной системы. При детектировании в этом потоке конфиденциальной ин-формации срабатывает активная компонента системы и передача сообщения (пакета, потока, сессии) блокируется. Современные DLP-системы не способны обнаружить скрытые в стеганографических контейнерах данные и не позволяют добавлять в их состав необходимые функции. Для корпоративных сетей с большим сетевым трафиком и высокой ценностью передаваемых и обрабатываемых данных необходимы средства обнаружения стеганографических вложений в информационном потоке. В работе рассматриваются формат документа PDF, а также одна из популярных систем обнаружения и предотвращения вторжений с открытым исходным кодом – Suricata, которая имеет мощную поддержку сценариев на языке Lua для обнаружения угроз информационной безопасности. Разработан сценарий на языке Lua для обнаружения документов в формате PDF с нежелательными вложениями в виде сценариев, различных объектов и использованием межконтейнерного пространства с возможностью обфускации (запутывания) имени.
Authors: A.V. Sergeev (profitdre@gmail.com) - National Research University “Moscow Power Engineering Institute”, Department of Applied Mathematics and Artificial Intelligence (Postgraduate Student), Moscow, Russia, Khorev P.B. (pbkh@yandex.ru) - National Research University “MPEI”, Moscow, Russia, Ph.D | |
Keywords: steganography, data hiding, suricata system, lua language, pdf format |
|
Page views: 3142 |
PDF version article |
С каждым годом обеспечение информа-ционной безопасности становится все более важным. Одна из задач информационной безопасности – предотвращение утечки конфиденциальных данных (коммерческой тайны, персональных данных и т.п.). Для ее выполнения разработано множество систем по предотвращению утечки данных (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
|
Permanent link: http://swsys.ru/index.php?page=article&id=4818&lang=en |
Print version |
The article was published in issue no. № 2, 2021 [ pp. 295-300 ] |
Perhaps, you might be interested in the following articles of similar topics: