Некролог на Web-Money Keeper Крис Касперски Хакер, номер #094, стр. 094-062-5 Но не будем зацикливаться на текстовых строках и двинемся дальше. Посмотрим на список импортируемых API-функций. Для этого достаточно воспользоваться утилитой dumpbin.exe, входящей в штатную поставку компилятора Microsoft Visual C++ и Platform SDK. Вызываем ее («dumpbin.exe /EXPORTS WMClient.dll > output») и смотрим на результат: Функции, импортируемые Keeper'ом (фрагмент) 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 Функции семейства 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-функций?! Переходим в IDA Pro, нажимаем <Shift-F4> для открытия окна «Name», пишем «DeviceIoControl» (полностью вводить имя необязательно — IDA Pro сама поставит курсор на него, как только поймет, что же мы от нее хотим). Теперь нажимаем <ENTER> и оказываемся в секции импорта. По умолчанию IDA Pro отображает только первые две перекрестные ссылки. Чтобы увидеть остальные, необходимо в меню «View» выбрать пункт «Open subview», а там — «Cross references» или просто нажать <ALT-V>,<O>,<O>. |