Pull to refresh

Induc по-прежнему угроза для Delphi

Delphi *
Sandbox
Приветствую всякого на этой странице!

Сегодня мой товарищ увлекающийся, помимо всего прочего, разработкой 2D-игр на Delphi прислал мне очередную свою вещицу. Доверяй, но проверяй! — подумал я и по старой доброй традиции отправил файл на VirusTotal. Дождавшись результатов проверки желание побыстрее запустить игрушку как-то пропало… В некоторых ячейках таблицы результатов проверки красивым красным цветом было написано уже знакомое слово «Induc». Немного удившись отсутствию визга (ой, кажется, он так уже давно не делает) своего антивируса я пошёл разбираться. Но не с представителями антивирусной компании, а с устройством заражённого файла.

Вспоминая конец лета 2009 года, когда Induc'у удалось заразить среды не только любителей по программировать в Delphi, но и многие популярные программы, такие как QIP и AIMP, и учитывая то, что не впервые раз запускаю файлы своего приятеля, я первым делом решил проверить свою установку. Откомпилировав пустой проект послал его на тот же VirusTotal — индюка нет!
Немного успокоившись запускаю виртуальную машину и начитаю устанавливать Delphi 7. Не успев забыть опять вспоминаю конец лета 2009 и обсуждения на многих форумах интернета о том, как эта гадость работает, размножается, чем живёт и понимаю, что нужно воспользоваться чем-то вроде гугла. Однако, лень сильнее, да и к тому же инсталлятор отрапортовал об успешном завершении установки IDE.
Первое, что пришло мне в голову, это запустить Process Monitor и посмотреть куда суётся инфицированный файл. Сказано — сделано!



На скриншоте видно, что после многократной записи чего-то там в файл SysConst.pas игрушка обращается к компилятору Delphi (dcc32.exe), очевидно, с попыткой этот pas-файл откомпилировать.
Не мудрствуя лукаво, откатившись в исходное состояние виртуалки после установки делфи, подсовываю вместо файла DCC32.EXE свой exe-шник с исходным кодом такого содержания:



И так, в файле copy.pas имеем вот что pastebin.com/QT0tEVJb
Сравнивая с оригинальным SysConst.pas видим, что он дополнен вредоносными строчками.

Немного поковырявшись, я получил отформатированный исходник pastebin.com/KpmuSii9 (комментарии мои).

Как видно, при запуске прежде всего кое-как проверяется не находиться ли программа под отладчиком (зачем?) и запускается на NT-системе или нет, иначе выполнение прекращается.
Далее вирус копошится в реестре в поисках установленной версии Delphi и пути к её папке.
Затем вызывается процедура, которая считывает исходный файл SysConst.pas, добавляет к нему вредные строки и сохраняет в папку lib, то есть туда же, где расположен файл SysConst.dcu. После этого та же процедура запускает компилятор, получая тем самым заражённый файл SysConst.dcu. Здесь же удаляется вредоносный исходник и выставляется время создания, последнего доступа и модификации для нового файла SysConst.dcu таким, каким оно было у его предшественника.
И ещё в файл SysConst.pas записывается строка 'Carpathian Forest CF1.3 BondedByBlood'

Вот вроде бы и всё, своё дело Induc сделал… Но осталось ещё несколько незадействованных процедур, которые реализуют не менее вредоносный функционал. Так при запуске процедуры Check проверяется не 13-е ли сегодня октября 2010 года или более, если так оно и есть, то запускается процедура Analize. Эта процедура затирает в первую очередь файлы hal.dll, urlmon.dll, userinit.exe, logoff.exe, rasapi32.dll, explorer.exe, ntdetect.com, затем ищет все файлы на дисках от C: до Z: и точно так же их портит записывая циклично строку 'Carpathian Forest CF1.3 BondedByBlood' разбавленную килобайтом нулевых символов. В конце всего этого открывается окно с заголовком 'TODAY IS A NICE DAY TO DIE.' и текстом 'Carpathian Forest CF1.3 BondedByBlood'.
Однако, автор предпочёл скрыть все эти фичи (или просто забыл подключить).

Примечательно ещё то, что вируснятинка немного устаревшая (так как в исходниках фигурирует дата 2010-10-13), а большинство популярных антивирусов как бы ни сном, ни духом… В чем же заключается сложность обнаружения такого достаточно простого вируса?
Tags:
Hubs:
Total votes 47: ↑40 and ↓7 +33
Views 4.2K
Comments Comments 18