APP下载

一种新型系统安全检测软件的设计与实现

2015-05-04张永刚定西师范高等专科学校计算机系甘肃定西743000

电气自动化 2015年5期
关键词:主动防御注册表系统安全

张永刚(定西师范高等专科学校 计算机系,甘肃 定西 743000)

一种新型系统安全检测软件的设计与实现

张永刚
(定西师范高等专科学校 计算机系,甘肃 定西 743000)

基于SDK平台,采用内核检测技术,设计开发了一种监视注册表值的变化;检测病毒、木马等恶意软件隐藏的文件、进程及内核模块等主要功能的新型的系统安全检测软件。通过进程端口映射查找系统打开的端口信息有效地查找木马及NTFS流文件中的流病毒;通过查看BHO、LSP防止浏览器和网络被劫持;通过查看HOOK的SSDT及SSDT Shadow恢复被修改的内容。经实际系统测试与比较表明,系统能有效地保障系统软件的安全。

SDK平台;安全检测;设计;实现;系统服务描述表;输入输出请求包;根权限工具

0 引 言

随着计算机在各领域的广泛运用,计算机病毒攻击与防范技术也在不断拓展。近年来, “熊猫烧香”、“德芙”、“QQ木马”、“灰鸽子”等木马病毒日益猖獗,以盗取用户密码账号、隐私、商业秘密为目的。调查显示,趋利性成为计算机病毒发展的新趋势。网上制作、贩卖病毒、木马的活动日益猖獗,利用病毒、木马技术进行网络盗窃、诈骗的网络犯罪活动呈快速上升趋势,网上治安形势非常严峻。在2007年爆发的“熊猫烧香”,让大量的网民受害。而实际上,从今天的技术角度来讲,它的编程技术并不好,主要是利用一些常规的手段,比如通过U盘autorun.inf,感染.exe,.com等文件,感染后一般都不能运行,感染共享文件夹,枚举局域网电脑中的弱密码进行传播,根本就没有使用先进的隐藏技术。而今天,还有很多技术高超,隐藏性好的病毒现在正在大量的电脑里呆着,监视着电脑上的一举一动,比如“灰鸽子”产生的危害就远大于“熊猫烧香”,而一般的普通用户很难发现。随着病毒的变化越来越多,病毒产业链的活动越来越猖獗,这个现象变得更严重了,由此引发了用户对杀毒软件的不信任[1-2]。为了解决这些问题,杀毒厂商一方面采用传统的特征识别、加强引擎脱壳、加强样本的收集、加快病毒特征的更新等等。这仍然是最主要的应对方法。另一方面,就是开发新的病毒识别技术。比如行为识别、注册表保护、应用程序保护等等。由于现在病毒木马不像以前那样修改特征码来被动的躲避杀毒软件,他们采用RootKit技术或者其他的技术来主动的防止被杀毒软件发现,或者直接把杀毒软件关闭,就算发现了病毒的踪影也很难完全清除。

1 系统安全检测所目前面临的困境

由于杀毒软件面向的是普通用户,只能让杀毒软件自己去处理病毒,由于现在杀毒软件的技术还没有达到自身可以准确判断病毒,所以造成了很多的病毒逃脱了查杀。对于有一定的计算机基础的用户,需要一款软件可以查看系统可疑信息,然后自己去判断它是不是病毒,去恢复那些被病毒改变的内核数据或者结构,通过工具和人的结合来手动杀毒,弥补现在杀毒软件在判断可疑文件上的不足,从而做到真正的主动防御。让大部分普通用户的软件系统是不安全的,因此,急需更为高效的系统安全监测软件系统。

系统安全检测主要是对系统安全有影响的关键位置进行检测,如进程、注册表、文件等。由于病毒为了让自己不被轻易的发现,一般都是用了隐藏技巧,比如注入到关键系统进程中,不创建进程,并且这样也能够穿越防火墙。还有使用在一些HOOK技术,可以在Ring3 HOOK也可以在Ring0 HOOK,可以修改IAT表,也可以修改EAT表,或者使用inline Hook。因为驱动是分层,IRP是一层一层的传下去的,所以可以让设备驱动挂接到一些关键驱动(比如文件系统)上来过滤掉对自己有危害的IRP,这样用户就不能检测到自己的存在。为了能有效的检测到一些关键信息,必须直接和系统的底层打交道,这样就可以避免被病毒所蒙骗[3-4]。

随着大量的Rootkit技术的出现,HIPS(Host Intrusion Prevent System)技术也随之出现。HIPS是一种能监控电脑中文件的运行和文件运用了其它的文件以及文件对注册表的修改,并报告请求允许的软件。HIPS能解决病毒变种使得杀毒软件跟不上病毒的脚步的问题。HIPS是系统安全发展的一种趋势,但是HIPS并不能称为防火墙,最多只能叫做系统防火墙,它不能阻止网络上其他计算机对你计算机的攻击行为。

2 新型系统安全检测软件设计

随着病毒制作技术水平的提高和对Windows内核研究的进一步的深入,现在的病毒技术的研究发展方向是都采用了RootKit技术来让自己消失在用户电脑中进行盗号,或者采用内核技术直接把AntiAv清除掉,然后再畅通无阻地执行自己的操作。

本文设计的系统正是基于此模式而进行的,要实现的主要功能:

(1) ring 3下进程管理。

(2) ring 0查看进程,包括那些被病毒隐藏的进程,能够强制结束进程。

(3) 直接向NTFS驱动发送IRP来查看隐藏文件或者文件夹。

(4) 强制删掉文件。

(5) 查看和恢复SSDT。

(6) 查看和恢复SSDT Shadow。

(7) 能检测出NTFS文件流进行。

(8) 查看系统打开的TCP/UDP端口,显示打开这些端口的进程。

(9) 查看LSP。

(10) 查看BHO。

(11) 系统内核模块查看。

(12) 系统服务管理。

(13) 系统监控。

(14) 系统自身的主动防御。

开发平台采用:Microsoft Windows XP [版本 5.1.2600]+VS2008+WDK 6001.18002。

2.1 总体思路设计

首先设计一个程序界面用来和用户交互,对于LSP,BHO,注册表,NTFS文件流驱动和服务启动,进程的ring3查询都直接调用SDK函数,不使用驱动。对于SSDT,SSDT Shadow,进程的强杀,进程的ring0枚举,软件自身的主动防御,隐形文件的查找都设计对应的驱动,在驱动中进行操作。

图1 系统架构图

2.2 系统架构图

由于该程序要实现是在Ring0和Ring3下共同实现的,所以可以分为两个大的模块,一个为Ring0,Ring3.他们之间通过IOCTL来进行同步和通信。在ring 3下又分为进程管理,注册表管理,网络管理,系统模块查询,服务和加载驱动的查询,BHO管理。在Ring0下包括进程管理,隐形文件查询,SSDT管理,SSDT Shadow管理,系统的主动防御功能模块,该系统的架构图如图1所示。

(1) 进程管理:进程管理包括常规列举进程,结束进程,驱动列举进程,强杀进程。

(2) 注册表管理:注册表实现了和Windows自带注册表的操作,主要是防止系统注册表被病毒IEOF,并且直接提供了查看IEOF信息和系统的自启动信息,这样能够方便用户的使用。

(3) 隐藏文件查看:该功能主要是通过直接向NTFS文件系统发送IRP来实现文件的枚举和删除功能。

(4) 网络管理:网络管理分为端口进程映射和LSP查看,端口进程映射的功能是查看系统的端口,并能显示打开这个端口的进程,实现了fport的功能。

(5) 系统模块信息查询:该功能主要是查询加载到系统内核的模块信息,让用户查看病毒加载到内核的驱动模块。它是通过调用系统未公布的NtQuerySystemInformation函数来查询内核空间中的模块。

(6) NTFS流文件查看:由于Windows资源管理器的设计缺陷不能查看绑定在文件或者文件夹的流文件,是病毒常用的隐藏地方,该功能就是针对这种情况设计的,它可以显示文件或者文件夹的流文件名。

(7) SSDT:由于SSDT是ring 3进入ring 0的门户,所以也是病毒和杀毒软件的必争之地。SSDT管理主要是查看那些被改变的SSDT表项,并从NtDll.dll读取原始SSDT,并通过重定位来得到正确的SSDT表项地址,用它来选择性的恢复那些被HOOK的地方。SSDT Shadow和SSDT差不多,只是它没有导出。

(8) SSDT Shadow:这个功能和SSDT差不多,只是SSDT Shadow是系统的另外一张表,只有在应用程式是窗口的形式才需要使用。

(9) 主动防御:系统的主动防御主要是HOOK ZwOpenProcess函数来实现的,这样可以防止别的进程打开被保护的进程。

(10) 服务和驱动加载信息:服务和驱动加载信息主要是查看系统的服务程序信息,病毒经常把自己注册为系统服务程序,从而实现随系统主动启动。

(11) BHO:BHO是浏览器辅助对象,它属于COM组件,安装后,它们会成为浏览器的一部分,可以直接控制浏览器进行指定的操作。“浏览器劫持”就是通过BHO的技术手段进入系统的。

BHO管理是通过读取HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorer Browser Helper Objects下的子键名,在通过读取对应CLSID的DLL来读取DLL文件的路径。服务和加载驱动查看是查看系统中的服务程序的路径,DisplayNa-me,自启动选项,现在很多的病毒都把自己注册成系统服务,这样就达到和系统一起启动。

3 实现

由于篇幅所限,本文只列出Ring 3层查看进程的实现过程见图2。

该功能通过::CreateToolhelp32Snapshot(如果函数前面加了::表示API函数或者内核函数,文章的以后部分按照该约定)得到进程快照,再调用::Process32First和::Process32Next枚举进程快照得到进程的PID,和进程名.因为对于系统进程如果不把进程的权限Debug权限,那么执行打开进程的操作将失败,所以调用::AdjustTokenPrivileges把本进程提权到Debug权限,然后再调用::OpenProcess打开进程得到进程句柄,最后通过进程的句柄调用::GetModuleFileNameEx得到路径名。

相关代码实现如下:

(1) 得到进程快照

hProcessSnap = ::CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

(2) 把本程序进程提权到Debug权限

……

if (!::OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))//打开进程token

return FALSE;

Privileges.PrivilegeCount = 1;

Privileges.Privileges[0].Attributes = eable?SE_PRIVILEGE_ENABLED:0;

if (!::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Privileges.Privileges[0].Luid))//根据PrivilegeName查询luid

……

bResult = ::AdjustTokenPrivileges(hToken,FALSE,&Privileges, sizeof(TOKEN_PRIVILEGES), NULL, NULL);//将权限设置到token中

(3) 枚举进程快照得到进程PID和进程名

……

if( !::Process32First( hProcessSnap, &processEntry ))

return;

……

do {……//把PID,进程名显示到ListView上

hProcess=::OpenProcess(PROCESS_ALL_ACCESS,false,processEntry.th32ProcessID);//打开进程,得到进程句柄

::GetModuleFileNameEx(hProcess,NULL,ProcessPath,MAX_PATH);//得到进程的路径

……//把进程程序的路径显示到ListView上

::CloseHandle(hProcess);//关掉进程句柄

}

while( ::Process32Next( hProcessSnap, &processEntry ));//枚举下一个进程

::CloseHandle (hProcessSnap);//关掉进程快照句柄

效果如下:

笔者特意选了国内外几款比较著名的杀毒软件与本系统进行了对比测试,其测试内容主要包括进程管理测试、隐形文件查找测试、SSDT检测、主动防御测试。其详细测试内容与测试结果如表1所示。

表1 本系统与国内外常用软件在4大核心功能的测试结果对比

4 结束语

本文设计的一种新型系统安全检测软件主要是使用大量的驱动编程技术和Windows核心编程技术,对于应用层软件直接使用SDK编写界面,驱动使用WDK编写。该软件主要的优点是能够查看隐藏进程,隐藏文件夹,并能强制结束进程,强制删除文件夹,能够查看恢复SSDT,LSP,端口进程的映射等等,其中最大的特点就是能活查看和恢复SSDT Shadow,对BHO,注册表和系统监控模块没有进行详细的介绍,是因为他们的原理和实现都比较简单,BHO和注册表就是通过一些注册表API函数进行读取修改就可以,在系统监控方面主要也是HOOK ZwCreateKey和ZwOpenKey,使用 PsSetCreateProcessNotifyRoutine来达到系统监控的目的,原理和主动防御,防止文件被删除的原理一样。

[1] 孙莉,李洋,李继云. 基于CEP的分布式IT资源监控事件关联方案[J].计算机应用与软件,2013,30(8):303-306.

[2] 阮晓迅,刘晓玲,刘闵华,等.计算机病毒的通用防护技术[J].电气自动化,1998,20(2):53-54.

[3] 王斌君, 王靖亚, 杜凯选.验证码技术的攻防对策研究[J].计算机应用研究,2013.30(9):2776-2779.

[4] QU XI LONG,LIN LIN FENG,HAO ZHONG XIAO. MD3 model loading in game[J].Journal of Computers, 2012,7(2):521-527.

Design and Implementation of a New System Security Detection Software

ZHANG Yong-gang
(Department of Computer, Dingxi Teachers’ Junior College, Dingxi Gansu 743000, China)

Based on the SDK platform, by adopting kernel inspection technology, this paper designs and develops a new system security detection software for monitoring changes of registry value and detecting files, processes and kernel modules hidden by malicious software like virus and cockhorse. Port messages opened by the system are found by means of process port mapping for effective search of stream virus in cockhorse and NTFS stream files. BHO and LSP are examined to prevent hijacking of browsers and networks. HOOK’s SSDT and SSDT Shadow are checked to recover modified items. Actual system tests and comparison indicate that this system can effectively guarantee the safety of the system software.

SDK platform;security detection; design; implementation; system service descriptor table (SSDT); I/O request packet (IRP); rootkit

国家自然科学基金(60971297)及定西师范高等专科学校校级项目基金(13JJ9022)资助

10.3969/j.issn.1000-3886.2015.05.010

TP311

A

1000-3886(2015)05-0027-03

张永刚(1976-)男,甘肃定西人,副教授,从事计算机教学及信息处理方面的研究工作。

定稿日期: 2014-12-03

猜你喜欢

主动防御注册表系统安全
新型电力系统安全稳定运行分析
变电站动静互联式的主动防御小动物入侵系统开发
铁路信号集中监测系统安全隔离机制研究
主动防御飞行器的范数型微分对策制导律
铁路信号系统安全输入输出平台
更上一层楼 用好注册表编辑器
网络安全主动防御技术分析
注册表的便捷用法
户用光伏系统安全防护问题的研究
注册表编辑器也玩“失忆”