自己动手进行安全审计 当一回白帽***

http://netsecurity.51cto.com  2009-03-13 10:11  黄永兵  51CTO.com  我要评论(0)
  • 摘要:做一次完全的安全审计对于一个企业而言,往往感觉力不从心,或许是安全公司开价过高,或许担心最终的安全审计报告水份过多,本文想从几个方面利用开源软件来做一次比较彻底的安全审计,不能保证每一处都审计到,至少比问起问题时拍脑袋强。
  • 标签:安全审计  暴力破解  ***
【51CTO.com 独家特稿】在你的组织中保证服务器、PC和笔记本电脑的安全是一件很重要的工作,一旦安全环境遭受破坏,存储在这些设备上的重要数据就可能被破坏或被修改掉,可能会使客户丧失信心,进而丢掉销售订单。试问现在你所管理的企业网络真的安全吗?你有信心做肯定回答吗?如果你还不能确定回答,那何不来一次安全审计,用事实来说话吧。
做一次完全的安全审计对于一个企业而言,往往感觉力不从心,或许是安全公司开价过高,或许担心最终的安全审计报告水份过多,本文想从几个方面利用开源软件来做一次比较彻底的安全审计,不能保证每一处都审计到,至少比问起问题时拍脑袋强。
现有保护措施
在开始审计前,还是先弄清楚自己网络环境的安全保护措施,归纳起来,一般的中小型企业都会有:
(1)一个防火墙,将企业内部网络与互联网进行隔离。
(2)一套***防御系统(IPS)/***监测系统(IDS),发现***行为时自动报警。
(3)一套恶意软件扫描程序,扫描网络中的恶意软件。
(4)对网络和计算机的访问使用密码进行验证,预防无密码直接访问。
(5)一套杀毒软件,或单机版防病毒软件,保证查杀流行病毒。
说不定你的网络中也许还没有这么多的安全保护措施,那更应该做一下安全审计了。即使配有这些保护措施,也可能存在安全隐患,如:
(1)防火墙本身发现了漏洞,而你却未及时打上补丁。
(2)IPS/IDS配置不当,没有发挥作用或引起负面影响。
(3)保护网络和计算机资源的密码很弱智,如123456。
(4)杀毒软件很久都没有升级了,对最新的病毒无法感知。
(5)你的IT架构中可能存在你还没有发现的其它漏洞。
***测试
首先从***测试说起吧,它可以发现现有的安全保护措施是否真的能够保护整个网络,实际上***测试就是把自己当作***,通过一些******手段向网络发起模拟***测试。
***测试通常包括几个步骤:
(1)信息收集
使用搜索引擎和其它资源发现公司尽可能多的信息,如公司名称,员工姓名等。
(2)端口扫描
使用自动的端口扫描程序找出网络中活动的计算机及运行的服务,最好是发现有漏洞可利用的服务。
(3)侦查
从目标服务器上探测各种信息,如运行的程序,后台服务。
(4)网络嗅探
发现在网络上传输的用户名和密码。
(5)密码***
破解密码,或者猜测密码。
由于保护网络和***网络是两个不同的领域,在进行***测试时一定要转换到***的思维角度。最好的***测试是聘请安全专家进行,但这通常需要付费。当然,出于成本考虑,可以选择***测试软件,它在网络中搜索漏洞,在某些时候还可以自动发起模拟***。使用软件进行***测试的好处时,你可以每个月甚至每周进行一次测试。
说了这么多,那如何执行***测试呢?首先需要准备一台笔记本电脑,可以连接到无线网络,也可以连接到有线网络。然后就是测试软件了,本文讲述的软件大部分都是开源的,都可以在Linux系统中运行,最简单的方法就是下载一个LiveCD,本文使用的就是一个安全Linux发行版BackTrack,可以去www.remote-exploit.org下载。创建LiveCD的步骤就不叙述了。这个发行版包含了许多***测试工具,下面就举几个例子:
使用db_autopwn进行***测试
db_autopwn是一个自动***测试工具,它可以测试网络中的Windows、Linux和Unix计算机漏洞,实际上它是Metaspoit Framework软件的一部分。
使用db_autopwn前首先要扫描网络中的计算机,扫描就可以使用大名鼎鼎的Nmap了,使用扫描获得的信息,db_autopwn会使用Metaspoit***库特征匹配已知的漏洞,并自动使用对应的***程序发起***,如果成功就会显示“pwn”,这个时候就获得一个系统shell了。
db_autopwn这个工具好处多多,在***界,它是广为使用的工具了,而且它是免费的,发现了漏洞后,你就可以对症下药,及时打好补丁,然后再进行测试。但在使用时也要注意,一是如果服务没有运行在默认的端口上,那它是不能发现漏洞的,二是可能会引起意外,如将服务器整崩溃。
下面来看一下具体的执行步骤:
# cd /pentest/exploits/framework3  (进入Metasploit Framework文件夹)
# ./msfconsole (启动Metasploit)
# load db_sqlite3
#db_create Nmapresults  (创建数据库存储扫描结果)
# db_Nmap [target] (扫描目标主机,使用真实的目标主机ip地址替换这里的[target])
# db_autopwn -t -p -e (尝试***默认端口上的服务)
# sessions –l (查看有漏洞的计算机)
# sessions –i 1 (控制有漏洞的计算机,这里的1表示只控制一台)
然后就会返回一个命令行界面,如:
[*] Starting interaction with 1...
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>
使用Nmap扫描网络
db_autopwn通常是那些没什么技术的人使用,我们一般称其为“脚本小子”,而真正的高手在尝试了一种方法外,还会尝试其它方法。
***者常常是先扫描目标网络,看哪些计算机连接到网络上的,打开了什么端口,通常他们使用的工具就是Nmap,实际上前面讲述db_autopwn时也使用到过,Nmap本身是个命令行工具,但在BackTrack3中已经集成了一个图形化Nmap工具,即Zenmap。
在BackTrack3任务栏中的输入框中输入zenamp启动Zenamp,然后在目标地址处输入目标系统的IP地址或IP子网范围,如192.168.1.*,然后再选择一个预置扫描选项,保留默认的强度扫描也可,最后点击扫描按钮开始扫描,过几分钟就有结果了。
在界面的左侧列表中显示的是接入到网络中的主机,并以不同图标表示不同操作系统类型,右侧列表中显示了所选主机开放的端口及对应的服务,如果你看到3389端口开放,那多半是一台Windows操作系统,开放了终端服务,针对这些开放的端口都有成套的***程序。
使用Wireshark嗅探网络
Nmap可以给你扫描出一个清晰的主机列表和开放的端口,但它不能提供在网络上传输的数据包内容和敏感信息,这个时候就需要请出同样是大名鼎鼎的Wireshark了,以前它的名字是Ethereal,它是一个开源的网络协议分析器,说的通俗点就是网络嗅探器。
在使用Wireshark开始嗅探之前,先要选好测试机位于网络的位置,因为交换机只会将数据发送到目标主机连接的端口上,如果位置没有找好,那可能嗅探半天也没什么收获。因此开始之前,先熟悉并分析一下你的网络情况和硬件配置情况,注意有的Hub的工作机制也和交换机一样了,所以不要认为随便接入一台Hub连上就可以开始嗅探了。
为了使测试变得顺利可行,你最好在网络部署一台具有监视端口的交换机,因为监视端口会捕获到所有通过交换机的数据包。***都喜欢使用Wireshark,因为它可以嗅探到用户名和明文密码,很多人都喜欢将密码设置为和用户名一致,或者在登陆多个系统时使用同一个用户名,这样就给了***以可乘之机。Wireshark可以嗅探大部分网络应用,包括MSN通讯内容。
下面是我捕获到的一个pop通讯内容,其中用户名和密码都是明文,呵呵,知道下一步该怎么办了吧。
图1
使用Hydra检查密码安全
***有许多手段获取到电子邮件用户名,比如搜索,从你企业的网站上获得,或者直接打电话询问你,时代发展到今天,已经很少有人直接使用用户名作为密码了,但就是有那么一些人还在这么干。
Hydra就是一款用于检查密码安全性的工具。
在BackTrack 3中的具体操作步骤如下:
(1)在BackTrack 3的启动命令输入框中输入xhydra启动图形界面的Hydra。
(2)然后从协议列表中选择一个协议,它支持很多种协议,如pop3、telnet、ftp、VNC、smtp、cisco auth等。
(3)选择一个目标主机,或者输入IP地址。
(4)切换到密码标签页,在用户名输入框处输入一个已知的用户名,如果不知道,可以事先定义好的用户名字典文件进行猜测,不过我不建议你这么做,除非你的时间多的是。然后在密码输入框中输入你猜测的密码,一般用于弱密码监测,通常使用密码字典进行检查,那就在密码列表输入框中指定密码字典文件的位置。
(5)切换到调整标签页,选择登陆尝试次数,注意这里通常不要设置超过5了,因为很多系统已经设置为超过5次登陆失败就锁定用户。
(6)切换到开始标签页,点击开始启动***。如果***成功,会显示一条成功的消息,密码当然也就包括在消息内了。
使用Offline Attacks发现弱密码
用户登录服务器输入密码后,密码被传递给一个散列函数,散列函数将其转换成一个特殊的字符串(这个转换过程是不可逆的),与存储密码散列字符串的文件中对应的字符串进行对比,发现完全匹配则允许登陆,不匹配在返回错误提示。
从这个过程可以看出,要想暴力破解一个强密码还是很困难的,但弱密码就不一样了。***在得手存储密码散列字符串的文件后,开始着手进行离线破解,即进行弱密码检测,离线破解比在线破解的速度就要快出许多,而且服务器还不知道有人已经正在视图破解它的登录密码,离线破解工具有很多,本文以常用的John the Ripper为例,它也包含在BackTrack 3中了,不过它还没有图形界面,只是一个命令行工具,但可别小瞧它哦。
下面来看一个例子:
(1)将操作系统的密码文件(如passwd,shadow)拷贝到/usr/local/john-1.7.2/文件夹下。
(2)进入john-1.7.2目录,输入:

unshadow /etc/passwd /etc/shadow > Password.txt
(3)然后
john --show Password.txt
这里使用了--show参数,目的是直接显示出破解的密码,如果不加参数只有打开存储密码的文件john.pot查看了。
使用aircrack-ng检查无线安全
最近几年无线网络的发展趋势非常惊人,许多小型企业靠一台无线路由器加几块无线网卡就实现了整个办公环境的无线网络改造,无线网络的成本也越来越低,相信未来几年无线网络会占据企业网络的半壁江山,但无线网络的安全却没有引起大家足够的重视,目前来看主要有两大威胁:
(1)无线访问点未设置访问密码,只要在无线覆盖区域内的任何人都可以直接接入该无线网络。
(2)***可以模仿企业无线访问点制造一个假的无线访问点(姑且称其为流氓访问点),诱使毫无经验的用户连接到该访问点,进行骗取访问密码。
还有一种可能是***架设的流氓访问点不设置访问密码,有的人还以为捡了个便宜,可以免费上网,但殊不知,你上网的同时也被监听了,所有通过该流氓访问点的信息都有可能被***截取。
无线网络的安全保护现在看起来似乎就只有一个访问密码,那做好这个访问密码的保护工作就显得至关重要了,目前市面上的许多无线路由器都支持多种加密方式,如WPA,WPA2和WEP,WPA是非常安全的,WEP并不安全,但很多人却就是喜欢使用WEP,现在只要在搜索引擎中简单搜索一下就可以找到大量的破解WEP的方法。本文以BackTrack 3中的无线网络安全检查工具包aircrack-ng为例进行解说。
首先使用aircrack-ng工具包中的airodump-ng扫描无线访问点,开始之前要将无线网卡置为监视模式:
#airmon-ng stop ath0 
#airmon-ng start wifi0
#airodump-ng ath0
Airodump-ng会显示它扫描到的无线访问点,即使在配置无线路由器时禁用了广播,它也能够扫到。扫描结果包括了BSSID(无线路由器的MAC地址)、CH(无线信道)、ESSID(网络名,如果为空,表示设备禁用了广播功能)、STATION(连接设备的MAC地址)。
如果你的无线网络很大,部署了多个无线访问点,那你应该将测试电脑多移动几个位置试试。下面来看看如何破解WPA密码:
#airodump-ng -c 2 --bssid 00:14:6C:61:71:8A -w wpacapture ath0
这里的-C 2指的是信道2,--bssid 00:14:6C:61:71:8A指的是无线访问点的MAC地址,使用它来确定具体破解哪台无线路由器,-w指定捕获wpa握手数据包,捕获到数据包后就要使用字典来进行暴力破解了。
#aircrack-ng -w wordlist.txt -b 00:14:6C:61:71:8A wpacapture*.cap
如果成功就是显示一条破解成功的消息,并显示出密码。如果你发现了你的网络密码,那就该重新设置一个新的访问密码了。
小结
本文通过借助第三方开源软件实现了部分安全审计工作,但这仅仅是安全审计的小部分内容,不过如果你是一名负责网络安全的技术人员,那本文或许可以给你一些启发。
【51CTO.COM 独家特稿,转载请注明出处及作者!】

0

收藏

warin

15篇文章,2W+人气,0粉丝

Ctrl+Enter 发布

发布

取消