WWF世界自然基金会 2025-11-16 20:55 采纳率: 98.6%
浏览 4
已采纳

Sality病毒如何识别并删除杀毒软件安装文件?

Sality病毒如何通过进程枚举与文件签名识别并删除主流杀毒软件的安装文件?该病毒常驻内存后,会遍历系统进程,匹配已知安全软件的进程名或数字签名,并结合注册表校验判断其是否存在。一旦识别成功,Sality会利用自身注入技术终止相关进程,并递归遍历杀毒软件安装目录,通过直接删除文件或覆写关键模块的方式破坏其完整性。更高级变种甚至使用驱动级权限绕过文件保护机制。这种行为不仅阻碍安全软件运行,还极大增加后续清除难度。那么,Sality具体依赖哪些系统API和特征库来精准识别目标杀软文件?
  • 写回答

2条回答 默认 最新

  • 杨良枝 2025-11-16 21:01
    关注

    一、Sality病毒识别与清除杀毒软件的技术机制解析

    Sality是一种历史悠久且高度复杂的多态性PE文件感染型病毒,自2003年首次被发现以来,持续演化出多种变种。其核心目标之一是确保自身在受感染系统中的持久驻留,为此必须消除安全软件的检测与干预能力。为实现这一目的,Sality采用了一套多层次、跨权限层级的技术组合,从用户态到内核态全面对抗主流杀毒产品。

    1. 进程枚举:获取运行中安全软件的“指纹”

    当Sality常驻内存后,首要任务是识别当前系统中是否运行了反病毒程序。它通过调用Windows提供的系统API进行进程遍历:

    • CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0):创建进程快照,获取所有活动进程列表。
    • Process32First/Process32Next:遍历快照中的每个进程,提取其映像名称(如avp.exe, egui.exe)和PID。
    • NtQueryInformationProcess(未公开API):用于获取更深层信息,如进程是否处于调试状态或是否有签名验证数据。
    • OpenProcess + ReadProcessMemory:读取远程进程内存空间,分析是否存在特征码段(例如特定加密字符串或API调用序列)。

    2. 文件签名验证:绕过伪装,精准打击

    仅依赖进程名容易误判(如用户自建同名进程),因此Sality进一步校验数字签名。其实现方式包括:

    1. 调用WinVerifyTrust()函数对可执行文件执行完整性校验,判断是否由知名安全厂商签发。
    2. 使用CryptQueryObject()解析PE文件的嵌入式证书链,提取发行者(Issuer)和主题(Subject)字段。
    3. 比对硬编码于病毒体内的白名单哈希库,例如VeriSign、Symantec、Kaspersky等CA机构的公钥指纹。
    4. 若签名有效且匹配已知杀软签名,则标记该进程为清除目标。

    3. 注册表联动校验:确认安装环境的存在

    即使某个杀毒进程暂时未运行,Sality仍会检查其是否已安装,防止未来启动。典型注册表键值如下表所示:

    注册表路径对应杀毒软件键名示例用途
    HKEY_LOCAL_MACHINE\SOFTWARE\Avast Software\AvastAvastInstallPath定位安装目录
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msascuil.exeWindows Defender(Default)确认组件存在
    HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab\protectedKasperskyProductVersion版本识别
    HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCorpTrend MicroSetupPath路径提取
    HKEY_LOCAL_MACHINE\SOFTWARE\ESET\ESET SecurityESETCurrentVersion激活状态判断
    HKEY_LOCAL_MACHINE\SOFTWARE\McAfee\DesktopProtectionMcAfeeProductID授权校验辅助
    HKEY_LOCAL_MACHINE\SOFTWARE\BitdefenderBitdefenderInstall_Dir服务路径构建
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ekrnESET Kernel DriverType驱动级驻留检测
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvcWindows Security CenterStart服务启停控制
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\AVAST Software\AvastAvast (x86 on x64)SetupLanguage兼容性识别

    4. 杀软文件定位与破坏策略

    一旦确认目标存在,Sality将采取以下步骤实施清除:

    
    // 伪代码示例:递归删除杀软文件
    void DeleteAntivirusFiles(LPCTSTR szInstallDir) {
        HANDLE hFind;
        WIN32_FIND_DATA ffd;
        TCHAR szPath[MAX_PATH];
    
        wcscpy_s(szPath, szInstallDir);
        wcscat_s(szPath, L"\\*");
    
        hFind = FindFirstFile(szPath, &ffd);
        if (hFind == INVALID_HANDLE_VALUE) return;
    
        do {
            if (wcscmp(ffd.cFileName, L".") == 0 || wcscmp(ffd.cFileName, L"..") == 0)
                continue;
    
            swprintf_s(szPath, L"%s\\%s", szInstallDir, ffd.cFileName);
    
            if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
                DeleteAntivirusFiles(szPath); // 递归进入子目录
            } else {
                SetFileAttributes(szPath, FILE_ATTRIBUTE_NORMAL);
                DeleteFile(szPath); // 直接删除
                // 或覆写关键模块:WriteFile(...) 写入垃圾数据至引擎DLL
            }
        } while (FindNextFile(hFind, &ffd));
    
        FindClose(hFind);
        RemoveDirectory(szInstallDir); // 清空目录
    }
        

    5. 驱动级绕过:突破文件保护机制

    现代杀毒软件普遍启用文件保护(如PGP、Tamper Protection),阻止非可信代码修改其核心组件。高级Sality变种则通过加载恶意驱动(如\\.\\aw.sys模拟合法驱动名)获得Ring 0权限,并利用以下技术绕过限制:

    • SSDT Hook(System Service Descriptor Table):篡改NtCreateFileNtOpenFile等系统调用,过滤对杀软路径的访问请求。
    • Direct Kernel Object Manipulation (DKOM):直接操作EPROCESS结构体,隐藏自身或终止目标进程。
    • CR0寄存器修改:临时禁用写保护模式,强行写入受保护内存页。

    6. 特征库构建:静态与动态双轨识别

    Sality内置一个压缩加密的“杀软特征数据库”,包含如下维度的数据:

    识别维度具体条目数据来源
    进程名egui.exe, avp.exe, bdagent.exe社区泄露样本分析
    服务名ekrn, mfefire, wscsvcMITRE ATT&CK 框架
    文件MD5前缀9f86d08..., e99a18...VirusTotal批量查询
    数字证书SHA13af8...b4e2 (Symantec)证书透明日志
    注册表键路径HKLM\SOFTWARE\KasperskyLab自动化沙箱监控
    网络C2域名update.kaspersky.comDNS日志关联分析
    内存特征码"KAS\0", "BD_INIT"IDA Pro逆向提取
    驱动设备名\Device\Klif, \Device\BdrtfltWinDbg内核调试

    7. 技术演进趋势与防御建议

    近年来,Sality开始融合无文件攻击(fileless execution)、反射式DLL注入以及UAC绕过技术,使其检测难度显著上升。针对此类威胁,企业级防护应考虑:

    • 启用基于行为的EDR解决方案,监控异常进程终止与大量文件删除事件。
    • 部署固件级完整性校验(如Secure Boot + HVCI)防止驱动劫持。
    • 限制本地管理员权限,减少恶意代码提权机会。
    • 定期审计注册表自动启动项与服务列表。

    8. 流程图:Sality清除杀软的整体执行逻辑

    graph TD
        A[Sality驻留内存] --> B[枚举进程列表]
        B --> C{是否存在可疑进程?}
        C -- 是 --> D[提取进程名与PID]
        D --> E[调用WinVerifyTrust校验签名]
        E --> F{签名是否属于已知杀软?}
        F -- 是 --> G[查询注册表确认安装路径]
        G --> H[终止进程 OpenProcess + TerminateProcess]
        H --> I[递归遍历安装目录]
        I --> J[删除或覆写关键模块]
        J --> K[尝试加载恶意驱动提升权限]
        K --> L[Hook SSDT/DKOM维持控制]
        L --> M[完成清除,继续传播]
        C -- 否 --> N[进入潜伏或感染阶段]
        
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 11月17日
  • 创建了问题 11月16日