Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Как я ломал The Bat!, или пароли вампира.

div.main {margin-left: 20pt; margin-right: 20pt}Как я ломал The Bat!, или пароли вампира.

Автор:Vovan aka L0ki (loki@infantry.com) ICQ: 59946949

После огромного количества хвалебных статей "о лучшем мэйлере всех времен и народов" во всевозможных изданиях я набрал пару ведер увесистых булыжников и буду бомбить ими загаженный летучими мышами огород RIT Labs. И пусть не обижаются. В любой бочке меда обязана быть одна (но большая) ложка г... эээ-э-э, дегтя.

Пролог

Ты не задумывался: сколько людей пользуются The Bat!-ом? (Вся редакция Х юзает только The Bat! - прим. ред.) Сколько народу скачивает его с ritlabs.com и громко вопит в fido7.ru.crack: "Дайте мне кряк к Бату!", создают трафик astalavista.box.sk и других поисковых машин?

Много! По словам SideX`а, их добрая треть, а то и половина читателей Х. Удобная вещь: быстро бегает, места мало занимает, наворотов и прибамбасов немеряно. А у тебя, случаем, не Бэт мэйлером работает? И о чем в нем пишешь? А переписочку где хранишь? Где обычно? И не боишься? А-а-а, пароль поставил! Ну, погоди, погоди... Проверим, как ты умеешь хранить тайны...

А началось все с мелочи. Решил как-то разок проверить: можно ли Бату доверять на хранение духовные ценности (CityCat'овский eat.dodbar). Поставил пароль. Дай, думаю, посмотрю: а чего он там делает-то с паролем? Посмотрел. Не прошло и пяти минут, как была написана программка (простейшая, на Паскале), показывающая пароль любого запароленного ящика. Но обо всем по порядку.

Итак, слово обвиняемому - Бату Вампировичу:

"Работая с The Bat!, Вы можете закрыть ваш почтовый ящик паролем, так что никто не сможет прочитать Ваши письма без Вашего разрешения".

Ну да! Так уж и никто! Разрешения еще спрашивать!

Надрежем лобовую кость...

Напомню, что все письма Bat! хранит в файлах, (он их называет базами писем) с расширением .MSB. С них-то я и начал. Сохраняю один из них (ну, например, Inboxmessages.msb) без пароля на ящике с именем ORIG.MSB, потом установил пароль на ящик (его можно было даже не запоминать - настолько нетрудно оказалось его оттуда достать) и сохранил этот же файл с именем CRYPT.MSB.

Сравниваю зашифрованный и незашифрованный .MSB-файл, зорким оком замечаю такие вещи:

1) размер файла не изменился (хороший признак, однако);

2) изменился кусок в заголовке файла (а что же там лежит?);

3) зашифрованное тело письма (а какой смысл хакать пустой файл?).

При этом последовательности символов в оригинальном письме повторяются и в зашифрованном виде. Имеем явно не блочный шифр, т.к. он из повторяющихся строк на выходе ТАКОЕ вытворяет - мать родная не узнает. Да и не подстановочный тоже - в нем строка из одинаковых символов (приличной длины - см. рисунок) на выходе может возникнуть только чудом. Причем с той же позиции. И одинаково во всех письмах. Но другими символами. Допиваю утренний кефир, отставляю чашку в сторону... АГА! ПОПАЛСЯ! Возникла правомерная мысль, что передо мной обыкновенный заезженный XOR по одному байту. И это действительно он!

Ну вот! Теперь он и тебя посчитал!

Значение, которым XORится файл, зависит от пароля. Нужны доказательства? Мне в лом их копать: очень не хочется дизассемблировать EXE мега в 3 длиной. Или перебирать сотни три паролей. Поэтому здесь начинается то, что буржуйские криптологи называют "Known text attack", т.е. "атака по известному тексту" - имеем оригинальный текст, имеем полученный текст, знаем алгоритм - получаем ключ.

Но не зря же имеется два файла - с паролем и без. Поскольку в результате бесчеловечных издевательств было выяснено, что ВСЕ (непустые) Bat!овские MSB-файлы ВСЕГДА (неясно зачем) заканчиваются парой символов CR-LF (перевод строки). Выяснение значения, которым производится XOR, упрощается до неприличия.

Беру последний байт файла и устраиваю ему XOR по значению 10 (LF, если кто забыл). Вижу последовательности в заголовке файла (с 13 байта) и пройдусь по ней XOR'ом с тем же значением. Спешите видеть! Вот оно - Pascal'евская (0-й байт - длина) строка с паролем. Вот так! Пароль наш!

Получаю значение, которым зашифрован файл. Так можно расшифровать все письма в этом файле. Судя по всему, Bat! из вводимого пароля вычисляет значение, потом им расшифровывает лежащий в .MSB пароль и сравнивает его с введенным. Схема очень даже хорошая, надежная, вот только всю эту красоту и идиллию портит катастрофически неудачный (просто лажовый) алгоритм шифровки. Уж очень он у них простой. Создателей нехватило ни на какой более-менее приличный блочный шифр. Даже не блочный. Да любой. Caesar или Viginere (а еще круче - DES) заставили хотя б задуматься (на пару минут, часов, дней, недель - в зависимости от сложности алгоритма). А так... детский лепет.

Эпилог

"Если у Вас уже имеется пароль для ящика, Вы можете ввести пустую строку в качестве пароля - после этого ящик будет не защищен".

А пароль уже имеется... Вперед!

Кстати, зашифрованный таким хитрым образом пароль лежит в КАЖДОМ .MSB-файле в ящике (а на кой, собственно, в каждом?).

"Заметьте, что почта в ящике шифруется, если Вы устанавливаете пароль. На случай, если Вы забудете пароль, запишите его где-нибудь".

Ага, на крепких лбах товарищей программистов-авторов Батона. Там ему самое место. Не, ни фига - лбов на всех не хватит. Скидай рубаху, на спине писать будем!

Далее начинается самое интересное. Теперь можно идти к товарищу за комп, стаскивать все его ящики, если тебе интересна его переписка, и не опасаться наличия пароля, на который он по глупости понадеялся. Понятно, что его любовные письма к подружке по чату Mashulen'ke вряд ли принесут тебе хоть малейшую пользу (можно подумать, ты не знал, что Mashulen'ka - это вот тот небритый урод из соседнего подъезда), но там может быть нечто полезное для тебя - подписки, аккаунты, присланные сервером при регистрации. Мало ли что может там быть? Тут тебе и халявный Инет, купленные шеллы, пароли от других почт... не оберешься добра, короче.

А теперь - Киндер-Сюрприз для Самых Находчивых! В интегрированной в The Bat! звонилке может храниться и login с password'ом - вдруг The Bat! у юзера сам дозванивается и почту забирает. Хранится не в реестре, а рядом с .MSB - в каталоге ящика, в account.cfg, кажется. Вот вам еще и Инет на халяву! А ведь хотели просто почту почитать...

Самые нервные, наверное, сейчас завопят: "А нам что же делать"? А вам, дорогие мои, настоятельно рекомендуется не хранить пароли где ни попадя и пользоваться PGP. ПЖП с Батом прекрасно интегрируется. А главное - старайтесь пореже пускать за свой комп посторонних, даже хорошо вам знакомых. У меня один хорошо знакомый (ака посторонний) за две минуты гиговый винт умудрился прошерстить, пока я чайник ходил ставить (правда, ничего важного не нашел - для этого у меня Kremlin установлен - DES, IDEA, CAST, 3DES и другие официальные лица), а после моего прихода незамедлительно схлопотал в ухо и больше так не делал. :) Так что следите, гоните всех. Это ведь персональный компьютер, а не коллективная игрушка.

P.S. Гонорар за публикацию статьи автор перечисляет фирме RIT Labs на покупку книги Bruce Scheier "Applied Cryptography".

А вот и заветный листинг нового монстра для выбивания паролей из вампира.

program Bat_Hack;

var SourceFile: file of byte;

ch: char;

c: byte;

XOR_Value: byte;

PasswordLength: byte;

count:longint;

begin

assign (SourceFile, paramstr(1));

reset (SourceFile);

seek (SourceFile,filesize(SourceFile)-1);

read (SourceFile,c);

{Читаем последний байт файла}

{Этот байт - LF XORен по XOR_Value}

XOR_Value := (c xor 10);

{Находим XOR_Value}

seek (SourceFile,13);

read (SourceFile,c);

{Это длина пароля XORенная по XOR_Value}

PasswordLength := (c xor XOR_Value);

{Находим длину пароля}

if PasswordLength = 0 then

{Вдруг пароль не установлен}

begin

writeln ('No password !');

{не судьба...}

exit;

end;

for count := 1 to PasswordLength do

{Находим пароль}

begin

read (SourceFile,c);

write (chr (c xor XOR_Value));

end;

writeln;

close (SourceFile);

end.



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте