Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #94, ОКТЯБРЬ 2006 г.

Некролог на Web-Money Keeper

Крис Касперски

Хакер, номер #094, стр. 094-062-1

Чем опасен WM-клиент

Какую информацию собирает о нас система Web Money, можно ли ей доверять? Просидев за дизассемблером всю ночь напролет, пришел к весьма неутешительным выводам, которых придерживаются и другие пользователи. Как обезопасить себя и обеспечить максимальную анонимность?

Введение

Популярная платежная система Web-Money реализована в виде двух независимых программ: Keeper Classic и Keeper Light, каждая из которых имеет свои достоинства и недостатки. Keeper Classic представляет собой обычное Windows-приложение, требующее инсталляции на компьютер. Вот что об этом говорят некоторые пользователи: «Это — поделка от Web-Money, в которую неизвестно что зашито, может, и троян. И даже если его там нет, это творение небезупречно: пару раз ставил на несколько компов, так они стали хромать на обе ноги, вплоть до BSOD. На других же компах работа была нормальной. Следовательно, эта программа недоработана и ведет себя непредсказуемо".

Но прикладное приложение, которым пытается казаться Keeper Classic, не может вызывать BSOD, поскольку это прерогатива драйверов, работающих на уровне ядра. Значит, Keeper каким-то образом проникает в ядро, причем не совсем легальным путем (отсюда конфликты и BSOD). Во всяком случае, я не видел никакого запроса на установку драйверов при инсталляции, и никаких драйверов не появилось в каталоге WINNTSystem32Drivers, где им и положено быть, но… запуск утилиты R-Studio, восстанавливающей удаленные файлы, показал наличие созданного и тут же удаленного файла winio.sys, ссылка на который обнаружилась в компоненте Keeper'a: WMClient.dll. Судя по названию, этот драйвер открывает доступ к портам ввода/вывода с прикладного уровня, что создает нехилую дыру в системе безопасности, не говоря уже о том, что некорректное обращение с портами чревато не только голубыми экранами смерти, зависанием компьютера, но и потерей данных вместе с порчей оборудования.

Тут же, по соседству с «winio.sys», приютились текстовые строки: «\.PhysicalDrive%d», «\.Scsi%d:» и «SCSIDISK», недвусмысленно свидетельствующие в пользу того, что Keeper работает с жесткими дисками на низком уровне!

А дальше... дальше идет нечто совершенно невероятное:

Фрагмент WMClient.DLL, передающий жесткому диску ATA-команды

.text:100B7A31 push 557 ; nOutBufferSize

.text:100B7A36 lea eax, [ebp+OutBuffer]

.text:100B7A3C push eax ; lpOutBuffer

.text:100B7A3D push 3Ch ; nInBufferSize

.text:100B7A3F lea ecx, [ebp+OutBuffer]

.text:100B7A45 push ecx ; lpInBuffer

.text:100B7A46 push 4D008h ; IoControlCode(IOCTL_SCSI_PASS_THROUGH)

.text:100B7A4B mov edx, [ebp+hObject]

.text:100B7A4E push edx ; hDevice

.text:100B7A4F call ds:DeviceIoControl

Диску посылается IOCTL-код IOCTL_SCSI_PASS_THROUGH, позволяющий передавать любую ATA-команду в обход операционной системе! ATA-команды — это наиболее низкоуровневые команды, на которых «разговаривает» диск, и с их помощью можно сделать все, что угодно. Малейшая неосторожность (или несовместимость) способна разрушить содержимое диска или уничтожить его «прошивку», что еще хуже. Девять из десяти, что эта процедура используется для чтения показаний SMART, однако не исключено, что Keeper пишет на диск какую-то гадость. Мне было лень досконально изучать этот вопрос, поскольку в любом случае Keeper мутит.

Содержание  Вперед на стр. 094-062-2
ttfb: 3.64089012146 ms