主动信息收集 --- 各层主机发现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34444097/article/details/82720782

二层发现

二层主机发现主要利用的是arp协议,所以只能发现在同一个网段里的主机,不能路由,但是扫描速度快、可靠。


0x01 arping

探测某个主机命令行

用法

arping [-f 收到第一个回复就停止] [-c 指定发送的数量] [-s 源地址] 目的地址

实例

arping -f 192.168.11.129

这里写图片描述

arping 192.168.11.129 -c 1

这里写图片描述

对结果进行摘取

arping -f 192.168.11.129 | grep "reply from" | cut -d" " -f 4

这里写图片描述
还可以将结果输出到文件中

arping -f 192.168.11.129 | grep "reply from" | cut -d" " -f 4 >> arping.txt

利用脚本可以批量扫描一个网段内的所有主机

#!/bin/bash

#!获取网络号,这里默认的掩码为255.255.255.0
network_number=$(ifconfig | grep "inet.*broadcast" | cut -f 1 | cut -c 14-23)
for addr in $(seq 1 254)
do
	arping $network_number.$addr -c 1  | grep "reply from" | cut -d" " -f 4
	#!或者将结果输出到一个文本文件中
	#!arping $network_number.$addr -c 1  | grep "reply from" | cut -d" " -f 4 >> arping.txt
done

扫描结果
这里写图片描述

利用脚本扫描多个指定的IP地址

#! /bin/bash

file=$1
for addr in $(cat $file)
do
	arping -c 1 $addr | grep "reply from" | cut -d" " -f 4
done

结果
这里写图片描述

0x02 nmap

nmap很强大,在这里只介绍nmap在二层发现中的应用。
ping扫描,不要端口扫描

单个扫描

nmap -sn [ip地址]

这里写图片描述

批量扫描

nmap -sn 192.168.11.0/24[或192.168.11.1-254]

这里写图片描述

读取文件中的ip地址来扫描

nmap -iL ip.txt -sn

这里写图片描述

0x03 netdiscover

  • 专用于二层发现
  • 无线或交换网络环境
  • 主动或被动探测
netdiscover -i eth0 -r 192.168.11.0/24

这里写图片描述

扫描一个文件

netdiscover -l ip.txt

这里写图片描述

0x04 scapy

  • 作为python库进行调用
  • 也可作为单独的工具使用
  • 抓包、分析、创建、修改、注入网络流量

构造arp包

  1. 查看arp包的各个字段
ARP().display()

这里写图片描述
2. 构造一个默认的arp包

arp=ARP()

这里写图片描述

  1. 编辑arp包的字段
    比如指定arp报文的目的IP地址
arp.pdst="192.168.11.129"

再次查看结果
这里写图片描述
4. 发送一个arp包

send(arp)

这里写图片描述
或者

sr1(arp)

这里写图片描述
5. 查看回复报文

>>> answer=sr1(arp)
>>> answer.display()

这里写图片描述

python脚本

  1. 批量扫描某个网段
#!/usr/bin/python

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

network_number=subprocess.check_output("ifconfig | grep 'inet.*broadcast' | cut -f 1 | cut -c 14-23",shell=True).strip()



for addr in range(0,254):
    answer=sr1(ARP(pdst=network_number+'.'+str(addr)),timeout=1,verbose=0)
    if answer == None:
        pass
    else:
        print network_number+'.'+str(addr)

2.扫描文本文件中的IP地址

#! /usr/bin/python

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

filename=str(sys.argv[1])
file=open(filename,'r')

for addr in file:
    answer=sr1(ARP(pdst=addr.strip()),timeout=0.1,verbose=0)
    if answer == None:
        pass
    else:
        print addr.strip()

三层发现

  • 协议
    1. IP
    2. icmp
  • 优点
    1. 可路由
  • 缺点
    1. 速度比二层慢
    2. 经常被边界防火墙过滤

命令

ping [ip地址]
ping -r [ip地址]
traceroute [ip地址/域名]

脚本

#!/bin/bash

echo "example: ./ping.sh 192.18.11.0"

network_number=$(echo $1 | cut -d '.' -f 1-3)
for addr in $(seq 1 254):
do
	ping -c 1 $network_number.$addr | grep "bytes from" | cut -d ' ' -f 4 | 
		cut -d ':' -f 1 &
done

四层发现

  1. 优点
    1. 可路由切结果可靠
    2. 被防火墙过滤的可能性较小
    3. 甚至可以发现所有端口都被过滤的主机
  2. 缺点
    1. 基于状态过滤的防火墙可能被过滤
    2. 全端口扫描速度慢
  3. 协议
    1.TCP、udp

0x01 TCP

tcp的ACK扫描,想目标主机发送一个ack报文,如果回复一个重置报文,则说明目标主机存在。

  • 构造ack报文
    启动scapy
>>> ip=IP()
>>> ycp=TCP()
>>> tcp=TCP()
>>> r=(ip/tcp)
>>> r[IP].dst="192.168.11.130"
>>> r[TCP].flags="A"
  • 查看报文各个字段值
>>> r.display()

在这里插入图片描述

  • 发送ack报文
>>> a=sr1(r)
Begin emission:
.Finished sending 1 packets.
*
Received 2 packets, got 1 answers, remaining 0 packets
  • 查看回复报文结构
>>> a.display()

可以从回复报文中看到是重置报文,说明目的主机192.168.11.130存在。
在这里插入图片描述

0x02 UDP

如果目标端口未开放,则会收到目标icmp不可达的回复报文,说明目标知己存在;如果目标主机不存在,则请求报文一去不复返,不会收到任何回复报文。

  • 构造udp请求报文

指定目标主机为192.168.11.130
目标主机的未开放端口为8888

>>> ip=IP()
>>> udp=UDP()
>>> r=(ip/udp)
>>> r[IP].dst="192.168.11.130"
>>> r[UDP].dport=8888

查看报文字段值
在这里插入图片描述

  • 发送udp请求报文
>>> a=sr1(r)
Begin emission:
Finished sending 1 packets.
*
Received 1 packets, got 1 answers, remaining 0 packets
  • 查看回复报文
    收到一个icmp端口不可达的回复报文,说明目标主机存在
    在这里插入图片描述

0x03 nmap

  1. UDP Ping扫描
    nmap发送一个空的udp包到目标主机,如果目标主机响应则返回一个icmp端口不可达错误。
nmap 192.168.11.120-140 -PU53333 -sn
  1. tcp ACK Ping扫描
    nmap会发送一个ACK标志的TCP包给目标主机,如果目标主机不是存活状态则不响应该请求;如果目标主机在线则会返回一个RST包。
nmap 192.168.11.120-140 -PA53333 -sn

0x04 hping3

hping3 192.168.11.130 -c 1

猜你喜欢

转载自blog.csdn.net/qq_34444097/article/details/82720782