僵尸扫描-scapy、nmap
如果不知道僵尸扫描是什么,请参考我的这篇博客
实验环境:
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的更多相关文章
- 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描
端口扫描 二三四层发现的目的只是为了准确发现所有活着主机IP,确定攻击面,端口扫描即发现攻击点,发现开放端口.端口对应网络服务及应用端程序,服务端程序的漏洞通过端口攻入.[所有的扫描结果,都不要完全相 ...
- Kali学习笔记11:僵尸扫描案例
什么是僵尸扫描?本质也是端口扫描,不过是一种极其隐蔽的扫描方式 所以几乎不会被发现,不过也有着很大缺陷:扫描条件很高 首先需要有一台僵尸机,这里我找好一台win10僵尸机器,IP地址为:10.14.4 ...
- 扫描工具nmap介绍
NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包. 简介 nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推 ...
- 网络扫描工具nmap
nmap一般就用来扫描主机是否在线(特别是扫描局域网内存活的机器).开放了哪些端口.其他的功能用的比较少,做渗透的人可能要了解的多些. 1.1 选项说明 nmap需要自行安装. shell> y ...
- 扫描工具——Nmap用法详解
Nmap使用 Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp. Nmap可以完成以下任务: 主机探测 端口扫描 版本检测 系统检测 支持探测脚本的编写 Nmap在实际中应 ...
- [na]tcp&udp扫描原理(nmap常用10条命令)
nmap软件使用思路及常见用法 Nmap高级用法与典型场景 namp -sn 4种包 使用nmap -sn 查询网段中关注主机或者整个网段的IP存活状态 nmap -sn nmap针对局域网和广域网( ...
- 端口扫描工具nmap
nmap 使用介绍 nmap是目前为止最广为使用的国外端口扫描工具之一.我们可以从[url]http://www.insecure.org/[/url]进行下载,可以很容易的安装到Windows和un ...
- Linux常用网络工具:批量主机服务扫描之nmap
Linux下有很多强大网络扫描工具,网络扫描工具可以分为:主机扫描.主机服务扫描.路由扫描等. 之前已经写过常用的主机扫描和路由扫描工具,nmap支持批量主机扫描和主机服务扫描. nmap的安装直接使 ...
- 端口扫描程序nmap使用手册
其实还是建议看英文的man,对以后学习其他东西很有帮助的:) 摘要 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等 ...
随机推荐
- 2019-ICCV-PDARTS-Progressive Differentiable Architecture Search Bridging the Depth Gap Between Search and Evaluation-论文阅读
P-DARTS 2019-ICCV-Progressive Differentiable Architecture Search Bridging the Depth Gap Between Sear ...
- [01]HTML基础之简单介绍
1.前言 现如今科技进步,足不出户尽晓天下事,一转身便仿若隔世茫然.科技绽放时代,网络技术对人们的触变无疑是深远而重大的,隐于缤纷绚丽的网页背后,是前端的蜕变更新. 如今,随意点开页面,绚丽华彩的特效 ...
- 【大厂面试02期】Redis过期key是怎么样清理的?
PS:本文已收录到1.1K Star数开源学习指南--<大厂面试指北>,如果想要了解更多大厂面试相关的内容,了解更多可以看 http://notfound9.github.io/inter ...
- Java实现 LeetCode 781 森林中的兔子(分析题)
781. 森林中的兔子 森林中,每个兔子都有颜色.其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色.我们将这些回答放在 answers 数组里. 返回森林中兔子的最少数量. 示例: ...
- Java实现 LeetCode 414 第三大的数
414. 第三大的数 给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大 ...
- Java实现 蓝桥杯VIP 算法训练 新生舞会
问题描述 新生舞会开始了.n名新生每人有三个属性:姓名.学号.性别.其中,姓名用长度不超过20的仅由大小写字母构成的字符串表示,学号用长度不超过10的仅由数字构成的字符串表示,性别用一个大写字符'F' ...
- 第八届蓝桥杯JavaC组省赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.外星日历 题目描述 某星系深处发现了文明遗迹. 他们的计数也是用十进制. 他们的文明也有日历.日历只有天数,没有年.月的概念. 有趣的 ...
- java实现最大五个数
** 最大5个数** [12,127,85,66,27,34,15,344,156,344,29,47,....] 这是某设备测量到的工程数据. 因工程要求,需要找出最大的5个值. 一般的想法是对它排 ...
- java实现第七届蓝桥杯路径之谜
路径之谜 题目描述 小明冒充X星球的骑士,进入了一个奇怪的城堡. 城堡里边什么都没有,只有方形石头铺成的地面. 假设城堡地面是 n x n 个方格.[如图1.png]所示. 按习俗,骑士要从西北角走到 ...
- 流程图(HTML5拖拽)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...