Kali学习笔记11:僵尸扫描案例
2018-09-18 06:24:49来源:博客园 阅读 ()
什么是僵尸扫描?本质也是端口扫描,不过是一种极其隐蔽的扫描方式
所以几乎不会被发现,不过也有着很大缺陷:扫描条件很高
首先需要有一台僵尸机,这里我找好一台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 == "1": zombie = raw_input("Enter IP address to test IPID sequence:") ipid(zombie) else: if aws == "2": 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!!!可以使用的僵尸机
接下来就使用这个僵尸机来扫描:
扫描结果和我们脚本扫描的结果一样!
成功
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Kubernetes学习与应用(01)——什么是Kubernetes 2020-06-09
- #Linux学习# 用户和用户组管理 2020-05-26
- Bash Shell基础笔记 2020-05-26
- Nginx + Docker 多阶段构建的部署学习 2020-05-25
- ahjesus-全网仅此一份 kali linux 中文教程 learn kali 汉化 2020-05-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash