信息收集之:主动信息收集——端口扫描

郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

2 端口扫描

2.1 UDP 端口扫描

  • 原理

    • 端口关闭:ICMP port-unreachable 响应,目标系统不响应 ICMP port-unreachable 时,可能产生误判(认为端口是开放的)
    • 端口开放:没有回包
  • 完整的UDP应用层请求

    • 准确性高
    • 耗时巨大

2.1.1 SCAPY

#!/usr/bin/python
# description: print the udp port number if the host open the port,otherwise continue

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
import time
import sys

if len(sys.argv) != 4:
    print("./udp_scan.py [target ip] [first port] [last port]")
    print("example ./udp_scan.py 10.0.0.5 1 100")
    print("example will UDP port scan ports 1 to 100 on 10.0.0.5")

ip = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3])

for port in range(start, end):
    a = sr1(IP(dst=ip) / UDP(dport=port), timeout=5, verbose=0)
    time.sleep(1)
    if a == None:
        print(port)
    else:
        pass

2.1.2 NMAP

# UDP 扫描
nmap -sU 172.30.26.130 --open
nmap -sU -p68 172.30.26.130 
nmap -sU -p 1-200 -iL iplist.txt --open

2.2 TCP 端口扫描

基于链接的协议,三次握手。所有的TCP扫描方式都是基于三次握手的变化来判断目标端口状态

扫描方式有:

  • 僵尸扫描
  • 隐蔽扫描
  • 全连接扫描

2.2.1 僵尸扫描

僵尸扫描特点:

  • 极其隐蔽
  • 实施条件苛刻
  • 扫描发起方可以地址伪造
  • 必须要有僵尸机(机器闲置,但不被控制,操作系统 IPID 递增,在 IP 包头里的 ID 字段,现在的 linux 与 windows 系统的 ID 随机产生,早期的 windows 系统是顺序产生的[如:XP])

过程解析:

  1. 由扫描者向僵尸机发送 SYN/ACK 包,,然后Zombie(假设此时系统产生的 IPID 为 x )会回个主机一个 RST,主机将会得到 Zombie 的 IPID
  2. 扫描者向目标服务器发送 SYN 包,并将发送时 IP 伪造为僵尸机
  3. 如果目标服务器端口开放,会向僵尸机发送 SYN/ACK 包 , 由于僵尸机并没有发送任何的包,僵尸机会向目标主机发送 RST 包,且僵尸机 IPID 将会增加1(x+1)
    • 扫描者再向僵尸机发送 SYN/ACK 包,僵尸机返回 RST 包,IPID 为 x+2。
    • port_open
  4. 如果目标服务器端口未开放,将返回给僵尸机 RST 包,僵尸机收到 RST 包后不会有任何反应,所以IPID不会改变(依旧是x)
    • 扫描者再次向僵尸机发送 SYN/ACK 包返回 RST,IPID 为x+1
    • port_closed
>>> ip=IP()
>>> tcp=TCP()
>>> rz=(i/t)
>>> rt=(i/t)

# 向僵尸机发送 SYN,ACK 包
>>> rz[IP].dst=IPz 
>>> rz[TCP].dport=445
>>> rz[TCP].flags="SA"

# 向目标服务器发送 SYN 包,发送时 IP 伪造为僵尸机
>>> rt[IP].src=IPz 
>>> rt[IP].dst=IPt
>>> rt[TCP].dport=25
>>> rt[TCP].flags="S"

# 确定当前僵尸机 IP ID 序列数
>>> az1=sr1(rz)
# 伪造为僵尸机 IP 扫描目标主机端口
>>> at=sr1(rt)
# 确认扫描后的僵尸机的 IP ID 序列数 是否比 az1 大 2.
>>> az2=sr1(rz)

>>> az1.display()
>>> az2.display()

image_47380

探测网络中的僵尸机

nmap -p 445 192.168.1.133 --script=ipidseq.nse

image_41780

扫描目标僵尸机

nmap 172.16.36.135 -sI 172.16.36.134 -Pn -p 0-100 # -sI 利用僵尸机扫描目标主机 172.16.36.135

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值