利用蜜罐端口(Honeyports)对抗端口扫描(网络欺骗技术)
大家好!我是John Strand。在本视频中,我们将讨论绊线蜜罐端口(tripwire Honeyports)。这是一个用于ADHD的实验室环境,也是我们在Wild West Hackin’ Fest和Black Hat课程中使用的虚拟机。本文将重点介绍如何在计算机系统上创建一个端口,一旦对手与该端口交互,就会自动将攻击者的IP地址加入黑名单。
在本例中,所有使用说明都位于桌面上的ADHDusage.HTML文件中。我们使用Annoyance工具,具体关注HoneyPorts功能。如前所述,HoneyPort的设计目的是:如果对手实际与特定端口交互,它将自动黑名单攻击者的IP地址。
许多人可能会担心:“攻击者可以简单地伪造连接,从而导致黑名单并DoS整个环境。”但这完全不是其工作原理,也根本不会发生。这太疯狂了。让我解释原因。
观察TCP/IP协议:TCP/IP三次握手包括我向您发送一个SYN包。如果该端口开放,您将回复SYN-ACK。初始序列号(initial sequence numbers)是32位长,意味着有约42.7亿种可能值。我发送带有初始序列号的SYN,您通过将其递增1来确认该序列号,并启动另一个序列号。然后我通过递增1确认该序列号,之后我们通过一系列ACK进行通信。
这意味着如果攻击者试图欺骗实时系统,他们必须在被欺骗系统回复重置之前实时猜测一个32位数。这非常困难,并非不可能,但从数学上看极不可能。在Honeyports场景中,它们仅在建立完整连接到端口时触发。
让我们开始操作。再次遵循ADHD的说明,我将使用终端。首先CD到OPT目录,按照说明操作。放大显示。
我们将CD到opt/honeyports/cross-platform。这是Security Weekly的Paul Asadoorian编写的版本。进入Honeyports后,我们将运行version 04a.py。使用python2,执行./honeyports,输入./version4.a.py并按回车。
按回车后,它会报错,具体是要求指定端口。这很棒,说明Paul创建的脚本中的Honeyports很灵活,我们可以创建任何要监听的端口。按上箭头,我指定端口2222(再次毫无创意)。需要加上-P参数。好了,现在它在端口2222上监听。
我又犯了一个错误。总是这么多错误,大家。
我将再次终止它,并以root身份运行。原因是,当有人建立连接时,Honeyports会在IPtables中创建规则。要创建IPtables规则,必须具有root权限。
现在我用Sudu运行:python2 honeyports.py,指定端口。让我们连接它。打开另一个终端,简单地netcat到端口2222。连接到127.0.0.1:2222,按回车。它显示:“Thank you for connecting.”
如果我终止这个并再次尝试连接,可以看到它不工作了。连接已死,因为该系统已被黑名单。如果我快速切换为root(像兔子或羚羊一样快),执行IPtables(哦,我已经是root了)。
执行IPtables -L,列出IPtable规则。检查输入链(input chain),可以看到localhost.com。一旦localhost.com尝试连接到此计算机系统,它将用ICMP端口不可达消息拒绝,这是一种有趣的协议切换和干扰方式… 这是TCP/IP幽默,至少我觉得有趣。
它基本上会重定向并丢弃来自该特定计算机系统的任何流量。我们还可以在HoneyPorts中看到它创建了规则。可以执行-P打印规则,最终可以终止或刷新规则。执行IPtables -F,将刷新所有已创建的规则。现在如果我列出规则,可以看到没有输入规则了,所以我们删除了该特定规则。
再次强调,这不会破坏您的环境。攻击者不会出现并从各处欺骗我们IP地址的端口,导致整个网络崩溃。由于TCP/IP三次握手的魔力,这不会发生。
但有些人会问:“那Kevin Mitnick和Tsutomu Shimomura呢?” 好问题。关于Kevin Mitnick多年前的攻击,您应该在Takedown网站上深入研究。Kevin Mitnick攻击的是一个对网络完全开放的弱协议,存在弱序列号预测问题,他能够DoS他试图欺骗的系统。涉及该特定场景的许多怪异细节,但可以说,90年代发生的事情不会在您的网络上发生,至少我们希望如此。
再次,请查看Wild West Hackin’ Fest、Black Hills Information Security和ActiveCountermeasures.com,并在每周三关注Enterprise Security Weekly,与Paul、我自己和Matt一起。非常感谢,我们下个视频见。