2.5 Linux服务发现工具
在Linux操作系统中,主要有两个“被动式扫描器”,分别是airodump-ng和Kismet。airodump-ng程序是一款由轻量级的C语言编写的扫描器程序,是在Aircrack-ng组件中捆绑的一个小套件。该程序只提供了一个最简陋的用户界面和最基本的GPS支持,并且在所捕获数据包列表中,也没将GPS位置加上去(估计以后会加上去)。
Linux上的另外一个选择就是Kismet扫描器。这是一款全功能的,基于“客户机/服务器”架构的,运行802.11标准监测框架的应用程序。程序界面使用了插件和curses图形接口[1]。与airodump-ng相比,Kismet最明显的一个优势是,它输出的该数据包捕获文件“.pcap”中带有GPS位置标签,所以将来离线分析的时候,仍然能方便地确定地址位置。
2.5.1 airodump-ng工具
因为airodump-ng程序是一个轻量级的小程序,所以我就也顺手找一个名为“Wi-Fi小菠萝”(Wi-Fi Pineapple)的小工具配合其进行演示。“Wi-Fi小菠萝”也是以“小”著称:一是功能简单,只提供最基本的功能;二是个头也很小。可能是由电池进行供电的路由器,软件在Linux操作系统和OpenWrt系统[2]上运行。由Hak5组织[3]创建了“Wi-Fi小菠萝”的主板,详见图2-17所示;最新的版本是第5版(称为“Mark V”),有两个无线天线的接口,一个是通过USB接口,另一个是自定义的Web界面。这两个接口都允许用户运行专用模块(即被称为“注入”的模块)。
可以说,Web界面是用PHP网络编程语言编写的,PHP服务器在后台运行,即使我们不用,它也会耗掉一部分本来就不多的资源。在下面的例子中,我们打算扫描“Wi-Fi小菠萝”的命令行。开始时,首先配置“Wi-Fi小菠萝”处于在线状态,以便它可以下载一个包文件,并且以root管理员的身份登录到Linux系统中。(如果在这些操作中有疑问,那就请参阅“Wi-Fi小菠萝”的产品手册。)
1)首先,我们停掉“Wi-Fi小菠萝”的Web服务器,以便让出一些资源方便后面的操作。
2)其次,我们安装“多分屏程序”(tmux)、“GPS的守护程序”(gpsd)和“GPS的客户端”(gpsd-client)。
⊗ 注意
在上述命令中,“--dest”参数表示将程序安装到外部的SD卡上,以便节省设备内部的资源。
3)下一步,我们可以安装确保Linux能够识别出GPS设备上BU-353芯片的驱动程序。
♥ 提示
⛳网站
tmux是一款新的Linux屏幕替代工具。该程序可以将你现在使用的终端屏幕分割成两个或多个部分,每一个称为一个“子屏幕”,每个子屏幕可以分别和Linux进行“关联”(attach)或“解除关联”(detach),且互不影响。当然每个屏幕通常都是使用命令行的操作方式。作者本人的tmux配置就是经过对“Wi-Fi小菠萝”等嵌入式系统操作时优化出来的“多分屏”模式。在随后的几个截图中,也可以看到这个效果。这其实只是tmux的一个配置文件,如果用户对这种效果感兴趣,可以从本书配套网站上下载试用。下载地址是http://www.hackingexposedwireless.com/files/02/tmux.conf。下载后,按上述步骤2的方式,在“Wi-Fi小菠萝”上运行即可。如图2-18所示,系统被分为上下两个屏幕,每个屏幕就是一个终端,二者各自的运行互不影响。
4)上传好tmux,就可以运行该程序了。对于那些不习惯写备忘录的用户来说,tmux的多分屏效果会让你在各个“分屏幕”之间相互参照,其效果会好上不止一百倍。
5)随后,我们就看到屏幕被tmux分成多块。使用Ctrl+B快捷键,然后再按一个半角的双引号键(double quote),就可以对系统的屏幕分区进行配置,如果使用Ctrl+Q快捷键,然后再按一个减号(single dash),系统就会保存、生效,并退出。
然后就可以分别运行“GPS的守护程序”gpsd和cgs(该程序是由前面的“GPS的客户端”安装包安装后生成的程序)。很快,我们就可以在运行程序的“分屏幕”中读到GPS状态。
运行命令如下所示。
在“分屏幕”中读到的GPS状态如图2-19所示。由图可知:纬度(Latitude)是北纬38.886708,经度(Longtidude)是西经77.096222。
6)再下一步,我们在外部SD卡上创建一个目录,以便保存随后捕获的“.pcap”文件。
7)然后,我们创建一个新的tmux的“分屏幕”,并运行命令,使无线网卡进入到“监测模式”,然后运行airodump-ng程序,如图2-20所示。在这个例子中,我们设定wlanl为捕获数据包的无线网卡。如果通过Wi-Fi连接到“Wi-Fi小菠萝”上,切记一定要选择不使用ssh的无线接口,以免“以己之矛,攻己之盾”,即自己的“Wi-Fi小菠萝”监听自己和“Wi-Fi小菠萝”之间的数据。
8)最后一步,就是我们开始运行airodump-ng,运行效果类似于图2-21。
⊗ 注意
若要airodump-ng能读取GPS的数据,则至少需要airodump-ng 1.2版本,或之后更高的版本。
airodump-ng的地图可视化
实际上,airodump-ng所创建的文件格式,与Kismet早期的“.netxml”与“.csv”格式是兼容的。但当我们习惯于通过Google Earth实现地图可视化浏览时,问题就来了,Google Earth并不认可这两种格式,而是使用KML格式。一个违反常规的办法就是通过另一个叫作GISKismet的软件作为中转,实现文件格式的转换。
格式一旦转换成功,那么原来枯燥单调的数字就可以变成Google Earth的可视化效果,因此,不妨将这种转换程序称为“Kismet可视化器”(Kismet visualizer)。多年来,已有多套“Kismet可视化器”脚本程序被编写出来,其作用都是将Kismet的输入格式转换为KML格式,或其他地图能识别的格式。但它们中的大多数最终都被弃用了,不过,最近有一个被称为GISKismet的“Kismet可视化器”出现,有望改变这种状况。这款转换器在2009年ShmooCon[4]大会中首次推出,可以将最新版的Kismet输出文件格式转换为KML格式。
♥ 提示
很多现代检测工具直接将GPS信息连同数据包内嵌到一种称为“数据包通存信息”[5](Per-Packet Information,PPI)格式的文件中,在上述各节中,其实,对于解决Kismet问题的老方法来说,这是一种更好的办法,因为很多扫描器都支持这一格式,所以转换为这种格式,可以供airodump-ng或其他的扫描器使用。
GISKismet软件 GISKismet可以从http://trac.assembla.com/giskismet/网站上下载。该文件的输入格式是“.csv”或“.netxml”。这两种格式一般是由Kismet或airodump-ng生成的。GISKismet将这得到的数据写入到SQLite数据库中,然后就可以通过各种灵活的SQL命令对战争驾驶生成的数据进行查询。GISKismet程序预装的Kali系列的Linux操作系统中,主要用于处理从“Wi-Fi小菠萝”中采集的数据,以便将其可视化,如图2-22所示。
一旦你完成了上述操作,在当前的目录下,你就会看到一个SQLite数据库文件,该文件的名称是wireless.dbl。
到目前为止,我们只是将由anrodump-ng生成的“.csv”格式或“.netxml”格式导入到了数据库中,下面用几个例子说明如何使用数据。下面开始导出所有的网络数据,这些数据都是在这些战争驾驶中搜集的数据,导出的格式是KML格式。
下一步,在这些数据中找到那些“基本服务集标识”名为“Linksys”,未使用任何加密算法的无线路由器,命令是:
上面的例子只是通过SQL命令查询扫描结果能力的一次牛刀小试,当亲自测试过大量实例以后,你就可以通过这种方式做大量渗透测试(pen-test),并很容易地将可以作为攻击目标的主机从不能作为攻击目标的主机中分离出来。图2-23是通过GISKismet的输出文件生成的Google Earth可视化实例。
2.5.2 Kismet工具
Kismet不止是一个扫描工具,它其实已然是一个802.11协议数据包捕获和分析的框架。事实上,Kismet这个名字本身就是模棱两可的,这个名字的真实来源是这个工具包中两个二进制可执行文件的名字:kismet_server和kismet_client,而所谓“可执行的Kismet”其实仅仅是一个“外壳”(shell)的脚本。在该脚本中分别调用两个程序,并各自以典型的配置开始运行。Kismet的框架体系显示如图2-24所示。
⚡ Kismet(被动型扫描器)
在GPS地理数据采集的时候,Kismet程序和airodump-ng程序一样,都是同另一个名为GPSD的程序进行通信,而GPSD程序再同实际的GPS硬件建立会话、采集数据。GPSD通过一个串行端口连接到GPS全球定位系统装置上,并且通过一个TCP连接(默认的2947端口)将数据提供给任何其他的应用程序。GPSD带有许多发布版本,易于安装(在Linux下,安全命令是“apt-get install gpsd gpsd-clients”)。一旦安装好,你只需要通过正确的参数就可以和硬件建立会话,如图2-25所示。
如果在使用GPSD中有问题,该程序支持通过“-D(debug,调试模式)”和“-N(no background,不要背景)”等两个有用的调试选项在调试状态下进行排查。例如,“gpsd–D 2–N–n/dev/ttyUSB0”会让你看到实时状态下正在发生什么事情。
♥ 提示
最近版本的GPSD服务程序在默认的情况下,只允许本地客户端进行连接。如果你通过网络连接GPSD的时候遇到困难,可以增加“-G”参数尝试运行。
你可以通过telnet命令,或netcat命令,连接到GPSD的TCP端口上,下面的命令可以连接到GPSD,并验证该连接是否正常。
♥ 提示
在与BU-353或类似的GPS设备进行通信的时候,如果将现在的二进制协议格式转变为“国家海洋电子协会”(NMEA)协议格式,你可以通过“gpsctl-f-n-s 9600/dev/ttyUSB0”进行强制转换。
1.配置Kismet无线网络
要配置Kismet无线网络,主要需要将无线网卡设置为“监测模式”,因为一台主机可能有多个网卡,所以还要在监测之前先确定使用哪个网卡。对于网卡的识别上,Kismet可以很好地完成对无线网络接口的自动检测工作,然后提示你有新的信息设备源加入。下面要做的就是先确定要通过哪个无线网络的物理接口实施数据包的捕获操作,然后将这个物理接口配置为“监测模式”,这是一个好主意。在下面的例子中,我们先删除关联到物理接口phy0上的“管理模式接口”wlan0,然后用一个名为mon0的带有“监测模式”的无线网络接口代替,这就意味着实际的物理接口phy0使用的是带有“监测模式”的mon0了。
2.运行Kismet
现在你已经在笔记本电脑上配置好了GPS和无线网卡,那么是时候启动运行Kismet了。Kismet将在启动Kissmet的目录中创建一连串的多个文件,所以建议在运行前先创建一个Kismetdumps目录,然后在这里运行Kismet,使其新创建的文件都在这个新建的目录中,以减少当前目录下的文件数,避免杂乱无章的现象。
一旦开始运行Kismet,你会被提示是否要先运行一下Kismet服务器(即kismet_server程序),单击鼠标表示同意,这时又会提示你增加一个“数据采集来源”(source)。选择前面配置为“监测模式”的无线接口mon0作为“数据采集来源”,然后单击“添加”按钮以完成“数据采集来源”的添加操作,如图2-26所示。
新的Kismet很大程度上是菜单驱动。如果你想做某件事,按下“~”键就可以访问菜单。在这里,你可以改变相当多的显示设置。在网络名称上按“回车”键,就可以显示“网络详细视图”(Network Detail View)对话框(如图2-27所示),在这里显示了一个给定的网络的详细信息。
3.Kismet生成的文件
默认情况下,Kismet程序运行的目录中会生成以下五种文件:
·.alert:报警的纯文本日志文件。Kismet将对特别关注的事件发送警报,例如Metasploit程序发现了一个疑似的驱动程序漏洞。
·.gpsxml:XML格式的,包含有每个包和GPS位置的日志文件。
·.nettxt:纯文本格式的网络信息,非常适合于人们阅读。
·.netxml:XML格式的网络信息,非常适合计算机读取。
·.pcapdump:通过pcap捕获的实时数据通信数据包保存文件。如果设置了PPI选项,则文件中包含有PPI格式的文件。
- curses是一个在Linux/UNIX下广泛应用的图形函数库。——译者注
- OpenWrt是基于Linux操作系统的嵌入式开发平台,以高度模块化、高度自动化,拥有强大的网络组件和扩展性而著称。——译者注
- 个主要从事无线网络安全检测的黑客组织。——译者注
- ShmooCon是一个美国黑客大会的名称。每年举办一次,一般每次会议有40个议题,主要讨论计算机安全和计算机文化。——译者注
- 这是一个由CACE公司(Wireshark公司的母公司,Riverbed公司的前身)制定的一种专为无线网络数据包捕获后保存的格式,大多数类似功能的商业软件都支持该格式。——译者注
本书评论