杀毒软件的扫描程序是怎么做出来的?

杀毒软件的扫描程序是怎么做出来的?,第1张

一、杀毒软件原理基础

一个杀毒软件的构造的复杂程度要远远高于木马或病毒,

所以其原理也比较复杂。

而且鉴于

现在木马病毒越来越向系统底层发展,

杀毒软件的编译技术也在不断向系统底层靠近。

例如

现在的“主动防御”技术,就是应用

RING0

层的编译技巧。这里我简单为大家介绍一下基

本构成。

一个杀毒软件一般由扫描器、

病毒库与虚拟机组成,

并由主程序将他们结为一体,

如图

1

扫描器是杀毒软件的核心,

用于发现病毒,

一个杀毒软件的杀毒效果好坏就直接取决于它的

扫描器编译技术与算法是否先进,

而且杀毒软件不同的功能往往对应着不同的扫描器,

也就

是说,

大多数杀毒软件都是由多个扫描器组成的。

而病毒库存储的特征码形式则取决于扫描

器采用哪种扫描技术。

它里面存储着很多病毒所具有的独一无二的特征字符,

我们称之为

“特

征码”

。特征码总的分来只有两个,文件特征码与内存特征码。文件特征码存在于一些未执

行的文件里,例如

EXE

文件、

RMVB

文件、

jpg

文件甚至是

txt

文件中都有可能存在文件特

征码,

也都有可能被查杀。

而内存特征码仅仅存在于内存中已运行的应用程序。

而虚拟机则

是最近引进的概念,它可以使病毒在一个由杀毒软件构建的虚拟环境中执行,与现实的

CPU

、硬盘等完全隔离,从而可以更加深入的检测文件的安全性。

二、基于文件扫描的杀毒技术

基于文件的杀毒技术可以分为“第一代扫描技术”

“第二代扫描技术”与“算法扫描”这三

种方法,

对于免杀爱好者来说,

要对每一种方法烂熟于心,

才能成为高手!

但做为一个初学

者来说了解一下即可。

这里我们就简单介绍一下其中两种种方法,

详细的技术原理如果各位

得这有兴趣的话可以自己研究。

1

、通配符扫描技术

通配符扫描技术属于是第一代扫描技术的一个分支,对于“通配符”

,可以理解为具有

一定意义的符号,

例如

DOS

命令里的

*

号就是任意长度的任意字符的意思,

而且通配符在不

同的领域也里可以代表不同的意思。

现在杀毒软件中简单的扫描器常常支持通配符,

因为鉴于字符串扫描技术的执行速度与特征

码长度限制等问题,

使得其逐渐退出历史舞台,

取而代之的是通配符扫描技术,

通配符扫描

技术以同样简单的原理与技术却实现了更为强大的功能。

扫描器中的通配符一般用于跳过某些字节或字节范围,

以至于现在有些扫描器还支持正则表

达式!

Rootkit是指其主要功能为隐藏其他程式进程的软件,可能是一个或一个以上的软件组合;广义而言,Rootkit也可视为一项技术。最早Rootkit用于善意用途,但后来Rootkit也被黑客用在入侵和攻击他人的电脑系统上,电脑病毒、间谍软件等也常使用Rootkit来隐藏踪迹,因此Rootkit已被大多数的防毒软件归类为具危害性的恶意软件。Linux、Windows、Mac OS等 *** 作系统都有机会成为Rootkit的受害目标。

[1]Rootkit出现于二十世纪90年代初,在1994年2月的一篇安全咨询报告中首先使用了rootkit这个名词。这篇安全咨询就是CERT-CC的CA-1994-01,题目是Ongoing Network Monitoring Attacks,最新的修订时间是1997年9月19日。从出现至今,rootkit的技术发展非常迅速,应用越来越广泛,检测难度也越来越大。

rootkit介绍Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。换句话说,这种程序可能一直存在于我闹知吵们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机黑客,还是计算机取证人员。黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。!

一、背景知识

我们通常所说的智能机器,大至超级计算机,中到个人PC,小至智能手机,通常都有两部分组成:硬件和软件。并且,设备的智能是通过软件来实现的。所有软件中,有一种是必不可少的,那就是 *** 作系统。 *** 作系统可以简单理解为一组高度复用的核心程序,一方面,它要管理低层的硬件设备,另一方面,为上层其它程序提供一个良好的运行环境。真是同人不同命,同为软件, *** 作系统却享有至高无上的特权:它不仅管理硬件,而且其他所有软件也都受制于它。

因为在应用程序和硬件之间隔着 *** 作系统,所以应用程序不能直接访问硬件,而是通过调用 *** 作系统提供的接口来使用硬件。也就是说,对应用程序而言,硬件是不可见的。当然,凡事是没有绝对的,应用程序绕过 *** 作系统来直接访问硬件也不是不可能的,但这样做会付出高昂的代价。设想一个软件开发商在开发一款功能丰富的软件,功能本身就够他头痛得了,现在他还得 *** 猛旅心某个数据在某个磁道的某个簇上,某个字符在某品牌显示器上的颜色的二进制代码等等繁琐的事情,不用说财力和物力,单说开发周期就是无法容忍的。所以,现在的应用程序都是使用 *** 作系统提供的简单明了的服务来访问系统的,因为毕竟没有谁愿意自讨苦吃。

二、内核的主要功能

从上文中我们已经了解,内核在系统中处于核心枢纽的地位,下面我们具体介绍内核中与Rootkit紧密相关的几个主要功能,更重要的是这些功能对Rootkit的意义所在:

进程管理。进程可以简单理解为运行中的程序,它需要占用内存、CPU时间等系统资源。现在的 *** 作系统大多支持多用户多任务,也就是说系统要并行运行多个程序。为此,内核不仅要有专门代码来负责为进程或线程分配CPU时间,另一方面还要开辟一段内存区域存放用来记录这些进程详细情况的数据结构。内核是怎么知道系统中有多少进程、各进程的状态等信息的?就是通过这些数据结构,换句话说它们就是内核感知进程存在的依据。因此,只要修改这些数据结构,就能达到隐藏进程的目的。

文件访问。文件系统是 *** 作系统提供的最为重要的功能之一。内核中的驱动程序把设备的柱面、扇区等原始结构抽象成为更加易用的文件系统,并提供一个一致的接口供上层程序调用。也就是说,这部分代码完全控制着对硬盘的访问,通过修改内核的这部分代码,攻击者能够隐藏文件和目录。

安全控制。对大部分 *** 作系统来说,因为系统中同时存在多个进程,为了避免各进程之间发生冲突,内核必须对各进程实施有效的隔离措施。比如,在MS-Windows系统中,每个进程都被强制规定了具体的权限和单独的内存范围。因此,对攻击者而言,只要对内核中负责安全事务的代码稍事修改,整个安全机制就会全线崩液侍溃。

内存管理。现在的硬件平台(比如英特尔的奔腾系列处理器)的内存管理机制已经复杂到可以将一个内存地址转换成多个物理地址的地步。举例来说,进程A按照地址 0x0030030读取内存,它得到值的是“飞机”;然而,进程B也是按照同样的地址0x0030030来读取内存,但它取得的值却是“大炮”。像上面这样,同一个地址指向截然不同的两个物理内存位置,并且每个位置存放不同的数据这种现象并不足以为怪——只不过是两个进程对虚拟地址到物理地址进行了不同的映射而已。如果这一点利用好了,我们可以让Rootkit躲避调试程序和取证软件的追踪。

上面介绍了内核的主要功能,以及它们对 Rootkit的重大意义。说到这里,我们就要切入正题了,即:只要我们颠覆(即修改)了 *** 作系统的核心服务(即内核),那么整个系统包括各种应用就完全处于我们的掌控之下了。要想颠覆内核,前提条件是能把我们的代码导入内核。

其中针对SunOS和Linux两种 *** 作系统的rootkit最多(树大招风:P)。所有的rootkit基本上都是由几个独立的程序组成的,一个典型rootkit包括:

1 以太网嗅探器程程序,用于获得网络上传输的用户名和密码等信息。

2 特洛伊木马程序,例如:inetd或者login,为攻击者提供后门。

3 隐藏攻击者的目录和进程的程序,例如:ps、netstat、rshd和ls等。

4 可能还包括一些日志清理工具,例如:zap、zap2或者z2,攻击者使用这些清理工具删除wtmp、utmp和lastlog等日志文件中有关自己行踪的条目。

一些复杂的rootkit还可以向攻击者提供telnet、shell和finger等服务。

还包括一些用来清理/var/log和/var/adm目录中其它文件的一些脚本。

攻击者使用rootkit中的相关程序替代系统原来的ps、ls、netstat和df等程序,使系统管理员无法通过这些工具发现自己的踪迹。接着使用日志清理工具清理系统日志,消除自己的踪迹。然后,攻击者会经常地通过安装的后门进入系统查看嗅探器的日志,以发起其它的攻击。如果攻击者能够正确地安装rootkit并合理地清理了日志文件,系统管理员就会很难察觉系统已经被侵入,直到某一天其它系统的管理员和他联系或者嗅探器的日志把磁盘全部填满,他才会察觉已经大祸临头了。但是,大多数攻击者在清理系统日志时不是非常小心或者干脆把系统日志全部删除了事,警觉的系统管理员可以根据这些异常情况判断出系统被侵入。不过,在系统恢复和清理过程中,大多数常用的命令例如ps、df和ls已经不可信了。许多rootkit中有一个叫做FIX的程序,在安装rootkit之前,攻击者可以首先使用这个程序做一个系统二进制代码的快照,然后再安装替代程序。FIX能够根据原来的程序伪造替代程序的三个时间戳(atime、ctime、mtime)、date、permission、所属用户和所属用户组。如果攻击者能够准确地使用这些优秀的应用程序,并且在安装rootkit时行为谨慎,就会让系统管理员很难发现。

LINUX ROOTKIT IV

前面说过,大部分rootkit是针对Linux和SunOS的,下面我们介绍一个非常典型的针对Linux系统的rootkit--Linux Rootkit IV。Linux Rootkit IV是一个开放源码的rootkit,是Lord Somer编写的,于1998年11月发布。不过,它不是第一个Linux Rootkit,在它之前有lrk、lnrk、lrk2和lrk3等Linux Rootkit。这些rootkit包括常用的rootkit组件,例如嗅探器、日志编辑/删除工具、和后门程序的。

经过这么多年的发展,Linux Rootkit IV功能变的越来越完善,具有的特征也越来越多。不过,虽然它的代码非常庞大,却非常易于安装和使用,只要执行make install就可以成功安装。如果你还要安装一个shadow工具,只要执行make shadow install就可以了。注意:Linux Rootkit IV只能用于Linux 2.x的内核。下面我们简单地介绍一下Linux Rootkit IV包含的各种工具,详细的介绍请参考其发布包的README文件。

隐藏入侵者行踪的程序

为了隐藏入侵者的行踪,Linux Rootkit IV的作者可谓煞费心机,编写了许多系统命令的替代程序,使用这些程序代替原由的系统命令,来隐藏入侵者的行踪。这些程序包括:

ls、find、du

这些程序会阻止显示入侵者的文件以及计算入侵者文件占用的空间。在编译之前,入侵者可以通过ROOTKIT_FILES_FILE设置自己的文件所处的位置,默认是/dev/ptyr。注意如果在编译时使用了SHOWFLAG选项,就可以使用ls -/命令列出所有的文件。这几个程序还能够自动隐藏所有名字为:ptyr、hack.dir和W4r3z的文件。

ps、top、pidof

这几个程序用来隐藏所有和入侵者相关的进程。

netstat

隐藏出/入指定IP地址或者端口的网络数据流量。

killall

不会杀死被入侵者隐藏的进程。

ifconfig

如果入侵者启动了嗅探器,这个程序就阻止PROMISC标记的显示,使系统管理员难以发现网络接口已经处于混杂模式下。

crontab

隐藏有关攻击者的crontab条目。

tcpd

阻止向日志中记录某些连接

syslogd

过滤掉日志中的某些连接信息

木马程序

为本地用户提供后门,包括:

chfn

提升本地普通用户权限的程序。运行chfn,在它提示输入新的用户名时,如果用户输入rookit密码,他的权限就被提升为root。默认的rootkit密码是satori。

chsh

也是一个提升本地用户权限的程序。运行chsh,在它提示输入新的shell时,如果用户输入rootkit密码,他的权限就被提升为root。

passwd

和上面两个程序的作用相同。在提示你输入新密码时,如果输入rookit密码,权限就可以变成root。

login

允许使用任何帐户通过rootkit密码登录。如果使用root帐户登录被拒绝,可以尝试一下rewt。当使用后门时,这个程序还能够禁止记录命令的历史记录。

木马网络监控程序

这些程序为远程用户提供后门,可以向远程用户提供inetd、rsh、ssh等服务,具体因版本而异。随着版本的升级,Linux Rootkit IV的功能也越来越强大,特征也越来越丰富。一般包括如下网络服务程序:

inetd

特洛伊inetd程序,为攻击者提供远程访问服务。

rshd

为攻击者提供远程shell服务。攻击者使用rsh -l rootkitpassword host command命令就可以启动一个远程root shell。

sshd

为攻击者提供ssh服务的后门程序。

工具程序

所有不属于以上类型的程序都可以归如这个类型,它们实现一些诸如:日志清理、报文嗅探以及远程shell的端口绑定等功能,包括:

fix

文件属性伪造程序

linsniffer

报文嗅探器程序。

sniffchk

一个简单的bash shell脚本,检查系统中是否正有一个嗅探器在运行。

wted

wtmp/utmp日志编辑程序。你可以使用这个工具编辑所有wtmp或者utmp类型的文件。

z2

utmp/wtmp/lastlog日志清理工具。可以删除utmp/wtmp/lastlog日志文件中有关某个用户名的所有条目。不过,如果用于Linux系统需要手工修改其源代码,设置日志文件的位置。

bindshell rootkit

在某个端口上绑定shell服务,默认端口是12497。为远程攻击者提供shell服务。

如何发现rootkit

很显然,只有使你的网络非常安全让攻击者无隙可乘,才能是自己的网络免受rootkit的影响。不过,恐怕没有人能够提供这个保证,但是在日常的网络管理维护中保持一些良好的习惯,能够在一定程度上减小由rootkit造成的损失,并及时发现rootkit的存在。

首先,不要在网络上使用明文传输密码,或者使用一次性密码。这样,即使你的系统已经被安装了rootkit,攻击者也无法通过网络监听,获得更多用户名和密码,从而避免入侵的蔓延。

使用Tripwire和aide等检测工具能够及时地帮助你发现攻击者的入侵,它们能够很好地提供系统完整性的检查。这类工具不同于其它的入侵检测工具,它们不是通过所谓的攻击特征码来检测入侵行为,而是监视和检查系统发生的变化。Tripwire首先使用特定的特征码函数为需要监视的系统文件和目录建立一个特征数据库,所谓特征码函数就是使用任意的文件作为输入,产生一个固定大小的数据(特征码)的函数。入侵者如果对文件进行了修改,即使文件大小不变,也会破坏文件的特征码。利用这个数据库,Tripwire可以很容易地发现系统的变化。而且文件的特征码几乎是不可能伪造的,系统的任何变化都逃不过Tripwire的监视(当然,前提是你已经针对自己的系统做了准确的配置:P,关于Tripwire和aide的使用请参考本站的相关文章)。最后,需要能够把这个特征码数据库放到安全的地方。

Rootkit 是一种特殊类型的 malware(恶意软件)。Rootkit 之所以特殊是因为您不知道它们在做什么事情。Rootkit 基本上是无法检测到的,而且几乎不可能删除它们。虽然检测工具在不断增多,但是恶意软件的开发者也在不断寻找新的途径来掩盖他们的踪迹。

Rootkit 的目的在于隐藏自己以及其他软件不被发现。它可以通过阻止用户识别和删除攻击者的软件来达到这个目的。Rootkit 几乎可以隐藏任何软件,包括文件服务器、键盘记录器、Botnet 和 Remailer。许多 Rootkit 甚至可以隐藏大型的文件集合并允许攻击者在您的计算机上保存许多文件,而您无法看到这些文件。

Rootkit 本身不会像病毒或蠕虫那样影响计算机的运行。攻击者可以找出目标系统上的现有漏洞。漏洞可能包括:开放的网络端口、未打补丁的系统或者具有脆弱的管理员密码的系统。在获得存在漏洞的系统的访问权限之后,攻击者便可手动安装一个 Rootkit。这种类型的偷偷摸摸的攻击通常不会触发自动执行的网络安全控制功能,例如入侵检测系统。

找出 Rootkit 十分困难。有一些软件包可以检测 Rootkit。这些软件包可划分为以下两类:基于签名的检查程序和基于行为的检查程序。基于签名(特征码)的检查程序,例如大多数病毒扫描程序,会检查二进制文件是否为已知的 Rootkit。基于行为的检查程序试图通过查找一些代表 Rootkit 主要行为的隐藏元素来找出 Rootkit。一个流行的基于行为的 Rootkit 检查程序是 Rootkit Revealer.

在发现系统中存在 Rootkit 之后,能够采取的补救措施也较为有限。由于 Rootkit 可以将自身隐藏起来,所以您可能无法知道它们已经在系统中存在了多长的时间。而且您也不知道 Rootkit 已经对哪些信息造成了损害。对于找出的 Rootkit,最好的应对方法便是擦除并重新安装系统。虽然这种手段很严厉,但是这是得到证明的唯一可以彻底删除 Rootkit 的方法。

防止 Rootkit 进入您的系统是能够使用的最佳办法。为了实现这个目的,可以使用与防范所有攻击计算机的恶意软件一样的深入防卫策略。深度防卫的要素包括:病毒扫描程序、定期更新软件、在主机和网络上安装防火墙,以及强密码策略等。

以下是推荐的几款软件

希望对您有所帮助,还请您及时采纳,谢谢,

1 Google照片扫描仪

《Google PhotoScan》是一款由谷歌发布的可以拯救老照片的软件,用户可通过Google PhotoScan软件扫描上传老照片,让其变为电子照片,效果一点都不差。还能随时随地扫描喜欢的照片,一键生成电子版,省去修剪边框和PS,简单方便,喜欢的朋友不要错清核过。

2 微软 Office Lens

《Office Lens手机版》是由微软推出的一款图片识别软件,不仅可以剪裁、强化白板和文档的图片,而且能识别其中的文字,还能将图像转为可编辑的 Word 和 PowerPoint 文件。 它可以数字化白板或黑板上的笔记,就像变魔术一样。 随时都能找到重要的文档或名片。 随手涂写想法并拍照以供以后参考。 不再弄丢收据或便笺!

3 扫描全能王

《扫描全能王》2亿人在用的手机描仪,扫文档管理工具。能自动切除文档背景,生成高清PDF、JPEG或TXT文本。还可以邮件发送、连接打印机、发传真、发微信、存到云端,多设备查看!非常给力的office实用工具!用OCR识别,图片的长篇文字瞬间变文本,打字打到手酸的同学们必备!

4 Adobe Scan(国内用不了)

《Adobe Scan》是 Adobe 推出的一款免费的拍照后生成PDF的应用。借助免费的Adobe Scan PDF 扫描仪应用程序,您的答型掘设备可以变为一台功能强大且能够自动识别文本 (OCR) 的便携式 PDF 扫描仪。 这款移动式文档扫描仪能够将任何内容(例如,收据、便签、文档、照片、名片和白板)转换为 Adobe PDF,并且允许您重复使用每个 PDF 和照片扫描中的文本。

5 坚果云扫描

《坚果云扫描》是一款无内置广告,解决文档收集需求的专业文档管理工具。坚果云扫描 *** 作简单,界面清爽易用,可快速生成无水印高清PDF并自动备份至坚果云云端。每月赠送1GB上传流量,让扫描的文档备份,是真正的随身办公扫描仪。

6 ABBYY TextGrabber

《ABBYY TextGrabber》是一款图文识别(OCR)软件,可以快速、准确、方便地将扫描纸质文件、PDF格式及数字或移动电话图像转换成可编辑格式,随着苹果手机越来越广泛的应用,其iTunes上也应用而出了很多可以将文档、专页、商业名片等图像转换为数字化、可编辑的文本的app。

7 印象笔记

《印象笔记 Evernote》作为全球闻名的笔记软件和知识管理工具,印象笔记帮助你简化你的工作、学习和生活。你可以在手机、电脑、网页等多种设备间无缝同步每天的见闻、思考与灵感。还能快速保存微信文章、微博、网页等内容,一站式完成信息的收集、备份和整理,无拘无束,随时随地保持高效。

8 Scanbot

《Scanbot》是一款高级手机扫描仪 app,可以制作高品质 PDF 扫描文件,并通过电子邮件发送或上传至 Google Drive、Box、Dropbox、Evernote 以及其它云服务平台。Scanbot 配备最新且最为先进的移动扫描技术。可进行清晰度为 200 dpi 的高品质扫描,性能媲美现代桌面扫描仪。

9 Simple Scanner

《Simple Scanner Pro》是一款Android手机PDF文档扫描仪应用。用手机摄像头拍摄的文档图片,经过快速处理,可瞬间成为高清的扫描件。全球领先的图像处理技术,让扫描效果胜过传统台式扫描仪。将软件安装至手机,就是把扫描仪装进了口袋。不论书籍、漫画、传单、发票、图纸还是白板字,所有非电子档的文件想要保存,都可以随时扫描下来,自动切掉多余边框,增强文档内容,清晰保存。是纸质文件清晰电子化的最佳工具。

10 Easy Scanner

《Easy Scanner Pro》是一款专为文件扫描打造的应用,能随时手机扫描各种文档,支持图片和文字之间转换,更拥有快捷的管理方式,全能扫描王手机版是您扫租拦描文件的好帮手。手机拍文档,自动去除杂乱背景,生成高清JPEG图片或PDF文件。多种图像处理模式,可手动调节图像参数,用手机即可将纸质文件,快速转为清晰的电子稿。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12411357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存