主动信息收集

本节课程概括:

1.1 主动信息收集的原理

1.2 二层发现-arping/netdiscover命令探索

1.3 三层发现-ping命令工具探索.

1.4 四层发现-Nmap 的扫描方式

1.5 实战︰使用scapy定制数据包进行高级扫描1.1主动信息收集的原理.

1.1.1 主动信息收集的特点

1.1.1 主动信息收集的特点

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

1.1.3 OSI七模型和TCP/IP五层

OSI:开放式系统互联,把网络通信的工作分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层
这里我们只对OSI各层进行功能上的大概阐述,不详细深究,因为每一层实际都是一个复杂的层。这里我们就大概了解一下。我们从最顶层的应用层开始介绍。-

第7层应用层:

OSI中的最高层。为特定类型的网络应用提供了访问OSI环境的手段。应用层确定进程之间通信的性质,以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远程操作,而且还要作为应用进程的用户代理,来完成一些为进行信息交换所必需的功能。它包括:文件传送访问和管理FTAM、虚拟终端VT、事务处理TP、远程数据库访问RDA、制造报文规范MMS、目录服务DS等协议﹔应用层能与应用程序界面沟通,以达到展示给用户的目的。在此常见的协议有:HTTP ,HTTPS ,FTP,TELNET ,SSH ,SMTP,POP3等。

第6层表示层:

主要用于处理两个通信系统中交换信息的表示方式。为上层用户解决用户信息的语法问题。它包括数据格式交换、数据加密与解密、数据压缩与终端类型的转换

第5层会话层:

创建、管理和维护会话。在两个节点之间建立端连接。为端系统的应用程序之间提供了对话控制机制。此服务包括建立连接是以全双工还是以半双工的方式进行设置,尽管可以在层4中处理双工方式﹔会话层管理登入和注销过程。它具体管理两个用户和进程之间的对话。如果在某一时刻只允许一个用户执行一项特定的操作,会话层协议就会管理这些操作,如阻止两个用户同时更新数据库中的同一组数据。

第4层传输层:

传输层建立了主机端口到端口的链接,传输层的作用是为上层协议(上层会会话层)提供端口到端口的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,rcP UDP 就是在这一层。

第3层网络层:

本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。

第2层数据链路层:

将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测。

第1层物理层:

处于OSI参考模型的最底层。物理层的主要功能是利用物理传输介质为数据链路层提供物理连接,以便透明的传送比特流。常用设备有(各种物理设备)网卡、集线器、中继器、调制解调器、网线、双绞线、同轴电缆。

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

对应的网络设备关系

对应的协议关系

1.2 二层发现-arping/netdiscover命令探索

1.2.1 二层主机发现

  1. 二层主机发现∶利用OSI中链路层中的协议进行发现,一般使用ARP协议。

  2. 二层扫描的优缺点

    优点︰扫描速度快、可靠性高

    缺点︰不可路由

1.2.2 arping命令使用

1、ARP协议概述

ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。计算机通过ARP协议将IP地址转换成MAC地址。

2、ARP协议工作原理

​ 在以太网中,数据传输的目标地址是 MAC地址,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
​ 计算机使用者通常只知道目标机器的IP信息,"地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
​ 简单地说,ARP协议主要负责将局域网中的32为IP地址转换为对应的48位物理地址,即网卡的MAC地址,保障通信顺利尽心。

APR工作原理如下:

3、使用apring命令查看局域网中的主机是否存活

root@kali:~#arping 192.168.1.100 -c 3
#-c参数表示发送的次数。
ARPING 192.168.1.100.
60 bytes from 48:5f:99:83:ab:af (192.168.1.100): index=0 time=174.630 usec
60 bytes from 48:5f:99:83:ab:af (192.168.1.100): index=1 time=146.395 usec
60 bytes from 48:5f:99:83:ab:af (192.168.1.100): index=2 time=306.542 usec
--- 192.168.1.100statistics ---.
3 packets transmitted, 3 packets received,0% unanswered (0 extra)rtt min/avg/max/std-dev = 0.146/0.209/0.307/0.070 ms.

4、使用Netdiscover进行被动方式探测局域中存活的机器。

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

主动模式:顾名思义就是主动探测发现网络内主机,但是这种方式往往会引起网络管理员的注意。优点是快。

root@piloteer101:~# netdiscover -i eth0 -r 192.168.1.0/24.
参数:
	-i是指定网卡。
	-r是指定ip地址的范围

被动模式:被动模式的方法更加隐蔽,但是速度会比较慢,网卡被设置为混杂模式来侦听网络内的 arp 数据包进行被动式探测,这种方式就需要网络内设备发送arp包才能被探测到。优点是比较隐蔽,但速度慢。

root@piloteer101:~# netdiscover -p

1.3三层发现-ping命令工具探索

1.3.1 三层主机发现

​ 三层主机发现︰利用OSI中网络中的协议进行主机发现,一般使用IP、ICMP协议。

​ 三层扫描的优缺点:

​ 优点︰可以经过路由的主机,速度相对较快

​ 缺点∶速度比二层发现慢,经常会被防火墙过滤

1.3.2 PING工具

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

从源主机出发到目标主机,整一个过程经过了多少设备?

Traceroute命令也可以对路由进行跟踪

好像到不了?

有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

1.3.3 HPING3

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

例︰使用HPING进行压力测试.我们先测试网站正常访问.
	http://www.ke.qq.com/.
	对www.ke.qq.com进行压力测试·
	# hping3-c 1000 -d 120-s -w 64-p 80 --flood --rand-source ke.qq.com
	-c 1000=发送的数据包的数量。”
	-d 120=发送到目标机器的每个数据包的大小。单位是字节
	-s = 只发送SYN数据包。
	-w 64 = TCP窗口大小。。
	-p 80 =目的地端口(80是WEB端口)。你在这里可以使用任何端口。
	--flood =尽可能快地发送数据包,不需要考虑显示入站回复。洪水攻击模式。
	**--rand-source=使用随机性的源头IP地址。**这里的伪造的IP地址,只是在局域中伪造。通过路由器后,还会还原成真实的IP地址。.

1.3.4 FPING 工具

​ Fping就是ping命令的加强版,它可以对一个IP段进行ping扫描,而ping命令本身是不可以对网段进行扫描的。

1.4 四层发现-Nmap的扫描方式

1.4.1 nmap简介

​ nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、 ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree).SYN扫描和null扫描。还可以探测操作系统类型。

例1:
Nmap scan report for 192.168.1.100.
Host is up (0.00043s latency).
Not shown: 995 filtered ports.
PORTSTATE SERVICE.80/tcpopen 
http-135/tcp open msrpc.
139/tcp open netbios-ssn
445/tcp open microsoft-ds.
3306/tcp open mysql
MAC Address: 48:5F:99:83:AB:AF(Unknown)
Nmap done: 1 lP address (1 host up) scanned in 11.49 seconds.

例2∶扫描一个范围:端口1-200.	
root@kali:~# nmap  1-200 192.168.1.100 -p参数	#规定端口范围扫描
Starting Nmap 7.70 ( https://nmap.org ) at 2019-10-30 11:27 CST.
Nmap scan report for 192.168.1.100.
Host is up (0.00039s latency).
Not shown: 197 filtered ports.PORT STATE SERVICE.
80/tcp open http135/tcp open msrpc
139/tcp open netbios-ssn
MAC Address: 48:5F:99:83:AB:AF(Unknown)
Nmap done: 1 lP address (1 host up) scanned in 9.16 seconds-

假如想知道自己的机器开放了哪些端口?

可以使用nmap进行扫描。

例3∶扫描一台机器∶查看此服务器的操作系统类型。
root@kali:~# nmap -0 192.168.1.106	-О参数	#显示服务器版
Starting Nmap 7.70 ( https://nmap.org ) at 2019-10-30 11:52 CST.
Nmap scan report for 192.168.1.106.
Host is up (0.0010s latency).
Not shown: 991 closed ports
PORT	STATE SERVICE.
135/tcp open msrpc
139/tcp	open netbios-ssn
445/tcp	open microsoft-ds.
49152/tcp open unknown
49153/tcp open unknown.
49154/tcp open unknown.
49155/tcp open unknown.
49156/tcp open unknown.
49158/tcp open unknown.
MAC Address: 00:0C:29:35:53:89 (VMware)

1.5 实战:使用scapy定制数据包进行高级扫描

1.5.1 scapy工具简介

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

​ Scapy工具在黑客工具榜排行第20位:
https://sectools.org/

1.5.2 scapy定制ARP包

如果要定制一个ARP包,需要这些参数。

硬件类型 协议类型 硬件地址长度(MAC地址)协议地址长度(IP地址)查询 源MAC 源IP 目标MAC 目标IP

对谁发送ARP包要改目的MAC和IP

这不是对方回的包,所以对方不在线。(老师的教程对方回了包,所以在线)

例1∶定义向192.168.1.1发送arp请求的数据包
sr1函数作用:sr1函数包含了发送数据包和接手数据包的功能。
>>> sr1(ARP(pdst="192.168.1.1""'))
Begin emission:
*Finished sending 1 packets.

Received 1 packets, got 1 answers,remaining 0 packets
<ARP hwtype=Ox1 ptype=Ox800 hwlen=6 plen=4 op=is-at hwsrc=2c43:1a:e6:ba:80psrc=192.168.1.1	hwdst=00:0c:29:ff:52:39
pdst=192.168.1.102	|<Padding load='\x00\x00\x00x00\x00x00\x0O\x00\x00x00x00x00\x00\x00O\x00xOO\x00\x00'>>
>>> exit()	#退出scapy.
注:发现源地址 psrc=192.168.1.1,说明已经收到网关的应答包。

1.5.3 scapy定制 PING 包

注:IP()生成ping包的源IP和目标IP,ICMP()生ping包的类型,使用IP()和ICMP()可以生成ping包,进行探测

思路:
1、修改IP包头的dst,也就是我们的目的地址
2、拼接上ICMP的数据包类型
3、使用sr1()进行发送数据包并接收数据包
>>>sr1(IP(dst="192.168.253.1")/ICMP(),timeout=1)
Begin emission:
.Finished sending 1 packets.
Received 2 packets, got 1 answers, remaining 0 packets
<lversion=4 ihl=5 tos=0x0 len=28 id=25252 flags= frag=0 ttl=64proto=icmp
chksum=0x9485 src=192.168.1.1 dst=192.168.1.102 options=|<ICMPtype=echo-replycode=0
chksum=Oxffffid=0x0	id=0x0	seq=0x0	|<Padding
load='x00\x00\x00x00\x0O\x00\x00x00x00\x00\x0O\x00\x0O\x0O\x00\xOO\x00x0o'

1.5.4 scapy定制TCP协议SYN请求

tcp三次握手过程中flags的标记。

![](https://s3.bmp.ovh/imgs/2022/10/09/587749364b145ab5.jpg

​ 我们得到一个flags=SA的数据包。SA标志即SYN+ACK。我妈妈收到服务器tcp三次握手中的第二个包,能收到回应,表示端口开放。

​ 注:这种基于tcp的半链接扫描,更隐蔽,更不容易被发现。