|
Большому кораблю - большая торпеда
Пролог
То, что Интернет просто кишит различными дырками, знает каждый. Но то, что эти дырки порой настолько огромны, что взломать какой-нибудь почтовый сервер может просто любой школьник, понимают не все. Например, уже известная дырка на сервере chat.ru. На всех серверах такого типа всегда предоставляется услуга онлайновой смены пользовательской информации. Там, как правило, вы можете сменить свои имя, фамилию, иногда, как это было в случае с www.chat.ru, - пароль. Процесс смены всегда проходит в два этапа. Сначала вы авторизуетесь, вводя свой логин и пароль. После этого вы попадаете на страничку с вашей информацией, где вы ее можете изменить. Вторым шагом вы даете команду серверу запомнить сделанные вами изменения. Только вот что удивительно! Не все считают нужным запрашивать пароль при втором шаге! Почему-то думают, что раз человек меняет инфу для этого логина, то, значит, это и есть законный пользователь. Только ведь это не факт. Раз на втором этапе проверка пароля не производится, то что мешает вручную подредактировать исходный текст странички с вашей информацией и изменить свой логин на любой чужой? Ведь все равно, когда вы даете серверу команду запомнить изменения, он не запрашивает пароль, а, стало быть, поставив вместо своего в исходном тексте чужой логин, вы заставите сервер сменить для него инфу. Так вот, какой бы глупой ни была на первый взгляд эта ошибка, она оказалась весьма распространенной. Тут-то я, собственно, и подхожу к началу своего повествования.
Программеры всех стран... ошибайтесь!
Освоив данное "отверстие" на www.chat.ru, я решил попробовать применить его на сервисах других служб подобного толка. В их число попал пресловутый Mirabilis, создатель самого удобного и самого популярного Интернет-пейджера ICQ, или в простонародье - аськи. В число их услуг также входит возможность онлайновой смены через браузер информации о пользователе на сервере Мирабилиса. Назначение этой услуги мне не ясно до сих пор... Ведь меняется же вся информация совершенно превосходно и через интерфейс самой аси. Ну да не об этом разговор. Есть, значит, такой сервис: www.icq.com/whitepages/login.html. Здесь, введя свой уникальный идентификационный номер (uin) и свой пароль, вы также попадаете на страничку с собственной информацией. В исходнике данной страницы я обнаруживаю вот такой фрагмент:
<form name="frmInfo" method="POST" action="<a href="http://white.mirabilis.com/scripts/update.dll" target="_top">http://white.mirabilis.com/scripts/update.dll</a>" onsubmit="return(Validate())">
<input type="hidden" name="Uin" value="133007">
<input type="hidden" name="EncUin" value="0517E2A83667B05A">
О чем он говорит? О том, что при нажатии кнопки "Submit" вы отдаете серверу Мирабилиса команду сменить информацию для юина 133007 и подтверждаете свое право на дачу такой команды неким кодом 0517E2A83667B05A, выданным вам сервером при вашем заходе на страничку со своей информацией. Кинув беглый взгляд на данный 16-ти байтовый код, я понял, что тут мне ничего не светит и что на Мирабилисе скорее всего сидят не дураки, и код этот генерируется как функция от юина и от пароля. Сохранив на всякий случай страничку со своей информацией на винчестере, я с осознанием выполненного долга забыл про нее. И так бы и попала она в мусорную корзину, если бы ни одно обстоятельство.
Пища кочевника
Я до сих пор не уверен, то ли это бред моего подозрительного мозга, то ли так оно и есть, но кажется мне, что ходит по компьютерам некий кочующий вирус, в функции которого входит смена пароля для всех установленных на компьютере аськиных юинов!
В один прекрасный день я обнаружил, что все три юина, установленные на моем компе, не хотят коннектиться с сервером, мотивируя свое поведение неправильностью пароля. Причем не коннектились только те аськи, которые были установлены, а парочка зарегистрированных мной для пробы и не установленных после последней переинсталляции юинов пароль не сменили. Я долго думал, что бы это могло значить. Ведь информация на всех моих юинах осталась старой, не считая того, что удалилась запись о primary e-mail, по которому в случае потери пароля завсегда можно получить его. И тут, не знаю, что мне стрельнуло в голову, я нашел сохраненную мною страничку со своей информацией, открыл ее браузером, нажал Submit. И, о чудо!!! Моя информация сменилась на нужную, т.е. также восстановилась запись о primary e-mail. Далее получить свой пароль было делом техники и 3 часов времени. Дело в том, что на Мирабилисе есть такой сервис, как высылка пароля для юина по тому мылу, которое прописано в графе primary e-mail. Пароль пришел. Запомните его: gUd-ByE! Если однажды ваша ася скажет, что у вас неправильный пароль, попробуйте его. Дело в том, что этот пароль оказался на всех трех асях и был явно установлен рукой программного робота. Но не это натолкнуло меня на мысль о вирусе-кочевнике. Дело в том, что впоследствии этот же пароль я обнаружил на юине 500000, а им-то уж точно стали бы пользоваться, однажды завладев. Но вернемся к нашим баранам :-)
Игольное ушко... и то, что через него ушло
Возвращения моих юинов вселило в меня большой оптимизм. Ведь раз я смог сменить пользовательскую информацию, не зная пароля, значит, тот самый код, который отпугнул меня в первый раз, генерировался только как функция от юина и не зависел от пароля! Исходя из принципа "что один сделал, другой завсегда разобрать сможет" я стал вычислять алгоритм генерации этого кода. Все оказалось не так просто, как я решил сначала. Если дыра на www.chat.ru была размером со вселенную, то тут она была не больше игольного ушка. Этого и стоило ожидать. Все же не зря AOL выложил за Мирабилис 365 млн. долларов. И, тем не менее, я стал ковыряться. Больно уж велик был соблазн.
Исходя из того, что идентификационный код был шестнадцатеричным, я пришел к выводу, что и юины нужно для наглядности перевести в шестнадцатеричную систему. Учитывая то, что теоретически нумерация юинов начинается с 1001 плюс еще абстрактный юин 1, принадлежащий администрации Мирабилиса, я решил, что для наглядности будет лучше, если я буду перед переводом в шестнадцатеричную систему отнимать от номера число 999. В чем-то мне это помогло. Было действительно немного наглядней. Например, для моего юина 133007 шестнадцатеричное значение составляло 0203A8, а идентификационных кодов выдавалось несколько:
0 517E2A8 366 7B 05A
1 406F3B9 365 ED C97
2 735C08A 365 ED 9C4 и т.д.
Все эти коды проходили при верификации пользователя. Но я не мог понять алгоритма их генерации, а, стало быть, не мог самостоятельно сгенерировать код для другого юина. Но была и хорошая информация. Последние 8 байт были всего лишь таймером и не влияли на сам код, а кодом были байты со 2 по 8, и первый байт был чем-то вроде ключа. Вот тут мне пришло на выручку дилетантство пользователей. Для того чтобы понять алгоритм генерации кодов, мне нужны были юины, у которых шестнадцатеричное значение составляло бы круглое число. То есть типа A00000, B00000. Такие юины в десятичной системе выглядят весьма абстрактно и не привлекательно. Большинство их пользователей ставило в качестве пароля либо свой ник, либо свое имя, либо имя своей любовницы, короче, информацию о пароле можно было почерпнуть в информации о пользователе. Еще не разобравшись до конца в алгоритме, я все же смог создать код для давно не используемого юина 6666. Моя радость не знала границ, когда мой код прошел, и я смог прописать в primary e-mail свой адрес. Елозя от нетерпения на стуле и проверяя каждые 3 минуты почтовый ящик, я ждал прихода письма с паролем. И тут без какого-либо предупреждения мне отключили аккаунт и почтовый ящик! Не буду уточнять, как и почему это произошло, скажу только, что настолько зол я никогда больше не был.
Ценности уплыли за границу. Может им там больше нравится?
В конце концов я все же получил пароль для этого юина и, наверное, стал первым в России счастливым обладателем четырехзначного номера аси. Алгоритм генерации кода в конечном итоге оказался не очень сложен. Например, для кода с первым байтом 0 все было просто элементарно. Берем номер аси хотя бы 123456, переводим его в шестнадцатеричную систему - 1E240, прибавляем к нему число 515DB19 et voila - код 0517BD593667B05A. Теперь осталось прописать свой e-mail и попросить сервер послать по нему письмо с паролем. Когда техническая проблема была разрешена, передо мной встала юридическая. Если с правами на владение юином 6666 было все ясно, т.к. им уже давно не пользовались, то с любым другим было сложнее. Ведь он мог еще и принадлежать кому-то. Возможно, сказалось отсутствие у меня юридического образования, но я так и не смог придумать, как ни напрягался, какой формой собственности является юин. Ни под личную, ни под частную, ни даже под интеллектуальную он не подходил. Затрат на его получение владелец никаких не нес. Стало быть, юридически юин - фикция. К тому же все эти юины уже неоднократно меняли владельца. И все-таки отдельные юины имеют ценность - ценность эстетическую. Ведь, что ни говори, а номер 11111 куда приятнее для глаза, чем, скажем, 6946261.
3 относительно честных способа получения юина
Несмотря на наличие или отсутствие дыр в системе Мирабилиса всегда были и будут существовать другие стандартные методы завладения чужим юином. Например:
1. Подбор пароля
Очень многие пользователи по каким-либо причинам делают очень легкие пароли. Это либо их ник, либо их имя или фамилия, либо их логин, который является первой частью их e-mail`а, либо какое-то слово, которое можно найти в инфе пользователя, либо простой набор символов, вроде 123456 или qwerty. К тому же существует целая библиотека стандартных паролей.
2. Получение доступа к почтовому ящику
Это самый обширный и самый распространенный метод, поэтому я разделю его на подвиды. Он используется в случае, если в графе пользователя primary e-mail прописан некий почтовый ящик, по которому можно получить пароль.
А. Повторная регистрация почтового ящика на сервере
Очень часто в этой графе прописывают почтовый ящик, зарегистрированный на каком-либо сервере, предоставляющем свои услуги бесплатно. Это и www.hotmail.com, и www.yahoo.com, и www.chat.ru. При длительном неиспользовании этого ящика (в течение полугода минимум) запись о нем уничтожается, и он может быть заново зарегистрирован любым другим пользователем. Поэтому если вы увидели такой адрес - первым делом проверьте, существует ли он еще.
Б. Первичная регистрация почтового ящика
Иногда люди указывают в этой графе адрес абстрактного почтового ящика на сервере, предоставляющем услуги бесплатной почты. То есть ранее этот ящик на данном сервере еще никем не был зарегистрирован, и ничто вам не мешает зарегистрировать его и получить на него пароль.
В. Вскрытие почтового ящика
Этот метод также подразумевает получение доступа к чужому почтовому ящику стандартными средствами, обычно подбором пароля или нахождением дыр в защите сервера, как это было с Хотмейлом или Чат.ру.
Г. Регистрация домена
Самый оригинальный на мой взгляд метод. Многие пользователи любят указывать почтовый ящик на несуществующих серверах. Примером могут служить ящики aaaaa@bbbbb.com. Для получения пароля этой аси вам достаточно, используя любую генерилку кредитных карточек, купить домен www.bbbbb.com и, когда он будет задействован, получить письмо с паролем. Единственное условие: к процессу регистрации домена нужно подходить с умом. Не везде вам позволят купить домен по несуществующей кредитке. Для этого я порекомендовал бы www.awc.net. Зарегистрированный там домен гарантированно просуществует пару недель - достаточный срок для получения письма.
3. Удаленный доступ к компьютеру
Данный метод подразумевает некоторые навыки общения с программами и методами, предоставляющими возможности удаленного доступа к компьютеру, на котором установлена аська с интересующим вас номером. Обычно для этих целей используется троянский конь Back Orifice. Однако им очень трудно производить пересылку файлов, и к тому же он получил слишком широкое распространение и теперь излечивается даже "доктором Вебом". Так что ищите менее распространенный, но не увлекайтесь особенно, ведь вы и сами можете стать его жертвой. Использование удаленного доступа также подразумевает не один способ.
А. Системные файлы
Вам нужно всего лишь получить системные файлы аськи. А именно: "номер_аси.dat и номер_аси.idx" из каталога "c:\program files\icq\db". Это если ася проинсталлирована в каталог по умолчанию. Остальные файлы для этого юина вы сможете сфабриковать из аналогичных файлов любого другого номера. После этого, корректно изменив информацию в системном реестре, вы сможете сконнектиться под данным номером.
Б. Грабберы
В случае, если пользователь не использует сохранение пароля (снята галочка "Save password" в разделе "Security&Privacy"), то метод А неприменим. В этом случае используются так называемые грабберы клавиатуры - программы, которые незаметно для пользователя пишут в специальный файл все набранные им на клавиатуре символы. Естественно, в этот файл попадет и пароль аси. Пользоваться им весьма просто. Самый распространенный для этих целей граббер - hookdump. Достаточно каким-то образом поместить этот файл на компьютер с нужным вам номером аси и через некоторое время получить результат его деятельности.
Из нестандартных методов существовал также метод с переполнением буфера пароля аси. Специально написанная под юниксовые системы программа Hijack, использующая эту ошибку, позволяла, произведя ввод пароля больше 8 символов, вызвать ошибку сервера и сконнектиться под любым юином. Однако возможности смены информации пользователя и пароля были в ней специально заблокированы.
Все это и кое-что другое вы сможете найти по адресу http://mirabu.da.ru. Данная информация приведена исключительно в общеобразовательных целях.
Соломоны из Мирабилиса и их решения
Но довольно лирики. Если с моим моральным обликом уже все ясно, то описание взаимоотношений Мирабилиса с пользователями достойно отдельной главы.
Помнится мне, были славные времена, когда про Мирабилис мало кто знал и когда они отвечали даже на мои дурацкие запросы "...как расшифровывается ICQ?", тогда Мирабилис еще являлся фирмой, которая предоставляла некие услуги и поддерживала пользователей. Теперь это не больше чем мифическое чудовище, укрывшееся за непробиваемой стеной почтовых роботов, творящих отписки с производительностью советских бюрократов. Поговорить с кем-то из сотрудников все равно что взывать к богу - в лучшем случае получите от автоматического служителя культа стандартное: "Молитесь и воздастся". Когда я впервые потерял пароли от своих асек и обнаружил, что не могу узнать новые, так как снесена запись о моем почтовом ящике - я стал долбиться в закрытые двери technical support. То, что они закрыты и замурованы, я узнал позднее. Сначала я был полон оптимизма несмотря на полученные на мой запрос от почтового робота Мирабилис сочувствия по поводу утери пароля и рекомендацию завести новый номер. Мой энтузиазм начал спадать, когда я понял, что обнаруженные мною служебные юины технической поддержки пользователей аси - 70000 и 80000 скорее всего так и не выйдут в онлайн, чтобы разрешить мою проблему. Последней моей надеждой был телефонный номер Мирабилиса в Израиле, но и тут меня ждал полновесный "облом" в лице автоответчика, жизнерадостно объявившего женским голосом, что я таки да смог дозвониться в службу технической поддержки Мирабилиса. В дальнейшем я неоднократно убеждался в том, что Мирабилис самоустранился от решения проблем пользователей, предоставив им вариться в котле проблем самим и выбираться из него собственными силами. Убедился я и в том, что они достаточно решительно расправляются со своими проблемами, игнорируя при этом права других. Иногда решения сотрудников Мирабилиса чрезвычайно радикальны. Весьма показателен процесс перехода юина 123456 из рук в руки. Когда бразильский хакер Wax все-таки достал Мирабилис воплями о том, что у него похитили его любимый юин, то админ фирмы, недолго думая, просто захватил этот номер в свои руки и, видя, что не может его удержать, снес запись о нем с сервера. Та же участь постигла юины 12345 и 101012. Никаких потуг вернуть его истинному владельцу с их стороны не было. Более того. В одностороннем порядки, несмотря на протесты как минимум 3 действующих пользователей, были уничтожены все 4-х значные юины. Так что цезарю - цезарево, а божье - богу. В отношении наших юинов Мирабилис - высшее существо, позволяющее себе все.
Эпилог
В конечном итоге и дурак поймет, что на грабли наступать не стоит. Поняли свою ошибку и программисты Мирабилиса. Поняли после того как в Россию перетекло порядка 4-х десятков различных юинов. Поняли и заткнули дыру. Теперь выданный при заходе на страницу с пользовательской информацией код запоминается сервером, и все изменения принимаются по нему только однажды. Он также не зависит от пароля, но не менее надежен. Все это не говорит, что наши аси теперь в безопасности. Перечисленные выше стандартные методы не потеряли своей силы. И наши аси так и не будут в безопасности, пока Мирабилисовским "гениям" ни стукнет в голову, что информацию о пользователе (особенно primary e-mail) нужно защитить отдельным паролем, и тогда, даже если пароль на коннект у вас сменится по какой-то причине, то мыло-то ваше все равно останется на месте, и вы сможете получить по нему новый пароль. А пока я могу вам посоветовать только три способа защитить свой юин:
1. Используйте абстрактный пароль максимальной длины желательно русскими буквами (они могут использоваться в пароле наряду с латинскими). А также совмещайте в пароле буквы и цифры. Поверьте, пароль "alex" намного легче подобрать, чем "njg3423s".
2. Уберите галочку в пункте "Save password" и поставьте уровень секретности "medium"
3. Уберите primary e-mail или поставьте туда e-mail express pager другой вашей, но не используемой вами аси.
Можно еще порекомендовать почаще менять пароль, но это тоже чревато последствиями. Вы ведь и забыть его можете! И упаси вас боже пользоваться программами непонятного назначения и происхождения.
Вот, в общем-то, и все. Have a nice day :-)
Словарь.
Админ - администратор компьютерной сети
Аккаунт - доступ в Интернет
Ася - программа ICQ pager
Коннект - связь
Мирабилис - фирма, создатель аси
Мыло - e-mail, адрес электронной почты
Онлайн - состояние нахождение в сети, работы
Юин - uin, уникальный идентификационный номер ( либо универсальный интернетовский номер. Кому как больше нравиться). Номер вашей аси.
Михаил Ромашов
Хакер, номер #003, стр. 003-026-1
|