Kali学习笔记11:僵尸扫描案例
什么是僵尸扫描?本质也是端口扫描,不过是一种极其隐蔽的扫描方式
所以几乎不会被发现,不过也有着很大缺陷:扫描条件很高
首先需要有一台僵尸机,这里我找好一台win10僵尸机器,IP地址为:10.14.4.252
我当前的Kali系统机器的IP地址:192.168.22.130
扫描的目标机器IP地址:192.168.22.129
僵尸扫描是一种非常巧妙的方法,不过不可以用Linux操作系统作为僵尸机,因为Linux的IPID不是递增的
过程:
1:最开始扫描者主机对Zombie(僵尸机)发送SYN/ACK包,然后Zombie(假设此时系统产生的IPID为x)会回个主机一个RST,主机将会得到Zombie的IPID;
2:然后扫描主机向目标机器发送一个SYN包,有所不同的是,此时扫描主机会伪造一个伪装成Zombie的IP(即是x)向目标主机发送SYN包。
3:如果目标的端口开放,便会向Zombie返回一个SYN/ACK包,但是人家Zombie并没有发送任何的包啊,zombie会觉得莫名其妙,于是向目标主机发送一RST过去询问,此时Zombie的IPID将会增加1(x+1)。若果目标主机的端口并未开放,那么目标主机也会想Zombie发送一个RST包,但是Zombie收到RST包不会有任何反应,所以IPID不会改变(依旧是x)。
4:最后扫描者主机再向Zombie发送一个SYN/ACK,同样的Zombie会摸不着头脑,然后在懵懂中向扫描者主机发送一个RST包,此时Zombie的IPID将变成(x+2)。最后我们在zombies的迷惘中我们已经知道了我们想知道的。
好的,接下里,开始僵尸扫描:
先用Scapy做一个演示,为后边的脚本做铺垫:
这里是先发送给僵尸机的数据包
而这里端口设置成445是因为win10默认开启445端口,flags是SYN+ACK
接下来定义向目标机器发送的数据包
这里我直接伪造源地址是win10的IP,扫描目标机器的25端口
发送数据包:
查看下结果:
OK,发现IP相差为2,证明目标端口开启,这里的僵尸扫描就完成了!
如果我们扫描的是一个不开放端口呢?
OK,发现这里ID相差为1,说明这个端口没有开放!
在这个的基础上,可以写Python脚本:
#!/usr/bin/python import logging logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import * def ipid(zombie):
reply1 = sr1(IP(dst=zombie) / TCP(flags="SA"), timeout=2, verbose=0)
send(IP(dst=zombie) / TCP(flags="SA"), verbose=0)
reply2 = sr1(IP(dst=zombie) / TCP(flags="SA"), timeout=2, verbose=0)
if reply2[IP].id == (reply1[IP].id + 2):
print("IPID secquence is incremental and target appears to be idle,ZOMBIE LOCATED")
response = raw_input("Do you want to use this zombie to perform a scan?(Y or N):")
if response == "Y":
target = raw_input("Enter the IP address of the target system:")
zombiescan(target, zombie)
else:
print("Either the IPID secquence is not incremental or the target if not idle. NOT A Good zombie") def zombiescan(target, zombie):
print("\nScanning target" + target + "with zombie" + zombie)
print"\n-------Open Ports On Target-----\n"
for port in range(1, 100):
try:
start_val = sr1(IP(dst=zombie) / TCP(flags="SA", dport=port), timeout=2, verbose=0)
send(IP(src=zombie, dst=target) / TCP(flags="S", dport=port), verbose=0)
end_val = sr1(IP(dst=zombie) / TCP(flags="SA"), timeout=2, verbose=0)
if end_val[IP].id == (start_val[IP].id + 2):
print(port)
except:
pass print"------Zombie Scan Suite------\n"
print"1.----Identity Zombie Host\n"
print"2.----Preform Zombie Scan\n"
aws = raw_input("Select an Option (1 or 2):")
if aws == "":
zombie = raw_input("Enter IP address to test IPID sequence:")
ipid(zombie)
else:
if aws == "":
zombie = raw_input("Enter IP address for zombie System:\n")
target = raw_input("Enter IP address for Scan Target:\n")
zombiescan(target, zombie)
使用脚本:
如果脚本是从windows移过来的:
vi xxx.py
:set fileformat=unix
:wq
chmod u+x xxx.py
./xxx.py
使用:
效果还是非常不错的!
这个脚本其实已经是一个比较完善的了,可以实际使用了,不过还是有更不错的方法
强大的Nmap工具:NMAP本身提供了大量用于僵尸扫描的脚本程序(大概400多种)
我们可以在NMAP中调用这些脚本程序来判断一个主机是否是一个合适的僵尸机。
同样这些脚本所遵循也是根据对方IPIID是否递增来判断的。
首先判断是否是一个好僵尸:
Incremental!!!可以使用的僵尸机
接下来就使用这个僵尸机来扫描:
扫描结果和我们脚本扫描的结果一样!
成功
Kali学习笔记11:僵尸扫描案例的更多相关文章
- Ext.Net学习笔记11:Ext.Net GridPanel的用法
Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...
- SQL反模式学习笔记11 限定列的有效值
目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...
- golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好
golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好 jetbrain家的全套ide都很好用,一定要dark背景风格才装B 从File-->s ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- ArcGIS案例学习笔记3_1_地理配准案例_目视找点
ArcGIS案例学习笔记3_1_地理配准案例_目视找点 计划时间:第3天上午 方法:地理配准/添加链接点/左键/右键/输入坐标 数据:江苏省.zip 矢量:省界,市界,GPS WGS84 地理坐标系 ...
- ArcGIS案例学习笔记3_1_地理配准案例_图面控制点
ArcGIS案例学习笔记3_1_地理配准案例_图面控制点 计划时间:第3天上午 目的:地形图控制点配准 数据:地形图drg 无坐标: 步骤 1.查看地图标注 2. 地理配准,添加控制点 3.结果: 联 ...
- Python3+Selenium3+webdriver学习笔记11(cookie处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...
- 并发编程学习笔记(11)----FutureTask的使用及实现
1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...
- 《C++ Primer Plus》学习笔记11
<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...
随机推荐
- spring微服务架构-脑图
spring团队对新一代软件开发的思索.为什么软件开发是spring boot?为什么软件开发是spring cloud?如何使用spring cloud搭建微服务. 清晰脑图查看
- FastDFS防盗链
FastDFS扩展模块内置了通过token来实现防盗链的功能.开启防盗链后,访问文件是需要在url中加两个参数:token和ts.ts为时间戳,token为系统根据时间戳和密码生成的信物.为了系统的安 ...
- 查看linux是否为虚拟机,以及其它信息,cpu,主机型号,主板型号等
dmidecode -s system-product-name 物理机: [root@swnode1]# dmidecode -s system-product-name I840-GS 虚拟机: ...
- Saliency Detection: A Spectral Residual Approach
Saliency Detection: A Spectral Residual Approach 题目:Saliency Detection: A Spectral Residual Approach ...
- Jython 在 Eclipse 控制台报错 console: Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0.
在 Eclipse 中使用 Jython 时报错 解决办法 右键 --> Run As --> Run Configurations --> Arguments --> 设置 ...
- css3 --linear-gradient-渐变色
//由上至下变色 background:-moz-linear-gradient( top,#f9b347,#f4ad40,#f9b347); background:-webkit-gradient ...
- Acceptance Test - Business Readable Acceptance Test using - Specflow
Agenda Benefits Living document Frameworks specflow supports How to integrate it in development cycl ...
- ArrayList增加扩容问题 源码分析
public class ArrayList<E>{ private static final int DEFAULT_CAPACITY = 10;//默认的容量是10 private s ...
- dubbo入门学习 六 admin管理界面
1. 本质就是一个web项目 2. 获取注册中心内Provider注册的信息.用页面呈现出来. 3. 实现步骤 3.1 把dubbo-admin-2.5.3.war上传到服务器tomcat中. 3.2 ...
- H5canvas画类似心电图
HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像,我们可以使用canvas来绘制类似心电图的东西. 效果图如下: <!DOCTYPE html> <ht ...