今天是马年春节的大年初四,首先给CU的各位兄弟姐妹们拜年啦!祝大家在新的一年里马到成功,策马奔腾,马上又一切!言归正传,今天忙里偷闲抽出一点时间,学习了一下“漏洞扫描”的基本知识,这里趁着刚刚看完,赶紧做个小结吧!
一、什么是漏洞
其实很难对漏洞下一个确切的定义,但是我们可以给出一个比较感性的说法:漏洞就是攻击者通过控制数据,改变目标程序的执行逻辑,从而达到攻击目的的行为。这里的一个关键是攻击者能够控制“数据”,准确的说是输入的数据,比如缓冲区溢出,比如heap溢出等;另一个关键是必须要改变原有程序的执行逻辑,从而执行自己的攻击代码。如果换一种说法,漏洞就是恶意的主体能够利用的一组计算机特性,通过已授权的手段和方式获取对资源的非授权访问,或者对系统造成损坏。这个版本的关注点在于漏洞执行的结果,是借助“授权行为”达到“非授权访问”的路径。
严格来说,漏洞是永远无法彻底消除的,一方面是因为我们的计算机系统和网络系统在设计之初就没有或者很少考虑到安全性,最初只是为了实现计算和通信的功能,随着应用的普及,逐渐出现了各种安全问题;另一种情况则是一些协议或者APP在设计实现的时候自身就考虑有缺陷,导致原生漏洞。具体来说,漏洞主要来源于以下四个方面:
1. 软件或协议设计时的瑕疵:如NFS系统本身不包括身份认证机制;
2. 软件或协议实现中的弱点;
3. 软件本身的瑕疵:如没有进行数据内容和大小检查,没有进行成功/失败检查等;
4. 系统和网络的配置错误:如使用默认设置等;
二、网络扫描
其实这一部分如果空说自己感觉是没有什么意思的,之前我看这部分内容也是看过就忘,总是印象不深,直到自己使用MSF进行了几次渗透的实验之后,自己才对“扫描”有了深刻的印象。网络扫描其实有个目标,一个是发现网络中的存活主机,另一个则是判断出目标主机上运行的服务和系统版本。
发现主机的方式其实很简单,一般可以使用ICMP扫射的方式,即所谓的ping方法,但是由于防火墙或者网关的设置,这种方式不适用于隐蔽地对远程目标探测,所以一般使用TCP/UDP扫射,尝试对每一个端口建立连接,这里面又可以分为SYN/ACK/等方式,这种扫描的同时也可以判断服务类型,加上不同系统的响应包实现的差异,可以粗略判断系统版本和补丁日期。
查找漏洞的方式一般有三种:直接测试、推断和凭证测试。直接测试就是直接使用POC对目标进行漏洞攻击,推断则是根据目标系统或服务的版本来判断是否具有漏洞,凭证测试则是通过密码获得系统管理权限后检查更多的漏洞。
阅读(1323) | 评论(0) | 转发(0) |