前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >信息收集——僵尸扫描

信息收集——僵尸扫描

作者头像
信安之路
发布2018-08-08 11:11:55
9100
发布2018-08-08 11:11:55
举报
文章被收录于专栏:信安之路

0x00. 信息收集简介

渗透测试中,信息收集是最重要的阶段,占据整个渗透测试的60%左右,根据收集到的信息可以有效提高我们渗透测试的成功率,可见高效的信息收集对我们是多么重要。僵尸扫描正是信息收集环节的端口扫描阶段,但是常见的端口扫描过程往往会在网络层被发现痕迹,导致没有达到预期的隐藏目的,僵尸扫描却能有效的隐藏自己的踪迹。


0x01. 僵尸扫描介绍

往往鱼与熊掌不可得兼,僵尸扫描在隐藏踪迹的同时也有着其极其苛刻的使用条件。想要实施僵尸扫描必须具备下列两个必要条件:

其一:有一台合格的僵尸机,所谓的僵尸机就是足够空闲,并且不和除了我们之外的任何其他机器进行网络通信的主机,这个主要取决于他的IPID的连续性(往往主流的操作系统的IPID都是随机产生的或全为0),后面会讲到。
其二:可伪造源IP地址,在某些网络设备中防火墙会限制伪造的源地址,导致扫描失败。

0x02. 僵尸扫描过程

如上图所示,该图清晰的像我们展示了僵尸扫描的全过程。

一.首先由本地主机(scanner)向僵尸机(zombie)发送一个SYN/ACK包,因为发送的数据包不是SYN包,所以zombie会觉得莫名奇妙居然会有人向我发送SYN/ACK包,于是zombie会原路返回一个RST包来中断连接,此时在RST包中便会带有zombie的IPID,假设此时的IPID=x。详细的tcp/ip通信过程点击这里

二.紧接着又由本地主机(scanner)伪造源IP.SRC地址为zombie的IP,指定一个端口号并向目标主机(target)发送一个SYN包。收到SYN包后如果target端口开放,便会给源IP.SRC返回一个SYN/ACK包,此时由zombie收到该SYN/ACK包,此时便会同第一步一样,给target返回一个RST包,此时的IPID=x+1。如果端口未开放,target会直接给zombie返回一个RST包,zombie不做任何回应,IPID=x。

三. 最后再由本地主机(scanner)给zombie发送一个SYN/ACK包,步骤和第一步一样,zombie返回一个RST包,但是此时的IPID和第一步有差别,我们便通过IPID所差的值判断target端口是否开放。如果此时的IPID=x+1则第二步时zombie没有发送任何数据包,于是可知target端口关闭;如果IPID=x+2则第二步时zombie发送了一个RST包,于是可知target端口开放。


0x03. 僵尸扫描实战篇

看我写了这么多相信很多人都已经蒙圈了吧,理论有时后确实不容易理解,但是一旦理解了便会觉得just soso!下面我直接给大家实战演习,看完实战篇再来看理论相信大家会获益匪浅!

一:环境准备

  扫描主机 Mac: { ip:192.168.0.103 }

  僵尸主机 xp: { ip:192.168.0.107 }

  目标主机 metasploitable2: { ip:192.168.0.105 }

二: python2.7脚本

其实nmap自带有僵尸扫描模块,但是我这里需要抓包给大家分析,所以自己写了个简单的python脚本(请点击原文链接查看),用来发现僵尸机(zombie)和抓包分析,后面会直接演示如何用nmap进行僵尸机发现和利用。

第一个函数用来发现僵尸机,利用了Scapy库构造数据包,原理就是上面所讲的向要探测的僵尸主机连续发送三个SYN/ACK包,通过判断IPID的值来确定是否是个好僵尸。

第二个函数和第一个函数差不多,同样是利用Scapy库构造数据包,原理上面第二步有,就不再啰嗦了。下面我来演示一下操作。

三: 操作步骤

1.首先调用第一个函数判断xp是否是僵尸机

2. 抓包看看第一个函数是不是像我们预想中的那样发包的

可以看到发送的数据包正像我们预期中的一样,先发一个SYN/ACK,再收到一个RST,重复三次,判断IPID,这时再来看看IPID如何呢!




3. 已经可以确定xp就是一个好僵尸了,那么接下来便是利用第二个函数对它来进行端口扫描。因为利用zombie时中途会伪装IP,所以我在Wireshark中没有发现连续的包,所以这里就不截数据包的图了。第二个函数的思路很清晰,希望懂python的朋友好好看看。


0x04. nmap中的僵尸扫描

在介绍nmap之前笔者有一个问题想要探讨一下,就是既然有了nmap这个无敌强大的扫描工具的存在,那么为什么我们还要自己写脚本呢?这里仅仅是我个人的理解,不喜勿喷,笔者认为其实工具仅仅是为了让我们更方便的做一些想做的事情,或许直接调用一个工具再添加一两个参数选项就能超越我们几十上百行脚本,也更能出色的完成任务,但是理解工具工作的原理是否更重要呢!一味的使用别人的工具而不去发现工具工作的原理最后是否只是个工具小子,笔者不屑!

一:nmap发现僵尸机

二:nmap利用僵尸机进行端口扫描


0x05. 总结

虽然僵尸扫描的条件如此苛刻,但是原理just soso!在某些情况下说不定它还能派上大的用场,免去很多不必要的麻烦,所谓技不压身,多学点知识技能对自己还是很有好处的(o^^o)

推荐个免费资源:

https://github.com/yrzx404/free-security-resources

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信安之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00. 信息收集简介
    • 渗透测试中,信息收集是最重要的阶段,占据整个渗透测试的60%左右,根据收集到的信息可以有效提高我们渗透测试的成功率,可见高效的信息收集对我们是多么重要。僵尸扫描正是信息收集环节的端口扫描阶段,但是常见的端口扫描过程往往会在网络层被发现痕迹,导致没有达到预期的隐藏目的,僵尸扫描却能有效的隐藏自己的踪迹。
    • 0x01. 僵尸扫描介绍
      • 往往鱼与熊掌不可得兼,僵尸扫描在隐藏踪迹的同时也有着其极其苛刻的使用条件。想要实施僵尸扫描必须具备下列两个必要条件:
        • 其一:有一台合格的僵尸机,所谓的僵尸机就是足够空闲,并且不和除了我们之外的任何其他机器进行网络通信的主机,这个主要取决于他的IPID的连续性(往往主流的操作系统的IPID都是随机产生的或全为0),后面会讲到。
        • 其二:可伪造源IP地址,在某些网络设备中防火墙会限制伪造的源地址,导致扫描失败。
    • 0x02. 僵尸扫描过程
      • 如上图所示,该图清晰的像我们展示了僵尸扫描的全过程。
        • 一.首先由本地主机(scanner)向僵尸机(zombie)发送一个SYN/ACK包,因为发送的数据包不是SYN包,所以zombie会觉得莫名奇妙居然会有人向我发送SYN/ACK包,于是zombie会原路返回一个RST包来中断连接,此时在RST包中便会带有zombie的IPID,假设此时的IPID=x。详细的tcp/ip通信过程点击这里
          • 二.紧接着又由本地主机(scanner)伪造源IP.SRC地址为zombie的IP,指定一个端口号并向目标主机(target)发送一个SYN包。收到SYN包后如果target端口开放,便会给源IP.SRC返回一个SYN/ACK包,此时由zombie收到该SYN/ACK包,此时便会同第一步一样,给target返回一个RST包,此时的IPID=x+1。如果端口未开放,target会直接给zombie返回一个RST包,zombie不做任何回应,IPID=x。
            • 三. 最后再由本地主机(scanner)给zombie发送一个SYN/ACK包,步骤和第一步一样,zombie返回一个RST包,但是此时的IPID和第一步有差别,我们便通过IPID所差的值判断target端口是否开放。如果此时的IPID=x+1则第二步时zombie没有发送任何数据包,于是可知target端口关闭;如果IPID=x+2则第二步时zombie发送了一个RST包,于是可知target端口开放。
            • 0x03. 僵尸扫描实战篇
              • 看我写了这么多相信很多人都已经蒙圈了吧,理论有时后确实不容易理解,但是一旦理解了便会觉得just soso!下面我直接给大家实战演习,看完实战篇再来看理论相信大家会获益匪浅!
                • 一:环境准备
                  •   扫描主机 Mac: { ip:192.168.0.103 }
                    •   僵尸主机 xp: { ip:192.168.0.107 }
                      •   目标主机 metasploitable2: { ip:192.168.0.105 }
                        • 二: python2.7脚本
                          • 其实nmap自带有僵尸扫描模块,但是我这里需要抓包给大家分析,所以自己写了个简单的python脚本(请点击原文链接查看),用来发现僵尸机(zombie)和抓包分析,后面会直接演示如何用nmap进行僵尸机发现和利用。
                            • 第一个函数用来发现僵尸机,利用了Scapy库构造数据包,原理就是上面所讲的向要探测的僵尸主机连续发送三个SYN/ACK包,通过判断IPID的值来确定是否是个好僵尸。
                              • 第二个函数和第一个函数差不多,同样是利用Scapy库构造数据包,原理上面第二步有,就不再啰嗦了。下面我来演示一下操作。
                                • 三: 操作步骤
                                  • 1.首先调用第一个函数判断xp是否是僵尸机
                                    • 2. 抓包看看第一个函数是不是像我们预想中的那样发包的
                                      • 可以看到发送的数据包正像我们预期中的一样,先发一个SYN/ACK,再收到一个RST,重复三次,判断IPID,这时再来看看IPID如何呢!
                                        • 3. 已经可以确定xp就是一个好僵尸了,那么接下来便是利用第二个函数对它来进行端口扫描。因为利用zombie时中途会伪装IP,所以我在Wireshark中没有发现连续的包,所以这里就不截数据包的图了。第二个函数的思路很清晰,希望懂python的朋友好好看看。
                                        • 0x04. nmap中的僵尸扫描
                                          • 在介绍nmap之前笔者有一个问题想要探讨一下,就是既然有了nmap这个无敌强大的扫描工具的存在,那么为什么我们还要自己写脚本呢?这里仅仅是我个人的理解,不喜勿喷,笔者认为其实工具仅仅是为了让我们更方便的做一些想做的事情,或许直接调用一个工具再添加一两个参数选项就能超越我们几十上百行脚本,也更能出色的完成任务,但是理解工具工作的原理是否更重要呢!一味的使用别人的工具而不去发现工具工作的原理最后是否只是个工具小子,笔者不屑!
                                            • 一:nmap发现僵尸机
                                              • 二:nmap利用僵尸机进行端口扫描
                                              • 0x05. 总结
                                                • 虽然僵尸扫描的条件如此苛刻,但是原理just soso!在某些情况下说不定它还能派上大的用场,免去很多不必要的麻烦,所谓技不压身,多学点知识技能对自己还是很有好处的(o^^o)
                                                相关产品与服务
                                                网站渗透测试
                                                网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
                                                领券
                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档