僵尸扫描-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是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等 ...
随机推荐
- ActiveMQ 反序列化漏洞(CVE-2015-5254)复现
1.运行漏洞环境 sudo docker-compose up -d 环境运行后,将监听61616和8161两个端口.其中61616是工作端口,消息在这个端口进行传递:8161是Web管理页面端口.访 ...
- 50个SQL语句(MySQL版) 问题八
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...
- win服务器管理软件巧利用——如何让服务器管理事半功倍
那些服务器管理大牛估计看到这个标题会笑了,服务器怎么管理,靠自带的远程桌面肯定是远远不够的,要实现上千台服务器同时登陆,没有一个好程序管理,估计得三餐不食为其颠倒. 那么,有什么好的服务器推荐呢?站长 ...
- jchdl - RTL Data Types
https://mp.weixin.qq.com/s/hWYW1Bn---WhpwVu2e98qA 一. Bit 类结构如下: 主要属性: value: bit的值,只支持0,1, ...
- jchdl - GSL实例 - LogicalLeft
https://mp.weixin.qq.com/s/WNm4bLWzZ0oWHWa7HQ6Y6w 逻辑左移,继承自Shifter类.只需要实现shift方法即可. 参考链接 https:// ...
- Java 第十一届 蓝桥杯 省模拟赛 递增序列
问题描述 在数列 a[1], a[2], -, a[n] 中,如果 a[i] < a[i+1] < a[i+2] < - < a[j],则称 a[i] 至 a[j] 为一段递增 ...
- Java实现 蓝桥杯VIP 算法提高 选择排序
算法提高 选择排序 时间限制:1.0s 内存限制:256.0MB 选择排序 问题描述 排序,顾名思义,是将若干个元素按其大小关系排出一个顺序.形式化描述如下:有n个元素a[1],a[2],-,a[ ...
- Java实现 LeetCode 77 组合
77. 组合 给定两个整数 n 和 k,返回 1 - n 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], ...
- java实现 洛谷 P1017 进制转换
import java.util.Scanner; public class Main { private static Scanner cin; public static void main(St ...
- Django如何上传图片并对上传图片进行访问
通过一个示例的完整演示过程,来学习django如何上传图片,以及对于media文件夹中的上传图片进行请求: 1.配置settings.py MEDIA_URL = '/media/' MEDIA_RO ...