Kali Linux 渗透测试:端口扫描工具 僵尸扫描(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

先用Scapy做一个演示,为后边的脚本做铺垫:

这里是先发送给僵尸机的数据包

scapy僵尸扫描

而这里端口设置成445是因为win10默认开启445端口,flags是SYN+ACK

 

接下来定义向目标机器发送的数据包:scapy僵尸扫描

这里我直接伪造源地址是win10的IP,扫描目标机器的25端口

 

发送数据包:scapy僵尸扫描

 

查看下结果:scapy僵尸扫描

 

OK,发现IP相差为2,证明目标端口开启,这里的僵尸扫描就完成了!

 

如果我们扫描的是一个不开放端口呢?scapy扫描的是一个不开放端口

 

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

 

使用:scapy

 

效果还是非常不错的!

这个脚本其实已经是一个比较完善的了,可以实际使用了,不过还是有更不错的方法

 

二、nmap

强大的Nmap工具:NMAP本身提供了大量用于僵尸扫描的脚本程序(大概400多种)

我们可以在NMAP中调用这些脚本程序来判断一个主机是否是一个合适的僵尸机。

同样这些脚本所遵循也是根据对方IPIID是否递增来判断的。

 

首先判断是否是一个好僵尸机?

[email protected]:~# nmap -p445 10.14.4.252 --script=ipidseq.nse

nmap判断是否是一个好僵尸

 

Incremental!可以使用的僵尸机

 

接下来就使用这个僵尸机来扫描:nmap僵尸扫描

 

扫描结果和我们脚本扫描的结果一样!

成功!

    A+
发布日期:2019年10月27日 13:04:28  所属分类:Kali Linux 新手教程
最后更新时间:2019-10-27 13:04:28
评分: (1 票;平均数5.00 ;最高评分 5 ;用户总数1;总得分 5;百分比100.00)
头像
SEO顾问 中小型网站 单站/最低99.9元 全方位优化
SEO顾问 中小型网站 单站/最低99.9元 全方位优化
  • ¥ 99.9元
  • 市场价:5000元
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
刷流量 刷人气 刷点击 刷收藏 刷APP关键词
  • ¥ 1.0元
  • 市场价:9.9元
wordpress站群服务 泛解析二级域名 二级目录站群
wordpress站群服务 泛解析二级域名 二级目录站群
  • ¥ 1999.9元
  • 市场价:4800元
wp discux 帝国 dedecms phpcms等快速建站
wp discux 帝国 dedecms phpcms等快速建站
  • ¥ 99.9元
  • 市场价:499.9元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: