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


Внутри Keeper'а - часть 4


Но не будем зацикливаться на текстовых строках и двинемся дальше. Посмотрим на список импортируемых API-функций. Для этого достаточно воспользоваться утилитой dumpbin.exe, входящей в штатную поставку компилятора Microsoft Visual C++ и Platform SDK. Вызываем ее: "dumpbin.exe /EXPORTS WMClient.dll > output" и смотрим на результат:

 

Dump of file WMClient.dll

    KERNEL32.dll

               83  DeviceIoControl

              353  Thread32Next

              352  Thread32First

              28C  Process32Next

              262  Module32Next

              260  Module32First

              204  Heap32ListNext

              203  Heap32ListFirst

28A  Process32First

               6C  CreateToolhelp32Snapshot

Листинг 4 функции, импортируемые Keeper'ом (фрагмент)

Функции семейства TOOLHELP32 (CreateToolhelp32Snapshot(), Process32First(), Heap32ListFirst(), Heap32ListNext(), Module32First(), Module32Next(), Process32Next(), Thread32First() и Thread32Next()), служат для получения списка процессов и потоков имеющихся в системе. Спрашивается — зачем Keeper'у знать об этом?! Чтобы "отлавливать" троянские программы?! Непохоже… Троянские программы меняют свои имена как перчатки и к тому же никакого "черного списка" внутри Keeper'а нет. Судя по всему, он передает их на сервер и умные дядьки смотрят: а каким, собственного, программным обеспечением мы пользуемся? И, где гарантия, что увидев OllyDbg, PE-TOOLS и прочие хакерские утилиты они не ликвидируют наш аккаунт или не настучат "куда нужно"? Keeper – идеальное средство для удаленного наблюдения за миллионами машин, тем более, что своего любопытна он даже и не скрывает. Больше всего смущает наличие функций Heap32ListFirst() и Heap32ListNext(), выдающих карту памяти каждого из процессов. Сама по себе карта памяти не несет никакой информации, если тоголько… кто-то очень хочет внедриться внутрь чужого процесса!

А функция DeviceIoControl() — это вообще ласты. Ее основное предназначение — посылать драйверам специальные управляющие IOCTL коды, с помощью которых, в частности, можно напрямую читать или писать на диск. Поскольку, разработчики (вот пионеры!) никак не замаскировали ее вызов, все IOCTL-коды видны в IDA Pro как на ладони! Давайте разберемся, что же такого делает Keeper с нашим оборудованием, чего нельзя было сделать с помощью нормальных API-функций?!




Начало  Назад  Вперед