1.基于 ping 命令的探测
ping

traceroute ##路由跟踪命令
traceroute www.baidu.com

arping
arping 192.168.15.254

fping -g 192.168.1.0/24 -c 1 > fping.txt #fping是ping 的加强版 可以ping一个网段 然后把查找到的信息记录下来
-g 表示对地址段进行扫描如果不加可以对某个 IP 进行扫描
-c 表示 ping 的次数
>fping.txt 表示将扫描的结果重定向到 fping.txt ,原因是如果扫描一个网段的话输出结果是非常多的,我们输出重定向到文件中只会获得存活的主机信息。
Netdiscover
Netdiscover 是一个主动/被动的 ARP 侦查工具。使用 Netdiscover 工具可以在网络上扫描 IP 地
址,检查在线主机或搜索为它们发送的 ARP 请求
netdiscover -i eth0 -r 192.168.11.0/16 #这是主动扫描
参数:-i device: your network device-r range: scan a given range instead of auto scan. 192.168.6.0/24,/16,/8

netdiscover -p #这是被动扫描
被动模式的方法更加隐蔽,但是速度会比较慢,网卡被设置为混杂模式来侦听网络内的 arp 数据包进 行被动式探测,这种方式就需要网络内设备发送 arp 包才能被探测到。
2.HPING3
Hping3 是一个命令行下使用的 TCP/IP 数据包组装/分析工具,通常 web 服务会用来做压力测试使用,也可以进行 DOS 攻击的实验。同样 Hping 只能每次扫描一个目标。
hping3 -c 1000 -d 120 -S -w 64 -p 80 --flood --rand-source google.cn #不要随意测试公网上的网站 不然会被请去喝茶
-c 1000 = 发送的数据包的数量。
-d 120 = 发送到目标机器的每个数据包的大小。单位是字节 -S = 只发送 SYN 数据包。
-w 64 = TCP 窗口大小。 -p 80 = 目的地端口(80 是 WEB 端口)。你在这里可以使用任何端口。
--flood = 尽可能快地发送数据包,不需要考虑显示入站回复。洪水攻击模式。
--rand-source = 使用随机性的源头 IP 地址。这里的伪造的 IP 地址,只是在局域中伪造。通过路由器后,还会还原成真实的 IP 地址
Ctrl+c 停止后即可停止命令
3.基于 Nmap 的扫描方式
Nmap,也就是 Network Mapper,最早是 Linux 下的网络扫描和嗅探工具包
nmap 基本扫描
nmap -sn 192.168.15.0/24 #扫描192.168.15.0段落中有哪些主机存在
-sn 参数是只ping 不进行端口扫描

nmap 半连接扫描 (不会留下记录)

SYN 是请求 ACK是回复 RST是断开
nmap -sS 113.240.243.235 -p 8090,81,21,25,110,443 ##-sS 是半连接扫描 -p 是端口

4.使用 nc 扫描端口
nc -nv -w 1 -z 192.168.15.1 1-100
-nv 表示我们扫描的目标是个 IP 地址不做域名解析
-w 表示超时时间
-z 表示进行端口扫描
5.使用scapy 定制数据包进行高级扫描
scapy ##直接输入命令就会看到下图

ARP().display() #来查看 ARP 函数的用法
###[ ARP ]###
hwtype= 0x1 硬件类型
ptype= 0x800 协议类型
hwlen= 6 硬件地址长度(MAC)
plen= 4 协议地址长度(IP)
op= who-has who-has 查询
hwsrc= 00:0c:29:6a:cf:1d 源 MAC 地址
psrc= 192.168.11.126 源 IP 地址
hwdst= 00:00:00:00:00:00
pdst= 0.0.0.0 向谁发送查询请求

sr1(ARP(pdst="192.168.31.1")) #向 192.168.1.1 发送 arp 请求的数据包

scapy 定制 PING 包
Scapy 的功能是非常强大的,我们前面只是简单的介绍了他的 ARP 探测方式,下面我们简单讲一下
IP()生成 ping 包的源 IP 和目标 IP ,ICMP() 生 ping 包的类型。使用 IP()和 ICMP()两个函数,可以生成 ping 包,进行探测。
IP/ICMP 的方式
下面两条命令可以直接看到我们的数据包格式
IP().display()
version= 4 版本:4,即 IPv4
ihl= None 首部长度
tos= 0x0 服务
len= None 总长度
id= 1 标识
flags=
frag= 0 标志
ttl= 64 生存时间
proto= hopopt 传输控制协议 IPv6 逐跳选项
chksum= None 首部校验和
src= 127.0.0.1 源地址
dst= 127.0.0.1 目的地址
ICMP().display()
type= echo-request 类型,标识 ICMP 报文的类型
code= 0 代码
chksum= None 校验和
id= 0x0 标识
seq= 0x0
操作思路:
1、修改 IP 包头的 dst,也就是我们的目的地址
2、拼接上 ICMP 的数据包类型
3、使用 sr1()进行发送数据包并接收数据包
sr1(IP(dst="192.168.31.1")/ICMP(),timeout=1)

探测端口是否打开
sr1(IP(dst="113.240.243.235")/TCP(flags="S" ,dport=8091),timeout=1) ##探测113.240.243.235 的8090端口是否打开

flag显示为SA 是我们的到一个 flags=SA 的数据包。SA 标志即 SYN+ACK。我们收到服务器 tcp 三次握手中的第二
个包,能收到回应,表示端口开放 这种基于 tcp 的半链接扫描,更隐密,更不容易被发现
sport= ftp_data TCP 源端口
dport= http TCP 目的端口
seq= 0 32 位序号
ack= 0 32 位确认序号
dataofs= None 4 位首部长度
reserved= 0 保留 6 位
flags= S 标志域,紧急标志、有意义的应答标志、推、重置连接标志、同步序列号标志、
完成发送数据标志。按照顺序排列是:URG、ACK、PSH、RST、SYN、FIN
window= 8192 窗口大小
chksum= None 16 位校验和
urgptr= 0 优先指针
options= [] 选项