漏洞检测和扫描
漏洞检测和扫描
1. 弱口令检测、端口扫描
本节将学习两个安全工具——John the Ripper,NMAP的使用,前者用来检测系统账号的密码强度,后者用来执行端口扫描任务。
1.1 弱口令检测——John the Ripper
在Internet环境中,过于简单的口令是服务器面临的最大风险。尽管大家都知道设置一个更长、更复杂的口令会更加安全,但总是会有一些用户因贪图方便而采用简单、易记的口令字串。对任何一个承担着安全责任的管理员来说,及时找出这些弱口令账户都是非常必要的,这样便于采取进一步的安全措施(如提醒账号重设更安全的口令)。
John the Ripper是一款开源的密码破解工具,能够在已知密文的情况下快速分析出明文的密码字串,支持DES,MD5等多种加密算法,而且允许使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。通过使用John the Ripper,可以检测Linux/UNlX系统用户的密码强度。
1. 下裁并安装John the Ripper
John the Ripper的官方网站位于http://www.openwall.com/john/,可以获取最新的稳定版源码包,如john-1.7.8.tar.gz。除了开源的免费版本以外,John the Ripper还同时提供社区增强版,专业版。
以源码包john-1.7.8.tar.gz为例,解压后可看到三个子目录——doc,run,src,分别表示手册文档,运行程序,源码文件,除此以外还有一个链接的说明文件README。其中doc目录下包括README,INSTALL、EXAMPLES等多个文档,提供了较全面的使用指导。
[root@sky home] # tar zxf john-1.7.8.tar.gz <==上传安装包到/home/目录下然后解压安装 [root@sky home] # cd john-1.7.8 [root@sky john-1.7.8] # ls -ld * drwx------. 2 root root 4096 6月 22 2011 doc lrwxrwxrwx. 1 root root 10 5月 7 15:00 README -> doc/README drwx------. 2 root root 4096 6月 22 2011 run drwx------. 2 root root 4096 6月 22 2011 src [root@sky john-1.7.8] # ls doc/ CHANGES CONFIG CONTACT CREDITS EXAMPLES EXTERNAL FAQ INSTALL LICENSE MODES OPTIONS README RULES |
切换到src子目录并执行“make clean generic”命令,即可执行编译过程。若单独执行make命令,将列出可用的编译操作,支持的系统类型。编译完成以后,run子目录下会生成一个名为john的可执行程序。
[root@sky john-1.7.8] # cd src/ [root@sky src] # yum -y install gcc c++ [root@sky src] # make clean generic <==编译时间稍微有点长,请耐心等待 ...... //省略编译信息 [root@sky src] # ls ../run/john <==确认已生成执行程序john ../run/john |
John the Ripper不需要特别的安装操作,编译完成后的run子目录中包括了可执行程序john及相关的配置文件,字典文件等,可以复制到任何位置使用。
2.检测弱口令账号
在安装有John the Ripper的服务器中,可以直接对/etc/shadow文件进行检测。对于其他Linux服务器,可以将shadow文件复制出来,并传递给john程序进行检测。只需执行run目录下的john程序,将待检测的shadow文件作为命令行参数,就可以开始弱口令分析了。
[root@sky src] # cp /etc/shadow /root/shadow.txt <==准各待破解的密码文件 [root@sky src] # cd ../run/ [root@sky run] # ./john /root/shadow.txt <==执行暴力破解 |
#按Ctrl+c键中上后续过程
我做的时候没有成功,报错“No password hashes loaded (see FAQ)” ,暂时没有找到解决方法!
在执行过程中,分析出来的弱口令账号将即时输出,第一列为密码字串,第二列的括号内为相应的用户名(如用户kadmin的密码为123456)。默认情况下,john将针对常见的弱口令设置特点尝试破解己识别的所有密文字串,如果检测的时间太长,可以孩Ctrl+C键强行终止。破解出的密码信息自动保存到john.pot文件中,可以结合“--show"选项进行查看。
[root@sky run] # ./john --show /root/shadow.txt <==查看已破解出来的账户列表 |
3.使用密码字典文件
对于密码的暴力破解来说,字典文件的选择很关键。只要字典文件足够完整,密码能否破解只是时间上的问题。因此,关于“什么样的密码才足够强壮”取决于用户的承受能力,有人认为超过72小时仍无法破解的密码才算安全,也可能有人认为至少暴力分析一个月仍无法破解的才足够安全。
John the Ripper默认提供的字典文件为password.lst,其中列出了3000多个最常见的弱口令。如果有必要用户可以在字典文件中添加更多的密码组合,也可以直接使用更加完整的其他字典文件。执行john程序时,可以结合"--wordllst="选项来指定字典文件的位置,以便对指定的密码文件进行暴力分析。
1.2 网络扫描NMAP
NMAP是一个强大的端口扫描类安全评测工具,官方站点位于http://nmap.org/。NMAP被设计为检测主机数量众多的巨大网络,支持ping扫描,多端口检测,OS识别等多种技术。使用NMAP定期扫描内部网络,可以找出网络中不可控的应用服务,及时关闭不安全的服务、减少安全风险。
1.安装NMAP软件包
在RHEL5系统中,既可以使用光盘自带的nmap-4.11-1.1.i386.rpm安装包,也可以使用从NMAP官网下载的最新版源码包(如nmap-5.51.tgz),这里以RPM方式安装的nmap软件包为例。
[root@sky ~] # mount /dev/cdrom /mnt [root@sky ~] # rpm -ivh /mnt/Server/nmap-4.11-1.1.i386.rpm <==rpm方式安装 [root@sky ~] # yum -y install nmap <==yum方式安装 |
2.扫描语法及类型
NMAP的扫描程序位于/usr/bin/nmap,使用时基本命令格式如下所示。
nmap [扫描类型] [选项] <扫描目标...>
其中,扫描目标可以是主机名,IP地址或网络地址等,多个目标以空格分隔;常用的选项有”-p"、“-n”,分别用来指定扫描的端口,禁用反向DNS解忻(以加快扫描速度);扫描类型决定着检测的方式,也直接影响到扫描的结果。
比较常用的区种扫描类型如下所述:
➣ -sS,TCPSYN扫描(半开扫描):只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。
➣ -sT,TCP连接扫描:这是完整的TCP扫描方式,用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
➣ -sF,TCPFIN扫描:开放的端口会忽略这种包,关闭的端口会回应RST包。许多防火墙只对SYN包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性。
➣ -sU,UDP扫描:探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。
➣ -sP,ICMP扫描:类似于ping检测,快速判断目标主机是否存活,不作其他扫猫。
➣ -P0,跳过ping检测,这种方式认为所有的目标主机都是存活的当对方不晌应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描。
3. 扫描操作示例
为了更好地说明nmap命令的用法,下面介绍几个扫描操作的实际用例。
➣ 针对本机进行扫描,检查开放了哪些常用的TCP、UDP端口。
[root@sky ~] # nmap 127.0.0.1 <==扫描常用的1600多个TCP端口 Starting Nmap 5.51 ( http://nmap.org ) at 2015-05-07 18:07 CST Nmap scan report for localhost (127.0.0.1) Host is up (0.0000040s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 111/tcp open rpcbind 631/tcp open ipp Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds [root@sky ~] # nmap -sU 127.0.0.1 <==扫描常用的1400多个UDP端口 Starting Nmap 5.51 ( http://nmap.org ) at 2015-05-07 18:08 CST Nmap scan report for localhost (127.0.0.1) Host is up (0.0000040s latency). Not shown: 998 closed ports PORT STATE SERVICE 111/udp open rpcbind 631/udp open|filtered ipp Nmap done: 1 IP address (1 host up) scanned in 1.25 seconds |
在扫描结果中,STATE列若为open则表示端口为开放状态,filter表示可能被防火墙过滤,closed表示端口为关闭状态。
➣ 检查192.168.1.0/24网段中有哪些主机提供FTP服务。
[root@sky ~]
# nmap -p 192.168.1.0/24
Starting Nmap 5.51 ( http://nmap.org ) at 2015-05-07 18:25 CST
Nmap scan report for 192.168.1.10
Host is up (0.00017s latency).
PORT STATE SERVICE
21/tcp closed ftp <==TCP21 端口开放
Nmap scan report for 192.168.1.100
Host is up (0.00032s latency).
PORT STATE SERVICE
21/tcp filtered ftp
MAC Address: 00:0C:29:57:E6:EE (VMware)
➣ 快速检测192.168.1.0/24网段中有哪些存活主机(能ping通)。
[root@sky ~] # nmap -n -sP 192.168.1.0/24 Starting Nmap 5.51 ( http://nmap.org ) at 2015-05-07 18:14 CST Nmap scan report for 192.168.1.10 Host is up. Nmap scan report for 192.168.1.250 Host is up (0.00043s latency). MAC Address: 00:50:56:C0:00:01 (VMware) Nmap done: 256 IP addresses (2 hosts up) scanned in 5.89 seconds |
➣ 检测IP地址位于192.168.1.100-200之间的主机是否开启文件共享服务。
[root@sky ~] # nmap -p 139,445 192.168.1.100-200 Starting Nmap 5.51 ( http://nmap.org ) at 2015-05-07 18:29 CST Nmap scan report for 192.168.1.19 Host is up (0.0029s latency). PORT STATE SERVICE 139/tcp open netbios - ssn 445/tcp open microsoft -ds MAC Address: 8C:89:A5:EB:35:42 (Unknown) |
实际上NMAP提供的扫描类型,选项还有很多,适用于不同的扫描需求,更多操作和用法请参考相关文档。
2 OpenVAS漏洞评估系统
OpenVAS是一款开放式的漏洞评估工具,主要用来检测目标网络或主机的安全性,其强大的评估能力来自于集成的数万个漏洞测试程序,这些测试程序以插件的形式提供可以从官方网站免费更新。
2.1 OpenVAS的工作组件
与安全焦点的X-Scan工具类似,OpenVAS系统也采用了Nessus(另一个著名的漏洞检测套件,目前已是商业化产品)较早版本的一些开放插件。OpenVAS能够基于C/S(客户端/服务器),B/S(浏览器/服务器)架构进行工作,管理员通过浏览器或者专用的客户端程序来下达扫描任务,服务器端负责授权,执行扫描操作并提供扫描结果。
一套完整的OpenVAS系统包括服务器端,客户端的多个组件,如图所示。其中服务层组件主要完成插件管理,执行扫描,以及管理扫描结果,配置信息等工作;而客户层组件用来给扫描用户提供接口。
![](https://images0.cnblogs.com/blog/747908/201505/271346120941641.png)
下面分别介绍每个组件的主要软件包,以及各自的主要用途。
1.服务层组件(建议都安装)
➣ openvas-scanner,扫描器:负责调用各种漏洞测试插件完成实际的扫描操作。
➣ openvas-manager,管理器:负责分配扫描任务,并根据扫描结果生成评估报告。
➣ openas-administrator,管理者:负责管理配置信息,用户授权等相关工作。
2.客户层组件(任选其一即可)
➣ openvas-cli,命令行接口:负责提供从命令行访问OpenVAS服务层的程序。
➣ greenbone-security-assistant,绿骨安全助手:负责提供访问OpenVAS服务层的Web接口,便于通过浏览器来执行扫描任务,是使用最简便的客户层组件。
➣ Greenbone-Desktop-Suite,绿骨桌面套件:负责提供访问OpenVAS服务层的图形程序界面,主要运行在Windows客户机中。
除了上述各工作组件以外,还有一个核心环节,就是漏洞测试插件的更新。对任何一款安全评估工具来说,只有及时更新检测插件才能获得更具参考价值的评估结果。OpenVAS系统的插件来源有两个途径,如图所示,一种是官方提供的NVT(Network Vulnerability Test,网络弱点测试)免费插件,另一种是Greenbone Sec公司提供的商业插件。
![](https://images0.cnblogs.com/blog/747908/201505/271346130791043.png)
2.2 构建OpenVAS服务器
在OpesVAS服务器中需要先安装各工作组件的相关软件包,然后启动服务组件,获取最新扫描插件,并添加扫描用户,管理用户。完成这些工作以后,OpenVAS漏洞评估系统的核心部分就构建好了。
1.安装OpenVAS相关软件包
安装OpenVAS各组件之前,有一系列的依赖软件包必须提前安装,其中一些可以从RHEL 5系统光盘中找到,另外一些必须额外下载,如果将要部署OpenVAS服务的主机能够访问Internet,建议采用官方网站(http://www.openvas.org/)推荐的在线安装方式,便于自动解决依耐关系;否则应下载所有必须的软件包进行离线安装。
(1) 安装基于依赖包(离线安装)
挂载RHEL 5.5系统光盘,并安装一下列出的所有软件包(写在一条命令中),如果提示存在依耐关系,则根据提示安装缺少的软件包即可。
[root@sky RPMS_01] # ls *.rpm dialog-1.0.20051107-1.2.2.i386.rpm openldap -clients -2.3.43-12.el5.i386.rpm gnupg2-2.0.10-3.el5.i386.rpm pinentry-0.7.3-3.el5.i386.rpm libksba-1.0.5-2.el5.i386.rpm pth-2.0.7-6.el5.i386.rpm libtool -ltdl -1.5.22-7.el5_4.i386.rpm tetex-3.0-33.8.el5.i386.rpm lm_sensors-2.10.7-9.el5.i386.rpm tetex -dvips -3.0-33.8.el5.i386.rpm net -snmp -5.3.2.2-9.el5.i386.rpm tetex -fonts -3.0-33.8.el5.i386.rpm net -snmp -utils -5.3.2.2-9.el5.i386.rpm tetex -latex -3.0-33.8.el5.i386.rpm nmap-4.11-1.1.i386.rpm |
(2) 下载、安装其他依赖包
从OpenVAS官网或http://www.atomicorp.com/下载以下列出的所有依赖包,并使用rpm命令进行安装(卸载一条命令中)。
[root@sky RPMS_02] # ls *.rpm compat-gnutls2-2.8.5-2.1.el5.art.i386.rpm python -fpconst -0.7.3-3.el5.1.art.noarch.rpm gpgme-1.1.7-1.el5.art.i386.rpm python -SocksiPy -1.00-4.el5.art.noarch.rpm graphviz-2.16.1-1.el5.art.i386.rpm python-sqlite2-2.3.3-4.el5.art.i386.rpm graphviz -python -2.16.1-1.el5.art.i386.rpm SOAPpy-0.11.6-5.el5.art.noarch.rpm libmicrohttpd-0.4.2-2.el5.art.i386.rpm sqlite-3.7.0.1-1.el5.art.i386.rpm libtasn1-2.4-1.el5.art.i386.rpm sqlite -devel -3.7.0.1-1.el5.art.i386.rpm mingw32 -nsis -2.45-3.el5.art.i386.rpm w3af-1.0-4.el5.art.i386.rpm nikto-2.1.4-1.el5.art.noarch.rpm wmi-1.3.14-2.el5.art.i386.rpm ovaldi-5.6.4-1.el5.art.i386.rpm wordnet-3.0-13.el5.art.i386.rpm pnscan-1.11-1.el5.art.i386.rpm xalan -c -1.10.0-6.el5.art.i386.rpm pyPdf-1.10-4.el5.art.noarch.rpm xerces -c -2.8.0-4.el5.art.i386.rpm python -BeautifulSoup -3.0.7a-3.el5.art.noarch.rpm |
(3)下载,安装OpenVAS相关组件包
从OpenVAS官网或http://www.atomicorp.com下载以下列出的所有组件包,并使用rpm命令进行安装(写在一条命令中)。
[root@sky RPMS_03] # ls *.rpm greenbone -security -assistant -2.0.1-3.el5.art.i386.rpm openvas-1.0-0.5.el5.art.noarch.rpm openvas -administrator -1.1.1-2.el5.art.i386.rpm openvas -cli -1.1.2-2.el5.art.i386.rpm openvas-glib2-2.22.5-1.el5.art.i386.rpm openvas-glib2 -devel -2.22.5-1.el5.art.i386.rpm openvas -libraries -4.0.4-1.el5.art.i386.rpm openvas -libraries -devel -4.0.4-1.el5.art.i386.rpm openvas -manager -2.0.3-3.el5.art.i386.rpm openvas -scanner -3.2.3-1.el5.art.i386.rpm |
安装中若出现“无法触碰/var/lib/openvas/mgr/tasksdb”的提示可以忽略,这是由于缺少相关目录导致的,安装后会自动建立。
(4)确认安装结果。
成功完成安装以后,执行以下操作可查看相关执行程序,服务脚本以及配置文件,日志文件等。
[root@sky RPMS_03] # ls /usr/sbin/{gsad,openvas*} <==主要执行程序 [root@sky RPMS_03] # ls /etc/init.d/{gsad,openvas*} <==主要系统服务脚本 [root@sky RPMS_03] # ls /etc/openvas/ <==主要配置文件 [root@sky RPMS_03] # ls /etc/sysconfig/{gsad,openvas*} <==默认执行程序 [root@sky RPMS_03] # ls /var/log/openvas/ |
2.启动OpenVAS服务组件
根据OpenVAS系统的工作结构,需要启动二个服务层组件Scanner扫描器,Manager管理器,admnistrator管理者,以及提供Web接口的客户层组件Greebone安全助手。
1)启用服务层组件
系统服务openvas-manager,openvas-scanner一般会在安装后自动启用,而另一个系统服务openvas-admiristrator需要手动启用。其中manager监听的端口为9390,scanner监听的端口为9391,administrator组件监听的端口为9393。
[root@sky ~] # service openvas-scanner status [root@sky ~] # service openvas-manager status [root@sky ~] # service openvas-administrator status [root@sky ~] # netstat -anpt | grep ":939" |
2)启用客户层组件
Greenbone安全助手对应的系统服务为gsad,通常也会自动启动,但默认仅在IP地址127.0.0.1的9392端口监听服务。若要从网络中的其他主机访问,建议将监听地址修改为实际可用的IP地址,或者改为0.0.0.0后再启动服务。
[root@sky ~] # vim /etc/sysconfig/gsad GSA_ADDRESS=192. 168. 1. 254 GSA_PORT= 9392 ...... //省略部分内容 [root@sky ~] # service gsad restart [root@sky ~] # netstat -anpt | grep ":9392" |
除此以外当用户通过浏览器查看扫描报告则,OpenVAS默认以nobody用户身份降权执行,在Linux系统中可能因nobody的登录Shell问题而出现故障。将nobody用户的登录Shell由/sbin/nologin改为/bin/bash后可以避免此故障。
[root@sky ~] # usermod -s /bin/bash nobody [root@sky ~] # grep "^nobody" /etc/passwd |
3.荻取扫描插件
OpenVAS提供了一个名为openvas-nvt-sync的脚本,可用来在线更新插件,如果服务器能够访问官方网站,则直接执行此脚本进行更新即可。否则应通过其他主机下载最新的插件包文件,然后再复制给OpenVAS系统进行离线安装。
[root@sky ~] # cd /var/lib/openvas/plugins/ [root@sky ~] # wget http://www.openvas.org/openvas-nvt-feed [root@sky ~] # tar jxf openvpn-nvt-feed-current.tar.bz2 -C nvt/ |
安装新的插件以后,需要重新启动openvas-scanner服务。当更新的插件数量较多(4万多个)时,再次启动服务时可能需耗费较长时间请耐心等待其加载完毕(极个别插件可能加载出错,可以不用管它)。
[root@sky ~] # service opemras-scanner restart Stopping openvas -scanner : |
4.添加扫描用户
许多插件程序实际上采用了模拟攻击的检测方式,因此执行漏洞检测的过程可能会给目标主机带来压力.考虑到执行漏洞评估的可控制性,使用OpenVAS系统必须进行用户身份验证。
OpenVAS的用户包括两种类型普通扫描用户,管理员用户。管理员除了具有授权的扫描权限以外还能够对OpenVAS系统设置.评估报告配置信息等进行管理、下面分别介绍这两种用户的添加方法。
1)普通扫描用户
添加一个名力tsengya的普通用户,允许针对192.168.1.0/24、172.16.1.0/24这两个网段中的主机进行漏洞检测。若不设置授权规则直接按Ctrl+D提交确认,则用白默认不受限制(允许扫描任意目标)。
[root@sky ~] # openvas-adduser Login:ysengyia accpet 192.168.1.0/24 accept 172.16.1.0/24 default deny |
2)管理员用户
OppnvAS的管理员用户来自于普通的扫描用户,只要添加一个isadmin的开关文件,就可以将一个普通用户升级为管理员用户,例如将上一步添加的tsengyia用户作为管理员账号,可以执行以下操作:
[root@sky ~] # touch / var/lib/openvas/users/tsengyia/sadmin |
用户添加以后,账户及授权信息保存在/var/lib/openvass/users目录下,每个用户对应一个独立的文件夹。若山村除指定的扫瞄用户,只要将对应的文件夹删除即可,或者使用openvas-rmuser工具来删除。
[root@sky ~] # openvas-rmuser lisi |
2.3 执行漏洞评估任务
在客户机中使用浏览器连接到OpenVAS系统的gsad服务(9392端口);若使用Greenbone桌面套件程序则连接到openvas-marager服务(9390端口)。下面以Firefox浏览器为例学习如何执行漏洞评估任务,关于Greerbone桌面套件的使用,其操作思路和方注基本相似。
(1)连接到OpenVAS服务器、
![](https://images0.cnblogs.com/blog/747908/201505/271346152195429.jpg)
以指定的扫描用户(如tsengyia)登录以后将进入到Greenbone安全助手的主操作界面,如图所示。需要注意的是客户机与服务器的系统时间不能相差太远,否叫可能遇到“Session has expired.Please log magain“错误而登录失败。
(2)定义扫描目标。
单击左侧Confguratlon导航栏下的Targets链接,在右侧表单中填写将要评估的目标主机名IP地址等相关信息,然后单击”Create Target“技钮,如图所示,即可定义扫描目标。
![](https://images0.cnblogs.com/blog/747908/201505/271346165942416.png)
(3)创建扫描任务。
单击左侧ScanManagement导航栏下的NewTask链接在右侧表单中设置任务名称,扫描目标,扫描配置使用默认的”Fullandfast”快速完全扫推然后单击,”CreateTask“按钮即可创建一个新的扫描任务,如图所示。
如果需要做更深入完整的漏洞评估可以选用“Full and very deep”等其他扫描配置,也可以通过左侧Confguralion导航栏下的ScanConflgs来自建扫描配置再使用。
![](https://images0.cnblogs.com/blog/747908/201505/271346170485488.png)
(4)执行扫描查看评估报告。
单击左侧ScanManagement导航栏下的Tasks链接,找到指定的扫描任务条目,然后单击右侧的
按钮,就可以执行漏洞评估的扫描过程了,如图所示;扫描过程中可随时単击
按钮刷新状态,以便查看完成进度;扫描结束以后,Status列将显示为“Done”,同时右侧会提示存在的风险级别(如High Medium等)。
![](https://images0.cnblogs.com/blog/747908/201505/271346174236302.jpg)
![](https://images0.cnblogs.com/blog/747908/201505/271346179855173.jpg)
![](https://images0.cnblogs.com/blog/747908/201505/271346183605988.jpg)
若要查看详细的安全评估报告,可以单击右侧的
按钮,然后再次单击报告操作右侧的
按钮。其中,摘要信息给出了各级别安全风险的个数如图所示,页面下方进一步给出了各种安全问题的详细分析结果。若要下载评估结果可以选择报告格式并单击右侧的下载按钮进行下载。
![](https://images0.cnblogs.com/blog/747908/201505/271346189547804.jpg)
![](https://images0.cnblogs.com/blog/747908/201505/271346193919403.jpg)
![](https://images0.cnblogs.com/blog/747908/201505/271346198609246.jpg)
以其中的一个Web安全漏洞为例,如图所示,报告中表明:目标主机上运行的Apache服务容易遭受命令注入式攻击,风险等级为高建议的解决办法是将httpa升级到2.2.15以上版本。
![](https://images0.cnblogs.com/blog/747908/201505/271346204542063.jpg)