Antivirus Detector v0.1 [Beta] (Delphi Module)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Fliplab, 17 Feb 2010.

  1. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Code:
    unit antivir_detect;
    {
      Antivirus Detector v0.1 [Beta]
      Author: FlipLab Software© 2006-2009
      E-mail: [email protected], [email protected]
      URL: http://www.fls.com/
      About: Вспомогательный модуль для обнаружения установленных
        антивирусных программ, а также фаерволов. В текщей версии
        поддерживаются:
        + ESET SysInspector
        + ESET Nod32 Antivirus
        + ESET Personal Firewall
        + Trend Micro Internet Security
        + Kaspersky Internet Security 2008 & WorkStation
        + Agnitum Outpost Firewall
        + Agnitum Anti-Spyware
        + Agnitum Host Protection
        + Malwarebytes' Anti-Malware
        + Zillya! Антивирус
    }
    
    interface
    
    uses
      Windows;
    
    function IsEsetAntivir:     Boolean;
    function IsEsetSysInsp:     Boolean;
    function IsEsetFire:        Boolean;
    function IsTrendMicro:      Boolean;
    function IsKIS2008:         Boolean;
    function IsOutpostFire:     Boolean;
    function IsOutpostAntiSpy:  Boolean;
    function IsOutpostHostProt: Boolean;
    function IsAntiMalware:     Boolean;
    function IsZillya:          Boolean;
    
    implementation
    
    function GetSys: String;
    var
      Gsys: array[0..MAX_PATH] of Char;
    begin
      GetSystemDirectory(Gsys, MAX_PATH);
      Result := Gsys;
      if Length(Result) > 0 then
        if Result[Length(Result)] <> '\' then
          Result := Result + '\';
    end;
    
    function IsRing0(Device: String): Boolean;
    var
      hFile: THandle;
    begin
      Result := False;
      hFile := CreateFileA(PChar(Device), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
      if (hFile <> INVALID_HANDLE_VALUE) then
        begin
          CloseHandle(hFile);
          Result := True;
        end;
    end;
    
    function FileExists(const FileName: String): Boolean;
    var
      Code: Integer;
    begin
      Code := GetFileAttributes(PChar(FileName));
      Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code = 0);
    end;
    
    // ESET SysInspector
    function IsEsetSysInsp: Boolean;
    begin
      if IsRing0('\\.\ESIASDRV') then
        Result := True
      else
        Result := False;
    end;
    
    // ESET Nod32 Antivirus
    function IsEsetAntivir: Boolean;
    begin
      if (FileExists(GetSys + 'drivers\ehdrv.sys')) or (FileExists(GetSys + 'drivers\eamon.sys')) then
        Result := True
      else
        Result := False;
    end;
    
    // ESET Personal Firewall
    function IsEsetFire: Boolean;
    begin
      if (IsRing0('\\.\EPFWNDIS')) or (IsRing0('\\.\EPFW')) or (FileExists(GetSys + 'drivers\epfwtdi.sys')) then
        Result := True
      else
        Result := False;
    end;
    
    // Trend Micro Internet Security
    function IsTrendMicro: Boolean;
    begin
      if IsRing0('\\.\TMACTMON') then
        Result := True
      else
        Result := False;
    end;
    
    // Kaspersky Internet Security 2008 & WorkStation
    function IsKIS2008: Boolean;
    begin
      if IsRing0('\\.\KLIM5') then
        Result := True
      else
        Result := False;
    end;
    
    // Agnitum Outpost Firewall
    function IsOutpostFire: Boolean;
    begin
      if (FileExists(GetSys + 'drivers\afwcore.sys')) or (FileExists(GetSys + 'drivers\afw.sys')) then
        Result := True
      else
        Result := False;
    end;
    
    // Agnitum Anti-Spyware
    function IsOutpostAntiSpy: Boolean;
    begin
      if FileExists(GetSys + 'filt\aswfilt.dll') then
        Result := True
      else
        Result := False;
    end;
    
    // Agnitum Host Protection
    function IsOutpostHostProt: Boolean;
    begin
      if FileExists(GetSys + 'drivers\sandbox.sys') then
        Result := True
      else
        Result := False;
    end;
    
    // Malwarebytes' Anti-Malware
    function IsAntiMalware: Boolean;
    begin
      if (FileExists(GetSys + 'drivers\mbam.sys')) or (FileExists(GetSys + 'drivers\mbamswissarmy.sys')) then
        Result := True
      else
        Result := False;
    end;
    
    //Zillya! Антивирус
    function IsZillya: Boolean;
    begin
      if FileExists(GetSys + 'drivers\ZFMSYS.sys') then
        Result := True
      else
        Result := False;
    end;
    
    end.
    
    http://slil.ru/28697335 - Скачать Antivirus Detector v0.1 [Beta] (Delphi Module)

    Написал на досуге, думаю кому-нибудь пригодится. С удовольствием приму помощь в работе над данным модулем.
     
    #1 Fliplab, 17 Feb 2010
    Last edited: 24 Feb 2010
    1 person likes this.
  2. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Как бы не люблю delphi... тут у тебя не оправданный вызов функции GetSys. Объяви ее как глобальную переменную и перед использованием твоего кода инициализируй. FileExists - очень странная функция...
     
    _________________________
  3. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Ок,а fileexists Просто вырезал из sysutils
     
  4. rankor777

    rankor777 Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    15
    Likes Received:
    23
    Reputations:
    0
    Спасибо, полезный сорец. Надо будет на С переписать.
    P.S. Для таких вещей лучше все функции самому импортировать из длл, благо, их немного ;)
     
  5. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Не спорю. Если есть желание перепишите на асм. Сорец пофиксю в ближайшее время и добавлю новые авири. Если не влом,киньте ссылки на авири которые знаете
     
    1 person likes this.
  6. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,301
    Reputations:
    327
    добавь лучше не проверку сервисов а если найден процесс то хеш его ехе, вдруг так, фейк крутится

    а вот список с вирустотала

    a-squared
    AhnLab-V3
    AntiVir
    Antiy-AVL
    Authentium
    Avast
    AVG
    BitDefender
    CAT-QuickHeal
    DNAScan
    ClamAV
    Comodo
    DrWeb
    eSafe
    eTrust-Vet
    F-Prot
    F-Secure
    Fortinet
    GData
    Ikarus
    Jiangmin
    K7AntiVirus
    Kaspersky
    McAfee
    McAfee+Artemis
    McAfee-GW-Edition
    Microsoft
    NOD32
    Norman
    nProtect
    Panda
    PCTools
    Prevx
    Rising
    Sophos
    Sunbelt
    Symantec
    TheHacker
    TrendMicro
    VBA32
    ViRobot
    VirusBuster
     
    #6 sn0w, 18 Feb 2010
    Last edited: 18 Feb 2010
  7. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Ок.
     
  8. rankor777

    rankor777 Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    15
    Likes Received:
    23
    Reputations:
    0
    Хэш будет различен в разных версиях антивируса.
     
  9. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Вот я как раз тоже зашел об этом написать:)хотя в принципе таким образом можно детектировать становленную версию,но тогда нужен помощник,который бы за меня собирал хеши:)
     
  10. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Да и фейк процесса также можно впринципе запустить при особом желании:)
     
  11. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Подскажите как переписать кернеливские функции под нтдлл
     
  12. rankor777

    rankor777 Elder - Старейшина

    Joined:
    11 Jan 2008
    Messages:
    15
    Likes Received:
    23
    Reputations:
    0
    Открой делфийский файл с объявлением этих функций да посмотри ;)

    Только есть 2 пункта.

    1. Вы часто встречаете фейковые процессы антивирусов? Я - ни разу не видел
    2. Все эти действия могут палиться проактивкой ;)
     
  13. BaalHaddat

    BaalHaddat New Member

    Joined:
    3 Feb 2010
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    Не в первый раз замечаю что малварь частенько правит подобные файлы.
    По-моему неплохая мысль для антивирусных компаний набросать фейков и следить за их изменениями...
     
  14. BaalHaddat

    BaalHaddat New Member

    Joined:
    3 Feb 2010
    Messages:
    3
    Likes Received:
    1
    Reputations:
    0
    Всмысле переписать ?
    Там часто можно встретить "заглушки" для sysenter, соответственно можно вполне использовать их вызов в обход ntdll.
     
  15. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Ты прежде чем советы давать,сам про перехват прочти.
     
  16. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    Кернелевская библиотека написана на функциях нтдлл.так вот мне просто надо их описание и т.п
     
  17. RedFern.89

    RedFern.89 Member

    Joined:
    20 Jan 2010
    Messages:
    575
    Likes Received:
    48
    Reputations:
    0
    Хорошая весчь) спасибо)
     
  18. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    лови. Windows System Call Table (NT/2000/XP/2003/Vista) с Metasploit

    Очень хорошая таблица, потому что есть прототипы функций. Практически все SDT функции для ntoskrnl.exe и их номера. Для Win Vista могут номера чуть отличаться от оригинала, там уже совсем путаница пошла
     

    Attached Files:

    #18 slesh, 19 Feb 2010
    Last edited: 19 Feb 2010
    1 person likes this.
  19. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    BaalHaddat
    На счет фейков,в них нет смысла в антивирях:)а темболее наблюдать за ними
     
  20. Fliplab

    Fliplab Elder - Старейшина

    Joined:
    29 Jul 2008
    Messages:
    123
    Likes Received:
    20
    Reputations:
    3
    slesh Огромное вам человеческое спасибо:)