1、第九章 系统网络安全续常用攻击手段,一、攻击的位置,一、攻击的一些基本概念,(1)远程攻击:从该子网以外的地方向该子网或者该子网内的系统发动攻击。 (2)本地攻击:通过所在的局域网,向本单位的其他系统发动攻击,在本机上进行非法越权访问也是本地攻击。 (3)伪远程攻击:指内部人员为了掩盖攻击者的身份,从本地获取目标的一些必要信息后,攻击过程从外部远程发起,造成外部入侵的现象。,二、攻击的层次,一、攻击的一些基本概念,1)简单拒绝服务(如邮件炸弹攻击). 2)本地用户获得非授权读或者写权限 3)远程用户获得了非授权的帐号 4)远程用户获得了特权文件的读写权限 5)远程用户拥有了根(root)权限)
2、,三、攻击的目的,一、攻击的一些基本概念,1)进程的执行 2)获取文件和传输中的数据 3)获得超级用户权限 4)对系统的非法访问 5)进行不许可的操作 6)拒绝服务,7)涂改信息 8)暴露信息 9)挑战 10)政治意图 11)经济利益 12)破坏,四、攻击的人员,1)黑客:为了挑战和获取访问权限 2)间谍:为了政治情报信息 3)恐怖主义者:为了政治目的而制造恐怖 4)公司雇佣者:为了竞争经济利益 5)职业犯罪:为了个人的经济利益 6)破坏者:为了实现破坏,五、攻击的工具,1)用户命令:攻击者在命令行状态下或者图形用户接口方式输入命令。 2)脚本或程序:在用户接口处初始化脚本和程序。 3)自治主
3、体:攻击者初始化一个程序或者程序片断,独立地执行操作,挖掘弱点。 4)工具箱:攻击者使用软件包(包含开发弱点的脚本、程序、自治主体)。 5)分布式工具:攻击者分发攻击工具到多台主机,通过协作方式执行攻击特定的目标。 6)电磁泄漏,六、攻击的时间,一、攻击的一些基本概念,大部分的攻击(或至少是商业攻击时间)一般是服务器所在地的深夜。 客观原因。在白天,大多数入侵者要工作或学习,以至没空进行攻击。 速度原因。网络正变得越来越拥挤,因此最佳的工作时间是在网络能提供高传输速度的时间速率的时间。 保密原因。白天系统管理员一旦发现有异常行为。他们便会跟踪而来。,七、寻找目标主机并收集目标信息,1)锁定目标
4、 因特网上每一台网络主机都有一个名字,术语称做域名;然而在网上能真正标识主机的是IP地址,域名只是用IP地址指定的主机便于好记而起的名字。 利用域名和IP地址都可以顺利找到主机。DNS协议不对转换或信息性的更新进行身份认证,这使得该协议被人以一些不同的方式加以利用。黑客只需实施一次域转换操作就能得到所有主机的名称以及内部IP地址。,2)服务分析 用提供不同服务的应用程序试一试就知道了,例如:使用Telnet、FTP等用户软件向目标主机申请服务,如果主机有应答就说明主机提供了这个服务,开放了这个端口的服务。 黑客常用一些象PORTSCAN这样的工具软件,对目标主机一定范围的端口进行扫描。这样可全
5、部掌握目标主机的端口情况。HAKTEK是一个非常实用的一个工具软件,它将许多应用集成在一起的工具,其中包括: Ping、IP地址范围扫描、目标主机端口扫描、邮件炸弹、过滤邮件、Finger主机等都是非常实用的工具。,二、远程攻击的步骤,3)系统分析 目标主机采用的是什么操作系统。黑客使用具有已知响应类型的数据库的自动工具,对来自目标主机的、对坏数据包传送所作出的响应进行检查。由于每种操作系统都有其独特的响应方法。通过将此独特的响应与数据库中的已知响应进行对比,黑客经常能够确定出目标主机所运行的操作系统。 打开RUN窗口,然后输入命令: Telnet xx.xx.xx.xx(目标主机) 然后按“
6、确定“,会出现什么?,C:telnet 210.41.110.193 Users access verification Uesrname: % username: timeout expired Uesrname: % username: timeout expired Uesrname: % username: timeout expired 失去了跟主机的连接C:telnet 210.41.110.200 正在连接到210.41.110.200 不能打开到主机的连接 ,在端口23:连接失败,二、远程攻击的步骤,4)获取帐号信息 对于陌生的目标主机可能只知道它有一个ROOT用户,至于其他帐
7、户一无所知,要想登录目标主机我们至少要知道一个普通用户 a.利用目标主机的Finger功能 对黑客软件HAKTEK,它的Finger功能可以完全胜任,记录帐号信息,经过一段时间的监测,就会积累一定的帐号信息。finger很可能暴露入侵者的行为,为了避免finger查询产生标记,绝大多数入侵者使用finger gateways(finger网关)。,二、远程攻击的步骤,b.来源于电子邮件地址 有些用户电子邮件地址(指符号前面的部分)与其取邮件的帐号是一致的 c.非常全面的X.500功能 有些主机提供了X.500的目录查询服务。如何知道是否提供X.500的功能,扫描目标主机的端口,如果端口105的
8、状态已经被“激活“,在自己的机器上安装一个X.500的客户查询的工具,选择目标主机,可以获得意想不到的信息。,二、远程攻击的步骤,d.习惯性常用帐号 根据平时的经验,一些系统总有一些习惯性的常用帐号,这些帐号都是系统中因为某种应用而设置的。例如:制作WWW网站的帐号可能是html、www、web等,安装ORACLE数据库的可能有oracle的帐号,用户培训或教学而设置的user1、user2、student1、student2、client1、client2等帐户,一些常用的英文名字也经常会使用,例如:tom、john等,因此可以根据系统所提供的服务和在其主页得到的工作人员的名字信息进行猜测。
9、,二、远程攻击的步骤,5)获得管理员信息 运行一个查询命令,可获得保存在目标域服务器中的所有信息。,6)、攻击测试,二、远程攻击的步骤,大部分的入侵者并不想尝试这种行为,因为这需要一定的费用。在此步骤中,首先要建立一个和目标一样的环境。一旦将此环境建立起来后,就可对它进行一系列的攻击。在此过程中,有两件事需要注意: (l)从攻击方来看这些攻击行为看上去像什么, (2)从被攻击方来看这些攻击行为看上去像什么。 通过检查攻击方的日志文件入侵者能大致了解对一个几乎没有保护措施的目标进行攻击时攻击行为着上去像什么,八、各种相关工具的准备,二、远程攻击的步骤,紧接着应该收集各种实际使用的工具,最有可能是
10、一些扫描工具,判断出目标网上的所有设备。基于对操作系统的分析需要对工具进行评估以判断有哪些漏洞和区域它们没有覆盖到。在只用一个工具而不用另一个工具就可覆盖某特定设备的情况下,最好还是同时使用这两个工具。这些工具的联合使用是否方便主要依赖于这些工具是否能简易地作为外部模块附加到一个扫描工具上如 SATAN或 SAFESuite。在此进行测试变得极为有价值,因为在多数情况下附加一个外部模块非让它正常地工作并不那么简单。为了得到这些工具工作的确切结果,最好先在某台机器上进行实验。,九、攻击策略的制定,二、远程攻击的步骤,没有任何理由就实施入侵是很不明智的。攻击策略主要依赖于入侵者所想要达到的目的。
11、需要说明的是扫描时间花得越长,也就是说越多的机器被涉及在内,那么扫描的动作就越有可能被发现;同时有越多的扫描数据需要筛选,因此,扫描的攻击的时间越短越好。因为你所想要的是一个主系统上或者是一个可用的最大网段的根权限,所以对一个更小、更安全的网络进行扫描不可能获得很大的好处。无论如何,一旦你确定了扫描的参数,就可以开始行动了。,十、数据分析,二、远程攻击的步骤,完成扫描后,开始分析数据。首先应考虑通过此方法得到的信息是否可靠(可靠度在某种程度上可通过在类似的环境中进行的扫描实验得到。)然后再进行分析,扫描获得的数据不同则分析过程也不同。在SATAN中的文档中有一些关于漏洞的简短说明,并且真接而富
12、有指导性。 如果找到了某个漏洞,就应该重新参考那些通过搜索漏洞和其他可用资源而建立起来的数据库信息。在真正理解了攻击的本质和什么应从攻击中剔除之前,可能要花上数个星期来研究源码、漏洞、某特定操作系统和其他信息,这些是不可逾越的。在攻击中经验和耐心是无法替代的。一个经过很好计划和可怕的远程攻击,需要实施者对TCPIP以及系统等方面的知识有着极深刻的了解。,十一、实施攻击,二、远程攻击的步骤,获得了对攻击的目标系统的访问权后,可能有下述多种选择: 毁掉攻击入侵的痕迹,并在受到损害的系统上建立另外的新的安全漏洞或后门,以便今后继续访问这个系统。 在目标系统中安装探测器软件,包括特洛伊木马程序,用来窥
13、探所在系统的活动,收集黑客感兴趣的一切信息,如Telnet和FTP的帐号名和口令等等。 发现受损系统在网络中的信任等级,这样黑客就可以通过该系统信任级展开对整个系统的攻击。 如果获得了特许访问权,那么它就可以读取邮件,搜索和盗窃私人文件,毁坏重要数据,破坏整个系统的信息。,1、漏洞的概念,三、系统漏洞,漏洞的概念漏洞是指硬件、软件或策略上的缺陷,从而可使攻击者能够在未经授权的情况下访问系统。 所有软件都是有错的 通常情况下99.99% 无错的程序很少会出问题,利用那0.01% 的错误导致100% 的失败,1、漏洞的概念,三、系统漏洞,出现漏洞的原因当今的系统功能越来越强,体积也越做越大。庞大的
14、系统是由小组完成的,不能指望每个人都不犯错,也不能指望无纰漏的合作。加上人的惰性,不愿意仔细地进行系统的安全配置。这样一来,本来比较安全的系统也变的不安全了。一个简单的例子就是缺省口令。,1、漏洞的概念,三、系统漏洞,漏洞的范围 漏洞涉及的范围很广,涉及到网络的各个环节、各个方面,包括:路由器、防火墙、操作系统、客户和服务器软件。比如一台提供网上产品搜索的Web服务器,就需要注意操作系统、数据库系统、Web服务软件及防火墙。,1、漏洞的概念,三、系统漏洞,漏洞的时间性 系统发布漏洞暴露发布补丁新漏洞出现 一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被
15、发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。,1、漏洞的概念,三、系统漏洞,安全漏洞与系统攻击之间的关系 漏洞暴露(可能的攻击)发布补丁 系统攻击者往往是安全漏洞的发现者和使用者,要对于一个系统进行攻击,如果不能发现和使用系统中存在的安全漏洞是不可能成功的。,1、漏洞的概念,三、系统漏洞,漏洞的类型 (1)管理漏洞-如两台服务器用同一个用户/密码,则入侵了A服务器后,B服务器也不能幸免。 (2)软件漏洞-
16、很多程序只要接收到一些异常或者超长的数据和参数,就会导致缓冲区溢出。 (3)结构漏洞-比如在某个重要网段由于交换机、集线器设置不合理,造成黑客可以监听网络通信流的数据;又如防火墙等安全产品部署不合理,有关安全机制不能发挥作用,麻痹技术管理人员而酿成黑客入侵事故。 (4)信任漏洞-比如本系统过分信任某个外来合作伙伴的机器,一旦这台合作伙伴的机器被黑客入侵,则本系统的安全受严重威胁。,20个最危险的安全漏洞,2002年5月发布(www.sans.org) 三类安全漏洞: 1)影响所有系统的七个漏洞(G1G7) 2)影响Windows系统的六个漏洞(W1W6) 3)影响Unix系统的七个漏洞(U1U
17、7),G1-操作系统和应用软件的缺省安装,三、系统漏洞,软件开发商的逻辑是最好先激活还不需要的功能,而不是让用户在需要时再去安装额外的组件。这种方法尽管对用户很方便,但却产生了很多危险的安全漏洞,因为用户不会主动的给他们不使用的软件组件打补丁。而且很多用户根本不知道实际安装了什么,很多系统中留有安全漏洞就是因为用户根本不知道安装了这些程序。 大多数操作系统和应用程序。 应该对任何连到Internet上的系统进行端口扫描和漏洞扫描。卸载不必要的软件,关掉不需要的服务和额外的端口。这会是一个枯燥而且耗费时间的工作。,G2 - 没有口令或使用弱口令的帐号,三、系统漏洞,易猜的口令或缺省口令是个严重的
18、问题,更严重的是有的帐号根本没有口令。应进行以下操作: 1审计你系统上的帐号,建立一个使用者列表。 2制定管理制度,规范增加帐号的操作,及时移走不再使用的帐号。 3经常检查确认有没有增加新的帐号,不使用的帐号是否已被删除。当雇员或承包人离开公司时,或当帐号不再需要时,应有严格的制度保证删除这些帐号。 4对所有的帐号运行口令破解工具,以寻找弱口令或没有口令的帐号。,G3 - 没有备份或者备份不完整,三、系统漏洞,从事故中恢复要求及时的备份和可靠的数据存储方式。应列出一份紧要系统的列表。制定备份方式和策略。重要问题: 1 系统是否有备份? 2 备份间隔是可接受的吗? 3 系统是按规定进行备份的吗?
19、 4 是否确认备份介质正确的保存了数据? 5 备份介质是否在室内得到了正确的保护? 6 是否在另一处还有操作系统和存储设施的备份?(包括必要的license key) 7 存储过程是否被测试及确认?,G4 - 大量打开的端口,三、系统漏洞,合法的用户和攻击者都通过开放端口连接系统。端口开得越多,进入系统的途径就越多。 netstat 命令可以在本地运行以判断哪些端口是打开的,但更保险的方法是对你的系统进行外部的端口扫描.在众多的端口扫描器中,最流行的是nmap。 一旦你确定了哪些端口是打开的,接下来的任务是确定所必须打开的端口的最小集合-关闭其他端口,找到这些端口对应的服务,并关闭/移走它们。
20、,G5 - 没有过滤地址不正确的包,三、系统漏洞,IP地址欺诈。例如smurf攻击。对流进和流出你网络的数据进行过滤。 1任何进入你网络的数据包不能把你网络内部的地址作为源地址;必须把你网络内部的地址作为目的地址。 任何离开你网络的数据包必须把你网络内部的地址作为源地址;不能把你网络内部的地址作为目的地址。 3任何进入或离开你网络的数据包不能把一个私有地址(private address)或在RFC1918中列出的属于保留空间(包括10.x.x.x/8, 172.16.x.x/12 或192.168.x.x/16 和网络回送地址127.0.0.0/8.)的地址作为源或目的地址。,G6 - 不存
21、在或不完整的日志,三、系统漏洞,安全领域的一句名言是:“预防是理想的,但检测是必须的“。一旦被攻击,没有日志,你会很难发现攻击者都作了什么。在所有重要的系统上应定期做日志,而且日志应被定期保存和备份,因为你不知何时会需要它。 查看每一个主要系统的日志,如果你没有日志或它们不能确定被保存了下来,你是易被攻击的。 所有系统都应在本地记录日志,并把日志发到一个远端系统保存。这提供了冗余和一个额外的安全保护层。 不论何时,用一次性写入的媒质记录日志。,G7 - 易被攻击的CGI程序,三、系统漏洞,大多数的web服务器,都支持CGI程序。 1从你的web服务器上移走所有CGI示范程序。 2审核剩余的CG
22、I脚本,移走不安全的部分。 3保证所有的CGI程序员在编写程序时,都进行输入缓冲区长度检查。 4为所有不能除去的漏洞打上补丁。 5保证你的CGI bin目录下不包括任何的编译器或解释器。 6从CGI bin目录下删除“view-source“脚本。 7不要以administrator或root权限运行你的web服务器。大多数的web服务器可以配置成较低的权限,例如“nobody.“ 8不要在不需要CGI的web服务器上配置CGI支持。,W1 - Unicode漏洞,三、系统漏洞,不论何种平台,何种程序,何种语言,Unicode为每一个字符提供了一个独一无二的序号。通过向IIS服务器发出一个包括
23、非法Unicode UTF-8序列的URL,攻击者可以迫使服务器逐字“进入或退出“目录并执行任意(程序)(script-脚本),这种攻击被称为目录转换攻击。 Unicode用%2f和%5c分别代表/和。但你也可以用所谓的“超长“序列来代表这些字符。“超长“序列是非法的Unicode表示符,它们比实际代表这些字符的序列要长。/和均可以用一个字节来表示。超长的表示法,例如用%c0%af代表/用了两个字节。IIS不对超长序列进行检查。这样在URL中加入一个超长的Unicode序列,就可以绕过Microsoft的安全检查。如果你在运行一个未打补丁的IIS,那么你是易受到攻击的。最好的判断方法是运行hf
24、netchk。,W2 - ISAPI 缓冲区扩展溢出,三、系统漏洞,安装IIS后,就自动安装了多个ISAPI extensions。ISAPI,代表Internet Services Application Programming Interface,允许开发人员使用DLL扩展IIS服务器的性能。一些动态连接库,例如idq.dll,有编程错误,使得他们做不正确的边界检查。特别是,它们不阻塞超长字符串。攻击者可以利用这一点向DLL发送数据,造成缓冲区溢出,进而控制IIS服务器。 安装最新的Microsoft的补丁。该漏洞不影响Windows XP. 同时,管理员应检查并取消所有不需要的ISAPI
25、扩展。经常检查这些扩展没有被恢复。 请记住最小权限规则,你的系统应运行系统正常工作所需的最少服务。,W3 - IIS RDS的使用(Microsoft Remote Data Services),三、系统漏洞,黑客可以利用IISs Remote Data Services (RDS)中的漏洞以administrator权限在远端运行命令。 如果你在运行一个未打补丁的系统,你是易被攻击的。,W4 - NETBIOS - 未保护的Windows网络共享,三、系统漏洞,Server Message Block (SMB)协议,也称为Common Internet File System (CIFS)
26、, 允许网络间的文件共享。不正确的配置可能会导致系统文件的暴露,或给予黑客完全的系统访问权。 在Windows的主机上允许文件共享使得它们容易受到信息窃贼和某种快速移动的病毒的攻击。,三、系统漏洞,1在共享数据时,确保只共享所需目录。 2为增加安全性,只对特定IP地址进行共享,因为DNS名可以欺诈。 3对Windows系统(NT,2000),只允许特定用户访问共享文件夹。 4对Windows系统,禁止通过“空对话“连接对用户,组,系统配置和注册密钥进行匿名列举。在W5中有更详尽的信息。 5对主机或路由器上的NetBIOS会话服务(tcp 139), Microsoft CIFS (TCP/UD
27、P 445)禁止不绑定的连接。 6考虑在独立或彼此不信任的环境下,在连接Internet的主机上部署Restrict Anonymous registry key。,W5 - 通过空对话连接造成的信息泄露,空对话连接(null session),也称为匿名登录,是一种允许匿名用户获取信息(例如用户名或共享文件),或不需认证进行连接的机制。explorer.exe利用它来列举远程服务器上的共享文件。在Windows NT和Windows 2000系统下,许多本地服务是在SYSTEM帐号下运行的,又称为Windows 2000的LocalSystem。很多操作系统都使用SYSTEM帐号。当一台主机
28、需要从另一台主机上获取系统信息时,SYSTEM帐号会为另一台主机建立一个空对话。SYSTEM帐号实际拥有无限的权利,而且没有密码,所以你不能以SYSTEM的方式登录。 SYSTEM有时需要获取其它主机上的一些信息,例如可获取的共享资源和用户名等典型的网上邻居功能。由于它不能以用户名和口令进入,所以它使用空对话连接进入,不幸的是攻击者也可以相同的方式进入。,W6 - Weak hashing in SAM (LM hash),尽管Windows的大多数用户不需要LAN Manager的支持,微软还是在Windows NT 和 2000系统里缺省安装了LAN Manager口令散列。由于LAN M
29、anager使用的加密机制比微软现在的方法脆弱,LAN Manager的口令能在很短的时间内被破解。LAN Manager散列的主要脆弱性在于: 长的口令被截成14个字符 短的口令被填补空格变成14个字符 口令中所有的字符被转换成大写 口令被分割成两个7个字符的片断 另外,LAN Manager容易被侦听口令散列。侦听可以为攻击者提供用户的口令。,U1 - RPC 服务缓冲区溢出,三、系统漏洞,远程请求(Remote Procedure Calls )允许一台机器上的程序执行另一台机器上的程序。用来提供网络服务如NFS文件共享。由于RPC缺陷导致的弱点正被广泛的利用着。有证据显示,1999年到
30、2000年间的大部分分布式拒绝服务型攻击都是在那些通过RPC漏洞被劫持的机器上执行的。按照下面步骤保护你的系统避免该攻击: 1. 只要允许,在可以从Internet 直接访问的机器上关闭或删除这些服务 2. 在你必须运行该服务的地方,安装最新的补丁: 3. 定期搜索供应商的补丁库查找最新的补丁并立刻安装。 4. 在路由或防火墙关闭RPC 端口 (port 111) 。 5. 关闭 RPC “loopback“ 端口, 32770-32789 (TCP and UDP),U2 - Sendmail 漏洞,三、系统漏洞,Sendmail 是在UNIX和Linux上用的最多的发送,接收和转发电子邮件
31、的程序。Sendmail在Internet上的广泛应用使它成为攻击者的主要目标。过去的几年里发现了若干个缺陷。事实上,第一个建议是CERT/CC 在1988年提出的,指出了Sendmail中一个易受攻击的脆弱性。其中最为常用的是攻击者可以发送一封特别的邮件消息给运行Sendmail的机器,Sendmail会根据这条消息要求受劫持的机器把它的口令文件发给攻击者的机器(或者另一台受劫持的机器),这样口令就会被破解掉。 Sendmail 有很多的易受攻击的弱点,必须定期的更新和打补丁。,U3 - Bind 脆弱性,三、系统漏洞,Berkeley Internet Name Domain (BIND)
32、 是域名服务DNS (Domain Name Service) 用的最多的软件包。DNS非常重要,我们利用它在Internet上通过机器的名字(例如www.sans.org )找到机器而不必知道机器的IP地址。这使它成为攻击者钟爱的目标。不幸的是,根据1999年中期的调查,连接在Internet上的50的DNS服务器运行的都是易受攻击的版本。在一个典型的BIND攻击的例子里,入侵者删除了系统日志并安装了工具来获取管理员的权限。然后他们编辑安装了IRC工具和网络扫描工具,扫描了12个B类网来寻找更多的易受攻击的BIND。 在一分钟左右的时间里,他们就使用已经控制的机器攻击了几百台远程的机器,并找
33、到了更多的可以控制的机器。,U4 - R 命令,三、系统漏洞,在UNIX世界里,相互信任关系到处存在,特别是在系统管理方面。公司里经常指定一个管理员管理几十个区域或者甚至上百台机器。管理员经常使用信任关系和UNIX的 r 命令从一个系统方便的切换到另一个系统。 R 命令允许一个人登录远程机器而不必提供口令。取代询问用户名和口令,远程机器认可来自可信赖IP地址的任何人。如果攻击者获得了可信任网络里的任何一台的机器,他(她)就能登录任何信任该IP的任何机器。下面命令经常用到: 1. rlogin - remote login,远程登录 2. rsh - remote shell ,远程shell
34、3. rcp - remote copy ,远程拷贝,U5 - LPD (remote print protocol daemon),三、系统漏洞,Unix 里,in.lpd 为用户提供了与本地打印机交互的服务。lpd侦听TCP 515端口的请求。程序员在写代码时犯了一点错误,使得当打印工作从一台机器传到另一台机器时会导致缓冲区溢出的漏洞。如果在较短的时间里接受了太多的任务,后台程序就会崩溃或者以更高的权限运行任意的代码。,U6 - sadmind and mountd,三、系统漏洞,Sadmind 允许远程登录到Solaris 系统进行管理,并提供了一个系统管理功能的图形用户接口。 Moun
35、td 控制和判断到安装在UNIX主机上的NFS的连接。由于软件开发人员的错误导致的这些应用的缓冲区溢出漏洞能被攻击者利用获取root的存取权限。,U7 - 缺省 SNMP 字串,三、系统漏洞,SNMP (Simple Network Management Protocol, 简单网络管理协议) 是管理员广泛使用的协议,用来管理和监视各种各样与网络连接的设备,从路由器到打印机到计算机。SNMP使用没有加密的公共字符串作为唯一的认证机制。 没有加密已经够糟了,不仅如此,绝大部分SNMP设备使用的公共字符串还是“public“, 只有少部分“聪明“的设备供应商为了保护敏感信息把字符串改为“priva
36、te“。 攻击者可以利用这个SNMP中的漏洞远程重新配置或关闭你的设备。 被监听的SNMP通讯能泄漏很多关于网络结构的信息,以及连接在网络上的设备。入侵者可以使用这些信息找出目标和谋划他们的攻击。,1、扫描技术,四、扫描器,扫描技术是主要的一种信息收集型攻击。 地址扫描:运用ping这样的程序探测目标地址 端口扫描:向大范围的主机连接一系列的TCP端口,扫描软件报告它成功的建立了连接的主机所开的端口。 反响映射:黑客向主机发送虚假消息,然后根据返回“host unreachable“这一消息特征判断出哪些主机是存在的。 慢速扫描:由于一般扫描侦测器的实现是通过监视某个时间里一台特定主机发起的连
37、接的数目(例如每秒10次)来决定是否在被扫描,这样黑客可以通过使用扫描速度慢一些的扫描软件进行扫描。,2、什么是扫描器,四、扫描器,扫描器是一种自动检测远程或本地主机安全性弱点的程序。 通过使用扫描器可不留痕迹的发现远程服务器的各种TCP端口的分配、提供的服务、使用的软件版本!这就能间接的或直观的了解到远程主机所存在的安全问题。,四、扫描器,安全扫描工具分类 基于服务器和基于网络的扫描器。 基于服务器的扫描器主要扫描服务器相关的安全漏洞,如password文件,目录和文件权限,共享文件系统,敏感服务,软件,系统漏洞等,并给出相应的解决办法建议。通常与相应的服务器操作系统紧密相关。 基于网络的安
38、全扫描主要扫描设定网络内的服务器、路由器、网桥、交换机、访问服务器、防火墙等设备的安全漏洞,并可设定模拟攻击,以测试系统的防御能力。通常该类扫描器限制使用范围(IP地址或路由器跳数)。,扫描器分类 端口扫描器 (如:NMAP, PORTSCAN)扫描目标机开放的服务端口及其有关信息 漏洞扫描器(如:ISS、NESSUS、SATAN等) 对于重视安全的网站进行漏洞扫描,可能一无所获,因为流行的漏洞早已打补丁了。因此端口扫描器对黑客或许更有用。,四、扫描器,网络安全扫描的主要性能:(1) 速度。在网络内进行安全扫描非常耗时。(2) 网络拓扑。通过GUI的图形界面,可迭择一步或某些区域的设备。(3)
39、 能够发现的漏洞数量。(4) 是否支持可定制的攻击方法。因为网络内服务器及其它设备对相同协议的实现存在差别,所以预制的扫描方法肯定不能满足客户的需求。(5) 报告,扫描器应该能够给出清楚的安全漏洞报告。(6) 更新周期。提供该项产品的厂商应尽快给出新发现的安生漏洞扫描特性升级,并给出相应的改进建议。,3、扫描器的工作原理,四、扫描器,扫描器通过选用远程TCP/IP不同的端口的服务,并记录目标给予的回答,通过这种方法,可以搜集到很多关于目标主机的各种有用的信息 扫描器能够发现目标主机某些内在的弱点,这些弱点可能是破坏目标主机安全性的关键性因素。但是,要做到这一点,必须了解如何识别漏洞。扫描器对于
40、Internet安全性之所以重要,是因为它们能发现网络的弱点。,4、扫描器的功能,四、扫描器,扫描器并不是一个直接的攻击网络漏洞的程序,它仅仅能帮助我们发现目标机的某些内在的弱点。一个好的扫描器能对它得到的数据进行分析,帮助我们查找目标主机的漏洞。但它不会提供进入一个系统的详细步骤。 扫描器应该有三项功能: 1)发现一个主机或网络的能力; 2)一旦发现一台主机,有发现什么服务正运行在这台主机上的能力; 3)通过测试这些服务,发现漏洞的能力。,5、常用的端口扫描技术,四、扫描器,TCP connect() 扫描 这是最基本的TCP扫描。操作系统提供的connect()系统调用,用来与目标计算机的
41、端口进行连接。如果端口处于侦听状态,那么connect()就能成功。否则,这个端口是不能用的,即没有提供服务。 不需要任何权限。系统中的任何用户都有权利使用这个调用。另一个好处就是速度。如果对每个目标端口以线性的方式,使用单独的connect()调用,那么将会花费相当长的时间,你可以通过同时打开多个套接字,从而加速扫描。这种方法的缺点是容易被发觉,并且被过滤掉。目标计算机的logs文件会显示一连串的连接和连接是出错的服务消息,并且能很快的使它关闭。,5、常用的端口扫描技术,四、扫描器,TCP SYN扫描 “半开放”扫描,这是因为扫描程序不必要打开一个完全的TCP连接。扫描程序发送的是一个SYN
42、数据包,好象准备打开一个实际的连接并等待反应一样(参考TCP的三次握手建立一个TCP连接的过程)。一个SYN|ACK的返回信息表示端口处于侦听状态。一个RST返回,表示端口没有处于侦听态。如果收到一个SYN|ACK,则扫描程序必须再发送一个RST信号,来关闭这个连接过程。这种扫描技术的优点在于一般不会在目标计算机上留下记录。但这种方法的一个缺点是,必须要有root权限才能建立自己的SYN数据包。,5、常用的端口扫描技术,四、扫描器,TCP FIN 扫描 (发送者无数据) 有的时候有可能SYN扫描都不够秘密。一些防火墙和包过滤器会对一些指定的端口进行监视,有的程序能检测到这些扫描。相反,FIN数
43、据包可能会没有任何麻烦的通过。这种扫描方法的思想是关闭的端口会用适当的RST来回复FIN数据包。另一方面,打开的端口会忽略对FIN数据包的回复。这种方法和系统的实现有一定的关系。有的系统不管端口是否打开,都回复RST,如NT.这样,这种扫描方法就不适用了。并且这种方法在区分Unix和NT时,是十分有用的。,5、常用的端口扫描技术,四、扫描器,UDP ICMP端口不能到达扫描 这种方法与以上方法的区别是使用UDP协议。由于这个协议很简单,所以扫描变得相对比较困难。这是由于打开的端口对扫描探测并不发送一个确认,关闭的端口也并不需要发送一个错误数据包。幸运的是,许多主机在你向一个未打开的UDP端口发
44、送一个数据包时,会返回一个ICMP_PORT_UNREACH错误。这样你就能发现哪个端口是关闭的。UDP和ICMP错误都不保证能到达,因此这种扫描器必须还实现在一个包看上去是丢失的时候能重新传输。这种扫描方法是很慢的,因为RFC对ICMP错误消息的产生速率做了规定。同样,这种扫描方法需要具有root权限。,5、常用的端口扫描技术,四、扫描器,UDP recvfrom()和write() 扫描 当非root用户不能直接读到端口不能到达的错误时,Linux能间接地在它们到达时通知用户。比如,对一个关闭的端口的第二个write()调用将失败。在非阻塞的UDP套接字上调用recvfrom()时,如果I
45、CMP出错还没有到达时回返回EAGAIN-重试。如果ICMP到达时,返回ECONNREFUSED-连接被拒绝。这就是用来查看端口是否打开的技术。,5、常用的端口扫描技术,四、扫描器,ICMP echo扫描 这并不是真正意义上的扫描。但有时通过ping,在判断在一个网络上主机是否开机时非常有用。 端口扫描:NMAP 、PORTSCAN等 漏洞扫描: ISS、 NESSUS、SATAN、 X-ScanCIS(Cerberus Internet Scanner),运行在Windows 之下,主要用来对Windows NT和2000的安全性作出评估,指出其存在的安全性弱点,并提供一定程度上的改进建议。
46、当前版本是5.0.02版。,6、扫描器,四、扫描器,CIS的扫描范围包括: WWW服务、 FTP服务、 MS SQL Sever、 NetBIOS、 注册表设置、 NT服务、 SMTP服务、,POP3服务、 RPC服务、 端口映射、 Finger服务、 DNS服务、 浏览器安全,6、扫描器,四、扫描器,CIS包括了NT服务器的绝大部分容易引起安全问题的服务和设置。它最大的特色是NETBIOS扫描。它可以快速地得到目标计算机的NETBIOS信息、共享资源,包括用户名和组的信息,并能揭示薄弱的口令。 操作过程:选择工具栏上的第一个按钮,在弹出的对话框中写入主机地址,点击第二个按钮开始扫描。因为缺省
47、的扫描模块就是all(全部),所以在这里可以不必设定扫描模块。等到所有项的扫描都完成(Completed)之后,点击M按钮查看生成的报告。,6、扫描器,四、扫描器,端口扫描器IP Prober IP Prober是一款端口扫描工具而非漏洞扫描工具。它扫描目标主机的各个端口以找出该主机运行有哪些服务。 在HOST中填入目标主机地址,Start和End栏中填入端口的扫范围,选择Run就可以进行扫描了。,7、OS识别,四、扫描器,每种OS都有不同的端口开放供系统间通信使用,所以从端口号上可以判断目标主机的OS类型。通常开放135、139端口的是WINDOW操作系统,如果还有5000端口开放,则可以判断是WINDOWS XP操作系统,为什么不能扫到QQ端口?,大多扫描程序都是基于TCP协议,通过“连接”和“半连接”测试方法判断对方主机的开放端口,而QQ是基于UDP协议,所以不能检测到,