当前位置: 首页 > 编程日记 > 正文

主机入侵防御系统(HIPS)分析

主机入侵防御系统(Host Intrusion Prevent System,HIPS)是近几年出现并迅速发展的新兴产物,与传统意义的防火墙和杀毒软件不同,它并不具备特征码扫描和主动杀毒等功能,所以想用它来替换传统杀毒软件然后安枕无忧睡大觉的用户可以不必尝试了,主机入侵防御系统是不会区别正常程序和木马的,它只有一个动作,那就是让你了解一个进程的加载情况并让你决定这个进程能否运行,换句话说,系统的安全性取决于用户本身,因为主机入侵防御系统只是一种将系统控制权交给用户的防御体系。
目前主机入侵防御系统可提供三种防御:应用程序防御体系AD(Application Defend)、注册表防御体系RD(Registry Defend)、文件防御体系FD(File Defend),这三种体系合称为“3D”,根据实际情况,并非所有HIPS都提供了完整的3D体系,例如文件防御体系就经常被取消。
应用程序防御体系(AD)在大部分HIPS里属于最重要的功能,这个功能的优劣足以直接影响到系统安全。AD通过拦截系统调用函数来达到监视目的,当一个程序请求执行时,系统会记录该程序的宿主(即该程序的执行请求由哪个程序发出),在Windows里,用户启动的程序,其宿主为Windows外壳程序Explorer.exe,因为用户的交互界面是由该程序负责的,用户双击鼠标执行一个程序时,实际上就是通过Explorer.exe向内核传递的消息,于是它便成为用户程序的宿主;而并非所有程序都是通过Explorer.exe执行的,系统自身也执行着许多基本进程,这些进程几乎都由smss.exe所产生,而这些通过smss.exe产生的进程又能成为其它进程的宿主,如services.exe成为svchost.exe的宿主等,这些层层叠叠的关系被称为“进程树”(Process Tree)。基于这个原理,许多伪造成系统程序的木马其实很容易被发现,因为它们大部分通过系统启动项加载,而这个启动项是属于Explorer.exe负责的,于是木马们的宿主就成了它——csrss.exe居然由Explorer.exe加载运行,这本身就违背了系统设计的初衷。
让我们继续学习用户程序的执行过程,当程序执行的请求被系统捕获后,系统会产生一个创建进程的函数调用,称为CreateProcess,位于kernel32.dll,这个函数的功能是执行一些基本的初始化工作,然后将程序请求封装传递到内核接口ntdll的NtCreateProcess函数中,该函数把有关的参数从用户空间拷贝到内核并做进一步处理,直至最后新的进程被成功创建,而ntdll也只是个内核接口而已,实际的内核体是ntoskrnl.exe。程序员通过编写内核驱动拦截NtCreateProcess、NtCreateSection等函数就实现了对创建进程的控制,在这点上,病毒作者和安全专家做的事情都是相同的,只不过用来实现破坏系统安全作用的被称为Rootkit木马,用来保护系统的被称为“应用程序防御体系”而已。HIPS的“应用程序防御体系”也是通过驱动拦截实现的,只是它把创建进程的决定权交给用户。
在HIPS的监视下,当一个进程被请求创建时,用户层的应用程序接口函数CreateProcess被拦截并被获取调用参数来分析出程序的执行体和宿主等,而后HIPS将这个执行请求挂起(暂停执行CreateProcess及以后的步骤),并于桌面弹出一个对话框报告用户当前拦截的进程创建信息,其中包括执行体、宿主、被拦截的API等,最后等待用户决定是否继续让其执行。用户必须具备相关的进程概念,如桌面快捷方式和幕后调用的可执行程序实际文件名的对应关系,这样才不至于出现一头雾水的后果,用户的决定对于系统安全才是致命的,如果一个用户在双击“千千静听”后对着HIPS拦截的“Explorer.exe试图创建TTPlayer.exe进程”的报告感到不解,那么或许传统意义的杀毒软件更适合这类未入门的初哥。
HIPS的AD体系不仅能拦截到用户或某个程序产生的进程创建请求,它还能拦截到进程产生的所有操作,如DLL加载、组件调用等,这样我们也能用它来拦截一些DLL形态的进程注入,只要用户的基础知识达到一定程度,AD体系足以让你不再害怕大部分木马病毒的来袭,试想一下,如果用户在浏览网页时HIPS突然报告说浏览器进程“试图创建123.exe进程”、或者运行某些安装程序时HIPS拦截到该安装程序“试图创建1.exe进程”,只要用户选取了“拒绝执行”功能,这些潜在的木马就无法入侵用户的系统了——但是要注意一点,那就是木马本体已经被释放或下载回来了,只是它们无法被执行而已,HIPS不是杀毒软件,它不能阻止非法程序的下载和释放,更不提供自动删除文件的功能,它所做的,只是拦截进程操作而已,使用HIPS保护的系统安全取决于用户自身。

HIPS里还有个相当重要的功能是注册表防御体系(RD),众所周知,在Windows系统结构中,注册表一直扮演着一个重要角色,许多非法程序和木马也通过修改注册表达到许多黑暗目的,如主页修改劫持等,而木马等程序的自启动也是由注册表的启动项负责的,因此,要进一步确保系统安全的话,对注册表的监视保护是必须的,从很早以前就开始使用电脑的用户应该会记得当初流行的许多注册表监视工具,然而这些工具并不能帮助用户保护注册表,因为它们仅仅是位于用户层的程序而已,其调用的API函数也是经过层层封装返回的,在当前许多进入了核心层的木马面前,这些程序根本就是被耍猴的对象,要正确监视到真正的注册表操作,就必须进入核心层,抢先拦截到系统相关的底层注册表操作函数,这就是注册表防御体系的工作。
系统提供了一系列的注册表读写访问函数来实现用户层的功能,而这些API和之前提到的创建进程函数一样,也是一种对系统内核导出函数的封装传递,如果相关函数被驱动木马拦截,普通的注册表监视程序,包括系统自带的注册表编辑器也无法发现某些项目或执行相关操作,这就是“删不掉的启动项”的来由。
在内核层中,注册表的名称并非为Registry,而是“HIVE”(蜂巢),它的数据结构称为“Cell”(蜂室),这是最底层最不可被欺骗的注册表形态结构,许多高级的Rootkit分析程序都提供分析注册表的功能,实际上就是通过分别读取用户层返回和HIVE数据结构来判断对比系统中是否存在被恶意隐藏的数据项,分析HIVE文件是漫长的过程,这是对付高级隐藏时才不得以而为之的方法,而平时安全工具只需要拦截到内核层导出的操作函数如NtOpenKey、NtCreateKey、NtQueryKey等就可以了,这正是注册表防御体系要做的事情。
RD默认提供了对几个常见的系统敏感注册表项进行监视,如启动项、服务驱动项、系统策略项、浏览器设置项等,所有木马要自启动都必须经过启动项或服务驱动项的添加修改来实现,而要对浏览器进行劫持和主页修改就得通过修改浏览器设置项等,而这些操作默认都被RD视为敏感行为而拦截挂起,并弹出警告框报告用户该次操作的具体内容和发出操作请求的执行体,操作最终能否通过也同样取决于用户本身,由于它拦截了系统核心层导出的API函数,无论是木马还是用户程序的操作都逃不过法眼,从而实现了真正有效的监视和拦截。

最后是文件防御体系(FD),这个功能的作用是监视系统敏感目录的文件操作,如修改删除系统目录里的任何文件或创建新文件等,也可用来发现被驱动木马隐藏的文件本体,FD体系在许多杀毒软件里已经提供,一部分HIPS为了提高效率,并不具备FD,因为它相对要消耗的资源比较大,而前面的AD+RD+有一定经验的用户操作,就已经足够防止危害的文件操作产生了。
实现文件防御体系的要点同样也是拦截系统底层函数如NtOpenFile等,HIPS默认对系统敏感目录进行监控保护,一旦发现异常读写,则把相关操作挂起,并提示用户是否放行,FD不仅仅只有HIPS提供,其他安全工具如360安全卫士、超级巡警等也具备此功能,该功能运作起来要比前两者消耗的资源大些。

转载于:https://www.cnblogs.com/vcerror/p/4289152.html

相关文章:

Centos 7 让docker飞一会儿

为什么80%的码农都做不了架构师?>>> 安装shadowsocks yum install -y epel-release python-pip pip install shadowsocks vim /etc/shadowsocks.json {"server": "your.vpn.com","server_port": 8388,"password&quo…

.net应用程序如何批上XP的外衣?

.net framework 所提供的开发控件也太少了,也太难看了,自已画又费时费力也不见得会得出个什么好的效果。如果能够上我们的程序运行在XP环境中能自动应用XP的主题样式那就省时多了,让MICROSOFT给我们去画控件!以下是我所所试验过的解决办法: …

AppCan 学习

2019独角兽企业重金招聘Python工程师标准>>> AppCan 学习 AppCan是以web前端开发方式来开发移动app的解决方案。下面是一些记录: 1.注意 uexWindow.open和uexWindow.openPopover的不同,后者是pop,pop里不能在打开window了。 2.…

在 5G 速度上,iPhone 12 只是个弟弟

作者 | 郑丽媛头图 | 下载自东方 IC出品 | CSDN(ID:CSDNnews)如果不考虑价格因素,让你选择一部手机,你是选 iPhone 还是安卓手机?目前,移动操作系统市场被 iOS 和安卓系统瓜分,体现在…

hadoop install start-dfs.sh 失败

linux:ubuntu 16.04 LTS hadoop version: 2.7.3 JDK: java-9-open-jdk issue: start-dfs.sh start-dfs.sh:command not found 在hadoop sbin目录下可以找到这个文件。但是run不起来。 解决方法: 1. 打开 $HOME/.bashrc 加入下面一行。 PATH$PATH:/usr/l…

用.net中的socket实现文件传输

socket是网络套接字,使用它我们可以很方便的实现网络的数据传输。在.net中提供了socket类来帮助开 发者调用socket的使用,从而避免了调用socket的动态库来实现socket的麻烦。下面我们就来看一个简单的例子,从这个简单的例子来看看.net中的so…

ARP协议学习

Dolphin,ChinaBJ,20131122本文档是检验自己学习TCP/IP协议卷1:协议中关于ARP协议的学习情况。本文档包含以下四部分:1、简述ARP协议;2、ARP的分组格式;3、ARP Spoofing 实验 4、应用及防御方法。1.简述ARP协…

数学,对人工智能开发者意味着什么

21世纪以来,全球化的加速和互联网的蓬勃发展,带来全球范围内电子数据的爆炸性增长,人类迈入了大数据时代。与此同时,计算机芯片的计算能力也持续高速增长。在数据和计算能力指数式增长的支持下,人工智能算法在应用中取…

检查网站是否可以正常访问

# -*- coding: utf-8 -*-import urllib.request import time opener urllib.request.build_opener() opener.addheaders [(User-agent, Mozilla/49.0.2)] #文件格式http://www.baidu.comfile open(E:/auto/url.txt) lines file.readlines() aa[] for line in lines: templ…

使用.NET自带的类实现DataGrid报表的打印。

using System;using System.Windows.Forms;using System.Drawing;using System.Drawing.Printing;using System.Data;using System.Collections;using DataLibrary; namespace ControlLibrary{ /// <summary> /// DataGrid打印 /// </summary> public class DataG…

各种 AI 数据增强方法,都在这儿了

来源 | 算法进阶责编 | 寇雪芹头图 | 下载于视觉中国数据、算法、算力是人工智能发展的三要素。数据决定了Ai模型学习的上限&#xff0c;数据规模越大、质量越高&#xff0c;模型就能够拥有更好的泛化能力。然而在实际工程中&#xff0c;经常有数据量太少(相对模型而言)、样本不…

ORACLE11g 前期安装环境配置

Linux系统可以拿来直接用的脚本哦#!/bin/bashservice iptables stop &> /dev/nulliptables -F service iptables save &> /dev/nullsed -i s/enforcing/disabled/ /etc/selinux/configsetenforce 0sed /tmpfs/d /etc/fstab &> /dev/nullecho tmpfs …

linux mysql 卸载,安装,測试全过程

Mysql卸载yum remove mysql mysql-server mysql-libs compat-mysql51rm -rf /var/lib/mysqlrm /etc/my.cnf查看是否还有mysql软件&#xff1a;rpm -qa|grep mysql有的话继续删除Mysql安装1>若本地没有安装包 能够考虑使用yum命令进行下载# yum -y install mysql-server# yum…

C#中获取程序当前路径的集中方法

string str1 Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。 string str2Environment.CurrentDirectory;//获取和设置当前目录&#xff08;即该进程从中启动的目录&#xff09;的完全限定路径。//备注 按照定义&#xff0c;如果该进程在本…

如何开启远程(win7win8)

如何开启远程连接点击我的电脑-属性-高级系统设置-远程-选中“允许远程连接到此计算机”-应用-确定。在局域网内&#xff0c;拥有固定IP的话&#xff0c;就很容易远程处理事情了。若经过此步骤还不能远程的话&#xff0c;则需要查看系统是否开启了远程服务。“我的电脑”--管理…

微软推出“ Group Transcribe”应用,多人多语言会议实时高准确度文字转录并翻译

近期&#xff0c;微软针对面对面对话和会议推出了免费实时语音到文字转录和翻译应用程序——Group Transcribe。一方面&#xff0c;Group Transcribe可以通过手机把会议的语音内容实时转录为文本&#xff0c;供与会者阅读和浏览。 另一方面&#xff0c;在实时交流过程中&#x…

STM32单片机外部中断配置讲解

2019独角兽企业重金招聘Python工程师标准>>> 单片机外部中断简介 所谓外部中断&#xff0c;就是通过外部信号所引起的中断&#xff0c;如单片机引脚上的电平变化(高电平、低电平)、边沿变化(上升沿、下降沿)等。51单片机有5个中断源&#xff0c;其中有两个是外部中断…

Android语音信号波形显示

简单地介绍了AudioRecord和AudioTrack的使用&#xff0c;这次就结合SurfaceView实现一个Android版的手机模拟信号示波器(PS&#xff1a;以前也讲过J2ME版的手机示波器)。最近物联网炒得很火&#xff0c;作为手机软件开发者&#xff0c;如何在不修改手机硬件电路的前提下实现与第…

科研费4年翻3倍,全球科研队伍突破8000人,滴滴致力打造出行领域核心技术

日前&#xff0c;十三届全国人大四次会议表决通过了《国民经济和社会发展第十四个五年规划和2035年远景目标纲要》&#xff08;下称《规划》&#xff09;。《规划》强调要坚持创新在我国现代化建设全局中的核心地位&#xff0c;把科技自立自强作为国家发展的战略支撑。 《规划…

c++ 继承访问控制初步

访问控制方式这里有篇很好的文章,其实内容也是总结cprimer上的内容 现在就按照这篇的文章举例进行学习. 思路 不同继承方式的影响主要体现在&#xff1a; 1、派生类成员对基类成员的访问控制。 2、派生类对象对基类成员的访问控制 三种继承方式 公有继承(public) 所有public和p…

Excel在.Net 环境下Web方式下驻留内存问题的解决

这段时间在VS 2003 的WebForm 方式下对Excel 进行操作&#xff0c;遇到一个最为头疼的问题就是对Excel操作完毕后Excel不能够正常关闭&#xff0c;系统退出后&#xff0c;Excel总是驻留在内存中。但是这段代码放到WinForm的程序中又没有问题。在网上进行了查找也没有找到有效可…

2.8 FSM之Moore和Mealy part3

来看看我们的Mealy机的设计吧~~。Mealy机的想法起源于&#xff1a;这里我们有输入&#xff0c;并且根据相应的输入我们的字符识别机能做出相应的应答也就是输出。所以我们为何不把输入和输出同时表达出来呢&#xff1f;这样我们就能把输出和抽象的状态分离出来。好处第一就是我…

​对标GPT-3、AlphaFold,智源研究院发布超大规模智能模型系统“悟道1.0”

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;3月20日&#xff0c;北京智源人工智能研究院发布我国首个超大规模智能模型系统“悟道1.0”。“悟道1.0”由智源研究院学术副院长、清华大学唐杰教授领衔&#xff0c;带领来自北京大学、清华大学、中国人民大学、中国科…

TCP Cluster for mqtt 技术实施方案

最前沿的网络技术&#xff0c;为你的网站带来国际化的用户体验和易用性&#xff0c;这一切只有Witmart.com能做到。

两台SQL Server数据同步解决方案

复制的概念复制是将一组数据从一个数据源拷贝到多个数据源的技术&#xff0c;是将一份数据发布到多个存储站点上的有效方式。使用复制技术&#xff0c;用户可以将一份数据发布到多台服务器上&#xff0c;从而使不同的服务器用户都可以在权限的许可的范围内共享这份数据。复制技…

一个用微软官方的OpenXml读写Excel 目前网上不太普及的方法。

新版本的xlsx是使用新的存储格式&#xff0c;貌似是处理过的XML。 传统的excel处理方法&#xff0c;我真的感觉像屎。用Oldeb不方便&#xff0c;用com组件要实际调用excel打开关闭&#xff0c;很容易出现死。 对于OpenXML我网上搜了一下&#xff0c;很多人没有介绍。所以我就这…

分析6千万条GitHub帖子,发现你的工作状态与表情符号强相关

作者 | 凌霄出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;新冠疫情使得远程办公的人数大幅度增加&#xff0c;然而&#xff0c;当越来越多的人远程工作时&#xff0c;人们的情绪和心理健康状态也难以通过日常面对面的交流来观察&#xff0c;雇主们也就无法获得员工…

软件定义网络 对我们有多重要?

软件定义网络(简称SDN)属于网络流量控制的下一个步骤。Tech Pro Research发布的调查报告正是以此为中心&#xff0c;旨在为我们展示企业如何使用SDN方案。 过去几年以来&#xff0c;以更为高效方式管理环境的需求正快速普及&#xff0c;这也使得网络领域的更高灵活性与控制手段…

SQL Server数据库六种数据移动方法

1. 通过工具DTS的设计器进行导入或导出DTS的设计器功能强大&#xff0c;支持多任务&#xff0c;也是可视化界面&#xff0c;容易操作&#xff0c;但知道的人一般不多&#xff0c;如果只是进行SQL Server数据库中部分表的移动&#xff0c;用这种方法最好&#xff0c;当然&#x…