Публикации / Борьба с утечками информации |
Постановка проблемы Повсеместное распространение флэшек и ноутбуков сделало кражу корпоративной информации тривиальной операцией: просто воткнул карту памяти, скопировал нужные файлы и унес их с собой. Для защиты от «несунов» создано множество сторожевых комплексов (как правило, дорогостоящих и неэффективных), но в ряде случаев предотвратить хищение можно с помощью скрытых возможностей Windows XP/2000. Рассмотрим типичный офисный компьютер с демонтированным floppy-дисководом, без CD/DVD-R/RW-приводов, без интегрированных беспроводных устройств (типа BlueTooth, WLAN) и подключенный к локальный сети, имеющей выход в Интернет через proxy-сервер/NAT. Из всех портов имеется только USB и еще, возможно, COM/LPT. За компьютером сидит продвинутый пользователь, который намеревается скопировать конфиденциальную информацию на свой домашний компьютер или же передать ее третьим лицам (за определенное вознаграждение). И в том, и в другом случае мы сталкивается с утечкой данных, которую администратор обязан предотвратить. Договоримся, что мы будем ориентироваться исключительно на пользователей разной степени «продвинутости», а не хакеров, поскольку хакера никакая защита не остановит. Существует множество дыр в Windows, позволяющих локальному пользователю поднять уровень своих привилегий до администратора, причем такие дыры не считаются критическими, так как они нечувствительны к удаленным атакам и затыкаются в последнюю очередь. К тому же процент хакеров относительно невелик и львиная доля информации утекает через обычных пользователей. Следовательно, разработка антихакерской защиты экономически не оправдана. Другой немаловажный момент. Механизмы разграничения доступа, реализованные в Windows XP/2000, позволяют скрыть от пользователя те файлы, которые ему по статусу видеть не положено. Однако такая защита не всесильна и даже будучи правильно настроенной не может решить рядовую задачу: открыть пользователю доступ к файлам (с которыми он должен работать в силу производственной необходимости), но предотвратить их вынос. Вот и приходится прибегать к дополнительным оборонительным средствам, используя аппаратно-программные комплексы сторонних производителей или же обходиться собственными силами. Как появилась эта статья Собственного говоря, эта статья - результат исследования, заказанного одной достаточно крупной компанией, страдающей хроническими утечками информации, перепробовавшей все имеющиеся на рынке средства защиты данных (которые, между прочим, денег стоят!), но оставшейся недовольной достигнутым результатом. Анализ, проведенный автором вместе с ее сотрудниками (кстати, весьма компетентными специалистами, с которыми было приятно работать), панацеи, естественно, не открыл и «серебряной пули» не изготовил, но по крайней мере выявил основные каналы утечек (между прочем, плохо согласующиеся с данными, предоставленными весьма уважаемыми агентствами, такими как InfoWatch и Symantec). После чего обнаруженные бреши в системе защиты были заблокированы штатными средствами операционной системы без каких бы то ни было переделок существующего программного обеспечения и с минимальной перестройкой сетевой инфраструктуры, т. е., другими словами, за вычетом расходов на исследование практически даром. Имя компании автор разглашать не имеет права (таковы, увы, условия подписанного с ней «джентльменского» договора, плюс имеется ряд других соображений политического характера), однако результатами исследования может поделиться вполне, сразу же обращая внимание читателя, что это вовсе не упомянутая «серебряная пуля», а всего лишь частный случай решения частной проблемы. Кому-то оно может пригодиться, а кому-то и нет. Но в любом случае автор надеется, что приведенная информация окажется небесполезной. Исследуем свои тылы На задней стенке типичного офисного компьютера находится много чего интересного (в качестве наглядно-учебного пособия рассматривается компьютер автора). Это в первую очередь Ethernet-порт (на рисунке подсвеченный желтым и зеленым светодиодами, первый из которых сигнализирует о передаче данных, а второй — указывает на наличие Ethernet-соединения). Кабель можно вытащить и вставить, например, в ноутбук (или карманный компьютер), получив возможность «сливать» на свой диск любую конфиденциальную информацию, к которой мы только имеем доступ, причем сливать с очень высокой скоростью — вплоть до 1 Гбит/с. Мы же, наоборот, втыкаем шнурок от ноутбука в офисный компьютер, забрасываем туда вредоносные программы, позволяющие шпионить за сетью и повышать уровень локальных привилегий до администратора. Здесь же, на задней стенке, находятся USB-порты, позволяющие подключать различные устройства, приводящие к утечкам данным: карты FLASH-памяти, беспроводные адаптеры (типа «Голубого зуба» или Wi-Fi). Для передачи небольшого объема данных сойдут низкоскоростные и COM/LPT-порты (кстати говоря, некоторые модели современных системных плат уже выпускаются без них). А вот цифровой звуковой выход (красный огонек) и цифровой видеовыход — это пока что экзотика, однако уже существуют хакерские программы и оконечные устройства, использующие их для передачи данных, естественно, при условии, что хакерское программное обеспечение уже установлено на офисном компьютере. Задняя стенка компьютера (большой, на колонку) Источник утечки — USB USB-порты, перекочевавшие на лицевые панели ПК (и даже на корпуса USB-клавиатур!), значительно упростили обмен файлами между компьютерами. Существует огромное количество USB-устройств: от FLASH-карт до PDA и ноутбуков. Правда, ноутбуки, в силу своих габаритов, менее популярны среди инсайдеров, но все-таки их нельзя списывать со счетов. Как защититься от кражи? Самое простое (но и самое радикальное) — отключить USB-разъемы от «мамы», опечатав корпус или воткнув в них заглушки, обильно смазанные суперклеем. Смешно? Скорее, грустно, поскольку к таким мерам администраторы прибегают достаточно часто. Офисный компьютер может работать и без USB. Ему не нужны никакие периферийные устройства, к нему не нужно подключать принтер (для этого есть локальная сеть). Поэтому такое решение вполне жизнеспособно, вот только… в некоторых случаях без USB приходится очень туго. ОК, устанавливаем на компьютер систему защиты типа ZLock или любую другую. Их много, но принцип их действия один. Специальный драйвер перехватывает запросы на запись к USB и в зависимости от политики доступа либо разрешает запись, либо выдает сообщение об ошибке. USB с полностью закрытым доступом равносилен USB с заглушкой, только заглушка стоит порядка на два дешевле и, кстати говоря, совершенно необязательно сажать ее на клей. Достаточно закрыть разъемы специальным щитком с замком, который изготовит любой слесарь или даже сам администратор при минимальных навыках работы с металлом. Поэтому на практике защитные средства а-ля ZLock ограничиваются блокировкой записи определенных файлов, список которых формируется администратором. На первый взгляд все выглядит просто замечательно, однако при ближайшем рассмотрении в подобной защите обнаруживается огромная дыра. Допустим, у нас имеется документ MS Word. Что помещает пользователю сохранить его под другим именем или скопировать в буфер обмена и вставить в файл, который не внесен в «охранный» список?! Даже если список включает в себя расширения или защита анализирует типы файлов, основываясь на их содержимом, пользователь может сжать файл малоизвестным архиватором или замаскировать его каким-нибудь другим способом. Источник утечки — Ethernet Кабели локальной сети — это артерии и вены любой организации, имеющей более одного компьютера. Но одновременно это основной источник утечек, и его в отличие от USB уже нельзя закрыть заглушкой, поскольку, даже если физически приклеить Ethernet-разъем к компьютеру, все равно остается какое-то количество хабов со свободными портами. А вот в них можно воткнуть шнурок от ноутбука или мини-файлового севера, они уже давно появились в продаже и некоторые из них легко умещаются в кармане. Злоумышленнику достаточно всего лишь подключить свое устройство к свободному Ethernet-порту — и он уже в локальной сети, и ему подвластны все файлы, к которым он имеет доступ. Остается скопировать их и убраться потихоньку. Как от этого защищаться? Прежде всего необходимо настроить маршрутизаторы, привязав локальные IP-адреса к MAC-адресам, и закрыть на брандмауэре все незанятые Ethernet-порты. Это намного проще и надежнее, чем помещать хабы в железный сейф, стоимость которого (помноженная на количество хабов в сети) весьма значительна. Естественно, прописывание MAC-адресов в настройках брандмауэра/маршрутизатора —занятие довольно утомительное, к тому же нет никакой возможности отличить настоящий MAC-адрес от поддельного (не говоря уже о том, что в большинстве сетевых устройств MAC-адрес хранится во FLASH-памяти и может быть изменен), однако для осуществления подобной атаки злоумышленник должен обладать хакерскими навыками, а мы уже договорились, что от хакеров мы не защищаемся. Источник утечки — COM/LPT Некоторые модели современных компьютеров вообще не имеют COM/LPT-портов и с точки зрения безопасности это очень хорошо, поскольку, используя ноутбук, злоумышленник может установить прямое кабельное соединение и скачать все необходимые файлы, правда, через COM большой файл за пару минут не скачаешь, да и у LPT пропускная способность находится на очень низком (по современным меркам!) уровне. Но все-таки угроза утечки есть, и эти порты лучше сразу же закрыть заглушками, а на заглушки повесить печать или соорудить какой-нибудь примитивный замок. Кстати, если LPT-порт используется для подключения принтера, то без замка тут однозначно не обойтись, поскольку в противном случае злоумышленник сможет запросто воспользоваться этим разъемом для своих нужд. Впрочем, принтеры на LPT постепенно отживают свое, производители активно переходят на USB и Ethernet. Естественно, с точки зрения безопасности Ethernet самый предпочтительный, поскольку администратор может заблокировать подключения любых других Ethernet-устройств на этот порт простой проверкой MAC-адресов. USB-порты на лицевой панели так и просят, чтобы в них воткнули FLASH-карту Адаптер «Голубого зуба» (зеленый прямоугольник), несанкционированно подключенный к USB-порту нечестным на руку сотрудником и обнаруженный лишь спустя длительное время Марштутизатор со свободными портами — прямая угроза атаки Методы защиты, основанные на NTFS-потоках Файловая система NTFS выгодно отличается от FAT16/32 тем, что поддерживает несколько потоков (streams) в рамках одного файла, еще называемых атрибутами (attributes), только не путайте их с атрибутами типа «только на чтение» или атрибутами времени создания/доступа/последней модификации — это совершенно различные сущности. Каждый файл от рождения имеет один безымянный поток, и именно с этим потоком мы работаем при открытии/закрытии файла, и именно его объем берется за основу при подсчете размера файла. Однако мы можем создавать и другие потоки, отделяя их названия от имени файла символом ":", например, X:\my_file:my_stream1, X:\my_file:my_stream2. Естественно, полный путь указывать необязательно, и X:\my_file:my_stream1 работает так же хорошо, как и my_file:my_stream1 (если, конечно, my_file:my_stream1 находится в текущем каталоге). Проведем простой эксперимент. Возьмем FAR и, нажав <Shift-F4> (создание нового файла), введем "kpnc:nezumi", после чего в отрывшемся окне редактора наберем что-нибудь наподобие "hello, world!" или любой другой лозунг. Сохраняем изменения по <F2> и выходим. Смотрим — FAR (и Проводник Windows) показывает нулевой размер файла. Странно, не правда ли?! Нажимаем <F4> и видим, что файл действительно пуст. Но если нажать <Shift-F4> + "kpnc:nezumi", то наше приветствие "hello, world!" вновь появится на экране. Если нет FAR'а, тот же самый фокус можно проделать и со штатным Блокнотом, только... он требует, чтобы имена файла и потока оканчивались обязательным расширением .txt, иначе ничего не получится! ОК, окажем ему услугу. Пишем в командной строке "notepad kpnc.txt:nezumi.txt", утвердительно отвечая на запрос о создании нового файла. Вводим что-нибудь, сохраняемся. Выходим. Теперь, если попытаться открыть файл двойным щелчком, мы ничего не увидим (безымянный поток остается пустым), и Проводник отрапортует о нулевом размере файла, но стоит набрать "notepad kpnc.txt:nezumi.txt", как содержимое потока nezumi.txt немедленно появляется на экране!!! Ну прямо чудеса на виражах!!! Теперь поговорим, как эти «чудеса» можно использовать на практике. При копировании на файловую систему, отличную от NTFS (например, на лазерный диск или FLASH’ку, размеченную под FAT), копируется только безымянный поток, а все остальные игнорируются. При передаче по локальной сети все потоки сохраняются (и это хорошо!), однако ни FAR, ни Проводник не позволяют выбирать, какие именно потоки копировать, а какие нет. Утилита командной строки copy с этим также не справляется, обвиняя нас в неправильном синтаксисе, хотя он и правильный. Некоторые утилиты (например, RAR) поддерживают сохранение всех потоков файла, чтобы полученный архив можно было записать на не-NTFS-носитель, а при последующей распаковке на NTFS-разделе получить все потоки обратно. Потоки — идеальное средство для защиты от несанкционированного копирования файлов. Создаем файл с тремя потоками. Первый — безымянный, он может содержать все что угодно (или же не содержать ничего). Второй — именованный. Именно он хранит тело документа/электронной таблицы/базы данных, с которым необходимо работать. Третий (именованный) поток играет роль своеобразного балласта и несет на своем борту несколько гигабайтов мусора, сгенерированного произвольным образом и желательно очень трудно сжимаемого архиваторами. Допустим, злоумышленник захотел скопировать этот файл на FLASH’ку, размеченную под FAT. Тогда он получит только первый (безымянный) поток, не содержащий ничего или содержащий грозное предупреждение с пожеланием немедленно явиться к начальнику с повинной. Если же FLASH’ка отформатирована под NTFS, то Проводник попытается скопировать все три потока, но третий поток туда ни за что не влезет (правда, с учетом порядка копирования потоков, поток-балласт, должен следовать вторым, а поток с полезной нагрузкой ? идти последним, но это уже детали). Аналогичным образом обстоят дела и с передачей файла по сети. Незаметно передать несколько гигабайтов злоумышленнику не удастся, особенно если на исходящий трафик установлен жесткий лимит. Единственная возможность — передать файл по сети на ноутбук, подключенный через Ethernet, но о защите Ethernet-портов от подключения «левых» устройств мы уже говорили, так что злоумышленник остается с носом. Не такая уж плохая защита, особенно с учетом того, что ее создание не требует никаких дополнительных затрат и реализуется штатными средствами операционной системы. Недостатки предложенной защиты * Открыв файл в Word’e/Excel’е и скопировав его в буфер обмена, злоумышленник сможет записать его через USB, если USB-порт открыт на запись, а также передать по сети через тот же Skype; * Квалифицированный программист сможет написать программу для выборочного копирования отдельных потоков (впрочем, этой угрозой можно пренебречь, мы же сразу договорились, что защищаемся только от пользователей); * Потоки-балласты занимают достаточно много места, уменьшая полезную емкость жесткого диска (хотя при современных объемах жестких дисков несколько дополнительных гигабайтов на каждый секретный файл — вполне посильная ноша и приобретение более емких винчестеров обойдется дешевле специализированных защитных комплексов от сторонних разработчиков). Источник утечки — Skype Среди прочих средств голосовой связи Skype выделяется тем, что шифрует свой трафик и виртуозно обходит NAT’ы вместе с брандмауэрами, используя протоколы STUN и TURN, а если они не срабатывают — гонит трафик через http-proxy, автоматически определяя настройки браузера. Другими словами, Skype представляет собой идеальное средство для передачи файлов из локальной сети в «дикий» Интернет, причем кому был передан файл, определить невозможно, поскольку Skype использует распределенную сеть, каждый из узлов которой может использоваться для обслуживания всех остальных абонентов. Максимум, что может сделать администратор — вычислить Skype-имя пользователя, получившего украденный файл, но, поскольку Skype выдает имена, не требуя предъявления никаких документов, то для установления личности оно, естественно, не подходит. К счастью, есть программы для детектирования и блокирования Skype-трафика, кроме того, администратор может периодически сканировать клиентские компьютеры на предмет наличия этого самого Skype и тут же удалять его как зловредную программу. Помимо Skype конфиденциальная информация может быть передана через электронную почту или любой файлообменный сервер, типа http://rapidshare.com/, но они в отличие от Skype оставляют следы в логах proxy-серверов и брандмауэров, позволяя вывести нечестного сотрудника компании на чистую воду, но… только пользы от этого будет немного. Ведь секретный файл уже ушел и назад его не вернешь. Методы защиты, основанные на запуске программ от имени специального пользователя Допустим, в компании есть оператор архива, который обязан резервировать все файлы, но при этом не должен иметь к ним доступа, чтобы не утащить налево. Возможно ли это?! Здравый смысл шепчет, что нет, в то время как операционные системы семейства NT (и UNIX в том числе) утверждают, что да. Все очень просто. Пользователь запускает программу от имени другого пользователя, обладающего правами доступа ко всем файлам, которая выполняет архивацию и записывает результат в указанный оператором архива файл, но доступа к этому файлу оператор не имеет! Чтобы злоумышленник не подсунул программе резервирования сменный носитель, который потом будет подключен к другой машине, где он обладает правами администратора (например, к своему домашнему компьютеру), следует использовать атрибут шифрования файла. Тогда для его открытия одних лишь прав администратора окажется недостаточно, еще потребуется заполучить ключ, хранящийся в учетной записи того пользователя, от имени которого запускается программа архивации, а эта учетная запись оператору архива, естественно, недоступна. Подобная практика защиты очень широко распространена, и соответствующие профили даже встроены в Windows NT, однако ничто не мешает нам использовать ее не только для архивации, но и для повседневной работы с секретными файлами. Рассмотрим, например, MS Word, запускаемый от имени специального пользователя с тщательно настроенными правами доступа к секретным файлам. Как следствие, обычный пользователь сможет открывать/сохранять файлы только через MS Word, но не сможет скопировать их через «Сохранить как…». То есть скопировать-то он их сможет, но вот открыть сохраненный файл — нет, даже если он записан на FLASH’ку, KПК или другое устройство. К сожалению, по умолчанию буфер обмена одного пользователя доступен всем остальным, что позволяет «перетягивать» секретные файлы через copy/paste, однако, изменив настройки политики безопасности, можно (и нужно!) сделать буфер обмена специального пользователя невидимым для всех остальных. Перспективы просто фантастические, и самое главное — никому не нужно ничего платить. Достаточно приобрести операционную систему семейства Windows NT (но только не Windows Vista, в которой по умолчанию выставляются довольно «демократичные» права доступа, позволяющие инсайдерам повышать уровни своих привилегий вплоть до администратора) и… опс! Разработчики Windows NT забыли встроить возможность запуска программы от имени других пользователей с автоматическим вводом пароля. Его надо запрашивать явным образом в специальном диалоговым окне, а это значит, что секретный пароль придется сообщать всем простым пользователям, иначе они не смогут запустить ни Word, ни другое защищаемое нами приложение, но зная пароль… Здесь возможны два выхода из ситуации. Первый — администратор сам запускает Word и оставляет его открытым, не позволяя пользователям его закрывать. Глупо, конечно и утомительно, зато бесплатно. Второе — пишем собственный загрузчик, запускающий программы от имени других пользователей и автоматически передающий им пароль, жестко прошитый в его теле, а, чтобы пароль не бросался в глаза при просмотре файла в hex-редакторе, зашифруем загрузчик любым exe-упаковщиком. Кстати, поскольку проблема необходимости явного ввода пароля (отсутствующая в UNIX-подобных операционных системах) возникла не вчера и даже не позавчера, в сети можно найти множество готовых загрузчиков, в том числе и бесплатных, однако по соображениям безопасности лучше не доверять чужому коду и нанять программиста, который напишет несколько сотен строк на Си самостоятельно, предоставив вам исходный код, чтобы у него не возникло соблазна встроить туда закладку. Заключение Описанные методики были опробованы в нескольких компаниях и дали положительный результат (более подробный отчет о проделанной работе автор планирует выкладывать на свой сервер http://nezumi.org.ru, доступный как по протоколу ftp, так и по http). Утечки информации в «подопытных» компаниях практически полностью прекратились, и заказчики остались весьма довольны тем, что им не пришлось платить за кота в мешке, которым являются решения конкурентов, не раскрывающие ни исходных текстов, ни даже технических подробностей алгоритмов работы своих аппаратно-программных комплексов. ZIP-дискеты еще не раритет, и кое-где они все-таки используются, так что не нужно забывать, что инсайдер может утащить в кармане сотни мегабайтов Сотовый телефон с ИК-портом или прямым кабельным соединением — хорошее оружие инсайдера, особенно учитывая количество гигабайтов памяти, способной поместиться внутри него СD/DVD-R/RW-приводы вкупе с мини-дисками представляют собой отличное средство для выноса информации Крис Касперски |