如果不知道僵尸扫描是什么,请参考我的这篇博客

实验环境:

kali(攻击者) 192.168.0.103

metasploitable2(目标主机) 192.168.0.104

win xp sp2(僵尸机) 192.168.0.106

scapy实现:

1.包定义:

图中rz和rt分别表示向僵尸机和目标主机发送的数据包。rt数据包进行了地址欺骗,将src定向到了拥有192.168.0.106的win xp主机。

2.包发送与接收:

图中先向僵尸机发送了一个数据包,将返回结果保存为az1;然后向目标主机发送伪造数据包;最后向僵尸机发送数据包,将返回结果保存为az2。

3.数据包对比:

图中两个数据包的ipid差值为2,这证明僵尸机向目标机发送了一个RST数据包,即可得知目标机的端口是开放的。

python脚本实现:

 #!/usr/bin/python
# -*- coding: utf-8 -*-
from scapy.all import *
import time def IsZombie(zombieIp): #此函数用于判断僵尸机是否是一个合格的僵尸机
a1 = sr1(IP(dst = zombieIp) / TCP(flags = "SA", dport = 445), timeout = 1, verbose = 0)
time.sleep(1) #这里延时1秒是为了给僵尸机充足的时间,以判断僵尸机网络是否繁忙,为了更精准,可以适当增大该值
a2 = sr1(IP(dst = zombieIp) / TCP(flags = "SA", dport = 445), timeout = 1, verbose = 0)
if a1[IP].id + 1 == a2[IP].id: #比较两次ipdi值
print "this is a good zombie!"
action = raw_input("do you want to use this zombie?(y/n)")
if action == "y":
tip = raw_input("please input the target's ip:") #目标主机ip
tport = int(raw_input("please input the port:")) #要扫描的端口
scan(zombieIp, tip, tport)
else:
sys.exit()
else:
print "this is not a good zombie!" def scan(zombieIp, tip, tport):
az1 = sr1(IP(dst = zombieIp) / TCP(flags = "SA", dport = 445), timeout = 1, verbose = 0) #给僵尸机发送第一个SYN/ACK数据包
send(IP(dst = tip, src = zombieIp) / TCP(sport = 445, flags = "S", dport = tport), verbose = 0) #给目标主机发送一个伪造原地址的SYN数据包
az2 = sr1(IP(dst = zombieIp) / TCP(flags = "SA", dport = 445), timeout = 1, verbose = 0) #给僵尸机发送第二个SYN/ACK数据包
if az1[IP].id + 2 == az2[IP].id: #比较ipdi值,从而判断端口是否开放
print "the port is open!"
elif az1[IP].id + 1 == az2[IP].id:
print "the port is closed!"
else:
print "I don't know!!" ip = raw_input("the zombie's ip:")
IsZombie(ip)

代码实现

博主后来拿百度做了实验,也是可以用的(但是要在24和25行之间添加一个sleep以弥补网络延时)。

上图是测试百度是抓取的数据包和过滤条件。

第一和第三个数据包是检测一个主机是否是一个合格的僵尸机而分别发送的SYN/ACK数据包,第二个和第四个是预备僵尸机的回复数据,通过脚本分析,该主机是一个合格的僵尸机。从5到11个数据包就是正真的僵尸扫描过程了,过程就不赘述了,如有疑惑,请参照文首的链接。

nmap实现:

使用一个简单的参数就可以实现了:nmap -p445 192.168.43.93 --script=ipidseq.nse

--script指定nmap中内置的脚本,注意"="两边不能有空格,否则会报错。

运行结果:

Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-29 20:54 CST
Nmap scan report for htk90-103fe22e8 (192.168.43.93)
Host is up (0.00057s latency).

PORT    STATE SERVICE
445/tcp open  microsoft-ds
MAC Address: 00:0C:29:5D:70:02 (VMware)

Host script results:
|_ipidseq: Incremental!

Nmap done: 1 IP address (1 host up) scanned in 0.45 seconds

高亮的部分表明待选僵尸主机的ipid是递增的,符合僵尸机的要求。

既然符合僵尸机的要求,那么就可以使用这台主机进行僵尸扫描:

nmap 192.168.43.58 -sI 192.168.43.93 -Pn -p 0-100

其中-sI参数指定僵尸机。

结果:

Starting Nmap 7.70 ( https://nmap.org ) at 2018-07-29 21:03 CST
Idle scan using zombie 192.168.43.93 (192.168.43.93:80); Class: Incremental
Nmap scan report for bogon (192.168.43.58)
Host is up (0.045s latency).
Not shown: 95 closed|filtered ports
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
23/tcp open  telnet
25/tcp open  smtp
53/tcp open  domain
80/tcp open  http
MAC Address: 00:0C:29:D8:D7:B6 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 2.98 seconds

僵尸扫描-scapy、nmap的更多相关文章

  1. 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描

    端口扫描 二三四层发现的目的只是为了准确发现所有活着主机IP,确定攻击面,端口扫描即发现攻击点,发现开放端口.端口对应网络服务及应用端程序,服务端程序的漏洞通过端口攻入.[所有的扫描结果,都不要完全相 ...

  2. Kali学习笔记11:僵尸扫描案例

    什么是僵尸扫描?本质也是端口扫描,不过是一种极其隐蔽的扫描方式 所以几乎不会被发现,不过也有着很大缺陷:扫描条件很高 首先需要有一台僵尸机,这里我找好一台win10僵尸机器,IP地址为:10.14.4 ...

  3. 扫描工具nmap介绍

    NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包. 简介 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推 ...

  4. 网络扫描工具nmap

    nmap一般就用来扫描主机是否在线(特别是扫描局域网内存活的机器).开放了哪些端口.其他的功能用的比较少,做渗透的人可能要了解的多些. 1.1 选项说明 nmap需要自行安装. shell> y ...

  5. 扫描工具——Nmap用法详解

    Nmap使用 Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp. Nmap可以完成以下任务: 主机探测 端口扫描 版本检测 系统检测 支持探测脚本的编写 Nmap在实际中应 ...

  6. [na]tcp&udp扫描原理(nmap常用10条命令)

    nmap软件使用思路及常见用法 Nmap高级用法与典型场景 namp -sn 4种包 使用nmap -sn 查询网段中关注主机或者整个网段的IP存活状态 nmap -sn nmap针对局域网和广域网( ...

  7. 端口扫描工具nmap

    nmap 使用介绍 nmap是目前为止最广为使用的国外端口扫描工具之一.我们可以从[url]http://www.insecure.org/[/url]进行下载,可以很容易的安装到Windows和un ...

  8. Linux常用网络工具:批量主机服务扫描之nmap

    Linux下有很多强大网络扫描工具,网络扫描工具可以分为:主机扫描.主机服务扫描.路由扫描等. 之前已经写过常用的主机扫描和路由扫描工具,nmap支持批量主机扫描和主机服务扫描. nmap的安装直接使 ...

  9. 端口扫描程序nmap使用手册

        其实还是建议看英文的man,对以后学习其他东西很有帮助的:) 摘要 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等 ...

随机推荐

  1. 【C++】cout、cerr、clog之间的区别

    cout.cerr.clog三者都是标准IO库中提供的输出工具. 但是cout是支持重定向操作的.比如freopen()对于cout有效. clog和cerr主要用于错误输出. 因此,如果将程序输出重 ...

  2. Rocket - tilelink - AtomicAutomata

    https://mp.weixin.qq.com/s/O7VTHqpCFNJQi3EpucXkIw   简单介绍AtomicAutomata的实现.(细节问题太多,恕不完全表述.)   ​​   1. ...

  3. Username for 'https://github.com': remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/GLSmile/pythontest.git/' 问题

    使用$ git push -u origin master 进行同步时,提示输入用户名和密码,但是我输入正确的信息后,仍然 会报Username for 'https://github.com': r ...

  4. java方法句柄-----5.Method Handles in Java

    Method Handles in Java 目录 Method Handles in Java 1.介绍 2.什么是MethodHandle 3. Method Handles vs Reflect ...

  5. ASP.NET关于书籍详情和删除的Demo(HttpHandler进行页面静态化[自动生成html网页]+Entity Framework通过类创建数据库+EF删查)

    这次的Demo如标题所示, 首先第一步EF创建数据库 创建两个类,一个是图书类,一个是图书类别的类 using System; using System.Collections.Generic; us ...

  6. Java实现 蓝桥杯VIP 算法训练 -2进制(暴力)

    试题 算法训练 -2进制 问题描述 给出1个十进制整数N,计算出它的-2进制表示. 输入格式 第一行:一个整数N,表示要转换的十进制数. 输出格式 第一行:N的-2进制表示. 样例输入 -13 样例输 ...

  7. Java实现 蓝桥杯 算法训练 Bit Compressor(暴力)

    试题 算法训练 Bit Compressor 问题描述 数据压缩的目的是为了减少存储和交换数据时出现的冗余.这增加了有效数据的比重并提高了传输速率.有一种压缩二进制串的方法是这样的: 将连续的n个1替 ...

  8. Java实现 蓝桥杯VIP 算法提高 最长公共子序列

    算法提高 最长公共子序列 时间限制:1.0s 内存限制:256.0MB 问题描述 给定两个字符串,寻找这两个字串之间的最长公共子序列. 输入格式 输入两行,分别包含一个字符串,仅含有小写字母. 输出格 ...

  9. Java实现 LeetCode 51 N皇后

    51. N皇后 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题的解决 ...

  10. 【Jquery】根据元素个数给予宽度

    方法一: $(document).ready(function(){ $(".xn_mc_solu_2_ul").css("width", $(".x ...