夜间模式暗黑模式
字体
阴影
滤镜
圆角
主题色
主动信息收集
富强,民主,文明,和谐,自由,平等,公正,法治,爱国,敬业,诚信,友善。

主动信息收集的原理

主动信息收集的特点

  • 直接与目标系统交互通信
  • 无法避免留下访问的痕迹
  • 使用受控的第三方电脑进行探测,使用代理或已经被控制的机器,做好被封杀的准备
  • 扫描发送不同的探测,根据返回结果判断目标状态

发现目标主机的过程

  • 识别存活主机,发现潜在的被攻击目标
  • 输出一个 IP 地址列表,比如 IP 地址段 IP 地址范围
  • 使用二、三、四层进行探测发现

OSI 七层模型和 TCP/IP 四层

OSI 七层模型概述

OSI 参考模型 解释
应用层 为应用程序提供服务
表示层 数据格式转化、数据加密
会话层 建立、管理和维护会话
传输层 建立、管理和维护端到端的连接
网络层 IP 地址及路由选择
数据链路层 提供介质访问和链路管理
物理层 硬件

TCP/IP 四层协议和 TCP/IP 五层协议和 OSI 的七层协议对应关系

OSI 参考模型 TCP/IP 五层模型 TCP/IP 四层模型
应用层、表示层、会话层 应用层 应用层
传输层 传输层 传输层
网络层 网际层 网络层
数据链路层、物理层 数据链路层、物理层 网络接口层

对应的网络设备及协议关系

TCP/IP 务层模型 设备 协议
应用层 应用层 HTTP Telnet FTP TFTP DNS SMTP
传输层 四层交换机、四层的路由器 TCP UDP
网际层 路由器、三层交换机 IP ICMP RIP IGMP
数据链路层 网桥、以太网交换机 ARP RARP IEEE802.3 PPP CSMA/CD
物理层 中继器、集线器、双绞线 FE自协商 Manchester MLT- 3 4A PAMS

基于 OSI 模型进行扫描的优缺点

  1. 两层扫描的优缺点

优点:扫描速度快、可靠

缺点:不可路由

  1. 三层扫描的优缺点

优点:可路由、速度较快

缺点:速度比二层慢,经常被边界防火墙过滤

使用 IP、ICMP 协议

  1. 四层扫描的优缺点

优点:

  • 可路由、结果可靠
  • 不太可能被防火墙过滤
  • 可以发现所有端口都被过滤的主机

缺点:

  • 基于状态过滤的防火墙可能过滤扫描
  • 全端口扫描速度慢

基于 ping 命令的探测

PING

PING 命令是我们常用的判断主机之间网络是否通常,同样也能判断我们的目标主机是否存活

  • 注意 -c 1 是指发一个 ping 包就停止

我们从当前主机到目标主机之间肯定要经过很多网络设备,我们可以通过 Traceroute 命令对路由进行跟踪

PING 命令具有很多延申的命令,例如:ARPING、FPING、HPING 等

ARPPING

  1. ARP 协议概述:ARP 协议是 ”Address Resolution Protocol“ (地址解析协议)的缩写,计算机通过 ARP 协议将 IP 地址转换成 MAC 地址
  2. ARP 协议的工作原理:

在以太网中,数据传输的目标地址是 MAC 地址,一个主机要和另一个主机进行直接通信,必须要知道目标主机的 MAC 地址

计算机使用者通常只知道目标主机的 IP 地址,”地址解析“ 就是主机在发送前将目标 IP 地址转换成目标 MAC 地址的过程

简单来说,ARP 协议主要负责将局域网中的 32 位 IP 地址转换为对应的 48 位 物理地址,即网卡的 MAC 地址,保障通信能顺利进行

  1. 使用 ARPING 命令查看局域网中的 IP 是否有冲突

我们可以发现 两个 MAC 地址对应了一个 IP 地址,即有 ARP 攻击

  1. 使用 Netdiscover 进行被动方式探测局域中存活的机器

Netdiscover 是主动/被动的 ARP 侦察工具。使用 Netdiscover 工具可以在网络上扫描 IP 地址,检测在线主机或搜索为他们发送的 ARP 请求

  • 主动模式:
    • 主动的探测发现网络内主机,但这种方式往往会引起网络管理员的注意
    • 命令:netdiscover -i eth0 -r 192.168.0/24 # -i device:扫描的网卡,-r rang:扫描的范围,这里是192.168.0 – 192.168.24

  • 被动模式:
    • 被动模式更加隐蔽,但速度会比较慢,网卡被设置为混杂模式来侦听网络内 ARP 数据包进行被动式探测,这种法师需要网络内设备发送 arp 包才能被探测到(混杂模式:什么包都收)
    • 注意:网络中服务器没有发 ARP 请求广播包,便探测不到
    • 命令:netdiscover -p

用 Hping3 对服务器进行 DOS 攻击

Hping3 是一个命令行下使用的 TCP/IP 数据包组装/分析工具,通常 web 服务会用来做压力测试使用,也可以进行 DOS 攻击的实验。同样,Hping 只能每次扫描一个目标

  • 压力测试
  • 命令:hping3 -c 1000 -d 120 -S -w 64 -p 80 –flood –rand-source 被测试的网址
    • -c 1000:发多少次包
    • -d 120:指定包的大小
    • -S:只发送 SYN 包
    • -w 64:tcp 的滑动窗口大小
    • -p 80:端口号
    • –flood:洪水攻击
    • –rand-source:动态变化的源头 IP 地址。伪造的 IP 只能在局域网中。通过路由器后,会被还原成真实的 IP 地址

使用Nmap扫描

全链接与半连接

  • 全连接:正常的连接方式。即 TCP 三次握手
  • 半连接:只进行了前两次握手,或是主动进行第二次握手。一旦服务器有回应,代表该端口是开启状态
  • RST:出现 RST 即是断开连接

nmap的半连接扫描

nmap 扫描类型主要有 TCP 的全连接扫描和半连接扫描

其中,全连接会在被扫描机器留下记录,而半连接扫描不会留下记录,并且扫描速度快

  • 命令:nmap -sS ip地址 -p 80,81,21,25,110,443
    • -sS:使用 SYN 进行半连接扫描。
  • -p:端口号,可以同时指定多个端口(可以指定范围,例如:-p 1-65535)
    • 也可以不指定端口,全部扫描

这里可以看出我的网站开启了五个端口

nmap 的基本扫描

  • 命令:nmap -sn 198.168.1.0/24
    • -sn:表示只ping扫描,不进行端口扫描

使用 nc 扫描端口

nc 是netcat 的简写,因为其短小精悍、功能使用,所有具有网络界的瑞士军刀的美誉,是一个简单且可靠的网络工具

  • nc 的作用:
    • 实现任意 TCP/UDP 端口的侦听,nc 可以作为 server 以 TCP 或 UDP 方式侦听指定端口
    • 端口的扫描,nc 可以作为 client 发起 TCP 或 UDP 连接
    • 机器之间传输文件
    • 机器之间网络测速
  • nc 的参数:
    • -nv:表示我们扫描的目标是个 IP 地址,不做域名解析
    • -w:表示超时时间
    • -z:表示进行端口扫描
  • 命令:nc -nv -w 1 -z 192.168.31.1 50-80 #表示扫描192.168.31.1的50-80端口,超时时间为1秒

使用 scapy 定制数据包进行高级扫描

什么是 scapy

Scapy 是一个可以让用户发送、侦听和解析并伪装网络报文的 Python 程序。这些功能可以用于制作侦测、扫描和攻击网络的工具

scapy 定制 ARP 协议

  • 使用 scapy 命令即可打开 scapy

  • 如果出现 INFO:Can’t import matplotlib. Won’t be able to plot,可以使用以下命令下载缺少的模块
apt install python-matplotlib  #实际测试中,apt 找不到这个软件包
pip install matplotlib  #记得配置国内源,否则可能会出现下载失败的情况
  • exit():退出
  • ARP().display():列出所有 ARP 相关的命令

例:定义向 192.168.229.128 发送 arp 请求的数据包

  • sr1 函数作用:发送数据包和接收数据包的功能
  • 使用 sr1 函数生成一个 ARP 请求包,询问 192.168.229.128 的 MAC 地址

注:说明 192.168.229.239 收到了我们发出的 ARP 请求包

scapy 定制 PING 包

通过以下的命令,可以查看我们数据包的格式和用法

  • IP().display()

  • ICMP().display()

我们可以使用定义一个变量来拼接两个数据包格式,这两个包组合起来就是 ICMP 的 PING 包,即使用 IP() 和 ICMP() 两个函数来生成 PING 包,进行探测

注:IP() 生成 PING 包的源 IP 和目标 IP,ICMP() 生成 PING 包的类型

思路:

  1. 修改 IP 包头的dst,即目标地址
  1. 拼接上 ICMP 的数据包类型 ,
  1. 使用 sr1 函数进行发送并接收数据包

其中 ICMP() 使用的是默认的类型,所以没有添加参数,timeout 超时时间,单位秒

scapy 定制 TCP 协议 SYN 请求

  • TCP().display()

flags=S 代表 SYN,flags=A 代表 ACK,flags=SA 代表 SYN+ACK

我们得到一个 flags=SA 的数据包,代表我们收到了服务器 tcp 三次握手中的第二次,表示端口是开放状态。(这属于半连接的探测,不会被服务器记录到)

scapy 定制 UDP 协议

和定制 TCP 数据包的方式一样,但是 UDP 协议是不可靠的

探测标准:没有收到回应包,表示端口开放。收到回应包,表示 UDP 端口关闭,或此端口不是 UDP 端口

  • UDP().display()

这里我们收到了数据包回应,说明这个端口不是 UDP 端口 或者端口已关闭。

僵尸扫描

僵尸扫描概述

  • 僵尸主机:僵尸主机是指感染僵尸程序病毒,从而被黑客程序控制的计算机设备。但在僵尸扫描中的僵尸主机指的是一个闲置的操作系统(即主机不会主动和任何人通信),且此系统中 IP 数据包中的 ID 是递增的。比如:XP 系统,WIN7,WIN10 不行
  • IPID :指通讯过程中,IP 数据包中的 ID
  • 僵尸扫描拥有极高的隐秘特性,但是实施条件苛刻
    • 目标网络可伪造源地址访问
    • 选择僵尸机,僵尸机需要在互联网上是一个闲置的操作系统,需要系统使用增加的 IPID

nmap 和 ping 都会直接和目标机器接触,所以需要远程连接一台代理/肉机,然后远程执行 nmap 扫描目标主机,避免被抓。但前提是:在公网或局域网上先拿到了肉机

而僵尸扫描可以不拿到肉鸡权限,著需要对方的 IPID 是递增的就可以

僵尸扫描原理

  • 第一步:
    • 黑客向僵尸机发送 SYN/ACK 确认包 (三次握手中的第二次)
    • 僵尸机返回给黑客一个 RST 数据包关闭链接,数据包中包含了 IPID 信息,假设 IPID=X
    • 在这一个步骤中,黑客知道了僵尸机的 IPID
  • 第二步:
    • 黑客修改 IP 包头的 SRC 字段为僵尸机的 IP,伪装成僵尸机向目标主机发送 SYN 请求
    • 目标主机收到请求,如果端口是开放的就会返回给僵尸机一个 SYN/ACK 的数据包
    • 僵尸机收到目标主机发来的 SYN/ACK 确认包,因为僵尸机并没有发送 SYN 请求,所以僵尸机会给目标返回一个 RST 数据包。此时,僵尸机对外又发出了一个包,所以僵尸机的 IPID 值+1,此时的 IPID=X+1
    • 在这一步骤中,如果目标主机端口开放,让僵尸主机的 IPID +1
  • 第三步:
    • 黑客再次向僵尸机发送 SYN/ACK 确认包
    • 僵尸主机会向黑客返回一个 RST 数据包,此时僵尸主机对外又发送了一个数据包,所以僵尸机的 IPID 值再次+1,此时的 IPID=X+2
    • 在这一步骤中,黑客得到了一个新的 IPID
  • 第四步:
    • 黑客查看两次收到的数据包的 IPID 值
    • 如果两次 IPID 值相差 2,即僵尸机与目标机器进行过通讯,代表目标机器端口处于开放开放
    • 如果两次 IPID 值相差 1,代表目标机器端口处于关闭状态A\A

僵尸扫描示例

  • rz1 接收的是第一步中僵尸机返回的 RST 数据包
  • rz2 接收的是第三步中僵尸机返回的 RST 数据包
  • 使用 rz1.display() 查看 IPID

  • 使用rz2.display() 查看 IPID

  • 我们发现两次 IPID 相差 2,代表目标主机端口处于开放状态

使用 nmap 进行僵尸扫描

  1. 扫描一个 IP 网段中哪些机器可以作为僵尸机
nmap 192.168.1.0/24 -p1-1024 --script=ipidseq.nse > a.txt
# 将扫描结果存放到 a.txt 中
# -p1-1024,指定扫描的端口范围
  1. 查找 a.txt 中的关键字 Incremental (增量式;增量的),表示主机 IPID 为递增的,可以作为僵尸主机
  2. 使用 netdicover 命令,可以看出扫描出的 IP 是一台什么服务器,来着哪个厂商 (只在局域网中)
  1. 使用命令进行僵尸扫描
nmap 192.168.1.63(目标主机) -sI 192.168.1.54(僵尸主机) -p1-100

注:实际测试中发现,不仅 XP 可以作僵尸机,安卓手机的 IPID 也是递增的,也可以作为僵尸机

 

暂无评论

发送评论 编辑评论


				
上一篇
下一篇