Что самое ценное в любой компании? Это не компьютеры, не помещения или фабрики, это даже не то, что стало модным клише в некоторых корпорациях: «Наши самые ценные активы — это наши люди».
На самом деле все, что перечислено, может быть заменено. Не так просто, не без борьбы, но практически любая компания выживет после того, как сгорит фабрика или несколько ключевых сотрудников покинут ее пределы. А вот выжить после потери интеллектуальной собственности — это совсем другая история. Если кто-нибудь украдет конструкцию ваших продуктов, список клиентов, план выпуска новых товаров, результаты исследовательских работ — это будет катастрофа для компании.
Более того, если кто-то украдет хоть тысячу продуктов с вашего склада, тонну титана с производства или сотню компьютеров из офиса, вы сразу же узнаете об этом. Если кто-нибудь украдет вашу интеллектуальную собственность электронным образом, то есть, скопирует ее, вы никогда об этом не узнаете или узнаете, когда почувствуете последствия этой кражи.
Шокирующей новостью для вас может стать тот факт, что люди с хакерскими навыками крадут интеллектуальную собственность каждый день, часто из компаний, которые думают о безопасности не меньше, чем вы, о чем и рассказывается в этой главе.
Два героя двух следующих историй принадлежат к особой хакерской ветви под названием «кракеры», — так называют хакеров, которые взламывают программы при помощи реинжиниринга коммерческих приложений или простой кражи кодов этих приложений или лицензированных кодов, так что они могут использовать эти программы бесплатно и распространять их через лабиринт тайных кракерских сайтов. (Не надо их путать с программами «кракерами» для взлома паролей).
У кракеров есть три главных мотива для погони за определенным продуктом:
• Получить программу, которая их интересует, для пристального изучения.
• Принять вызов, чтобы понять, сможет ли он превзойти конкурента (обычно разработчика), — аналогично тому, как игроки стремятся превзойти оппонента за шахматной доской, в бридже или за покерным столом.
• Разместить программное обеспечение в Интернете, чтобы оно стало доступным другим обитателям виртуального мира бесплатно. Кракеры взламывают не только программы, но также и коды, используемые для создания лицензированных ключей.
Оба героя наших историй взламывают сайты производителей ПО, чтобы украсть у них коды программ и распространить их ключевые элементы в группах кракеров, чтобы они могли использовать это ПО бесплатно. Есть много людей с хакерскими способностями, которые занимаются тем же, и есть производители программ, которые не представляют, какой вред наносят им хакеры.
Кракеры существуют в темном, надежно спрятанном мире, где валютой является украденная программа — масштабы кражи интеллектуальной собственности могут ужаснуть любого нормального человека. Потрясающий последний акт этой истории подробно описан в конце главы в разделе «Распределение: мир кракеров».
Истории в этой главе сильно адаптированы для обычных читателей.
ДВУХЛЕТНЕЕ ХАКЕРСТВО
Эрик — тридцатилетний консультант по безопасности. Он жалуется: «Когда я сообщаю об уязвимости, я часто слышу: «Это ерунда.
Что за проблема? Какой от этого вред?». Его рассказ хорошо иллюстрирует часто забываемый трюизм: обычно люди гибнут от небольших ошибок.
Надо предупредить, что эта история может показаться людям с недостаточным знанием технического арсенала хакеров слишком трудной для восприятия. Это — некая хроника, описывающая трудовые будни кракеров. То, о чем здесь рассказывается, произошло совсем недавно. Итак, Эрик, как и многие другие герои этой книги, днем работает консультантом, который помогает бизнесу защитить свои информационные активы. Но зато ночью он превращается в хакера, проникающего в самые неожиданные места.
Эрик принадлежит к специальному типу хакеров, которые стремятся к цели с невероятным упорством и никогда не бросают своих попыток, даже если они занимают месяцы или годы.
РАБОТА НАЧИНАЕТСЯ
Несколько лет назад Эрик и еще несколько хакеров собирали различные типы программ и, в конце концов, достигли такого состояния. когда они стали «собственниками кодов» всех основных программ с одним единственным исключением. «Это была последняя программа, которой у меня не было, — объясняет Эрик, — и я не знаю почему, но мне было просто суперважно добраться до нее». Я прекрасно понимаю эту его страсть. Эрик в душе — охотник за трофеями и чем ценнее программа, тем крупнее трофей.
Это задача заводила Эрика больше, чем он мог признаться себе. «Есть несколько сайтов, на которые я хочу попасть, но они действительно трудны по некоторым причинам», — просто объясняет он. Я могу понять и эту его эмоцию.
Он начал обычным способом, « с о сканирования портов на Интернет-сервере, — это первое место, куда я заглядываю, когда пытаюсь проникнуть на Интернет-сервер. Обычно там есть много интересного. Но на этот раз я не мог ничего найти». Начиная атаку, хакеры обычно подбираются к мишени осторожно, чтобы избежать сигналов тревоги и не быть замеченными администратором. Это особенно актуально в наши дни, когда многие компании пользуются системами обнаружения вторжения, чтобы заметить сканеры портов и другие типы хакерских инструментов, которыми обычно пользуются атакующие.
Эрик: «Я искал несколько портов, которые должны были стать для меня интересными мишенями». Он охотился на список номеров портов, которые используются для Интернет-сервера, терминальных сервисов, Microsoft SQL-сервера, Microsoft VPN. NetBIOS, почтового сервера (SMTP) и других целей.
На сервере Windows, порт 1723 (как отмечалось в главе 7) обычно используется для протокола, известного, как туннель «точка-точка», который является реализацией V P N компанией Microsoft и использует авторизацию на базе Windows, Эрик вспоминал, что пробуя порт 1723, он «понял, какую роль играет сервер».
Он даже не пытался скрывать свою личность на этом этапе, поскольку «компании так часто подвергаются сканированию в наши дни, что на это никто не обращает внимания. Одно сканирование среди сотни тысяч таких же ничего не значит».
(Оценка Эриком невысокой степени риска быть обнаруженным и идентифицированным базируется на его авантюрном предположении, что это сканирование портов будет похоронено в «шуме» современного Интернета. Действительно, сетевой администратор компании-мишени может быть слишком загруженным или ленивым для того, чтобы проверять все записи об активности в сети, но всегда есть шанс, что он займется именно этим. Более осторожные хакеры стремятся не рисковать даже в такой малости).
Несмотря на весь риск, в этом случае сканирование портов не выявило ничего полезного. Далее, используя стандартную программу. которая работала как сканер CGI (common gateway interface), он обнаружил log-file, созданный WSFTP-cepвepом, который содержал, кроме всего прочего, список имен файлов, загружаемых на сервер. Он был аналогичен любым другим распечаткам работы FTP-серве-ров, говорит Эрик, «за исключением того, что этот список хранился в каждой директории, файлы которой были загружены», так что, когда вы видели имя файла в списке, который выглядел интересно, то он находился именно здесь — вам не надо было охотиться за ним.
Эрик проанализировал FTP-записи и обнаружил имена файлов, которые были загружены в директорию «/include», где обычно хранились файлы типа «.inc» — программные функции общего типа, которые взяты из других модулей кодов. В Windows 2000 по умолчанию эти файлы не были защищены. После тщательного просмотра списка файлов в log Эрик использовал свой Интернет-браузер, чтобы просмотреть коды в некоторых файлах, которые, по его мнению, могли содержать важную информацию. Специальное внимание он уделял файлам, которые могли содержать пароли резервного сервера баз данных. И случайно он наткнулся на нечто интересное.
«В тот момент», — вспоминает Эрик, — «я уже сделал десяток запросов на Интернет-сервер и ничего не мог там найти». Хотя находка паролей базы данных и была восхитительной, он быстро понял, что на этой машине нет сервера баз данных.
С этого момента ситуация стала «интересной».
«Я ничего не мог найти на том сервере, но у меня была специальная программа, которая перебирала возможные имена узлов на основе списка общеупотребительных имен узлов — как gateways, backup, test и т.д. плюс имя домена. Она перебирала список общеупотребительных имен узлов, чтобы убедиться, какие имена узлов существуют в этом домене.
Люди очень предсказуемы в выборе имен узлов, поэтому очень просто найти серверы».
Отыскать серверы было просто, но это по-прежнему не привело его никуда. Затем его озарило: компания расположена не в США. Поэтому «я начал добавлять в конце расширения различных стран и опять перепробовал все названия узлов, которые уже отыскал при помощи моего сканирующего средства». Например, для японской компании это выглядело бы так:
hostname.companyname.com.jp
Это позволило ему отыскать сервер архивирования и почтовый сервер. Он попал на них с помощью паролей, которые он обнаружил в файлах источников (.inc) в «include». Пароль для сервера Microsoft SQL был найден в директории администратора ( « s a » ) . Он смог выполнять команды при помощи стандартной процедуры (xpcmdshell), которая позволяла ему запускать shell-команды там, где работал SQL-сервер, обычно в привилегированном режиме. И — удача! Это дало ему полный доступ к Интернет/почтовому серверу.
Эрик немедленно начал рыться в директориях в поисках копий кодов и других ценностей. Его главной целью было найти очень секретную программу, используемую для производства лицензионных ключей для пользователей, которая обычно называется генератором ключей или «keygen». Сначала надо было собрать как можно больше информации о системе и ее пользователях. Все собранные интересующие его сведения Эрик записывал в таблицу Excel, где классифицировал пароли, IP-адреса, имена узлов, какие сервисы были доступны через открытые порты и т.д.
Он также заглядывал и в такую скрытую часть операционной системы, которую неопытные хакеры обычно пропускают, как LSA-секреты, где содержатся сервисные пароли, пароль последнего пользователя, входившего в компьютер, RAS-имена (Remote Access Services — услуги удаленного доступа) для dial-up, пароли рабочих станций, используемые для доступа в домен и многое другое. Он также просмотрел и защищенную область для хранения данных, где хранились пароли для Internet Explorer и Outlook Express.
Сначала он извлек «мешанину» паролей, и, расшифровав их, восстановил. Поскольку сервер был одновременно резервным контроллером домена, почтовым сервером и вторичным DNS-сервером, Эрик получил доступ ко всем записям обо всех DNS-pecypcax, (включая, среди прочего, имена узлов и соответствующие IP-адреса), открыв панель управления DNS. которая содержала подробный список имен узлов и доменов, используемых в компании.
«Теперь у меня был список всех их узлов, и я собирал пароли к ним тут и там, перескакивая из системы в систему».
Подобные «скачки» были возможны благодаря его предыдущим успехам в расшифровке паролей на backup Интернет-сервере после использования пароля Microsoft SQL, который он нашел.
Он до сих пор не знал, на каком сервере разрабатываются приложения, хранятся коды программ и лицензируемые коды управления. В поисках подсказки он тщательно просматривал все письма и записи о работе в Интернете, чтобы найти там хоть какой-то намек. Однажды он нашел список других IP-адресов из распечатки, которая выглядела интересно, тогда он решил атаковать этот компьютер. Его «Священным Граалем» на этом этапе была рабочая станция разработчиков, поскольку любой разработчик всегда хотел бы иметь доступ ко всему набору файлов кодов.
После этого он решил затихнуть на несколько недель. Собрав коллекцию паролей, он не находил ничего интересного в течение нескольких месяцев, «только незначительные порции информации. которые, как я думал, будут мне полезны».
КОМПЬЮТЕР ГЛАВЫ КОМПАНИИ
Почти восемь месяцев он «перескакивал с одного сервера на другой», не находя ни кодов программы, ни генератора ключей. Пока, наконец, не произошел некий прорыв. Он начал более пристально изучать backup Интернет-сервер, на который он проник первым, и обнаружил, что там хранятся копии всех писем, в частности список IP-адресов и адресов электронной почты всех сотрудников. Просмотрев этот список, он смог восстановить IP-адрес главы компании (CEO — Chief Executing Officer). Наконец-то он определил действительно достойную мишень.
«Наконец-то я нашел компьютер С Е О и это было уже интересно. Несколько дней я сканировал его порты, и он не отвечал, но я был уверен, что он там. В заголовках электронной почты я видел, что он использует один IP-адрес, но его там никогда не было.
Я начал сканировать его компьютер, проверяясь каждые два ч а с а — не прощупывает ли он меня, на тот случай, если бы у него были программы для обнаружения вторжения. Я прощупывал его несколько раз в день, но ограничил число портов пятью за каждые двадцать четыре часа. Через несколько дней я нашел порт, открытый, когда он работал за компьютером. Я наконец нашел открытый порт на его машине — 1433, работающий под MS SQL-сервером. Оказалось, что это его ноутбук, который он просматривал по два часа каждое утро. Итак, он приходил к себе в офис, проверял почту и затем уходил, выключив ноутбук».
ПРОНИКНОВЕНИЕ В КОМПЬЮТЕР СЕО
К тому времени Эрик собрал двадцать или тридцать паролей, принадлежащих компании. «У них были хорошие, сильные пароли, но они были построены по одному принципу. Однажды я понял его и раскрыл все пароли».
В этот момент Эрик осознал, что он занимается этим делом почти целый год. Только теперь его усилия увенчались успехом.
Эрик понял, что он распознал стратегию компании в области паролей, поэтому он опять вернулся к компьютеру СЕО, решив узнать его пароль. Что позволило ему надеяться на то, что он найдет пароль, который СЕО использует для MS SQL-сервера?
«Вы знаете, на самом деле я не могу этого объяснить. Это, похоже, моя способность — угадывать пароль, который выбирают люди, Я знаю даже то, какой пароль они будут использовать в будущем. У меня есть такое чувство, что я могу это знать. Это похоже на то, что я становлюсь ими и говорю, какой пароль я выбрал бы на их месте».
Он не знал, как это назвать — удачей или мастерством — поэтому закрылся формулировкой: «Я хорошо угадываю». Независимо от объяснения, он обычно узнавал правильный пароль, даже когда это было «не слово из словаря, а нечто более сложное».
Аналогичным образом он получил и пароль, который дал ему доступ к SQL-серверу в качестве администратора базы данных. СЕО был «Owned».
Он обнаружил, что компьютер хорошо защищен межсетевым экраном и лишь один порт у него открыт. Но Эрик обнаружил и немало такого, над чем он мог посмеяться. «Его система была крайне бестолковая. Я ничего не мог там найти, Я имею в виду, что там повсюду были файлы». Не зная иностранного языка, на котором там все было написано, Эрик использовал некоторые онлайновые словари и бесплатный сервис онлайнового перевода под названием «Bablefish», чтобы понять хотя бы ключевые слова. Ему помогал и его приятель, говоривший на этом языке. Из сообщений в «чатах» он смог отыскать дополнительные пароли и IP-адреса.
Поскольку файлы на ноутбуке были совершенно не организованы, и среди них невозможно было найти что-то ценное, Эрик применил другой подход, используя «dir/s/od
Чтобы упростить свою следующую работу, укрепить почву под ногами и более легко загружать и выгружать файлы, он решил установить в ноутбуке СЕО свои хакерские программы. Он мог связываться с ноутбуком только через соединения Microsoft SQL-сервера, но мог использовать ту же процедуру, что и раньше для посылки команд в операционную систему, как если бы он находился прямо в среде Windows. Эрик написал небольшую программу, чтобы перекачать туда свои хакерские программы при помощи FTP. Когда ничего не произошло в течение трех попыток, он использовал программу со строкой прямо на ноутбуке под названием «pslist», чтобы выявить работающие там процессы.
КОЛОССАЛЬНАЯ ОШИБКА!
Поскольку ноутбук СЕО работал с его персональным межсетевым экраном (Tiny Personal Firewall), каждая попытка использовать FTP-протокол приводила к появлению предупредительного окошка на экране ноутбука СЕО, в котором высказывалось предложение отключиться от Интернета. К счастью СЕО уже загрузил к себе весь набор строчных команд с сайта для управления процессами. Эрик использовал команду «pskill» для того, чтобы убить межсетевой экран, так что упомянутое окошко исчезло еще до того, как СЕО успел его заметить.
Затем Эрик счел разумным затихнуть на несколько недель, на тот случай, если кто-то заметил его активность. Вернувшись, он стал использовать другую тактику для попыток размещения своих программ на ноутбуке СЕО. Он написал программу для того, чтобы восстановить некоторые из своих хакерских программ, используя «Internet explorer object», что позволяет обмануть персональный межсетевой экран, поскольку тот думает, что Internet Explorer запрашивает разрешение на соединение с Интернетом. Большинство пользователей позволяют Internet Explorer свободно проходить через персональный межсетевой экран (готов спорить, что и вы тоже), и Эрик рассчитывал на то, что его программы смогут воспользоваться этим преимуществом. Правильная мысль. Она сработала. В результате он смог использовать эти программы для начала поиска нужной информации на ноутбуке.
CEO ЗАМЕТИЛ ПРОНИКНОВЕНИЕ
Все перечисленные методы, говорит Эрик, работают и сегодня.
Однажды, войдя в компьютер СЕО. Эрик опять убил межсетевой экран, чтобы передавать файлы на другой компьютер, откуда он смог бы перегрузить их к себе. В процессе этой работы он понял, что СЕО находится за компьютером и, должно быть, заметил что-то странное. «Вероятно, он увидел, что отсутствует значок работающего межсетевого экрана. Он понял, что я в его компьютере». Эрик немедленно отключился. Через несколько минут СЕО перезагрузил свой ноутбук и межсетевой экран опять заработал.
«Я не знаю, заметил ли он меня. Поэтому я подождал несколько недель, а потом возобновил свои попытки. Я уже изучил ритм его работы, и знал, когда могу попасть в систему».
ПОЛУЧЕН ДОСТУП К ПРИЛОЖЕНИЮ
Пересмотрев свою стратегию во время вынужденного перерыва, Эрик вернулся в ноутбук СЕО и начал изучать систему более тщательно. Прежде всего он запустил общедоступную строчную команду LsaDump2, чтобы просмотреть важную информацию, хранимую в специальном разделе памяти под названием L S A (Local Security Authority) Secrets. LSA Secrets содержали пароли для служебного пользования, зашифрованные пароли последних десяти пользователей, пароли пользователя для FTP и Интернета, имена пользователей и пароли для входа в сеть через dial-up.
Он запустил и команду «netstat», чтобы увидеть, какие соединения установлены в этот момент и какие порты участвуют в соединении. Он заметил, что один из портов с большим номером ожидает входящего соединения. Соединившись с этим портом через backup-сер-вер, на который он проник раньше, он понял, что это облегченный Интернет-сервер, который используется в качестве почтового интерфейса. Он сразу же понял, что может влезть в этот почтовый интерфейс и поместить любой файл в корневую директорию сервера, используемую для почтового интерфейса. После этого он легко сможет перегружать файлы с ноутбука СЕО на backup-сервер.
Не считая незначительных успехов за прошедший год, у Эрика по-прежнему не было нужных ему кодов программы генератора ключей. Но он и не думал отказываться от своей затеи. На самом деле ситуация становилась все более интересной. «Я нашел копию директории „tools“ на ноутбуке СЕО. В ней был интерфейс к генератору ключей, но не было доступа к базе данных».
Он не нашел лицензированный сервер, на котором находилась настоящая база данных с ключами всех клиентов, были лишь некоторые намеки на него. «Я не знал, где располагаются реальные лицензированные приложения для сотрудников. Мне просто необходимо было найти этот сервер». Он подозревал, что этот сервер расположен на том же сервере, что и почтовый, поскольку у компании был Интернет-сайт, который позволял клиентам немедленно получить заказанную программу. После того, как подтверждался перевод денег с кредитной карточки клиента, тот получал электронное письмо с лицензионным ключом. Остался только один сервер, на который Эрик не мог пробраться: именно на нем и должно было храниться приложение, вырабатывающее эти лицензионные ключи.
Итак, Эрик провел месяцы в сети и не достиг поставленной цели. Он решил еще раз просмотреть backup-сервер, на который он проник раньше, и начать сканировать почтовый сервер с других серверов, которыми он уже «владел», используя более широкий диапазон портов в надежде отыскать некоторые сервисы, работающие на нестандартных портах. Он подумал, что лучше будет проводить сканирование с внутреннего сервера в случае, если межсетевой экран пропускает только определенные IP-адреса.
В течение двух следующих недель он сканировал сеть так тихо, как только возможно, чтобы идентифицировать любые сервера, на которых работают необычные сервисы или пытаясь запустить обычные сервисы на нестандартных портах.
Продолжая свою работу по сканированию портов, Эрик начал исследовать файлы с архивами Internet Explorer в директории администратора и нескольких пользователей. Это привело его к еще одному открытию. Пользователи с backup-сервера соединялись с портом с большим номером на главном почтовом сервере, используя Internet Explorer. Он понял, что главный почтовый сервер блокирует доступ к этому порту, если соединение идет не с «разрешенных» IP-адресов.
Наконец он нашел Интернет-сервер на порту с большим номером — «1800 или что-то подобное» — вспоминает он, и смог угадать комбинацию имени пользователя и пароля, которые привели его в специальное меню. Одна из возможностей этого меню заключалась в просмотре информации о клиенте. Другая — давала возможность сгенерировать лицензионный ключ для продукта.
Бинго!
Это был сервер с реальной базой данных. Эрик почувствовал выброс адреналина в кровь, поскольку он приблизился к своей цели. Но «этот сервер был очень крутым, невероятно крутым». Он опять уперся в тупик. Он отступил назад и начал тщательно продумывать каждый свой шаг, у него возникла еще одна идея.
«У меня появились коды источника этих Интернет-страниц, поскольку я нашел на ноутбуке СЕО архив этих страниц. Я нашел также линк на Интернет-страницу, где проводилась диагностика сети, такая как netstat, traceroute и ping — вы могли разместить IP-адрес на Интернет-сайте и нажать „ОК“, эта команда выполнялась, и ее результат появлялся на вашем экране».
Он заметил небольшую ошибку в программе, которая запускалась с этого И н т е р н е т — с а й т а . Если он н а б и р а л команду «tracert», то выполнялась команда «traceroute» — отслеживание пути, по которому пакеты приходили к назначенному IP-адресу. Эрик понял, что может обмануть программу, задав ей команду с адресом IP, за которым он ставил значок «&», а потом еще одну нужную ему команду. Итак. он должен был писать что-то такое:
localhost > null&&dir с:\
В этом примере информация прикрепляется к traceroute-коман-де для CGI-текстов. Первая часть (до символа «&») говорит программе выполнить команду «traceroute» для самой себя (что, в общем-то, бессмысленно), а выход послать в никуда, что приведет к его исчезновению. После того, как программа выполнит первую часть команды, символы «&&» покажут, что есть другая команда, которую надо выполнить. Это команда просит показать корневую директорию на диске С — что очень полезно для атакующего, потому что она позволяет ему выполнять любую shell-команду с привилегией того пользователя, который работает на Интернет-сервере в данный момент.
«Это дало мне весь доступ, который мне был нужен», — рассказывал Эрик. «Я получил доступ ко всему, что было на этом сервере».
Эрик был завален информацией. Он вскоре обнаружил, что разработчики компании помещали копии кодов своих программ на сервере каждую ночь. «Это было настоящее богатство — полная копия всех программ объемом пятьдесят мегабит». Он смог выполнить серию команд, чтобы переместить нужные ему файлы в корневую директорию Интернет-сервера, а затем перегрузить их на первую машину, из тех, куда ему удалось проникнуть — backup Интернет-сервер.
ПОЙМАН!
Инцидент с СЕО тщательно разбирался. Руководство компании было очень обеспокоено, но поскольку у всех них была куча забот, а Эрик был практически незаметен, больше тревоги они не поднимали. Однако по мере того, как он подбирался все ближе и ближе к сердцевине компьютерной системы, Эрику становилось все труднее оставаться незаметным. То, что произошло потом, случается часто — это расплата за долгое пребывание в чужой системе и постоянное продвижение рубежа атаки вперед и вперед. Он только начал перегружать к себе коды вожделенной программы, когда:
«…перегрузив примерно половину, я обнаружил, что загрузка прервалась. Я посмотрел в директорию, но файл оттуда исчез. Я начал просматривать log-файлы и изменения в датах присутствия пользователей и обнаружил, что еще один пользователь в данный момент просматривает log-файлы. Он узнал, что я что-то делаю, по сути дела — он поймал меня».
Тот, кто заметил Эрика, не тратил время попусту и быстро уничтожал важные файлы. Игра была окончена … или нет?
Эрик отсоединился и не показывался в системе около месяца. Он боролся за доступ к этой программе много месяцев, и должен был испытывать сильное разочарование. Однако, он говорит, что это не так.
«Я никогда не впадаю в отчаяние, поскольку это тоже является частью работы. Е с л и мне не удалось проникнуть с первого раза, значит, з а д а ч а более сложная. Н е т с м ы с л а в п а д а т ь в отчаяние. Э т о как компьютерная игра: вы переходите с уровня на уровень и решаете проблему за проблемой. Э т о просто ч а с т ь в с е й игры».
У Эрика своя теория судьбы: достаточное упорство всегда вознаграждается.
«Если какой-то прием не работает, я пробую что-то еще, поскольку я знаю, что обязательно что-то сработает. Всегда что-то срабатывает. Надо просто найти, что».
НАЗАД — НА ТЕРРИТОРИЮ ВРАГА
Несмотря на провал, через месяц он опять начал атаку и соединился с компьютером СЕО для следующего просмотра записей его переговоров (он сохранял у себя все эти записи), чтобы посмотреть, есть ли там какие-то доклады о его хакерском вторжении. Помня точно день и время, когда он проникал в компьютеры компании и был замечен. Эрик просматривал именно этот участок архивов. Ни одного слова о его атаке или замеченном вторжении там не было. Он вздохнул с облегчением.
Заодно он понял, почему ему так «повезло». Почти в тот же момент, когда он был замечен, у одного из клиентов компании произошла авария. Все сотрудники ИТ-департамента побросали свои дела и занялись ее устранением. Эрик нашел более позднюю запись о том, что парень, который его обнаружил, просто запустил антивирусную программу, но не предпринял никаких дополнительных действий. «Было похоже, что ему что-то показалось подозрительным. Он немного поразбирался с проблемой, не смог понять, в чем дело, и просто забыл о ней».
Эрик ретировался и подождал довольно долго для новой атаки, причем совершал ее более осторожно, только в нерабочие часы, когда он быть уверен, что никого на работе нет.
Кусок за куском он перегрузил к себе весь код полностью, направив передачу через промежуточный сервер, расположенный в другой стране — по той причине, что всем процессом он управлял из своего дома.
Эрик описывал свое знание сети компании с просто фантастическими подробностями, но если вспомнить о том количестве времени, которое он провел входя и выходя во все системы компании, к какой тщательностью он изучал все их детали — это становится вполне понятным.
«Я знал их систему лучше, чем кто бы то ни было. Любую их проблему я мог бы разрешить гораздо лучше, чем это могли сделать они сами. Я имею в виду, что прекрасно знал каждую часть их сети не только снаружи, но и изнутри».
ЕЩЕ НЕ ТАМ…
Эрик наконец заполучил, безопасно перегрузив к себе на компьютер, коды программ сервера… но еще не в такой форме, чтобы их можно было открыть и изучать. Из-за огромных объемов программ разработчики обычно хранят их на сервере в сжатом виде «zip». Эрик попробовал расшифровать их обычной unzip-программой, но это ему не удалось. Тогда он обратился к плану В.
Эрик использовал новый усовершенствованный «взламыватель» паролей PkCrack, который использовал технику под названием «атака с известным текстом». Зная определенное количество текста в расшифрованном виде, и имея полный зашифрованный текст, программа могла расшифровать его весь или все файлы в архиве. «Я открыл zip-файл и обнаружил там файл „logo.tif“, затем я направился на их главный Интернет сайт и просмотрел там все файлы под названием „logo.tif“. Я перегрузил его к себе и „зазиповал“, после чего обнаружил, что у него в точности такая же проверочная сумма, как и у одного из защищенных zip-файлов, которые я старался раскрыть».
Теперь у Эрика был зашифрованный zip-файл и его расшифрованная версия logo.tif. Всего за пять минут программа PkCrack сравнила обе эти версии и раскрыла пароль для их расшифровки. С помощью пароля он быстро раскрыл все файлы.
После сотен длинных ночей Эрик наконец получил в свои руки полный текст программы, за которым он так долго и упорно охотился.
По поводу того, почему достижение отняло так много времени. Эрик отвечает:
«Каждому нравится что-то свое. Я люблю ставить перед собой задачу и решать ее так, чтобы меня не обнаружили. Я люблю делать все не так, как другие, и очень тихо. Я люблю находить креативные пути к решению любой проблемы. Действительно, перегрузить к себе текст может быть, и проще, но насколько интереснее мой путь. Крадите тексты, если вы воришка, а если можете избежать этого — будьте хакером».
Что же он делал с полученной программой и генератором ключей? Ответ состоит в том, что он и Роберт — герой следующей истории — ставят перед собой цели, которые типичны для кракеров всего мира. Вы найдете подробный рассказ об этом в разделе под названием «Распределение» перед окончанием главы.
РОБЕРТ, ДРУГ СПАМЕРА
В далекой Австралии живет еще один из этих честных джентльменов, которые днем трудятся, как уважаемые профессионалы в области безопасности и становятся опасными хакерами ночью, оттачивая свое мастерство и расплачиваясь в своих взаиморасчетах при помощи проникновения в самые труднодостижимые программистские компании мира.
Но Роберта, о котором у нас пойдет речь, нельзя было просто причислить к этой категории. Он слишком сложная личность для этого: один месяц он тратит на погоню за какой-нибудь программой исключительно ради собственного удовольствия и удовлетворения своего тщеславия, а другой месяц, чтобы заработать деньги, тратит на занятие, которое он сам же называет «грязным спамом». Не грязным. поскольку спамерство не его личная цель: и в то же время грязным из-за типа спамерства, которым он занимался.
«Зарабатывать себе на жизнь хакерством», — говорит он, «это жизненный принцип». Он не испытывал особого стыда, рассказывая нам свою историю. Он делал это безо всякого принуждения. При этом он даже придумал новый термин: «Вы можете назвать меня „спикером“ — хакером, который работает для спамеров».
«Ко мне обратился мой друг, который сказал: „Я хочу продать несколько порнофильмов с жестким мазохизмом тысячам людей. Мне хотелось бы получить несколько миллионов адресов электронной почты любителей подобных видеофильмов“.
Скорее всего, вы или я отказались бы от подобного предложения. Роберт «немного подумал об этом» и все же решил посмотреть, как он может решить поставленную задачу.
«Я просмотрел все эти жесткие мазохистские сайты», — говорит он, подчеркивая, что делал это, несмотря «на явное недовольство своей подружки». Свой поиск он проводил прямым и ясным способом — при помощи поисковика Google и другой поисковой машины , которая использовала различные поисковики.
В результате он получил список для работы: «Единственное, что я хотел узнать из всех этих порносайтов — это список людей, любящих мазохистские порнофильмы и желающих получить новинки этой гадости». Если Роберт и собирался помочь спамеру, то он не намеревался сам, «как все эти идиоты», рассылать сотни электронных писем всем и каждому, кто проявил хоть малейший интерес к объявленной теме, а также и тем, кто не проявлял к ней ни малейшего интереса.
ПОЛУЧЕНИЕ СПИСКА РАССЫЛКИ
Роберт обнаружил, что многие из тех самых мазохистских сайтов пользуются одним и тем же приложением для управления списком своих подписчиков, которое я буду называть SubscribeList.
«При помощи Google я обнаружил человека, который заказал себе такое приложение и хранил его на своем Интернет-сервере. По-моему, это был сайт где-то в Китае или на Тайване».
Следующий шаг был даже еще проще, чем он думал. «Интернет-сервер был сконфигурирован неправильно. Каждый пользователь мог посмотреть исходные коды его программ. Это была не самая последняя версия программ, но все же достаточно свежая».
Ошибка же заключалась в том, что кто-то случайно или по небрежности оставил сжатый архив этих программ в директории документов Интернет-сервера. Роберт перегрузил себе все коды программ.
С помощью этих программ и имен, которые он получил с сайтов, Роберт сделал вывод:
«Я мог бы разослать электронные письма с таким текстом: „Захотите на мой сайт, у нас есть нечто специальное по теме „порки“ за полцены. Масса людей подписалась бы на такое предложение“.
Итак, хотя у него была программа для управления листом рассылки, у него не было самого листа рассылки.
Он сел и начал изучать коды SubscribeList и в конце концов обнаружил некую возможность, написав программу Perl. Подробное техническое объяснение достаточно сложное (смотрите в разделе «Анализ» в конце главы).
Аналогично тому, как кракер в предыдущей истории использовал символ «&» для обмана программы и выполнения нужной ему команды, Роберт использовал брешь в «setup.pl». Этот хакерский путь называется «backticked variable injection flaw», он использует недоработку в программе setup.pl, которая недостаточно тщательно проверяет данные, передаваемые ей. (Различие лишь в операционных системах. Метод Эрика работал в среде Windows: метод Роберта — в Linux). Злонамеренный атакующий может послать такую команду, которая поменяет значение некоторого параметра таким образом, что текст может измениться на другой Perl-текст, который будет исполнять произвольные команды. Благодаря этой оплошности программиста атакующий может встраивать собственные команды.
С помощью этого метода можно было обманывать setup.pl, заставляя его думать, что атакующий только что установил SubscribeList и хочет сделать начальную установку параметров. Роберт мог использовать этот трюк с любой компанией, которая использовала уязвимую версию программного обеспечения. Как же ему отыскать мазохистскую компанию, которая удовлетворяла бы этим требованиям?
Текст программы, по словам самого Роберта, « б ы л очень хитрым и извилистым». Когда работа программы заканчивалась, она уничтожала все следы своего присутствия и возвращала все значения переменных к их начальным величинам, так что никто не мог ничего сказать о случившемся. «И насколько я знаю, никто не смог заметить ее действия».
Ни один разумный хакер не стал бы посылать эти файлы прямо на свой компьютер таким образом, что его можно было бы выследить. «Я настоящий ф а н а т Интернета. Я люблю Интернет. С е т ь допускает анонимность. Вы можете войти в Интернет из какого-нибудь кафе и никто не догадается, кто вы на самом деле. Мне нравится несколько раз обежать вокруг земного шара, причем каждый раз по-новому. Подобную связь сложнее отследить, а в log-файле это будет всего одна или две строчки».
ДОХОД ОТ ПОРНОГРАФИИ
Роберт обнаружил, что многие мазохистские сайты используют одно и то же программное обеспечение для проведения рассылки. При помощи его модифицированной программы он попадал на эти сайты и извлекал к себе их список рассылки, который он затем переправлял своему другу-спамеру. Роберт подчеркивает: «Я не был прямым спамером».
Его маркетинговая политика оказалась невероятно успешной. Когда вы рассылаете свои предложения тем людям, о которых знаете, что они «действительно любят эту мерзость» (используя меткое выражение Роберта) эффективность откликов превосходит все ожидания.
«Обычно вы ожидаете процент отклика в 0,1 — 0,2%. Мы получили 30%, во всяком случае, так говорят опросы. 30 — 40% людей купили кассету. Для мира спамеров — это абсолютный рекорд. В результате этой деятельности было получено сорок пять — пятьдесят тысяч долларов и мне досталась треть».
Успех этой продажи основан прежде всего на том, что Роберт собрал список людей, желающих выложить деньги за товар такого рода. Если числа, которые он называет, точные, то можно только сожалеть о мире, в котором мы живем.
Роберт говорит, что собрал от десяти до пятнадцати миллионов имен!
РОБЕРТ КАК ЛИЧНОСТЬ
Несмотря на этот эпизод, Роберт настаивает: «я не являюсь мерзким спамером; я честный и прямой человек». В подтверждение своих слов он объясняет, что работает в области безопасности для одной «очень религиозной и честной компании» и берет внешние заказы, как независимый консультант в области безопасности. Он даже публикует статьи по темам в сфере безопасности.
Он очень поэтично выражает свое отношении к занятию хакерством.
«Я очень люблю, когда передо мной встает определенный вызов, я люблю сражаться с системой на уровне конфигурации или социальной инженерии, а не только на техническом уровне — социальная инженерия означает проникновение в человека, сидящего за компьютером».
За плечами Роберта долгая история хакерства. Он упоминает своего друга (американского хакера, чье имя он не хочет называть), который играл с ним в такую игру:
«Мы оба часто проникали в компании разработчиков, которые создали такие известные программы как Active X controle и Delphi controls, а также множество небольших, но приятных программ для программирования. Е с т ь даже специальный журнал на э т у тему, а там рекламируются в с е программные новинки. И м ы с р а з у ж е смотрели, е с т ь л и там что-то, ч т о мы еще не получили. Особенно игры».
Он бродил по внутренним сетям главных производителей компьютерных игр и получал коды программ их игр.
Совершенно случайно он и его приятель-хакер обнаружили. что «мы проникаем практически в каждую компанию, которая рекламирует свой новый продукт. Мы уже были там, там и там…
Мы стараемся просто проникнуть туда, но получаем все, что хотим».
И все же одна область была особенно интересна Роберту: программные продукты для того, что он называл «продукция видео по почте» — в частности, программы, которые используются для анимации в кинофильмах.
«Я люблю то, что делают эти ребята. Среди них попадаются настоящие гении. Я люблю читать их программы и понимать, как они работают, они выглядят так дико, когда на них смотришь. Я имею в виду, когда смотришь по телевизору мультипликационные фильмы. Дьявол, как это круто!»
Особенно он любил изучать коды с математической точки зрения — «уравнения и функции, а главное человеческий интеллект, который ими управляет. Это феноменально!»
Все это и привело его к тому, что он называет самым памятным случаем хакерства.
ИСКУШЕНИЕ ПРОГРАММОЙ
В 2003 году Роберт по своему обыкновению просматривал анонсы продуктов в программном журнале и обнаружил новый продукт для изготовления «цифровых видеоэффектов, забавных штучек со светом — одно из приложений, с помощью которого они делают свет выглядящим реально, а поверхности предметов — отражающими этот свет».
Главное достоинство этого продукта заключалось в том, что он использовался при производстве нового полноформатного анимационного фильма — одно из тех средств, которое использовалось для дизайна, моделирования и съемки фильма.
«Когда я узнал об этом, то подумал, что это круто. И некоторые люди из кругов, в которых я вращался в Интернете, были очень заинтересованы в этом программном обеспечении. Масса людей хотела заполучить его в свои руки.
Каждый хотел получить это приложение, поскольку его трудно достать, оно дорого стоит — две, а то и три тысячи долларов. Е г о используют такие гиганты как Industrial Light and Magic и, может быть, еще четыре-пять компаний в мире купили его.
Так или иначе, я действительно захотел получить в свои руки эту программу и решил отыскать компанию, у которой я буду ее извлекать. Компания «Икс» — вы согласны? Э т а компания расположена в США, и вся ее сеть была централизована».
В его задачу не входило добывать эту программу для себя, он хотел разделить обладание ею с миллионами пользователей Интернета по всему миру.
Он обнаружил, что у компании «есть межсетевой экран и небольшая сеть. У них было много серверов и Интернет-серверов. По моим оценкам у них было сто — сто пятьдесят сотрудников».
РАСКРЫВАЯ ИМЕНА СЕРВЕРОВ
Роберт использовал обычную стратегию, когда он пытался проникнуть в корпоративную сеть достаточно большого размера. Он «начал разбираться, как они заботятся о людях, которые хотят войти в их сеть. У большой компании в этом плане гораздо больше проблем. чем у маленькой. Если у вас пять сотрудников, вы каждому из них можете послать электронное письмо, правильно? Или вы можете собрать их всех и сказать, „вот как вы можете соединиться с вашим сервером из дома, а вот как вы можете дома просматривать свою электронную почту“.
А вот у большой компании должна быть специальная служба Help Desk или какие-то внешние службы, куда люди могли бы обратиться при возникновении проблем с компьютером. Роберт знал, что компании с большим числом сотрудников должны иметь большое число разнообразных инструкций — в основном на их Help Desk — объясняющих, как получить удаленный доступ к своим файлам и электронной почте. Если бы ему удалось отыскать эти инструкции, он бы смог понять необходимую последовательность шагов по проникновению в эту сеть извне, в частности, какое программное обеспечение необходимо для соединения с внутренней сетью поверх корпоративной VPN (Virtual private network — виртуальная частная сеть). В частности, он надеялся найти, какие точки используют разработчики для доступа к системе разработки извне, поскольку они должны постоянно иметь доступ к своим кодам.
На этом этапе ему надо было найти путь к Help Desk. «Я начал с небольшой программки под названием Network Mapper, кo-торую написал сам однажды. Она перебирает список типичных номеров узлов. Я использую ее в моих анализах DNS».
Network Mapper идентифицирует узлы и находит IP-адреса для каждого из них. Программа Perl (также написанная Робертом), перебирает список общеупотребительных имен узлов и проверяет, нет ли таких же имен в домене атакуемой компании. Итак, для атаки на компанию под названием «digitaltoes», хакерское средство может искать web.digitaltoes.com, mail.digitaltoes.com и т.д. При таком поиске можно найти скрытые IP-адреса или сетевые блоки, которые не так просто идентифицировать. После работы программы он может получить результаты, которые выглядят так:
beta.digitaltoes.com
IPAdress #1:63.149.163.41…
ftp.digitaltoes.com
IPAdress #1:63.149.163.36…
intranet.digitaitoes.com
IPAdress #1:63.115.201.138…
mail.digitaltoes.com
IPAdress #1:63.149.163.42…
www.digitaitoes.com
IPAdress #1:63.149.163.36…
Отсюда следует, что наша фиктивная компания «digitaitoes» имеет некоторые сервера в сетевом блоке 63.149, но я поставил бы свои деньги на сервер в сетевом блоке 65.115 с именем «intranet», что соответствует их внутренней сети.
НЕКОТОРАЯ ПОМОЩЬ ОТ H E L P D E S K . E X E
Среди серверов, которые Роберт обнаружил с помощью своего Network Mapper был один, на который он особенно надеялся: helpdesk.companyX.com. Когда он пытался проникнуть на этот сайт, то появилось диалоговое окно с требованием ввести имя пользователя и пароль, допуская туда только авторизованных пользователей.
Приложения для helpdesk находились на сервере, где работала IIS4, древняя версия Microsoft Internet Information Server (IIS), которая, как Роберт знал, имела целый ряд лазеек. При небольшом везении он мог бы найти одну незаделанную и поэтому полезную для него.
Он обнаружил зияющую дыру. Некоторые администраторы компаний инициируют MS Front Page таким образом, что любой может выгрузить или загрузить файлы из корневой директории, где хранятся файлы Интернет-сервера.
(Мне хорошо знакома эта проблема. Однажды Интернет-серверы в компании по обеспечению безопасности, которую я создал, были атакованы через аналогичную брешь, потому что системный администратор, который добровольно помогал мне, неправильно сконфигурировал систему. К счастью, сервер работал в своем собственном сегменте сети, отделенном от остальной).
Поняв, что эта ошибка дает ему возможность загружать файлы на сервер и сгружать с сервера, он начал смотреть на параметры сервера.
«Наиболее распространенный вариант использования тупых IIS-серве-ров состоит а возможности авторизации FrontPage».
И у этого сайта была такая слабость. Развертывание Microsoft FrontPage (программа-приложение, используемая для простого создания и редактирования HTML-документов) без установки соответствующих разрешений на пропуск файлов — обычное заблуждение системных администраторов, которые иногда специально конфигурируют так сайт из соображений удобства. В данном конкретном случае любой человек мог не только прочесть файлы, но также и загрузить туда файлы в любую незащищенную директорию. Роберт действовал в том же стиле.
«Я смотрел на все это и думал: «Черт побери, я могу прочесть или отредактировать любую страницу на этом сервере без всякого имени пользователя или пароля.
Таким образом, я мог войти и изучать корневую директорию на Интернет-сервере».
По мнению Роберта, большинство хакеров упускают такую возможность.
«Дело в том, что когда люди устанавливают сканер сети на сервере, они чаще всего не смотрят на ошибки в конфигурации таких приложений, как FrontPage. Они смотрят (чтобы посмотреть на тип сервера) и говорят „ Э т о Apache“ или „ Э т о I I S “ . И они упускают возможность упростить свою жизнь в том случае, если FrontPage неправильно сконфигурирована».
Это было не так прекрасно, как он ожидал, поскольку «на этом сервере было не так уж много интересного». И все же он заметил, что приложение под названием «helpdesk.exe» появляется, когда он получает доступ к сайту через свой браузер. Это могло бы оказаться очень полезным, но требовало знать имя пользователя и пароль.
«Итак, я смотрел на все это и думал, как атаковать этот треклятый сайт? Я не люблю делать одну вещь: это загружать файлы на Интернет-сервер, потому что, если администратор просмотрит записи об Интернет-активности и увидит, что среди тысячи сотрудников его компании, которые обращались к helpdesk.exe, неожиданно оказался парень из Южной Атлантики, работающий с two.exe или каким-то другим приложением, это сразу насторожит его, правильно? Поэтому я старался избегать подобных записей».
Приложение helpdesk состоит из одного исполняемого файла и файла библиотеки динамических связей ( D L L ) (файлы с расширением .DLL содержат набор функций Windows, которые может вызывать приложение).
Имея возможность загружать сайты в корневую директорию Интернет-сайта, атакующий может легко загрузить туда простую программку, которая даст возможность хакеру выполнять команды через свой браузер. Но Роберт был не простым хакером. Он гордился собой, потому что он был невидим и практически не оставлял следов в записях Интернет-сервера. Вместо простой загрузки на сервер переделанной программы, он перегружал на свой компьютер файлы helpdesk.exe и helpdesk.dll, чтобы понять, как работают эти приложения, полагаясь на свой опыт и знания. «Я проделал массу работы по обратной инженерии приложений и изучению программ, написанных на ассемблере, поэтому я знаю, как разбираться в скомпилированном с языка С коде и переводить его обратно на ассемблер».
Программа, которой он пользовался, называлась I D A Pro, интерактивный «дисассемблер» (ее продают на сайте ), ей пользовались по его словам «многие компании, занимающиеся вирусами и охотой на вирусных червей, которым нужно декомпилировать некоторые тексты до уровня ассемблера, а потом разобраться в том, что они делают». Он декомпилировал helpdesk.exe и, одобрил работу, выполненную профессиональными программистами, решив, что она «написана вполне прилично».
ИЗ МЕШКА ХАКЕРСКИХ ШТУЧЕК: АТАКА SQL INJECTION
После того, как он декомпилировал программу, Роберт обратился к изучению кода, чтобы понять, будет ли приложение helpdesk подвержено SQL injection, методу атаки, который использует распространенную компьютерную оплошность. Программист, думающий о безопасности системы, постарается отфильтровать все запросы внешних пользователей, в которых встречаются такие символы, как «апостроф», «знак цитирования», «больше» и «меньше». Если не отбрасывать программы с подобными символами, то злонамеренный пользователь может обмануть приложение и проникнуть в систему.
Роберт выяснил, что приложение helpdesk проводит необходимые проверки на подобные символы, чтобы помешать хакерам использовать SQL injection. Большинство хакеров перегрузили бы программу ASP на Интернет-сервер и использовали бы ее, но не Роберт! У него были более обширные планы, чем использовать простейшую лазейку для проникновения в свою мишенью.
«Я подумал: „Ситуация выглядит очень забавной, и надо получить от нее максимум удовольствия“.
Я сказал себе: «Хорошо, я использую SQL-injection, слегка подправив проверку на достоверность». Я нашел строку, где содержался список недопустимых символов, и изменил ее. По-моему, в список входило «подчеркивание», или что-то похожее, чего я не должен был использовать, но в то же время его отсутствие ни на что не влияло».
Другими словами, он немного видоизменил программу (используя цифровой редактор для взлома программы, которая должна была проверять символы), так что определенные специальные символы больше не отвергались. После этого он мог незаметно производить SQL-injection, не влияя на всю структуру работы приложения для всех остальных. Еще одним преимуществом такого развития событий было то, что администратор, скорее всего, не стал бы проверять сохранность приложения helpdesk, поскольку не было никаких сигналов о том, что оно взломано.
Далее Роберт послал модифицированную версию приложения helpdesk на Интернет-сервер, заменив им оригинальную версию. Подобно тому, как некоторые люди любят привозить марки, открытки или спичечные коробки с видами тех мест, где они побывали, хакеры иногда хранят не только полученную добычу, но и тексты программ, которые они использовали в своей работе. У Роберта до сих пор хранится текст той программы в двоичном скомпилированном виде.
Поскольку он работал из дома (дело рискованное, если вы только сознательно не хотите попасться), то свою «новую и улучшенную» версию приложения helpdesk он загружал через целую цепь промежуточных прокси-серверов (это серверы, работающие посредниками между компьютером пользователя и компьютером, в который он стремится проникнуть). Если пользователь делает запрос о ресурсе с компьютера «А», этот запрос направляется на прокси-сервер, который в свою очередь делает запрос и получает ответ от компьютера «А», а потом уже переправляет его клиенту.
Прокси-серверы обычно используются для доступа к ресурсам Интернета из-за межсетевого экрана. Роберт повысил степень своей безопасности, используя несколько прокси-серверов, расположенных в различных частях мира, чтобы снизить вероятность быть пойманным. Так называемые «открытые прокси-серверы» обычно используются для того, чтобы замаскировать место, откуда исходит кибератака.
При помощи модифицированной версии приложения helpdesk, загруженного на компьютер и запущенного, Роберт соединился с сайтом-мишенью, использующим Интернет-браузер. Когда перед ним появилась входная форма с запросом имени пользователя и пароля, он запустил атаку SQL injection, как и планировал. В нормальном режиме, после того как пользователь введет свои имя и пароль — скажем, «davids» и «zl8M296q» — приложение использует эти входные данные для того, чтобы сгенерировать такую SQL-команду:
select record from users where user = 'davids' and password = 'z18M296q'
Если поле пользователя и поле пароля будут соответствовать информации в базе данных, тогда пользователя пускают в систему. Таким образом, все должно работать в нормальном режиме. А вот как проходила атака Роберта SQL-injection: в разделе для имени пользователя он написал — " orwherepasswordlike"%
Для пароля он ввел аналогичную строку
" orwherepasswordlike"%
Приложение использует эти входы и генерирует такую SQL-ко-манду:
select record from users where user = " or where password like '%' and password = "or where password like '%'
Элемент строки orwherepasswordlike% говорит SQL принять запись, если пароль что угодно ( " % " — это пустышка). Обнаружив, что пароль удовлетворяет этому дикому условию, приложение впускает Роберта, как вполне законного пользователя, как если бы он ввел данные о законной авторизации. Система впускает его и связывает с данными первого пользователя в базе данных, которым обычно бывает администратор. Так и оказалось в нашем конкретном случае. Роберт не только вошел в систему, но и получил привилегии администратора.
Отсюда он получил возможность увидеть переписку всех сотрудников или авторизованных пользователей после успешного входа в систему. Просмотрев несколько таких посланий, он извлек из них информацию о номерах телефонов dial-up для соединения с сетью, а также адреса гиперлинков для добавления и удаления пользователей из внутренней защищенной сети. Компания использовала VPN-сервер Microsoft, который настраивается таким образом, что сотрудники используют их имена и пароли для Windows, чтобы войти в него. Поскольку Роберт находился в приложении helpdesk с привилегией администратора, он получил возможность добавлять пользователей в VPN-группу и изменять их пароли для компьютеров, работающих в ОС Windows.
Дело продвигалось не быстро. Несмотря на то, что он находился в приложении с привилегиями администратора, это ни на шаг не приблизило его к кодам программы. Следующей целью Роберта стала попытка получить доступ к их внутренней сети через настройки VPN.
В качестве проверки, через меню helpdesk он попытался изменить пароль одного из «спящих» аккаунтов (в этом случае его активность было труднее заметить сразу) и добавить его в группу администратора. Он выяснил, как устроена V P N и «попробовал команду VPNin. Все было хорошо, но работало медленно».
«Я проник внутрь примерно в час ночи. Поскольку я находился в Австралии, разница во времени играла мне на руку, в Америке был час ночи, а в Австралии — разгар рабочего дня. Я хотел войти в сеть, когда там наверняка никого нет, и не хотел, чтобы кто-нибудь зашел и заметил меня. Может быть, у них надо было писать отчет о каждом таком случае. Я хотел быть спокоен».
Роберт считает, что он понимает, как работают люди, занимающиеся безопасностью информационных технологий, поскольку они не слишком отличаются от остальных людей, «Единственный способ заметить меня для них были регулярные проверки записей о всей активности в сети». Его мнение о людях, занимающихся ИТ и безопасностью, как минимум, не восторженное. «Поверьте, люди не просматривают подобные записи каждое утро. Когда они садятся за свой компьютер, они берут чашечку кофе и читают последние новости в Интернете. Это гораздо интереснее, чем бросаться проверять, не изменил ли кто-нибудь вчера их пароли».
За время своих хакерских попыток Роберт понял: «когда вы меняете что-то на сайте, люди либо замечают это сразу, либо не замечают никогда. Изменения, сделанные мной, можно было заметить только в том случае, если запускать специальную программу типа Tripware». Роберт имеет в виду приложение, которое проверяет целостность системы и ее приложений, производя вычисление криптографических проверочных сумм и сравнение их с таблицей известных значений. «Тогда они заметили бы, что программа была изменена».
В этом он был абсолютно убежден и употреблял специальный термин «М&М-безопасность» — жесткая на вид и мягкая на самом деле. «В обычных условиях никто не беспокоится о наличии хакера в их сети, потому что они находятся внутри системы. После того, как вам удалось проникнуть внутрь тщательно охраняемого периметра, вы можете чувствовать себя практически, как у себя дома». (Эта фраза означает, что после проникновения хакера в систему и использования им внутренних ресурсов от имени какого-то авторизованного пользователя, очень трудно понять, что это чужеродная активность).
Он обнаружил, что аккаунт пользователя, в который он проник (изменив пароль) через приложение helpdesk, позволил ему проникнуть в сеть через сервис Microsoft VPN. После этого его компьютер соединился с внутренней сетью компании так, как если бы он использовал компьютер, физически включенный в сеть в помещениях компании.
Итак, он прилагал все усилия для того, чтобы не оставить следов, которые внимательный системный администратор мог бы заметить, и уйти «без шума и пыли».
После соединения с внутренней сетью Роберт определил имена компьютеров, работающих под Windows и их IP-адреса, находя компьютеры с именами FINANCE, BACKUP2, WEB и HELPDESK. Он обнаружил и другие — с именами людей, это были компьютеры отдельных пользователей. Он шел по пути уже не раз описанному другими людьми на этих страницах.
По поводу имен серверов можно сказать, что у кого-то в компании было специфическое чувство юмора, достаточно распространенное на рынке высоких технологий. Все началось еще во времена расцвета компании Apple Computer. Стив Джобс, известный своими удивительными творческими способностями и манерой нарушать все традиции и правила, решил, что комнаты для переговоров в зданиях компании не будут носить обыденные и скучные номера вроде 212А или «комната для переговоров шестого этажа». Вместо этого он назвал их именами героев мультфильмов в одном здании, именами кинозвезд — в другом, и так далее. Роберт обнаружил, что компания, в которую он проник, сделала нечто подобное с некоторыми серверами: помимо того, что она имела отношение к индустрии анимационных фильмов, она и имена серверов выбрала среди известных муль-тяшных персонажей.
Но его привлек сервер с достаточно обычным названием — Backup2. Именно на нем он обнаружил жемчужное зерно: сетевую директорию под именем Johny, где один из сотрудников хранил копии своих файлов. Похоже, что этот сотрудник чувствовал себя достаточно свободно и мало заботился о безопасности. Среди файлов этой директории была и копия его почтовой директории, где находились все его письма. (Под сетевой директорией здесь подразумевается жесткий диск или часть диска, которая специально сконфигурирована так, что позволяет обеспечить доступ к своим файлам различным пользователям).
ОПАСНОСТЬ КОПИРОВАНИЯ ДАННЫХ
Общий для всех нас знаменатель заключается в том, что когда мы хотим скопировать для длительного хранения свои файлы, мы хотим сделать это максимально просто. Если на диске есть достаточно места, то мы копируем все. После чего очень быстро забываем о сделанном. Число подобных копий, лежащих повсюду, огромно. Люди просто делают их, а об их удалении задумываются только тогда, когда на сервере заканчивается свободное место.
«Часто, — комментирует Роберт. — подобные копии действительно содержат важную, существенную, удивительную информацию, о которой никто и не вспоминает, потому что она лежит в архиве. Причем с очень невысокой степенью защиты». (Кстати, в мои молодые годы я пришел к такому же выводу. Компания может прилагать немалые усилия для того, чтобы защитить те или иные данные, но вот к архивным копиям тех же самых данных отношение совсем наплевательское. Когда я был «в бегах», то работал в одной юридической фирме, которая хранила ленты со своими копиями в ящике, стоявшем за пределами охраняемой компьютерной комнаты, чтобы их могли забрать представители компании, занимающейся хранением таких лент. Любой мог украсть эти ленты без малейшего опасения быть пойманным). На сервере Backup2 он обнаружил директорию общего доступа, в которую один из сотрудников скопировал все свои файлы. Он постарался представить себе, как это могло получиться:
«Однажды этот парень очень спешил. Он подумал: „мне надо сделать резервную копию“, и он ее сделал, И после трех или четырех месяцев она все еще лежала на прежнем месте.
Я подумал, что этим парнем вполне мог быть системный администратор, поскольку это явно не был обычный разработчик или кто-то еще без соответствующих п р а в доступа. Это был один из тех, кто мог создавать директории общего доступа, но он мало заботился о безопасности».
Роберт продолжает:
«Если бы он разбирался в безопасности, как я, например, то он бы защитил эту сетевую директорию специальным паролем и назвал бы ее как-нибудь неприметно. А п о с л е какого-то времени у д а л и л бы е е » .
И что еще больше понравилось Роберту, «он сделал копию своего почтового ящика» со всеми адресами и контактами. «Я скопировал архив всех его файлов», — вспоминает Роберт, «а также и почтовый ящик со всеми электронными письмами, где было сто тридцать-сто сорок мегабайт».
После чего он отключился и провел несколько часов за чтением электронных писем этого парня. Он нашел там «все внутренние объявления, сведения об изменениях его заработной платы, обзоры работы — буквально все о нем. Он был одним из шести системных администраторов и отвечал за Windows-серверы», — говорит Роберт. «Из его почтового ящика я получил информацию и о других системных администраторах и об их возможностях». Он получил даже еще больше:
«Информация в его письмах была очень полезной. Я смог создать список людей, имевших доступ к кодам программы, которые были мне нужны. Я выписал их имена и все подробности, которые смог найти о них. Затем я просмотрел все файлы этого парня в поисках слова „password“ и обнаружил несколько регистраций, причем одна из них относилась к человеку из компании, занимающейся сетевыми приложениями.
Этот администратор организовал аккаунт для кого-то, работающего вне компании с адресом электронной почты и паролем. Он делал аналогичную вещь еще для двух или трех производителей оборудования. Я обнаружил ответные письма от компаний с благодарностью за организацию аккаунта. Пароль там был «mypassword»».
А вдруг они так и оставили этот пароль, не поменяв его? Люди ленивы, поэтому имело смысл попробовать.
Правильная мысль. Пароль сработал для одного из пользователей на сервере компании. Но это был не администратор домена, который, как надеялся Роберт, дал бы ему доступ к базе данных акка-унтов, в которой хранятся все имена пользователей и их зашифрованные пароли. К этой базе обращались все авторизованные пользователи всего домена. У Роберта было всего одно имя пользователя, но зато была возможность различных уровней доступа в зависимости от того, как он входил — через домен или через местный компьютер. Роберту нужны были права администратора домена, чтобы получить доступ к самым важным системам компании, но администратор использовал другой пароль для выполнения своих функций, которого у Роберта не было. «От этого я просто покрывался красными пятнами», — жалуется он.
Дело, казалось, зашло в тупик. « Н о я сообразил, что могу случайно наткнуться на этот пароль, если поищу его на других ресурсах».
И ситуация начала проясняться. Он обнаружил, что компания использовала специальное приложение для управления проектами под названием Visual SourceSafe, и добрался до внешнего файла паролей, который оказался читаемым для любого пользователя, имеющего доступ в систему. Атака этого файла паролей при помощи программы для взлома «мешанины» паролей, которая длилась «полторы-две недели, принесла мне различные пароли для этого сисадмина». Он нашел второй пароль администратора, который так старательно искал. Это была победа, поскольку пароль использовался для директории администрации домена, которая дала Роберту доступ ко всем серверам, в которые он хотел проникнуть.
К ВОПРОСУ О ПАРОЛЕ
Пароль — это очень личная вещь, говорит Роберт. «Серьезные компании внимательно относятся к этому вопросу, и каждому пользователю выдают действительно очень качественный пароль. И наоборот. если в качестве пароля для пользователей выбирается название дня недели, имя компании или вообще — оставляется изначально установленный пароль, то такие компании можно назвать неразумными».
Роберт рассказывал мне, что в компании, где он работал, пароль сотрудника выбирался в день начала его работы. При входе в компьютер «у вас было всего семь попыток его набора до блокирования системы, поэтому вы могли совершить не более пяти попыток, если старались попасть в чью-то директорию».
Роберт обнаружил множество пользователей в компании, куда он пытался проникнуть, имеющих изначально установленный пароль в следующем виде:
company name-2003
Он не нашел ни одного пароля с цифрой 2002 или меньше, а это значит, что все они были изменены в Новый Год. Фантастически «мудрое» управление паролями!
ПОЛУЧЕН ПОЛНЫЙ ДОСТУП
Роберт чувствовал, что все ближе приближается к своей цели. Вооруженный вторым паролем администратора, чьей авторизацией он пользовался, он получил доступ к зашифрованным паролям всего домена. Он использовал программу PwDump2 для извлечения этих паролей из контроллера первичного домена и программу l0phtCrackIII для их расшифровки.
Самая последняя «фишка» в этом деле основана на использовании «радужных таблиц», которые устанавливают соответствие зашифрованных и расшифрованных паролей. На сайте вам могут помочь расшифровать пароли. Вам надо запустить LAN Manager и указать адрес вашей электронной почты и послать им зашифрованные пароли. В ответ вы получите электронное письмо с расшифрованными паролями. Роберт объясняет: «У них есть огромный набор зашифрованных общеупотребительных паролей (восемнадцать-двадцать гигабайт), поэтому они на самом деле не расшифровывают ваши пароли, а сравнивают их со своей „библиотекой“. Для компьютера не составляет труда спросить несколько сотен миллионов раз: „Ты не это? Не это? Не это? Вот ты что такое, оказывается“. Радужные таблицы уменьшают время, необходимое для атаки, буквально до нескольких секунд».
Когда L0phtcrack закончил свою работу, у Роберта были пароли практически для всех пользователей этого домена. К тому времени, изучив множество электронных писем, он создал список людей, которые обменивались письмами с администратором. Один из них писал о сломанном сервере, жалуясь: «Я не смог спасти последнюю версию написанной программы». Значит, это был разработчик, обладающий ценной информацией. Роберт отыскивал его имя и пароль.
Затем он обращался к системе через dial-up и вводил данные того самого разработчика. «Войдя под его именем, я получал полный доступ ко всему».
«Все» в данном конкретном случае означало коды программного продукта, «те самые ключи от замка». И он получил их. «Я хотел украсть коды программы. Теперь у меня было все, что я хотел», — вспоминает он, абсолютно счастливый.
КОДЫ ПОСЛАНЫ ДОМОЙ
Роберт увидел блеск золота, которое он так долго искал. Дело было за малым: предстояло безопасным путем переправить его к себе домой. «Это была совсем не простая работа», — говорит он, — «Все дерево файлов „весило“ не меньше гигабайта, чтобы перетащить его к себе, мне предстояло валандаться с ними не одну неделю».
(Все же это было не так тяжело, как пытаться перегрузить к себе огромный сжатый файл через модем со скоростью передачи 14,4 Кб/с, что я делал, когда копировал сотни мегабайт кодов VMS из корпорации DEC несколькими годами раньше).
Поскольку ему предстояло переслать огромный объем данных, он стал думать о более скоростном соединении для такой пересылки. Кроме того, он хотел отыскать такой путь передачи, по которому его не удастся просто выследить. В качестве первого соединения он выбрал одну из компаний в США, в которую уже проникал раньше, она использовала Citrix MetaFrame.
Роберт установил VPN-соединение с компанией-мишенью и вычислил диск, на котором были расположены коды программы. Он просто скопировал их. «Я встроил этот Citrix-сервер в VPN, а затем переправил всю информацию из общедоступной директории — коды программы и все сопутствующие файлы на Citrix-сервер».
Чтобы отыскать путь для безопасной передачи файлов, так чтобы их нельзя было отследить (как он надеялся), он использовал мою любимую поисковую машину Google, чтобы отыскать анонимный FTP-сервер, который позволял бы кому угодно загружать и выгружать файлы в общедоступную директорию. Более того, он искал анонимный FTP-сервер, который имел бы директории, доступные через HTTP (то есть, через Интернет-браузер). Он полагал, что при работе через такой FTP-сервер он буквально «утонул» бы в Интернет-шуме. поскольку множество других пользователей используют этот сервер для перекачивания порнографических материалов, музыки и кинофильмов.
Вот что он искал в Google:
index of parent incoming inurl:ftp
Такой поиск FTP-серверов ориентирован на анонимный доступ. Изо всех серверов, которые выдал в ответ на его запрос Google, он выбрал один, который удовлетворял его критериям для перегрузки из H T T P , как мы уже отмечали, чтобы перегрузить все коды из своего Интернет-браузера.
После того, как файлы с текстами программы были переданы из компании на Citrix-сервер, он далее переслал их на анонимный FTP-сервер, найденный при помощи Google.
Оставался последний шаг перед тем, как он, наконец, мог получить долгожданные коды программы в свои руки: передача их с FTP-сервера на его собственный компьютер. Но «в конце этого тяжелого дня я совершенно не хотел, чтобы мой Интернет-адрес был занят перегрузкой файлов в течение долгих часов — вы понимаете, что я имею в виду». Поэтому после передачи файлов на FTP-сервер он сжал их в файлы меньшего размера (на компьютерном жаргоне — «зазипо-вал»), давая им при этом произвольные имена («gift.zip» и нечто подобное).
Еще раз он использовал целую цепь открытых прокси-серверов для того, чтобы надежно спрятать свое соединение и сделать отслеживание практически невозможным. Роберт поясняет: «В одном только Тайване есть около сотни открытых прокси-серверов. В любой момент сотни людей могут использовать эти сервера». Даже если и придется анализировать записи об активности на этих серверах, то они будут просто огромными, и очень маловероятно, что ребята в полицейских формах смогут отыскать вас, чтобы постучаться потом в вашу дверь. «Ситуация как с иголкой в стоге сена. Можно, конечно, ее найти, но — очень трудно».
После соблюдения всех предосторожностей передача файлов началась.
«Я проста не мог поверить в то, что коды наконец дошли до меня. Это было просто прекрасно».
РАСПРЕДЕЛЕНИЕ: МИР КРАКЕРОВ
Что же делают такие хакеры, как Эрик и Роберт после того, как получают в свои руки вожделенное ПО? Для них обоих, так же как и для всех других, к кому можно применить термин «кракер» или «программный пират», ответ заключается в том, что большинство из них разделяют полученные программы со своими многочисленными коллегами. Но делают они это не напрямую.
Эрик объяснял нам последовательность действий, которую он предпринял, добыв, наконец, программы, за которыми он охотился два года. Это приложение было написано на языке программирования, в котором Эрик не был экспертом, но у него был друг, который программировал именно на этом языке, поэтому он переслал текст программы ему вместе с генератором ключей для нее — то есть специальной программы, которая генерирует коды для обхода лицензированных проверок безопасности. Тот скомпилировал обе программы.
«Я п е р е д а л э т у скомпилированную версию кому-то еще, кто перегрузил ее на один сайтов Warez, заархивировал ее, приложив программу для генерации ключей и снабдив информационным файлом с необходимыми инструкциями, как устанавливать и взламывать программу. Я никогда не рассылал ее самостоятельно».
Перед тем, как загружать куда-то программу и генератор ключей, они проверял, не взламывает ли кто-то ту же самую программу. «Перед тем, как посылать куда-то программу, обязательно надо проверить, что никто другой не с д е л а л этого до вас, то е с т ь с д е л а т ь „проверку на дурака“ и убедиться, что вы обладатель уникального продукта».
«Проверка на дурака» (dupecheck) — это очень просто. Кракер отправляется на сайт (сайт расположен в России) и сообщает название и версию продукта. Если она присутствует в списке, это значит, что кто-то уже взломал ее и отослал на один из Warez-сайтов.
Однако то, что программа послана на этот сайт, не означает, что каждый может загрузить ее себе. Вы можете получить такой ответ — мы—закрытая группа, поэтому—отвалите
С другой стороны, если в списке нет запрошенного продукта, это означает, что кракер одержал серьезную победу: он первым получил возможность распространять взломанную версию этой программы.
После того, как программа загружена на сайт, ее распространение идет стремительно, как описывает Эрик.
«В мире есть около пятидесяти Warez-сайтов — это частные FTP-сайты.
Вы загружаете программу на один из таких сайтов и в течение часа онакопируется с него на тысячи других сайтов по всему миру при помощи «курьеров».
От пятидесяти до двухсот программ ежедневно, за среднее вполне можно в з я т ь ц и ф р у сто. Т а к вот, сотня программ в день распространяется таким образом».
Как объяснил Эрик, «курьер» — это человек, который переносит «объект» с одного кракерского сайта на другой. Курьеры — это «следующее звено в цепочке» после ребят, которые взламывают программы.
«Курьеры следят за тремя или четырьмя различными сайтами. Как только кто-то загружает (взломанную программу) на Warez-сайт, и они замечают, что это что-то новенькое, они сгружают ее себе и посылают на три-четыре других сайта как можно быстрее, чтобы успеть первыми. А в это время, может быть, только двадцать сайтов имеют эту программу. В с е происходит за два-три м е с я ц а до того, как э т а новая программа появляется в магазинах».
После курьеров приходит черед других участников процесса — ребят, у которых нет доступа к центральным Warez-сайтам — они тоже замечают новую программу и повторяют процесс ее загрузки и последующего распространения так быстро, как только могут, на максимальное число сайтов, чтобы быть первыми. «И в течение часа программа буквально несколько раз облетает вокруг Земли».
Некоторые люди получают доступ к Warez-сайтам «за кредиты», как объяснял Эрик. «Кредиты» — это разновидность валюты у краке-ров, которую они зарабатывают, выполняя задания сайтов, заключающиеся в распространении взломанных программ. Обычно кракеры распространяют не только программы, но и сопутствующие им лицензированные ключи или другие необходимые продукты.
Кракеры зарабатывают «кредиты», если они становятся первыми, кто загрузит взломанную программу на сайт, где ее еще нет. Только первый, загрузивший новое приложение на определенный сайт, получает «кредит».
«Именно поэтому у них е с т ь стимул делать в с е т а к быстро, как э т о только возможно. П о э т о м у программа и р а с п р о с т р а н я е т с я с невероятной скоростью. В считанные мгновения люди по в с е м у миру копируют ее на свои собственные кракерские с а й т ы или доски объявлений.
Люди вроде меня, которые занимаются взломом программ, имеют неограниченный доступ к подобным новинкам. Им выгодно поддерживать хорошие отношения с кракерами, поскольку вы будете именно им поставлять следующие свои взломанные программы, если будете первым, кому они рассылают новинки».
На некоторых сайтах размещаются программы и генераторы ключей. « Н о многие кракерские сайты», — объясняет Эрик, — «размещают у себя не программу, а только генератор ключей. Делается это для того, чтобы сделать сайт более компактным и уменьшить вероятность того, что полиция прикроет сайт».
На все упомянутые сайты, а не только на основные Warez-сайты, проникнуть достаточно сложно. Они все секретные, поскольку, как только один из адресов сайта становится известен, «полиция закрывает не только этот адрес, а сам сайт, арестовывает людей, с ним связанных, забирает все их компьютеры и арестовывает даже тех, кто хоть раз бывал на этом сайте», поскольку на самом деле все эти FTP-сайты представляют собой огромные склады краденного.
«Я даже больше не хожу на такие сайты. Я и раньше редко ходил, как раз из-за риска, связанного с подобными посещениями. Я решаюсь на это, только когда мне позарез необходимы какие-то программы, но я никогда не перегружаю их себе самостоятельно.
В с я э т а система достаточно интересна, поскольку она очень эффективна в работе. Я хочу сказать, что вряд ли какой-то иной бизнес обладает такой системой распределения, в которой каждый участник кровно заинтересован.
В качестве кракера, я получал приглашения посетить все эти сайты, поскольку им необходимы хорошие кракеры, так как они будут привлекать все больше курьеров. А курьерам нужен доступ к хорошим сайтам, поскольку там они получают качественные новые продукты. Моя группа не позволяла новым людям проникать к себе. И мы не выпускали некоторых вещей. Однажды летом мы выпустили Microsoft Office и это было очень рискованно. После этого мы решили не связываться с известными программами типа этой.
Некоторые ребята слишком увлекаются этим и становятся агрессивными, особенно когда начинают торговать компакт-дисками ради денег —это привлекает внимание. Именно они первыми попадаются. Все то, что мы рассказали о программах, происходит и с музыкой и с кинофильмами. На некоторых специальных сайтах для любителей кино вы можете познакомиться с фильмами за две-три недели до их премьеры в кинотеатрах. Там всегда есть кто-то, кто работает распространителем или изготовителем копий. Всегда кто-то бывает заинтересован в поддержке процесса».
АНАЛИЗ
Вот какой урок стоит извлечь из этой истории о поиске Эриком последней серверной программы для завершения его коллекции: в природе нет совершенства. Это утверждение становится еще более верным, если в дело замешаны люди. Компания, выбранная им в качестве мишени, очень серьезно относилась к проблеме безопасности и отлично защитила свою компьютерную систему. И все же опытного хакера с серьезной мотивацией, готового потратить достаточно времени на атаку, практически невозможно остановить.
Скорее всего, вам повезет и никто из таких экспертов, как Эрик или Роберт не будет атаковать вашу систему, вкладывая в это занятие все свое мастерство и кучу времени. А что вы скажете о нечистоплотном конкуренте, который наймет целую группу хакеров, искренне любящих свою работу, которые будут проникать к вам (так и хочется сказать, как тараканы) по 12-14 часов в день?
А если атакующие найдут брешь в электронной обороне вашей компании, что тогда? По мнению Эрика: «Когда кто-то проник в вашу сеть так глубоко, как я проник в эту сеть, вы никогда и ни за что не выгоните его. Он останется там навсегда». Он считает, что избавление от такого незваного гостя потребует колоссальной перетряски всей системы, изменения каждого пароля в один день и час, переустановки всех систем одновременно и установки систем безопасности одновременно, чтобы закрыть систему. «Оставьте хоть одну дверь слегка приоткрытой, и я вернусь к вам снова».
Мой опыт подтверждает этот вывод. Когда я учился в высшей школе, я проник в DEC (Digital Equipment Corporation Easynet). Они знали, что к ним проник хакер, но в течение восьми лет их лучшие специалисты по безопасности не могли «выкурить» меня оттуда. Они, в конце концов, освободились от меня — причем совсем не благодаря своим усилиям, а потому, что правительство отправило меня на вынужденные каникулы в одно из своих специальных заведений.
КОНТРМЕРЫ
Хотя мы рассказали о различных атаках, вы должны были понять. как много одинаковых лазеек открывают хакерам путь к успеху, а значит, и для противодействия им есть общие контрмеры.
Вот главные выводы из рассказанных историй.
КОРПОРАТИВНЫЕ МЕЖСЕТЕВЫЕ ЭКРАНЫ
Межетевые экраны должны быть сконфигурированы так, чтобы разрешать доступ только к необходимым услугам, как того требует бизнес. Надо провести тщательную проверку, чтобы убедиться, что ни к каким услугам нет доступа, кроме как по бизнес-необходимости. Вдобавок стоит использовать «межсетевой экран с проверкой состояния». (Этот тип межсетевого экрана обеспечивает более высокий уровень безопасности, отслеживая перемещение всех пакетов за определенный период времени. Входящие пакеты пропускаются только в ответ на исходящее соединение. Другими словами, межсетевой экран открывает свои ворота только для определенных портов на основе исходящего трафика). Кроме того, имеет смысл установить набор правил для управления исходящими сетевыми соединениями. Системный администратор должен периодически проверять конфигурацию межсетевого экрана и все записи о его активности, чтобы убедиться, что никто не сделал в нем неавторизованных изменений. Если хакер взламывает межсетевой экран, то он, скорее всего, сделает в нем незначительные перемены для своей выгоды.
Имеет смысл организовать и управление доступом к VPN на основе IP-адреса пользователя. Это применимо там, где лишь ограниченное число пользователей может соединяться с корпоративной сетью через VPN. В дополнение к этому можно ввести более безопасную форму VPN-авторизации, такую, как смарт-карты или специальные сертификаты вместо каких-то локальных секретов.
ЛИЧНЫЕ МЕЖСЕТЕВЫЕ ЭКРАНЫ
Эрик проник в компьютер СЕО и обнаружил, что там работает персональный межсетевой экран. Его это не остановило, поскольку он использовал сервис, который был разрешен межсетевым экраном. Он смог посылать нужные ему команды через процедуру, работающую по умолчанию в Microsoft SQL-сервере. Это еще один пример использования сервиса, от которого межсетевой экран не защищает. Жертва в таком случае никогда и не подумает проверять огромные записи (logs) об активности межсетевого экрана, которые содержат более 500 Кбайт. И это не исключение. Многие организации внедряют специальные технологии для обнаружения и предотвращения вторжения, после чего думают, что технологии будут сами собой управлять. Как было показано, такое неразумное поведение позволяет атаке продолжаться без помех.
Урок ясен: необходимо очень тщательно определить правила работы межсетевого экрана, чтобы не только фильтровать, как входящий, так и исходящий трафики для услуг, которые не являются необходимыми для ведения бизнеса, но и периодически проверять соблюдение этих правил и записей о работе экрана, чтобы обнаружить неавторизованные изменения или попытки взлома системы безопасности.
После того, как хакер проник в систему, он, скорее всего, отыщет «спящую» или неиспользуемую систему и проникнет в них, чтобы иметь возможность вернуться сюда в недалеком будущем. Другая тактика состоит в том, чтобы добавить групповые привилегии существующим аккаунтам, которые уже были взломаны, Периодические проверки всех директорий пользователей, групп и разрешений доступа к файлам — это единственный способ выявить возможное вторжение или неавторизованную активность собственных сотрудников. Есть целый ряд коммерческих и общедоступных средств для контроля безопасности, которые автоматизируют этот процесс. Поскольку хакеры прекрасно осведомлены о них, очень важно периодически проверять целостность и этих средств, текстов и любых данных, которые используются вместе с ними.
Многие вторжения являются прямым результатом неправильной конфигурации системы, например, лишних открытых портов, слабой системы защиты доступа к файлам и неправильно сконфигурированным Интернет-серверам. После того, как хакер проник в систему на уровне пользователя, его следующим шагом становится повышение своих привилегий через использование неизвестных или незакрытых лазеек и плохо сконфигурированных разрешений. Не забывайте, что многие атакующие совершают целый ряд осторожных шагов на пути к полному проникновению в систему.
Администратор базы данных, которая поддерживает Microsoft SQL-сервер, должен рассматривать возможность отключения определенных команд (таких как xpcmdshell, xpmakewebtask и xpregread), которые могут быть использованы для получения дальнейшего доступа к системе.
СКАНИРОВАНИЕ ПОРТОВ
В то время, как вы читаете эти строки, вполне возможно, что ваш соединенный с Интернетом компьютер сканируется другим компьютером в поисках «низко висящего яблока». Подобное сканирование портов вполне законно в США (и большинстве других стран), неприязнь к хакерам имеет свои ограничения. Самое важное — отличить серьезную атаку от тысяч любительских попыток «пробить» список адресов вашей компании.
Есть несколько продуктов, включая межсетевые экраны и системы обнаружения вторжения, которые определяют заранее оговоренные типы сканирования портов и могут сигнализировать нужным людям о неавторизованной активности. Вы можете настроить большинство межсетевых экранов так, чтобы выявлять сканирование портов и душить подобные соединения. В некоторых коммерческих межсетевых экранах есть возможность предотвратить быстрое сканирование портов. Есть и средства с открытым кодом, которые могут выявлять сканирование портов и отбрасывать пакеты в течение определенного периода времени.
ЗНАЙТЕ СВОЮ СИСТЕМУ
Есть целый ряд правил по управлению системой, которые вы должны выполнять: • проверять список процессов на наличие необычных и неизвестных процессов;
• проверять список программ на неавторизованные добавления или изменения;
• проверять всю файловую систему в поисках новых или модифицированных файлов, текстов или приложений;
• обращать внимание на необычное уменьшение свободного пространства на диске;
• постоянно убеждаться в том, что все системы и пользователи работают и убирать «спящие» или неизвестные директории;
• проверять, что все специальные аккаунты сконфигурированы так, чтобы не допускать интерактивного входа в них со стороны сети;
• проверять, что все директории системы и файлы имеют соответствующие разрешения на допуск к файлам;
• проверять все записи об активности системы на предмет наличия в них необычной активности (например, удаленного доступа неизвестного происхождения или в необычное время, то есть, в нерабочие часы или в выходные дни);
• проверять все записи об активности Интернет-сервера, чтобы идентифицировать все запросы неавторизованного доступа к файлам; атакующие, как продемонстрировано в этой главе, будут копировать файлы в директорию Интернет-сервера, и перегружать файлы через Интернет (HTTP);
• постоянно убеждаться в том, что на Интернет-сервере, FrontPage или WebDav установлены соответствующие разрешения для предотвращения неавторизованного проникновения с файлов доступа.
РЕАКЦИЯ НА ВТОРЖЕНИЕ ИЛИ ПОДАЧА СИГНАЛА ТРЕВОГИ
Своевременное осознание того, что произошел прорыв в систему, может помочь предотвратить существенные потери. Надо осуществлять постоянный аудит операционной системы, чтобы идентифицировать возможные прорехи в системе безопасности. Выработайте способ подачи автоматического сигнала тревоги сетевому администратору, когда происходит какое-то необычное событие. При этом имейте в виду, что если атакующий уже получил высокие привилегии и осведомлен о контроле, он может отключить эту систему подачи сигнала тревоги.
ВЫЯВЛЕНИЕ НЕАВТОРИЗОВАННЫХ ИЗМЕНЕНИЙ В ПРИЛОЖЕНИЯХ
Роберт мог заменить приложение helpdesk.exe, используя неправильную конфигурацию FrontPage. После того, как он достиг своей цели, и получил коды главного продукта компании, он оставил «взломанную» версию приложения helpdesk, чтобы иметь возможность вернуться сюда через какое-то время. Загруженный сетевой администратор может так никогда и не понять, что хакер скрытно изменил существующую программу, особенно, если он не делает никаких проверок на целостность системы. В качестве альтернативы ручным проверкам можно посоветовать лицензированную программу tripware, которая автоматизирует процесс выявления неавторизованных изменений.
РАЗРЕШЕНИЯ
Эрик смог получать конфиденциальные пароли базы данных, просматривая файлы в директории «/include». Без этих паролей выполнение его миссии было бы очень затруднено. Получение паролей к важной базе данных в файлах, которые может читать кто угодно, — это все, что ему было нужно для проникновения. Очень важно для обеспечения безопасности избегать хранения незашифрованных паролей в файлах программ или других текстах. Должно быть принято строгое корпоративное правило, запрещающее хранение зашифрованных паролей без крайней необходимости. Во всяком случае, файлы, содержащие незашифрованные пароли, должны быть тщательно защищены, чтобы предотвратить проникновение в них.
В компании, которую атаковал Роберт, сервер Microsoft IIS4 не был сконфигурирован так, чтобы не позволять гостям читать и записывать файлы в директорию Интернет-сервера. Внешний файл паролей, используемый в сочетании с Microsoft Visual SourceSafe, может прочесть любой пользователь, который вошел в систему. Из-за этих неправильных конфигураций хакер может получить полный контроль над атакуемым доменом Windows. Развертывание систем с организованной структурой директорий для приложений и баз данных повышает эффективность управления доступом.
ПАРОЛИ
В дополнение ко всем уже перечисленным в этой книге предложениям по управлению паролями, описанный в этой главе успех атакующих выявляет некоторые важные дополнительные меры. Эрик рассказывал, что он смог понять принцип конструкции паролей в компании на базе анализа тех паролей, которые он смог взломать. Если ваша компания использует для создания паролей какие-то стандартные, предсказуемые методы, то это становится еще одной возможностью для хакеров проникнуть в вашу систему.
После того, как атакующий получает привилегированный доступ в систему, его главной задачей становится получение паролей других пользователей или баз данных. Тактика поиска их в электронных письмах или среди файлов является очень распространенной.
Компания, которая использует операционные системы Windows, должна конфигурировать их так, чтобы зашифрованные пароли для LAN Manager не хранились в регистре. Если атакующий получит привилегии администратора, то он сможет получить в свои руки все зашифрованные пароли, а затем — взломать их. Персонал ИТ-де-партамента может легко сконфигурировать систему так, что эти пароли не будут сохраняться, что существенно усложнит хакеру процесс взлома паролей. Однако, после получения доступа к системе, атакующий может «прослушать» весь ваш сетевой трафик или установить добавление паролей извне, чтобы узнать пароли пользователей.
В качестве альтернативы отключению паролей LAN Manager можно сконструировать пароли из символов, которых нет на клавиатуре с помощью ключа
ПРИЛОЖЕНИЯ ДРУГИХ КОМПАНИЙ
Используя обычное приложение для сканирования сети, Эрик обнаружил незащищенный архивный файл записей, созданный коммерческим FTP-приложением. Этот файл содержал полную информацию о тех файлах, которые передавались из системы или в систему. Не полагайтесь на изначальную конфигурацию тех приложений других компаний, которые вы устанавливаете у себя. Старайтесь устанавливать ту конфигурацию, которая минимизирует утечку информации (такой, как log-записи), которую можно использовать для проведения атаки на сеть.
ЗАЩИТА ОБЩЕДОСТУПНЫХ ФАЙЛОВ
Общедоступные сетевые файлы — это обычная методика организации общего доступа к файлам и директориям в корпоративной сети. ИТ-персонал может принять решения не вводить паролей или контроля доступа к подобным файлам, поскольку добраться до них можно только из внутренней сети. Как уже не раз отмечалось в этой книге, компании стремятся, прежде всего, обеспечить сохранность периметра и гораздо меньше думают о защите сети от проникновения изнутри. Как это было в случае Роберта, атакующие, проникшие в сеть, будут искать общедоступные сетевые файлы с именами, которые указывают на ценную информацию. «Описательные» имена типа «research» или «backup» существенно упрощают задачу атакующего. Самая лучшая защита в этом случае — это специальная защита всех общедоступных сетевых файлов, содержащих ценную информацию.
ПРЕДОТВРАЩЕНИЕ РАСКРЫТИЯ DNS
Роберт использовал программу для отгадывания DNS, чтобы определить имена узлов в зоне публичного доступа домена. Предотвратить раскрытие этих имен можно с помощью хорошо известного метода горизонтального расщепления DNS, что относится, как к внешнему, так и внутреннему серверу имен. Только общедоступные узлы перечислены в файловой зоне внешнего сервера имен. Внутренний сервер имен гораздо лучше защищен от атак, он должен отличать внутренние DNS-запросы для корпоративной сети.
ЗАЩИТА MICROSOFT SQL-СЕРВЕРА
Эрик обнаружил, что резервный сервер электронной почты и Интернет-сервер используют Microsoft SQL-сервер, на котором имя пользователя и пароль записаны так же, как и в файлах директории «include». SQL-сервер не должен подключаться к Интернету без серьезной бизнес-необходимости. Даже если аккаунт «SA» был переименован, атакующий может идентифицировать новое имя аккаунта и пароль в незащищенном файле кодов. Оптимальным решением для этого будет блокирование порта 1433 (Microsoft SQL Server) до тех пор, пока он действительно не понадобится.
ЗАЩИТА ВАЖНОЙ ИНФОРМАЦИИ
Описанные в этой главе атаки оканчиваются успехом, потому что коды программ хранятся на серверах, которые не защищены так, как это должно быть сделано. Для такой важнейшей информации, как результаты групповых исследовательских разработок, должны применяться специальные методы безопасности на основе технологий шифрования.
Для одиночного разработчика (в отличие от группы разработчиков, где целый ряд людей должен иметь доступ к разрабатываемому коду) наиболее приемлемо шифрование самой ценной информации, такой как коды программы, при помощи программ PGP Disk или PGP Corporate Disk. Эти программы создают виртуальные зашифрованные диски и функционируют понятным для пользователя образом.
ЗАЩИТА АРХИВИРОВАННЫХ ФАЙЛОВ
Как стало ясно из рассказанных историй, сотрудники — даже те из них, кто серьезно думает о безопасности — часто упускают из виду необходимость обеспечения безопасности архивов, включая архивы электронной почты, от доступа посторонних людей. В процессе моей хакерской карьеры я не раз замечал, что многие системные администраторы оставляют сжатые архивы или директории важной информации незащищенными. Работая в ИТ-департаменте крупной больницы, я видел, что все защищенные базы данных архивируются обычным образом и хранятся потом безо всякой з а щ и т ы так, что любой сотрудник может получить к ним доступ.
Роберт использовал еще один аспект этого распространенного упущения, когда он обнаружил копии кодов программы коммерческого приложения в директории общего доступа на Интернет-сервере.
ЗАЩИТА ОТ АТАК MS SQL INJECTION
Роберт сознательно удалил все проверки входных команд из Интернет-приложений, которые должны были предотвращать атаки SQL-injection. Следующие шаги могут защитить вашу компанию от атаки, которую использовал Роберт:
• никогда не запускайте сервер Microsoft SQL в контексте работы системы — старайтесь запускать его иным способом;
• разрабатывая программы, создавайте коды так, чтобы не генерировать динамические SQL-запросы;
• используйте процедуры хранения, чтобы выполнять SQL-запро-сы, создайте аккаунт только для выполнения таких сохраненных процедур и определите систему защиты от проникновения в этот аккаунт.
ИСПОЛЬЗОВАНИЕ СЕРВИСОВ MICROSOFT VPN
В качестве средства авторизации Microsoft V P N применяет авторизацию Windows, что позволяет атакующему использовать недостаточно защищенные пароли для проникновения в VPN. В некоторых ситуациях можно потребовать для доступа к V P N авторизации при помощи смарт-карт. Иногда имеет смысл контролировать доступ к V P N при помощи проверки IP-адресов клиентов.
В атаке Роберта системный администратор должен был контролировать VPN-сервер на появление новых пользователей в группе VPN. Другие меры тоже очевидны, это: удаление «спящих» аккаунтов из системы (как уже не раз было отмечено), гарантированное удаление всех уволенных сотрудников, и ограничение времени доступа рабочими днями и рабочими часами.
УДАЛЕНИЕ УСТАНОВОЧНЫХ ФАЙЛОВ
Роберт смог получить список рассылки, который был ему интересен, не проникая в приложение для рассылки, а используя лазейку в изначальной установке приложения. После того, как приложение успешно установлено, установочные тексты должны быть удалены.
ПЕРЕИМЕНОВАНИЕ АККАУНТА АДМИНИСТРАТОРА
Любой человек, у кого есть доступ к Интернету, может запросить Google на предмет «листа паролей», чтобы найти сайты, где перечислены все начальные пароли, которые производители устанавливают на свои устройства. Именно поэтому надо по мере возможности переименовывать директории администратора и внешнего пользователя. Однако это не имеет смысла, когда имя аккаунта и пароль сохраняются где-нибудь в открытой форме, как это было в случае с атакой Эрика.
УЖЕСТОЧЕНИЕ УСТАНОВОК WINDOWS, ЧТОБЫ ПРЕДОТВРАТИТЬ СОХРАНЕНИЕ ОПРЕДЕЛЕННЫХ ДАННЫХ
Изначально установленная конфигурация Windows автоматически перемешивает «нарезку» паролей и сохраняет в виде текста те пароли, которые используются для входа в сеть через diap-up. После получения достаточных привилегий атакующий будет пытаться извлечь максимум информации, включая любые пароли, которые хранятся в регистре или других областях системы.
Сотрудник, пользующийся доверием своих коллег, может в принципе проникнуть в любое место домена, приложив минимальные усилия социальной инженерии, если его рабочая станция запоминает пароли. Один рассерженный сотрудник призвал к себе службу технической поддержки, жалуясь, что не может войти в свою рабочую станцию. Он потребовал от техников немедленно прийти к нему на помощь. Техник пришел, вошел в систему, используя свои привилегии. и устранил «проблему». Вскоре после этого упомянутый сотрудник извлек из директории техника все зашифрованные пароли и взломал их, получив такие же права в доступе к домену, как имел техник.
Такие программы, как Internet Explorer и Outlook хранят пароли в регистре. Чтобы узнать больше об отключении этих возможностей, используйте поиск Google по словам «disable password caching».
ГЛУБОКАЯ ЗАЩИТА
Истории, рассказанные в этой главе, показывают, может быть даже более наглядно, чем все остальные в этой книге, что защита компании по периметру — явно недостаточная мера. В современной ситуации периметр часто открывается, поскольку бизнес-цели предусматривают доступ пользователей в сеть. Поэтому межсетевой экран не может остановить каждую атаку. Хакер отыскивает малейшие бреши в защите, стараясь использовать те сервисы, которые разрешены правилами межсетевого экрана. Одна из возможных стратегий снижения этой угрозы заключается в том, чтобы поместить все системы публичного доступа в отдельный сегмент сети и тщательно фильтровать трафик в более важные сегменты.
Например, если SQL-сервер расположен в корпоративной сети, то можно установить второй межсетевой экран, позволяющий соединения только с портом, на котором расположена данная услуга.
Установка внутренних межсетевых экранов для защиты важной информации достаточно неприятная процедура, но ее надо использовать, если вы действительно хотите защитить свои данные от злонамеренных сотрудников и внешних хакеров, которым удастся прорваться через периметр.
ПОСЛЕСЛОВИЕ
Ничто не остановит опытного хакера на пути к его цели. Он пристально изучит систему, которую он атакует, и определит все ее звенья и общедоступные сервисы. Хакер может ждать недели, месяцы и даже годы, чтобы отыскать и использовать новую, еще никому не известную лазейку. В процессе моей хакерской карьеры я лично проводил долгие часы, атакуя ту или иную компьютерную сеть. И моя настойчивость всегда была вознаграждена, поскольку я находил бреши в стенах защиты.
Хакер Эрик пошел еще дальше в своей настойчивости и стремлении получить коды программы, на что он потратил около двух лет. А Роберт предпринял целую цепь сложных шагов для того, чтобы получить миллионы адресов электронной почты для своего друга спамера.
Вы понимаете, что два этих хакера не уникальны. Их настойчивость вполне обычна в хакерском сообществе. Люди, ответственные за обеспечение безопасности инфраструктуры организации, должны понимать, с кем им предстоит сражаться. В распоряжении хакеров практически неограниченное время для поисков брешей в защите, а перегруженный работой сетевой администратор может выделить лишь небольшое время для занятий безопасностью.
Как мудро писал китайский философ Сун Тзу (Sun Tzu) в своей книге «Искусство войны» (Oxford University press: New York , 1963): «Познайте себя и познайте вашего врага, тогда в сотне битв вы избежите поражения. Даже если вы хорошо знаете себя, но не знаете вашего врага, — ваши шансы на победу и поражение примерно равны…» Идея понятна: ваши соперники могут потратить любое время на проникновение туда, куда им нужно. Поэтому вам следует провести оценку различных рисков, чтобы четко понять степень угрозы для вашей компании, и все обнаруженные угрозы надо принимать во внимание при разработке стратегии безопасности. Если вы будете готовы к нападению, и постоянно будете продумывать, внедрять и совершенствовать ваши методы защиты безопасности, то вам удастся сдерживать атаки хакеров.
Как мы уже отмечали, любой серьезный хакер может проникнуть куда угодно, но ваша цель — сделать его жизнь настолько сложной и утомительной, чтобы «овчинка не стоила выделки».