刘意先 刘宏伟
摘要:为了实现对计算机主机的安全检测,并对其安全性做出合适的评估,设计并实现了一种采用Windows API接口对计算机安全状态进行检测的系统。系统首先调用操作系统的系统调用提取计算机的各种软硬件信息,然后将该结果与信任项、黑名单进行比对。比对的结果通过打分的方式显示出计算机的安全程度,分值越高相应的安全程度越高。经过测试,该系统能正确的提取操作系统注册表注册表、浏览器、进程、软硬件配置等信息,并能根据这些信息给相应对的安全评估。
关键词:计算机安全;安全检测;安全评估;Windows编程接口
中图分类号:TP309 文献标识码:A 文章编号:1009-3044(2014)16-4034-04
The Design and Implementation of Computer Detection and Evaluation System
LIU Yi-xian, LIU Hong-wei
(Information Security and Countermeasure Experiment Teaching Center of Xian University of Posts and Telecommunications, Xian 710121, China)
Abstract: To realize the security detection and make a appropriate evaluation to the computer, design and implement a system with Windows application programming interface to detect the computer security status. First the system extracts all kinds of software and hardware information of the computer. Then it compares the detection result with the trust list and black list. After the comparison the system gives the score to the computer to show the safety level of the computer. The test result of the system shows it can correctly extracts information about the registry table of the operating system, the browser, the processes, the software and hardware configuration. It also shows the system can make the corresponding security evaluation according to the information.
Key words: computer security; security detection; security evaluation; Windows API
随着网络技术的快速发展,计算机使用者可以快捷的获得各种网络资源,包括文档、图片、视频以及软件等[1-2]。与此同时,计算机也面临着随之而来的各种威胁和风险。为了防止可能出现的安全问题,对计算机系统进行相应的安全检测是一个有效而必要的工作[3-4]。该文针对常见的Windows操作系统设计并实现了一个计算机安全检测系统,能对计算机的各种软硬件信息进行检测,包括硬件配置、软件安装、注册表、进程等。系统根据预设的信任列表和黑名单对计算机系统进行综合评估并给出分值,可以帮助用户对计算机的安全状态获得全面的了解。
1 系统的整体结构
系统根据Windows平台在使用中可能出现安全问题的方面,要检测的项目包括系统硬件、安装的软件、启动项、浏览器状况、进程、网络连接以及注册表。根据检查的结果系统再比对预设的检查项的信任列表和黑名单对系统进行评估,最终给出评测结果。结构如图1所示。
2 检测功能的实现
系统的检测主要从软硬件环境以及常用的安全配置相关信息等及格方面进行。在Windows平台上进行这些检测需要通过系统的API来进行。Windows API是提供给用户的可调用的编程接口,通过该接口用户能对操作系统进行深入的操作和设置[5]。
2.1 系统硬件检测
检测主要目标是检测系统基础的硬件信息。设计方案是首先通过调用Windows提供的系统API函数和WMI接口,获得基础信息,最后通过VariantToString函数来将获得的信息转换成字符串。
WMI 是一种规范和基础结构,通过它可以访问、配置、管理和监视所有的 — 几乎所有的 Windows 资源。WMI的使用要通过三步实现,首先初始化,然后创建WMI的名字空间,最后通过WQL进行查询。WQL是WMI中的查询语言Windows管理规范查询语言[6-8]。
2.2 系统安装软件信息
该功能是检测系统安装软件的基本信息,包括软件名称,发行商,版本,安装日期,卸载命令及参数。注册表中会存有相关信息[9]。设计方案是首先通过Windows提供的API对系统的注册表进行打开和查询,获取SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall该路径下的信息,然后筛选将有用的信息进行输出。通过如下API函数打开注册表:endprint
RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"),NULL, KEY_READ, &hKey)
2.3 系统启动项检测
启动项检测的目的是检测系统启动项的信息,包括启动软件名称和存储路径。该模块设计与检测系统安装软件信息相似,也是通过对注册表进行查询来获取相应的信息。设计方案是首先通过对注册表进行操作查询如下路径
Software\\Microsoft\\Windows\\CurrentVersion\\Run
从该路径下获得软件的注册表信息, 在获取到系统启动项基本信息后再对信息进行格式化输出。
2.4 系统进程检测
操作台系统中的正在运行的恶意程序可以通过对进程的检测进行发现[10]。进程检测的信息包括进程名称、进程ID、线程数量、所使用的.dll文件。设计方案是通过Windows系统提供的API函数,对系统的当前进程设定一个快照,然后通过这个快照来获取相应的进程信息,然后对进程信息进行格式化输出。通过如下的API系统函数设定快照:
HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
)
2.5 系统浏览器状况检测
浏览器检测主要包括通过IE浏览器打开网站名称和使用的浏览器名称。设计方案是通过系统系统提供的API函数来监控系统打开的窗口,筛选出浏览器窗口,并对浏览器打开的网页进行记录,最后对这些监控信息进行格式化输出。通过如下的API系统函数来监控:
WINUSERAPI int WINAPI GetWindowTextA(
__in HWND hWnd,
__out_ecount(nMaxCount) LPSTR lpString,
__in int nMaxCount);
2.6 系统网路连接检测
检测系统的网络连接情况检测信息包括Pid、名称、Local Addr、Local Port、Remote Addr、Remote Port、State、Path。设计方案是通过系统的API函数获得系统当前的状态快照,然后在快照中筛选出网络连接,通过对快照的解析,得到网络连接的信息并进行格式化输出。
最后通过自定义函数来获取网络连接名称和路径:
2.7 系统注册表检测
主要目的是检测系统的注册表信息。设计方案是通过调用系统的API函数来对注册表进行相应的操作,并且用相应的格式进行显示。通过如下API系统函数来操作注册表:
LONG WINAPI RegOpenKeyEx //打开注册表
LONG WINAPI RegQueryValueEx //查询注册表
LONG WINAPI RegEnumKeyEx //枚举注册表信息
LONG WINAPI RegCloseKey //关闭注册表
3 系统的安全评估
经过检测后系统将得到各种检测项目的结果,该结果为多个字符串组。系统根据不同的项目系统预设了相应的信任项列表和黑名单列表,信任项是系统已知的各种安全的应用或设置项的字符串,黑名单列表则存有已知的具有风险的相应的设置或应用名称等。检测结果和这种列表进行比对并进行评分。最后将所有的检测项目的评分结果综合给出系统的评估结果。
3.1 检测项目的评估
检测项目[K]检测结果记录数记为NK,其中在信任项列表的数量记为[NT],在黑名单列表项中的数量记为[NB],不在这两个列表中的数目记为[NU],由此可得到相应项目[K]的评估的得分[SK] 可以由以下表达式得出:
[SK=NT+NU×0.8NK×100] (1)
不在信任项列表或者黑名单列表中的项目由于风险不确定,考虑到可能出现危险的可能性,将这种情况安全的可能性设定为0.8,由此可以从(1)中可以得出项目的评估结果。
3.2 系统的评估
对于整个系统检测项目有I项,各项检测评分为[S1] …[SI] ,对于整个系统的的评估结果[SO] 可由下式得出:
[SO=i=1ISiI×100] (2)
[SO]代表了系统的整体安全情况,通过该分值使用者可以方便的理解计算机的安全状态。
4 系统的测试
系统在联想Y400型主机上进行了相应的测试,主机所用的操作系统为Windows 7。各项功都能正常运行,如图2能正确显示该主机的软件安装情况。
系统也能根据所有的检测结果对系统做出相应的安全评估,如图3所示。
5 总结与展望
本文通过利用Windows API的接口实现了对主机的系统的安全检测和评估,检测的结果是真实可信的。对于系统的评估方法,可以加入动态的调整信任项和黑名单,使评估的结果更加符合安全状态发展的趋势,使计算机的保持较好的安全状态。
参考文献:
[1] Kedgley M. File integrity monitoring in the modern threat landscape[J]. Network Security,2014,2014(2):5-8.
[2] Chunqi Tian, Xiaojian Liu, Lisheng Wang, Shihong Zou.Spreading evidence models for trust propagation and aggregation in peer-to-peer networks[J]. Concurrency and Computation: Practice and Experience,2014,26(2):601-614.
[3] Zhiyong Shan, Xin Wang. Growing grapes in your computer to defend against malware[J]. IEEE Transactions on Information Forensics and Security,2014,9(2):196-207.
[4] Liu Xin, Liu Ren-ren, Wu Xiang-bo. A secret inline hook technology[J]. Control and Intelligent Systems,2014,42(1):24-30.
[5] 徐江峰,邵向阳. 基于HOOK API技术的进程监控系统设计与实现[J]. 计算机工程与设计,2011(4):1330-1333.
[6] 陈永建,朱娟,黎桂林. 基于WMI的实时监控系统设计与实现[J]. 微计算机信息,2005(21):52-54.
[7] 钟伟,唐发根. 通用应用系统性能评测环境的设计与实现[J].计算机应用,2004(3):141-144.
[8] 徐鲲,孙辉. Windows NT下对磁盘性能监测的研究[J]. 计算机科学,2012(S3):301-304.
[9] 白金荣,王俊峰,赵宗渠,等. 基于敏感Native API的恶意软件检测方法[J]. 计算机工程,2012(13):9-12.
[10] 蓝智灵,宋宇波,唐磊. 基于直接内核对象操作的进程伪装保护方法[J].东南大学学报:自然科学版,2013(1):24-29.endprint
RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"),NULL, KEY_READ, &hKey)
2.3 系统启动项检测
启动项检测的目的是检测系统启动项的信息,包括启动软件名称和存储路径。该模块设计与检测系统安装软件信息相似,也是通过对注册表进行查询来获取相应的信息。设计方案是首先通过对注册表进行操作查询如下路径
Software\\Microsoft\\Windows\\CurrentVersion\\Run
从该路径下获得软件的注册表信息, 在获取到系统启动项基本信息后再对信息进行格式化输出。
2.4 系统进程检测
操作台系统中的正在运行的恶意程序可以通过对进程的检测进行发现[10]。进程检测的信息包括进程名称、进程ID、线程数量、所使用的.dll文件。设计方案是通过Windows系统提供的API函数,对系统的当前进程设定一个快照,然后通过这个快照来获取相应的进程信息,然后对进程信息进行格式化输出。通过如下的API系统函数设定快照:
HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
)
2.5 系统浏览器状况检测
浏览器检测主要包括通过IE浏览器打开网站名称和使用的浏览器名称。设计方案是通过系统系统提供的API函数来监控系统打开的窗口,筛选出浏览器窗口,并对浏览器打开的网页进行记录,最后对这些监控信息进行格式化输出。通过如下的API系统函数来监控:
WINUSERAPI int WINAPI GetWindowTextA(
__in HWND hWnd,
__out_ecount(nMaxCount) LPSTR lpString,
__in int nMaxCount);
2.6 系统网路连接检测
检测系统的网络连接情况检测信息包括Pid、名称、Local Addr、Local Port、Remote Addr、Remote Port、State、Path。设计方案是通过系统的API函数获得系统当前的状态快照,然后在快照中筛选出网络连接,通过对快照的解析,得到网络连接的信息并进行格式化输出。
最后通过自定义函数来获取网络连接名称和路径:
2.7 系统注册表检测
主要目的是检测系统的注册表信息。设计方案是通过调用系统的API函数来对注册表进行相应的操作,并且用相应的格式进行显示。通过如下API系统函数来操作注册表:
LONG WINAPI RegOpenKeyEx //打开注册表
LONG WINAPI RegQueryValueEx //查询注册表
LONG WINAPI RegEnumKeyEx //枚举注册表信息
LONG WINAPI RegCloseKey //关闭注册表
3 系统的安全评估
经过检测后系统将得到各种检测项目的结果,该结果为多个字符串组。系统根据不同的项目系统预设了相应的信任项列表和黑名单列表,信任项是系统已知的各种安全的应用或设置项的字符串,黑名单列表则存有已知的具有风险的相应的设置或应用名称等。检测结果和这种列表进行比对并进行评分。最后将所有的检测项目的评分结果综合给出系统的评估结果。
3.1 检测项目的评估
检测项目[K]检测结果记录数记为NK,其中在信任项列表的数量记为[NT],在黑名单列表项中的数量记为[NB],不在这两个列表中的数目记为[NU],由此可得到相应项目[K]的评估的得分[SK] 可以由以下表达式得出:
[SK=NT+NU×0.8NK×100] (1)
不在信任项列表或者黑名单列表中的项目由于风险不确定,考虑到可能出现危险的可能性,将这种情况安全的可能性设定为0.8,由此可以从(1)中可以得出项目的评估结果。
3.2 系统的评估
对于整个系统检测项目有I项,各项检测评分为[S1] …[SI] ,对于整个系统的的评估结果[SO] 可由下式得出:
[SO=i=1ISiI×100] (2)
[SO]代表了系统的整体安全情况,通过该分值使用者可以方便的理解计算机的安全状态。
4 系统的测试
系统在联想Y400型主机上进行了相应的测试,主机所用的操作系统为Windows 7。各项功都能正常运行,如图2能正确显示该主机的软件安装情况。
系统也能根据所有的检测结果对系统做出相应的安全评估,如图3所示。
5 总结与展望
本文通过利用Windows API的接口实现了对主机的系统的安全检测和评估,检测的结果是真实可信的。对于系统的评估方法,可以加入动态的调整信任项和黑名单,使评估的结果更加符合安全状态发展的趋势,使计算机的保持较好的安全状态。
参考文献:
[1] Kedgley M. File integrity monitoring in the modern threat landscape[J]. Network Security,2014,2014(2):5-8.
[2] Chunqi Tian, Xiaojian Liu, Lisheng Wang, Shihong Zou.Spreading evidence models for trust propagation and aggregation in peer-to-peer networks[J]. Concurrency and Computation: Practice and Experience,2014,26(2):601-614.
[3] Zhiyong Shan, Xin Wang. Growing grapes in your computer to defend against malware[J]. IEEE Transactions on Information Forensics and Security,2014,9(2):196-207.
[4] Liu Xin, Liu Ren-ren, Wu Xiang-bo. A secret inline hook technology[J]. Control and Intelligent Systems,2014,42(1):24-30.
[5] 徐江峰,邵向阳. 基于HOOK API技术的进程监控系统设计与实现[J]. 计算机工程与设计,2011(4):1330-1333.
[6] 陈永建,朱娟,黎桂林. 基于WMI的实时监控系统设计与实现[J]. 微计算机信息,2005(21):52-54.
[7] 钟伟,唐发根. 通用应用系统性能评测环境的设计与实现[J].计算机应用,2004(3):141-144.
[8] 徐鲲,孙辉. Windows NT下对磁盘性能监测的研究[J]. 计算机科学,2012(S3):301-304.
[9] 白金荣,王俊峰,赵宗渠,等. 基于敏感Native API的恶意软件检测方法[J]. 计算机工程,2012(13):9-12.
[10] 蓝智灵,宋宇波,唐磊. 基于直接内核对象操作的进程伪装保护方法[J].东南大学学报:自然科学版,2013(1):24-29.endprint
RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"),NULL, KEY_READ, &hKey)
2.3 系统启动项检测
启动项检测的目的是检测系统启动项的信息,包括启动软件名称和存储路径。该模块设计与检测系统安装软件信息相似,也是通过对注册表进行查询来获取相应的信息。设计方案是首先通过对注册表进行操作查询如下路径
Software\\Microsoft\\Windows\\CurrentVersion\\Run
从该路径下获得软件的注册表信息, 在获取到系统启动项基本信息后再对信息进行格式化输出。
2.4 系统进程检测
操作台系统中的正在运行的恶意程序可以通过对进程的检测进行发现[10]。进程检测的信息包括进程名称、进程ID、线程数量、所使用的.dll文件。设计方案是通过Windows系统提供的API函数,对系统的当前进程设定一个快照,然后通过这个快照来获取相应的进程信息,然后对进程信息进行格式化输出。通过如下的API系统函数设定快照:
HANDLE WINAPI CreateToolhelp32Snapshot(
DWORD dwFlags,
DWORD th32ProcessID
)
2.5 系统浏览器状况检测
浏览器检测主要包括通过IE浏览器打开网站名称和使用的浏览器名称。设计方案是通过系统系统提供的API函数来监控系统打开的窗口,筛选出浏览器窗口,并对浏览器打开的网页进行记录,最后对这些监控信息进行格式化输出。通过如下的API系统函数来监控:
WINUSERAPI int WINAPI GetWindowTextA(
__in HWND hWnd,
__out_ecount(nMaxCount) LPSTR lpString,
__in int nMaxCount);
2.6 系统网路连接检测
检测系统的网络连接情况检测信息包括Pid、名称、Local Addr、Local Port、Remote Addr、Remote Port、State、Path。设计方案是通过系统的API函数获得系统当前的状态快照,然后在快照中筛选出网络连接,通过对快照的解析,得到网络连接的信息并进行格式化输出。
最后通过自定义函数来获取网络连接名称和路径:
2.7 系统注册表检测
主要目的是检测系统的注册表信息。设计方案是通过调用系统的API函数来对注册表进行相应的操作,并且用相应的格式进行显示。通过如下API系统函数来操作注册表:
LONG WINAPI RegOpenKeyEx //打开注册表
LONG WINAPI RegQueryValueEx //查询注册表
LONG WINAPI RegEnumKeyEx //枚举注册表信息
LONG WINAPI RegCloseKey //关闭注册表
3 系统的安全评估
经过检测后系统将得到各种检测项目的结果,该结果为多个字符串组。系统根据不同的项目系统预设了相应的信任项列表和黑名单列表,信任项是系统已知的各种安全的应用或设置项的字符串,黑名单列表则存有已知的具有风险的相应的设置或应用名称等。检测结果和这种列表进行比对并进行评分。最后将所有的检测项目的评分结果综合给出系统的评估结果。
3.1 检测项目的评估
检测项目[K]检测结果记录数记为NK,其中在信任项列表的数量记为[NT],在黑名单列表项中的数量记为[NB],不在这两个列表中的数目记为[NU],由此可得到相应项目[K]的评估的得分[SK] 可以由以下表达式得出:
[SK=NT+NU×0.8NK×100] (1)
不在信任项列表或者黑名单列表中的项目由于风险不确定,考虑到可能出现危险的可能性,将这种情况安全的可能性设定为0.8,由此可以从(1)中可以得出项目的评估结果。
3.2 系统的评估
对于整个系统检测项目有I项,各项检测评分为[S1] …[SI] ,对于整个系统的的评估结果[SO] 可由下式得出:
[SO=i=1ISiI×100] (2)
[SO]代表了系统的整体安全情况,通过该分值使用者可以方便的理解计算机的安全状态。
4 系统的测试
系统在联想Y400型主机上进行了相应的测试,主机所用的操作系统为Windows 7。各项功都能正常运行,如图2能正确显示该主机的软件安装情况。
系统也能根据所有的检测结果对系统做出相应的安全评估,如图3所示。
5 总结与展望
本文通过利用Windows API的接口实现了对主机的系统的安全检测和评估,检测的结果是真实可信的。对于系统的评估方法,可以加入动态的调整信任项和黑名单,使评估的结果更加符合安全状态发展的趋势,使计算机的保持较好的安全状态。
参考文献:
[1] Kedgley M. File integrity monitoring in the modern threat landscape[J]. Network Security,2014,2014(2):5-8.
[2] Chunqi Tian, Xiaojian Liu, Lisheng Wang, Shihong Zou.Spreading evidence models for trust propagation and aggregation in peer-to-peer networks[J]. Concurrency and Computation: Practice and Experience,2014,26(2):601-614.
[3] Zhiyong Shan, Xin Wang. Growing grapes in your computer to defend against malware[J]. IEEE Transactions on Information Forensics and Security,2014,9(2):196-207.
[4] Liu Xin, Liu Ren-ren, Wu Xiang-bo. A secret inline hook technology[J]. Control and Intelligent Systems,2014,42(1):24-30.
[5] 徐江峰,邵向阳. 基于HOOK API技术的进程监控系统设计与实现[J]. 计算机工程与设计,2011(4):1330-1333.
[6] 陈永建,朱娟,黎桂林. 基于WMI的实时监控系统设计与实现[J]. 微计算机信息,2005(21):52-54.
[7] 钟伟,唐发根. 通用应用系统性能评测环境的设计与实现[J].计算机应用,2004(3):141-144.
[8] 徐鲲,孙辉. Windows NT下对磁盘性能监测的研究[J]. 计算机科学,2012(S3):301-304.
[9] 白金荣,王俊峰,赵宗渠,等. 基于敏感Native API的恶意软件检测方法[J]. 计算机工程,2012(13):9-12.
[10] 蓝智灵,宋宇波,唐磊. 基于直接内核对象操作的进程伪装保护方法[J].东南大学学报:自然科学版,2013(1):24-29.endprint