IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Добавить ответ в эту темуОткрыть тему
 Реверсинг Webmoney 3.1.0.1, следят ли за вами или нет?
zvr
сообщение 28.3.2008, 9:50
Сообщение #1


Ветеран
****

Группа: Кандидат
Сообщений: 337
Регистрация: 1.6.2007
Пользователь №: 236
Вставить ник
Цитата



Много споров и подозрений в интеренете по поводу этой программы,
многие говорят что она шпионит за пользователями, даже небезызвесный
Крис Касперски написал статью про неё и называлась она "Некролог на
WebMoney". Очень нелестно высказываются о ней и другие прользователи.
Чтож, лучше один раз увидеть чем сто раз услышать, и исследовать
программу решил и я. Немного забегая вперед могу сказать что не все
так и плохо, как бы там не расписывали другие люди. В том же "некрологе"
программка была расписана как нечто ужасное, но на самом деле это не
более чем преувеличиения. Итак, приступим.
С сайта вебмани был загружен дистриб проги и успешно установлен на
комп. При установке были включены файловый монитор и монитор реестра,
ничего скрытно она не делает, все что произошло было аккуратно записано
в лог установки и свободно для чтения.
Следующий этап - осмотр того что нам собственно поставили, а файлов
там не слишком и много:
- KeeperID.exe (285 kb)
- WebMoney.exe (178 kb)
- WMClient.dll (2.8 mb)
- WMDispatcher.exe ( 73 kb)
- прочие файлы (анинстал, папки с сертификатами и bexth.dll)
KeeperID и WebMoney запакованы AsProtect ом, но не самой последней
версии, и если это было бы необходимо - можно было распаковать.
Наиболее крупным файлом в поставке был WMClient.dll и именно он
и содержит все основные функции программы, а ехе являлись лишь
хостом для этой длл. Сама длл ничем не запакована. Рассмотрим что же
в действительности делает она.

Миф 1. "Она получает мой mac-адрес!"
Да получает, ну и что? Получение идет абсолютно открыто - подгружается
библиотека netapi32 и затем вызывается стандартная функция NetBIOS для
получения информации о мак-адресе, никаких сокрытий тут не ведется, да и
если вы так боитесь своего мак адреса - ну поменяйте его! В настройках
устройства у большинства сетевых плат есть небольшой пунктик позволяющий
поменять адрес на любой другой. К тому же, исследуя протокол обмена
вебмани с сервером не было найдено передачи мак-адреса в числом виде, так
что это всего лишь мифы. Ну а про протокол обмена будет чуть позже.

Миф 2. "Она получает все о моих PCI девайсах!"
О боже, Крис Касперски как так можно было заявлять, эти текстовые
строки начинающиеся с pci не относятся к PCI девайсам никаким местом. Ведь
ясно видно что

.rdata:1021ECBC aPci_pursedest db '&pci_pursedest=',0
(цитата из статьи "Некролог...", адреса сохранены)

является частью какого то GET запроса, а не строкой позволяющей получить
или вывести информацию о девайсах. К тому же, если глянуть юрл'ы в самой
программе то можно увидеть такое:

https://merchant.webmoney.ru/pci/XMLPay.asp
https://merchant.webmoney.ru/pci/XMLPayTest.asp

Где pci видимо является не сервисом сбора инфы о девайсах (IMG:http://4seo.biz/style_emoticons/default/smile.gif) , а обычным
интерфейсом для перевода денег с одного счета на другой. Сканер шины
BusHound, ну малоли с девайсами система общается, уж и поговорить нельзя
(IMG:http://4seo.biz/style_emoticons/default/smile.gif) . В дампе ниче такого нету. К тому же для каждого девайса свои способы
получения сериал номера устройства, и я не думаю что создатели вебмани
угробили столько времени чтобы получить пару сериалов.

Миф 3. "Она ставит драйвера в мою систему!"
Да там есть два драйвера - это winio.sys и citio.sys, но они отнюдь
не выворачивают вашу систему наизнанку в поисках ид всяких устройств и
не оставляют скрытых меток на жестком диске. После детального рассмотрения
было выяснено что драйверы устанавливаются во время ввода пароля с
клавиатуры т.е. блокируют клавиатурные шпионы в системе. Стоит ради
интереса заметить что сделано все это очень культурно - через сабклассинг
окон, что позволяет в принципе защитить любое окошко от перехвата инфы.
Так что в этом пункте стоит только похвалить разработчиков за красивое
решение.

Миф 4. "Она получает списки процессов и модулей!"
Ну в очередной раз не стоит судить о книге по обложке и стоит
разобратся чтоже она делает с этим списком и когда. Вызывается процедура
сбора инфы по хуку, а сам хук ставится на события мыши и клавиатуры. Но,
если детально рассмотреть все что она с ними делает то все становится
очень безобидно. В начале процедуры идет вызов:
Код
.text:100B555D                 lea     eax, [ebp+PerformanceCount]
.text:100B5560                 push    eax            ; lpPerformanceCount
.text:100B5561                 call    ds:QueryPerformanceCounter


Сразу навевается мысль о неком подобии рандом генератора и используют его
явно не для шифрования, так как это было бы безумием. После этого идет
полоса комманд вычисления с плавающей точкой:
Код
.text:100B55C5                 fild    [ebp+var_18]
.text:100B55C8                 sub     esp, 8         ; double
.text:100B55CB                 fstp    [esp+30h+var_30]
.text:100B55CE                 call    __scalb
.text:100B55D3                 fstp    [ebp+var_20]
.text:100B55D6                 add     esp, 0Ch
.text:100B55D9                 push    2              ; __int32
.text:100B55DB                 mov     eax, dword_10213D04
.text:100B55E0                 sub     eax, dword_10213CFC
.text:100B55E6                 mov     [ebp+var_24], eax
.text:100B55E9                 fild    [ebp+var_24]
.text:100B55EC                 sub     esp, 8         ; double
.text:100B55EF                 fstp    [esp+30h+var_30]
.text:100B55F2                 call    __scalb
.text:100B55F7                 add     esp, 0Ch
.text:100B55FA                 fadd    [ebp+var_20]
.text:100B55FD                 sub     esp, 8         ; x
.text:100B5600                 fstp    [esp+2Ch+var_30+4]
.text:100B5603                 call    _sqrt_
.text:100B5608                 add     esp, 8
.text:100B560B                 fcomp   ds:dbl_101DD7A8
.text:100B5611                 fnstsw  ax
.text:100B5613                 test    ah, 41h
...

Такое баловство также подразумевает некие операции со случайными числами,
практически сразу после этого идет вызов функции, которая в свою очередь
собирает многостардальный дамп процессов и памяти:
Код
.text:100B5639                 mov     ecx, obj_processes
.text:100B563F                 call    GetAllProcesses


А внутри этой функции нас ожидает приятный сюрприз:
Код
.text:100B5C5C                 mov     ecx, [ebp+procs_buf]
.text:100B5C5F                 call    GetProcsMods
.text:100B5C64                 mov     [ebp+var_4], eax
.text:100B5C67                 mov     edx, [ebp+var_4]
.text:100B5C6A                 push    edx
.text:100B5C6B                 mov     ecx, [ebp+procs_buf]
.text:100B5C6E                 call    CalcMD4OnBuff
.text:100B5C73                 push    Hooks_doRemove
.text:100B5C75                 mov     ecx, [ebp+procs_buf]
.text:100B5C78                 call    Hooks_Control


Вуаля! Собирает всю инфу о процессах в буфер и считает по ней MD4
хэш, и это сразу ставит все на свои места - запущенные процессы и
организация памяти по сути является в некоторой степени случайным элементом
для каждого компьютера, ну а подсчет хэша по этому добру дает хоть и не
слишком хорошее но всеже случайное число. Так что шпионство за процессами
отменяется, да здравствуют случайные числа (IMG:http://4seo.biz/style_emoticons/default/smile.gif) Для особых скептиков на
этом расследование не было завершено.
Как уже было сказано, был проведен анализ протокола, и на удивление там
опять не оказалось местечка для конфиденциальных данных, даже намека нету
на них. В этом пункте можно спать спокойно ведь это еще один миф (IMG:http://4seo.biz/style_emoticons/default/smile.gif)

Миф 5. "Она использует DeviceIOControl!"
Чтож, начнем с того зачем вообще эта функция, дабы не лезть со
всякими заявлениями по поводу "низкоуровнего обращения к hdd". Функция
эта действительно предназначена для посылки IO кода некому устройству.
Но обратите внимание, что программа не просто так импортирует эту функцию,
она использует собственные драйвера и та функция как раз отправляет
данные именно этим драйверам, а не жестким дискам
и прочим девайсам. Ну и опять же дабы не быть голословным посмотрим из
каких функций они вызываются:
Код
...
.text:1008DEAA    push    80000000h      ; dwDesiredAccess
.text:1008DEAF    push    offset FileName; "\.citio"
.text:1008DEB4    call    ds:CreateFileA
...
.text:1008DF0E    push    eax            ; lpInBuffer
.text:1008DF0F    push    80002078h      ; dwIoControlCode
.text:1008DF14    mov     ecx, [ebp+hObject]
.text:1008DF17    push    ecx            ; hDevice
.text:1008DF18    call    ds:DeviceIoControl
...

Как видно из сорца идет открытие драйвера и передача буфера ему и к
великому сожалению не явлется шпионской деятельностью (IMG:http://4seo.biz/style_emoticons/default/smile.gif) Такие же
разочарования нас ждут по адресам 1008E232, 1017C488, 1017C588, 1017C68E,
1017C7B2 и 1017C906. Но это не все места где используется данная функция,
так же она испольуется в 10084FED, 10085367, 100858A1, 10085C28 и 10085CDC.
На первый взгляд выглядят они просто ужасающе - рядом есть два кросс
референса на строку .PhysicalDrive%d и .Scsi%d ну и естественно
первая мысль которая крадется в голову это чтение и запись на диск всякого
компромата в виде меток или чтение инфы о серийных номерах диска! Но если
успокоится и довести дело до конца, что не было сделано в той же статье
"Некролога...", то можно с уверенностью утверждать - ничего плохого наш
муравей не делает. Используется данные не для шпонства за пользователями,
а просто чтобы создать некий HardwareID и потом передать его на сервер
активации приложений. А отправлется это дело на:

https://www.softactivation.com/XML/XMLGetActivationKey.asp

И тут же рядом с этим линком видим шаблон запроса:
Код
.rdata:101D7E28 agact db '<GetActivationKey.request><login></login><ProductID></Produc'
.rdata:101D7E28       db 'tID><HardwareID></HardwareID><sign></sign></GetActivationKey'
.rdata:101D7E28       db '.request>',0


Делаем вывод что это еще один страшный миф о шпионстве вебмани.

Миф 6. "Неспецифированный протокол"
Ну это совсем не обоснованый пункт, непонятно вообще откуда он
взялся, если даже просто мимолетно взглянуть на код и на строки, то ясно
можно увидеть обычнейший xml, именно его используют для передачи информации
на сервер и с него. В добавок к этому, дабы не передавать все в открытом
виде используется самый обычный ssl протокол, который себя зарекомендовал.
На каком то форуме даже пробегали ссылки на полные документации их
протолоков, хотя имхо это даже лишнее - все ясно из шаблонов которые
встроены прямо в программу.

Чтож, с мифами разобрались, но это еще далеко не все, в вебмани
предусмотрен запрос "безопасности", который происходит при проведении
платежа, давайте рассмотрим что же в действительности получает сервер
вебмани из секретных данных пользователя. Выделив шаблон запроса хмл и
написав комментарии - получилось следующее:
Код
<SecurityReport.Request>
  <WMID></WMID>            # wmid - ну кудаж без него
  <Keeper>
    <Version></Version>           # версия самого кипера
    <Language></Language>         # язык кипера
    <Activation></Activation>     # активация, по видимому номер
    <Confirmation></Confirmation> # подтверждение
    <KSP>                         # Инфа о KSP
      <Version></Version>
      <Name></Name>
      <Desc></Desc>
    </KSP>
    <Keys>                        # Инфа о ключах
      <Size></Size>
      <DriveType></DriveType>     # тип устройства, по видимому флеш или хард
    </Keys>
  </Keeper>
  <System>                        # информация о системе
    <VersionInfo>
      <MajorVersion></MajorVersion> # версия винды
      <MinorVersion></MinorVersion>
      <BuildNumber></BuildNumber>   # номер билда винды
      <PlatformId></PlatformId>
      <CSDVersion></CSDVersion>
      <ServicePackMajor></ServicePackMajor>  # инфа о сервис паках
      <ServicePackMinor></ServicePackMinor>
      <SuiteMask></SuiteMask>
      <ProductType></ProductType>            # тип продукта
    </VersionInfo>
    <InternetExplorer>                       # инфа о интеренет эксплорере
      <Version></Version>
      <Build></Build>
      <MinorVersion></MinorVersion>
    </InternetExplorer>
  </System>
  <Sign></Sign>                              # подпись, видимо запрос подписывается
</SecurityReport.Request>


В таком запросе я не наблюдаю ни отправки списка процессов, ни
номеров жесткого дистка ни прочей нечисти каким либо образом характеризующей
пользователя. Версии как интернет эксплорера практически одинаковые у
всех так и версии и билды винды так же однотипны. Остается лишь одна
загадка в вебмани - как сервер определяет то что кошелек запущен в вмваре.
Частично разгадка известна - функция NetBios используется классом HWIdentor
который в свою очередь используется классами для подключения к вебмани. А
сама функция нетбиос возвращает нам мак-адрес сетевой карты. Для вмваре
используются специфичные номера по которым она безбожно палится. Обойти
это можно применив патч для вмваре который можно найти в интернете, жаль
что для новых версий приходится его переписывать, так как он не работает (IMG:http://4seo.biz/style_emoticons/default/smile.gif)
Особенно стоит поблагодарить разработчиков за их внимание к реверсерам
и оставление на протяжении всего ехе всяких полезных строчек с дебаг
информацией, в которой помимо сообщения об ошибке еще указывается и класс
и процедура в который мы сейчас находимся.



by NeoN
date: 22.05.07

source indetails.info/?module=detailed&id=89

Ctrl+C Ctrl+V каждый может стать автором (IMG:http://4seo.biz/style_emoticons/default/biggrin.gif)
(статья смиррорена дабы сайт в один день не исчез.)

на сайте также находится большое количество интересных статей, например анализ Storm Worm'a

)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Chin
сообщение 28.3.2008, 19:39
Сообщение #2


Администратор
****

Группа: root
Сообщений: 5276
Регистрация: 17.3.2007
Пользователь №: 1
Вставить ник
Цитата



Цитата
Используется данные не для шпонства за пользователями,
а просто чтобы создать некий HardwareID и потом передать его на сервер
активации приложений.

И что это за "некий HardwareID", который передается на сервер активации приложений? Не тот ли это как раз "жесткий профиль юзера", по которому блочатся и новые кошельки на переустановленной системе? Или такой блок - тоже миф? Или по маку все-же палит, раз извлекает?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
zvr
сообщение 29.3.2008, 3:47
Сообщение #3


Ветеран
****

Группа: Кандидат
Сообщений: 337
Регистрация: 1.6.2007
Пользователь №: 236
Вставить ник
Цитата



Ну оригинальные притензии были такие (со статьи Касперского, да и разных домыслов с инета), что клиент пишет спецметки на харддрайв, а также отсылает обратно серийный номер диска, и список запущенных (и возможно установленных) программ.

По маку да, палит, раз детектит запущенность в vmware. У vmware специфическое железо. (его (и спец 'бекдор' номер) кстати можно сменить спец. прогами). А сам мак адрес сменить не представляет труда. Обычно в настройках самой карточки в computer management -> device manager -> network adapters -> properties -> advanced, network address. Или же спец утилитами, smac например.

Имхо это защита от кардеров.. от глупых кардеров)

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

все же имхо этот hardware id подразумевался как некая мера защиты при расследовании похищенных денег...

в общем хз, имхо не парьтесь) хотели бы следить - брали бы серийник харда, ревизию и версию биоса, версию мати, чипсета, ключ винды, серийный номер памяти и part number, snapshot всех установленных программ; время модификации и создания системных файлов винды. и при передаче шифровали бы все это AES-256, и сам exe был бы защищен от отладки, а вышеописанный код бы запускался в custom virtual machine. или руткит бы какойнить ядренный ставили, спонсированный фсб. тогда бы да. можно было бы смело сказать - за вами следят! (IMG:http://4seo.biz/style_emoticons/default/wink.gif) ))
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
onion
сообщение 29.3.2008, 14:29
Сообщение #4


Ветеран
****

Группа: Представитель
Сообщений: 235
Регистрация: 26.4.2007
Пользователь №: 92
Вставить ник
Цитата



Ну просто слежение со стороны вебмани может быть более неприятно в том плане, что это контора отвечающая за мой электронный кошелек. Она итак уже знает сколько у меня бабла, чё ей от меня еще надо?
А винда следит - ну так она жеж финансов напрямую как вебмани не касается!
Кста, а с кипером лайт интересно как дела обстоят? Там вроде все намного проще?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Deschain
сообщение 29.3.2008, 14:41
Сообщение #5


Ветеран
****

Группа: Кандидат
Сообщений: 114
Регистрация: 8.10.2007
Пользователь №: 408
Вставить ник
Цитата



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

Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 2.9.2010, 19:09