Kali Linux渗透测试之端口扫描(一)——UDP、TCP、隐蔽端口扫描、全连接端口扫描

本文介绍了Kali Linux中进行端口扫描的方法,包括UDP端口扫描和TCP端口扫描,如隐蔽扫描和全连接扫描。通过scapy、nmap、hping3等工具展示了不同类型的端口扫描技术,并解释了其工作原理和如何通过Wireshark进行流量分析。这些扫描技术对于确定目标系统的开放端口和潜在漏洞至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

端口扫描

二、三、四层发现的目的就是发现存活的IP,在存活的IP上面,展开进一步的扫描,及端口扫描,发现存活主机上存在着哪些开放的端口,端口后面就对应着各种各样的应用程序,应用程序的漏洞都是通过端口体现出来的,所以,扫描端口为我们后续的攻击提供更大的攻击面。

  • 端口对应网络服务及应用端程序;
  • 服务端程序的漏洞通过端口攻入;
  • 发现开放的端口;
  • 更具体的攻击面;

1. UDP端口扫描

基于端口的扫描,都是针对存活的主机而言的,使用UDP端口扫描时,如果端口开放,则目标系统不响应(可能产生误判),如果端口不开放,则目标系统会响应端口不可达,代表该端口没有开放;

(1)scapy

  • 端口关闭:ICMP   port-unreachable;
  • 端口开放:没有回包;
root@root:~# scapy
WARNING: No route found for IPv6 destination :: (no default route?)
INFO: Can't import python ecdsa lib. Disabled certificate manipulation tools
Welcome to Scapy (2.3.3)
>>> a=sr1(IP(dst="192.168.37.128")/UDP(dport=53),timeout=1,verbose=0)
>>> a.display()         #报错是因为端口开放,没有回包
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'display'
>>> a=sr1(IP(dst="192.168.37.128")/UDP(dport=90),timeout=1,verbose=0)
>>> a.display()        #目标主机的该端口没有开放
###[ IP ]### 
  version= 4L
  ihl= 5L
  tos= 0x0
  len= 56
  id= 3342
  flags= 
  frag= 0L
  ttl= 128
  proto= icmp
  chksum= 0x6163
  src= 192.168.37.128
  dst= 192.168.37.131
  \options\
###[ ICMP ]### 
     type= dest-unreach
     code= port-unreachable
     chksum= 0xc96a
     reserved= 0
     length= 0
     nexthopmtu= 0
###[ IP in ICMP ]### 
        version= 4L
        ihl= 5L
        tos= 0x0
        len= 28
        id= 1
        flags= 
        frag= 0L
        ttl= 64
        proto= udp
        chksum= 0xae7c
        src= 192.168.37.131
        dst= 192.168.37.128
        \options\
###[ UDP in ICMP ]### 
           sport= domain
           dport= 90
           len= 8
           chksum= 0x32fb

通过抓包查看发的两个包的过程:

使用脚本的方式实现扫描多个端口:UDP_scapy.py

#!/usr/bin/python 
#Author:橘子女侠
#该脚本用于实现扫描多个端口

from scapy.all import*
import time 
import sys 
if len( sys.argv ) !=4: 
	print "Example - ./udp_scan.py 1.1.1.1 1 100" 
	sys.exit() 

ip=sys.argv[1] 
start=int(sys.argv[2]) 
end=int(sys.argv[3]) 
for port in range(start,end+1): 
	a=sr1(IP(dst=ip)/UDP(dport=port),timeout=5,verbose=0) 
	time.sleep(1)   #防止因扫描过快,造成误判
	if a==None: 
		print(port)
	else: 
		pass

结果如下:并使用Wireshark抓包查看

root@root:~# ./UDP_scapy.py 192.168.37.128 1 150
53
88
123
137
138

(2)Nmap

root@root:~# nmap -sU 192.168.7.128
Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-13 18:30 CST
Nmap scan report for bogon (192.168.7.128)
Host is up (0.00075s latency).
All 1000 scanned ports on bogon (192.168.7.128) are open|filtered

Nmap done: 1 IP address (1 host up) scanned in 4.90 seconds
root@root:~# nmap -sU 192.168.7.128 -p 53
Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-13 18:31 CST
Nmap scan report for bogon (192.168.7.128)
Host is up (0
### 如何在Linux系统中使用Nmap进行端口扫描 #### 安装Nmap 对于大多数基于Debian的Linux发行版,如Ubuntu或Kali Linux,可以通过以下命令安装Nmap: ```bash sudo apt-get update && sudo apt-get install nmap ``` 此命令会更新软件包列表并安装最新版本的Nmap[^1]。 #### 基础端口扫描 执行简单的TCP连接扫描(也称为TCP connect()扫描),可以针对单个目标主机或多个主机。例如,要对`example.com`执行基本的TCP端口扫描,可输入如下命令: ```bash nmap example.com ``` 这条指令默认会对最常见的1000个端口发起TCP连接请求,并显示开放、关闭或是被过滤的状态[^4]。 #### 高级扫描技术 为了更隐蔽地探测远程设备上的服务,可以选择不同的扫描方式。比如SYN扫描(`-sS`)不会建立完整的TCP三次握手过程;它仅发送SYN数据包,在收到SYN/ACK回复后立即终止连接,这种方式速度更快且不易被检测到。具体操作方法如下所示: ```bash nmap -sS example.com ``` 另外还有其他类型的高级扫描模式可供选择,包括但不限于UDP扫描(`-sU`)、ACK扫描(`-sA`)以及特殊的TCP标志位组合扫描(-sN/-sF/-sX)[^5]。 #### 主机发现与Ping扫描 当只需要确认某台机器是否在线而不关心其开放的服务时,可以用ping扫描(`-sP`)功能。这将向指定的目标发出ICMP回声请求(Echo Request),以此判断对方是否可达。需要注意的是,默认情况下Nmap会在正式开始之前自动做次类似的存活测试,除非特别指定了不需要这样做[^3]。 #### 处理防火墙和速率限制 面对存在严格访问控制策略的情况,调整Nmap的行为可能是必要的。例如,降低发包频率以规避流量监控机制的影响,或者利用特定的技术手段绕过某些防护措施。像设置最大等待时间(`--host-timeout`)可以帮助减少因超时而导致的整体延迟,而采用并发多主机的方式也能有效提升效率[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值