介绍
协议和服务器房间涵盖了许多协议:
- 远程登录
- HTTP协议
- 文件传输协议
- 邮件传输协议
- POP3
- IMAP
实现这些协议的服务器会受到不同类型的攻击。仅举几例,请考虑:
- 嗅探攻击(网络数据包捕获)
- 中间人 ( MITM ) 攻击
- 密码攻击(身份验证攻击)
- 漏洞
从安全的角度来看,我们始终需要思考我们的目标是保护什么;考虑安全三元组:机密性、完整性和可用性 ( CIA )。保密是指使通信内容可供预期各方访问。完整性是指确保发送的任何数据在到达目的地时都是准确、一致和完整的。最后,可用性是指我们需要时能够访问服务。不同的政党对这三者的侧重点有所不同。例如,保密性是情报机构的最高优先级。网上银行将最注重交易的完整性。对于任何通过投放广告赚钱的平台来说,可用性是最重要的。
知道我们正在保护机密性、完整性和可用性 ( CIA ),攻击的目的是造成披露、更改和破坏 ( DAD )。下图反映了这一点。
这些攻击直接影响系统的安全。例如,网络数据包捕获违反机密性并导致信息泄露。成功的密码攻击也可能导致信息泄露。另一方面,中间人 ( MITM ) 攻击会破坏系统的完整性,因为它可以更改通信的数据。我们将在这个房间重点关注这三种攻击,因为这些攻击是协议设计和服务器实现不可或缺的一部分。
漏洞的范围更广,被利用的漏洞对目标系统的影响也不同。例如,利用拒绝服务(DoS)漏洞可能会影响系统的可用性,而利用远程代码执行(RCE)漏洞可能会导致更严重的损害。值得注意的是,漏洞本身就会产生风险;仅当漏洞被利用时才会造成损害。我们不会在这个房间讨论漏洞,因为他们有自己的模块,漏洞研究。
该会议室将重点讨论如何升级或替换协议以防止泄露和更改,即保护传输数据的机密性和完整性。我们将推荐涵盖其他主题的其他模块。
此外,我们引入Hydra来查找弱密码。
嗅探攻击
嗅探攻击是指利用网络抓包工具来收集目标的信息。当协议以明文方式通信时,第三方可以捕获交换的数据进行分析。如果数据在传输过程中未加密,则简单的网络数据包捕获可能会泄露信息,例如私人消息的内容和登录凭据。
只要用户具有适当的权限( Linux上的 root 权限和 MS Windows 上的管理员权限),就可以使用以太网 (802.3) 网卡进行嗅探攻击。有许多程序可用于捕获网络数据包。我们考虑以下几点:
- Tcpdump是一个免费的开源命令行界面 ( CLI ) 程序,已被移植到许多操作系统上。
- Wireshark是一款免费的开源图形用户界面 (GUI) 程序,适用于多种操作系统,包括Linux、macOS 和 MS Windows。
- Tshark 是Wireshark 的CLI替代品。
有几种专门的工具可以捕获密码甚至完整的消息;然而,这仍然可以通过 Tcpdump 和 Wireshark 来实现,但需要付出一些额外的努力。
考虑一个用户使用POP3检查他的电子邮件。首先,我们将使用 Tcpdump 尝试捕获用户名和密码。在下面的终端输出中,我们使用了命令sudo tcpdump port 110 -A
。在解释此命令之前,我们应该提到此攻击需要访问网络流量,例如通过窃听器或具有端口镜像的交换机。或者,如果我们发起成功的中间人 ( MITM ) 攻击,我们就可以访问交换的流量。
我们需要sudo
因为数据包捕获需要 root 权限。我们希望将捕获和显示的数据包数量限制为与POP3服务器交换的数据包数量。我们知道POP3使用端口 110,因此我们使用port 110
.最后,我们希望以 ASCII 格式显示捕获的数据包的内容,因此我们添加了-A
.
pentester@TryHackMe$ sudo tcpdump port 110 -A
[...]
09:05:15.132861 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [P.], seq 1:13, ack 19, win 502, options [nop,nop,TS val 423360697 ecr 3958275530], length 12
E..@.V@.@.g.
...
......n......"............
.;....}.USER frank
09:05:15.133465 IP 10.20.30.148.pop3 > 10.20.30.1.58386: Flags [.], ack 13, win 510, options [nop,nop,TS val 3958280553 ecr 423360697], length 0
E..4..@.@.O~
...
....n....".........?P.....
...i.;..
09:05:15.133610 IP 10.20.30.148.pop3 > 10.20.30.1.58386: Flags [P.], seq 19:43, ack 13, win 510, options [nop,nop,TS val 3958280553 ecr 423360697], length 24
E..L..@.@.Oe
...
....n....".........<-.....
...i.;..+OK Password required.
09:05:15.133660 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [.], ack 43, win 502, options [nop,nop,TS val 423360698 ecr 3958280553], length 0
E..4.W@.@.g.
...
......n......".....??.....
.;.....i
09:05:22.852695 IP 10.20.30.1.58386 > 10.20.30.148.pop3: Flags [P.], seq 13:28, ack 43, win 502, options [nop,nop,TS val 423368417 ecr 3958280553], length 15
E..C.X@.@.g.
...
......n......".....6......
.<.....iPASS D2xc9CgD
[...]
在上面的终端输出中,我们删除了不重要的数据包,以帮助您更好地关注重要的数据包。特别是,用户名和密码均在各自的数据包中发送。第一个数据包明确显示“USER Frank”,而最后一个数据包则显示密码“PASS D2xc9CgD”。
我们也可以使用 Wireshark 来达到相同的结果。在下面的 Wireshark 窗口中,我们可以看到我们已pop
在筛选字段中输入。现在我们已经过滤了我们感兴趣的流量,我们可以看到用户名和密码被捕获。