四层扫描原理-二层扫描之arpng-netdiscover

      在进行四层扫描前,会进行ARP询问,因此可以得知存活的主机,对于存活的主机进行对应的SYN、ACK等连接,完成端口扫描。因此下表表示的状况为针对所有目标主机为up的情况:

目标主机

目标端口

目标响应

作用

SYN

up

open

SYN/ACK

主机发现,端口扫描

closed

RST/ACK

down

 

ARP无应答

ACK

up

open

RST

主机发现

closed

RST

SYN/FIN,ACK

up

open

RST

主机发现

closed

RST

FIN

up

open

无应答

主机发现,端口扫描

closed

RST/ACK

无flags

up

open(Linux)

无应答

windows主机发现,在linux也可用作端口扫描,但是精度较低

close(linux)

RST/ACK

open(windows)

RST/ACK

closed(windows)

RST/ACK

Xmas(URG、PSH、FIN置1)

up

open(Linux)

无应答

windows主机发现,在linux也可用作端口扫描,但是精度较低

close(linux)

RST/ACK

open(windows)

RST/ACK

closed(windows)

RST/ACK

UDP

up

open

无响应

选取基本不使用的端口,根据是否有端口不可达发现主机

closed

ICMP 端口不可达

    关于arp扫描,除了nmap,scapy外,推荐两款单纯的二层扫描工具,arping和netdiscover

Arping(单次扫描,通过arp数据包)

(1)只能单次扫描;

(2)可以以指定的源IP扫描,源MAC,但是指定以后响应的包给发给自己指定的IP、MAC,自己本地无法收到响应的数据包;

通过arp请求检测网络中是否存在指定的主机;优点在于检测方可以任意的设计本机的IP、MAC,包括广播IP地址,可以限定目的MAC和IP;

  • -0:指定源地址为0.0.0.0,这个一般是在我们刚刚安装好系统,电脑还没配置好IP的时候,是-S参数的别名
  • -aAudible ping.这个当有reply回来的时候,你的电脑有喇叭的话,就会滴滴的叫
  • -AOnly count addresses matching requested address
  • -b:类似-0,指定源broadcast255.255.255.255
  • -B:指定这个就相当于 arping 255.255.255.255
  • -c count:发送指定数量的arp包后,即停止退出
  • -d:这个比较重要,当局域网有IP占用的时候,可以指定这个参数,当有相同的IP的不同MAC地址reply的时候,arping会退出,退出码为1
    -D
    :这个检测是否丢包的,当丢包的时候打印感叹号,正常的时候打印逗号
  • -e:和-a相反,当没有reply的时候,会滴滴滴
  • -p:打开混杂模式,当前用户对mac无权限时,可以加上这个选
  • -r:输出的时候只打印MAC,写脚本的时候用得到,不用自己对结果awk
  • -R:输出的时候只打印IP,和上面一样
  • -s MAC:指定源MAC地址
  • -S IP:指定源IP,设置了源IP,如果目标主机没有到源IProute,则有可能收不到answer
  • -t MAC:指定目的MAC
  • -T IP:指定目的IP
  • -i interface:指定发送arp包的设备。不指定的话,默认为系统的第一块网卡
  • -q:表示不打印输出,写脚本不想打印输出的时候,应该用的到
  • -u:没啥大用,结果显示的时候,加这个参数和不加,index的显示形式不同
  • -v:打印详细的输出,默认打印的好像就是verbose
  • -w deadline:指定两个ping直接的时间间隔,单位为毫秒,默认为1

通过shell脚本实现整个局域网的扫描

#!/bin/bash

if [ "$#" -ne 1 ];then

    echo "Usage ./arping.sh [interface]"

    echo "Example: ./arping.sh eth0"

    echo "Example will perform an ARP scan of the loal subnet to while eth0 is assigned"

    exit

fi

interface=$1

prefix=$(ifconfig $interface | grep "inet" | grep "broadcast" | cut -d " " -f 10 | cut -d "." -f 1-3)

for addr in $(seq 1 254);do

    arping -c 1 $prefix.$addr | grep "Unicast" | cut -d " " -f 4

done

 

Netdiscover(arp整个网段,可设置被动模式,通过arp请求)

特点

(1)能够指定为被动模式,即将本地网卡设为混杂模式;

(2)能够扫描整个网段,但是不能指定固定的IP区间;

  • -i device:您的网络设备
  • -r range:扫描给定范围而不是自动扫描。192.168.6.0/24,/16,/8
  • -l file:扫描包含在给定文件中的范围列表
  • -p被动模式:不发送任何东西,只有嗅探
  • -F filter:自定义pcap过滤器表达式(默认值:“arp”)
  • -s time:每个arp请求之间的睡眠时间(毫秒)
  • -n node:用于扫描的最后一个ip八位字节(从2253
  • -c count:发送每个arp请求的次数(对于丢包的网络)
  • -f启用快速模式扫描,节省大量时间,建议用于自动
  • -d忽略自动扫描和快速模式的主配置文件
  • -S在每个请求之间启用睡眠时间抑制(硬核模式)
  • -P打印产生适合其他程序解析的格式
  • -L在可解析输出模式(-P)中,在主动扫描完成后继续侦听
  • 如果未启用-r-l-pnetdiscover将扫描公共LAN地址。
#Netdiscover –i eth0 –r 192.168.43.0/24 –c 1

 

### 解决Netdiscover无法扫描到设备的问题 当遇到Netdiscover无法正常扫描到目标网络中的设备时,可以从以下几个方面排查并解决问题: #### 1. 验证安装与配置 确保已经正确安装了`netdiscover`工具。对于基于Debian的Linux发行版如Ubuntu或Kali Linux, 可以通过命令行执行安装操作[^1]: ```bash sudo apt update && sudo apt install netdiscover ``` #### 2. 检查接口设置 确认使用的网卡接口名称是否准确无误。不同操作系统上的默认命名可能有所差异,在运行`netdiscover`之前应该先了解当前系统的实际可用接口名。可以通过如下命令查看本机所有活动网络接口及其状态: ```bash ifconfig -a ``` 或者更推荐的方式是在现代Linux系统中使用`ip a`命令。 如果不确定具体要监听哪个物理端口,则可以在启动程序时不指定参数-i让其自动选择合适的适配器;但如果已知确切的目标子网范围以及对应的硬件连接情况的话,则建议显式指明相应的网络接口以便提高效率和准确性[^2]。 #### 3. 设置正确的IP地址段 确保提供的CIDR表示法形式的目标网络地址区间是有效的,并且确实包含了待探测节点所在的广播域内。例如,假设局域网内的IPv4分配遵循标准私有地址规划方案之一(即192.168.x.y),那么合理的查询语句可能是这样的: ```bash netdiscover -r 192.168.200.1/24 ``` 这里的关键在于-r后面跟的具体数值部分应当依据实际情况调整,使之能够覆盖整个想要探索的空间而不至于过宽造成不必要的资源消耗或是遗漏潜在的对象。 #### 4. 调整权限级别 由于涉及到底层通信机制的操作,通常情况下需要给予足够的特权才能使应用程序顺利工作。因此务必加上sudo前缀赋予超级管理员身份后再尝试重新发起请求: ```bash sudo netdiscover ... ``` #### 5. 排除防火墙干扰因素 有时即使上述条件都满足仍然看不到预期的结果,这很可能是受到安全策略的影响所致。此时不妨暂时关闭本地防护措施来进行测试验证——当然前提是环境允许这样做并且不会带来额外风险的前提下。针对iptables规则集而言,可以考虑临时清空INPUT链表里的条目从而放松入站数据包过滤强度: ```bash sudo iptables -F INPUT ``` 不过请注意这种做法仅适用于实验性质的小规模场景下短期调试用途,切勿长期维持开放状态以免引发安全隐患。 #### 6. 利用被动模式辅助诊断 考虑到某些特殊场合下的局限性,比如面对启用了严格访问控制列表ACLs或者其他高级特性路由器的时候,常规方法或许难以奏效。这时就可以启用passive mode来收集更多信息作为后续分析的基础资料。只需简单添加-p标志位即可开启此功能: ```bash sudo netdiscover -p ``` 这种方式虽然速度较慢但是却能在一定程度上规避掉一部分由中间件引起的数据丢失现象,进而帮助定位问题根源所在[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值