使用portspoof调戏网络攻击者

  • A+
所属分类:网络安全

(译注:在网上搜了一下,也能搜到关于portspoof的文章,不过感觉这篇文章在原理上讲得更明白一些,过程也更详细一些,是本人喜欢的文章类型,所以把这篇文章也翻译了,分享给有兴趣的同学)

Portspoof是一款适合任意防火墙系统或安全系统的轻量级、快速、可移植的安全插件,该程序的目标是尽量减缓或扰乱攻击的信息收集阶段。

下面我们直接进入正题。本文首先会介绍不使用portspoof时的普通网络通信,之后介绍使用了portspoof之后的网络通信情况。下图为正常情况下的网络通信:

使用portspoof调戏网络攻击者

这里,如果一人攻击者扫描CentOS服务器的网络,第一个请求首先会被发送给iptables,根据iptables的规则决定对数据包的处理方式。下图为当前目标主机的规则配置:

使用portspoof调戏网络攻击者

即端口22开放,允许任意客户端连接到服务器的ssh服务。我将一台安装Kali Linux系统的机器作为攻击者机器,用nmap扫描该目标服务器,得到如下所示结果:

使用portspoof调戏网络攻击者

下面测试配置了portspoof的网络情况,程序默认端口为4444,可以根据需要修改。

使用portspoof调戏网络攻击者

从上图可以看出,当攻击者向CentOS服务器发送nmap扫描请求时,首先被iptables获取到,但之后不是响应攻击者机器,而是将请求发送给portspoof的4444端口,之后通过portspoof响应攻击者,向其反馈所有65535个端口全部是开放的。

开始演示

首先清除iptables的所有规则,允许所有数据包进入目标主机,使用命令如下:

iptables -F

执行完后,如果想查看当前策略,可以用以下命令:

iptables -L

使用portspoof调戏网络攻击者

之后用portspoof配置iptables。首先要做的当然就是下载并安装portspoof,我已经下载好了它的rpm包,可以通过以下命令安装:

rpm –ivh portspoof-1.0-5.1.i686.rpm

使用portspoof调戏网络攻击者

命令/选项                        描述
rpm                    rpm包管理命令
-i                    安装rpm包
-v                    打印处理过程中的详细信息
-h                    安装过程中打印hash记号(即“#”)

之后重新刷新当前防火墙规则。前文已经说过,当前防火墙没有设置任何规则,所以只需要使用iptables –F或iptables –L命令加以确认即可。

接下来要做的就是将这些数据包转发到portspoof中,使其响应扫描请求。命令如下:

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp -dport1:65535 -j REDIRECT -to-ports 4444

使用portspoof调戏网络攻击者

该命令的最后几个关键字非常重要,使iptables将所有收到的包转发到4444端口,即portspoof的默认端口。之后再次对目标进行扫描(此时还没有对portspoof进行配置):

使用portspoof调戏网络攻击者

扫描结果显示主机(CentOS)正在运行,但没有列出任何开放的端口,说明我们已经成功配置iptables,其将所有接收到的数据包成功发送给portspoof。接下来配置portspoof。

portspoof运行时需要两个配置文件,均位于/etc/目录,如下图所示:

使用portspoof调戏网络攻击者

portspoof.conf文件中配置了portspoof如何响应扫描以及响应哪些扫描,portspoof_signatures文件中包含大量扫描工具的指纹信息。

例如,如果我对一台主机进行常规nmap扫描,其只会向我显示某端口是否处于开放状态,并列出端口号。但如果给nmap加上-sV选项,其同时也会显示目标服务器上运行的服务名。portspoof会检测到这些指纹,并根据请求特征给出错误的结果。

输入portspoof –h命令查看其提供了哪些可用选项:

使用portspoof调戏网络攻击者

要运行portspoof,有两个选项必须使用:

portspoof -c /etc/portspoof.conf -s /etc/portspoof_signatures

运行结果如下:

使用portspoof调戏网络攻击者

下面用攻击者机器(Kali Linux)扫描目标服务器:

使用portspoof调戏网络攻击者

结果如图所示,其显示从1开始的所有65535个端口全部开放。实际上这些端口并不是真的开放,有些甚至不存在,但这种扫描结果还是会对攻击者产生一定的迷惑作用。

使用portspoof调戏网络攻击者

用nmap中的任意选项扫描目标主机,得到的结果都与下图类似。下图是我用nmap的-v和-A选项扫描的结果:

使用portspoof调戏网络攻击者

我在运行portspoof时使用了verbose模式,如果现在检查目标主机,可以看到其显示了曾受到过哪种扫描,识别出了哪些签名,响应了哪种扫描,如下图所示:

使用portspoof调戏网络攻击者

总结

本文介绍了如何用portspoof调戏攻击者或网络新手,使其困惑哪些端口是真正开放的,哪些是虚假的。如果攻击者真是个新手,那他很有可能去尝试攻击所有这些端口。所以通过这款小工具,我们可以在一定程度上迷惑攻击者,延长其攻击时间,从而达到对攻击者的定位跟踪。

参考

http://linux.about.com/od/commands/l/blcmdl8_rpm.htm

http://www.centos.org/docs/4/html/rhel-rg-en-4/s1-iptables-options.html

portspoof源码:https://github.com/drk1wi/portspoof

原文地址:http://resources.infosecinstitute.com/fool-network-hunters-hackers/

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: