【Linux_Kali网络渗透测试学习笔记总结(三)】服务枚举

网络渗透测试(三):服务枚举

服务枚举是一种数据采集工作,用于获取目标主机开放端口,操作系统和网络服务等有关信息

  • 端口扫描,及其端口扫描工具所支持的扫描类型
  • 端口扫描工具
  • 枚举Windows系统SMB服务的扫描工具
  • 枚举SNMP服务的扫描工具
  • 枚举虚拟专用网络(Virtual Private Network)的扫描工具

目标枚举的目的是最大程度地收集目标主机的网络服务信息,为我们后续阶段的识别漏洞工作做了前提铺垫

1. 端口扫描

在确定某端口处于开放状态之后,攻击人员就会检查在该端口提供相应服务的程序版本,以判断这个版本的程序是否存在漏洞

1.1 TCP/IP协议

tcp/ip协议是很多协议的统称,这些协议里最重要的两个协议就是tcp协议和ip协议,ip协议提供了寻址,路由等主机互联的功能,而tcp协议约定了连接管理,在两台主机间建立数据通信可靠传输的标准。

  • IP协议是OSI模型的第3层协议
  • TCP协议是传输层(OSI第4层)协议

TCP协议是面向连接的协议:在使用TCP协议传输数据之前,发起连接的客户端和受理连接的服务器之间必须通过3次握手建立连接

  1. 客户端向服务器发送初始化连接的SYN请求包,这个数据包的序列号字段将包含随机的初始化序列号(ISN)信息
  2. 服务器将客户端发送的ISN加1之后,作为自己的ACK数据序列号,以此对客户端SYN信息表示确认,而且服务器的数据包会使用独立的序列号。IP数据包里有个专门的ACK标识位(flag bit),服务器把这个标识位设置为1以表示改数据包是确认数据包
  3. 客服端再将服务器刚才回复的ISN+1,并向服务器发送ACK确认包,此后,两台主机开始传输数据的正式过程


TCP协议终止连接的机制如下所示

  1. 客户端发送一个含有FIN(finish)标志的数据包
  2. 服务器发送ACK确认数据,以告知客户端它已经受理了FIN的数据包
  3. 应用服务器在关闭连接之前,会再发送一个FIN数据包给客户端
  4. 客户端对服务器的FIN请求发送ACK确认数据包,通常情况下,客户端和服务器在发送FIN信息之后都可以独自关闭连接

TCP协议是可靠的传输协议:
TCP协议使用序列号和确认信号(ACK数据包)来识别数据包。每当接收方收到一个数据包,它都会发生ACK数据包以进行确认。如果任何一方没有收到对方的ACK数据包,它会自动重传。即使接收方收到了乱序的数据包,根据TCP协议,接收方可在重新整理数据包的顺序之后,再把数据传给(接收数据的)应用程序。

多数据传送文件的应用程序,或者传递重要数据的程序都使用TCP协议,例如 超文本传输协议(HTTP)文本传输协议(FTP) 都是基于TCP的传输协议



UDP协议的特征与TCP协议相反

  • UDP协议不是面向连接的协议。在采用这种协议传输数据时,收发双方不必建立UDP连接
  • UDP协议皆在尽可能地将数据包发送到目标地址。如果在传输过程中发生了丢包的情况,UDP协议不会自动重传(即操作系统不负责重新传送UDP包)。由应用程序决定是否重新传送数据包

为了能够将网络数据正确地传送给相应的应用程序,传输层实现了一种名为==端口(port)==的寻址方式,端口号码是16位的编码,取值范围是0~65535

  1. 公认的端口(0~1023):SSH(22端口),HTTP(80端口),HTTPS(443号端口)等常用服务端口都是这个范围内的端口
  2. 注册的端口(1024~49151):Internet授权地址分配组(IANA)提供这一范围内的端口的注册服务。
  3. 私有端口/动态端口(49152~65535) :所有人都可以随意使用这个范围内的端口,而不必向IANA注册端口号

TCP只有8(原来有6个,后来新标准加了2个)个标志位:

标志名 作用
SYN 同步标志位,此位在建立会话时使用
ACK 包含该确认字段的TCP数据,是对以前接收到的数据包的确认
RST 重置连接的标识位
FIN 表示发送方已经没有数据需求发送,将要以正常方式关闭连接
PSH 告诉接收方应当把缓冲区的数据立即推送给应用程序,而不要再等待接收更多的数据
URG 这个标识位用以说明TCP报头里的紧急指针(Urgent Pointer)有特殊含义。紧急指针和序号字段相加的和,表示最后一个紧急数据的下一字节的序号
CWR 窗口调整标识位,数据发送方通过这个标识位通知接受方“由于网络阻塞,不得不减少发送队列的长度(缩小TCP窗口)”
ECN-Echo 阻塞通告标识位,这个标识位表明网络连接存在拥塞问题

1.3 网络扫描程序

服务枚举是在特定主机,特定端口上识别服务端程序版本的方法。有了服务器端软件的版本信息,测试人员就可以查找改版本上存在的安全漏洞

1.4 Nmap

Nmap具备如下功能:

  • 主机探测
  • 服务/版本检测
  • 操作系统检测
  • 网络路由跟踪
  • Nmap脚本引擎

应当养成时常更新Nmap的好习惯,跟新指令如下

# apt-get update
# apt-get install nmap

一,指定扫描目标

  1. tcpdump使用数据包捕获工具观察Nmap发送的数据包,此时可以使用tcpdump程序

    # tcpdump -nnX tcp and host 192.168.56.102
    
  2. namp窗口:然后新开一个窗口运行以下指令,tcpdump终端会显示捕获的数据包

    # namp 192.168.56.102
    

二,TCP扫描选项

  1. TCP连接扫描 (-sT)

  2. SYN扫描(-sS)

  3. TCP NULL(-sN),FIN(-sF),XMAS(-sX)

  4. TCP Maimon(-sM)

  5. TCP ACK (-sA)

  6. TCP(-sW)

  7. TCP Idle(-sI)

    Nmap的scanflags选项可设定自定义的TCP扫描方式。在使用符号缩写时,仅仅需要将URG,ACK,PSH,RST,SYN,FIN,ECE,CWR,ALL和NONE以任意顺序进行组合。例如:

    # --scanflags URGACKPSH
    

三,UDP扫描选项

  1. Nmap有多种TCP扫描方式,而UDP扫描仅有一种扫描方式(-sU),虽然UDP扫描结果没有TCP扫描结果的可靠度高,但是UDP端口代表着可能会有价值的服务端程序,UDP的缺点是扫描一个主机的6536个UDP端口每个得限制1秒,总扫描时间必定超过18小时

  2. 改善扫描速度的方法:

    1. 进行并发的UDP扫描

    2. 优先扫描常用端口

    3. 在防火墙后面扫描

    4. 启用–host-timmeout选项以跳过响应过慢的主机
      例如:

      # nmap -sU 192.168.56.103 -p 53,161   //只扫描53,103这两个端口
      

四,目标端口选项

默认情况下,Nmap将从每个协议的常用端口中随机选择1000个端口进行扫描。其中nmap-services文件对端口的命中率进行了排名

如需更改端口配置,可使用Nmap的以下几个选项:

  • -p 端口范围:只扫描指定的端口。扫描1 ~ 1021号端口,课设定该选项为-p 1-1024,,扫描1~65535端口,可使用-p选项

  • -F(快速扫描):将仅扫描100个常用端口

  • -r(顺序扫描):指定这个选项后,程序将从小到大的顺序扫描端口

  • –top-ports <1 or greater>:扫描nmap-services里排名前N的端口

    //简单演示:
    # nmap -sN -p 22,25 192.168.56.103
    

    在这里插入图片描述

五,输出选项

Nmap可以把扫描结果保存为外部文件

  • 交互(屏幕)输出:Nmap把扫描结果发送到标准输出设备上(通常为终端/控制台)
  • 正常输出(-oN):与交互输出类似,但是不显示runtime信息和警告信息
  • XML文件(-oX):生成的XML格式文件可以转换成HTML文件,还可以被Nmap的图形用户界面解析,也便于导入数据库。
  • 生成便于Grep使用的文件(-oG):虽然这种文件格式已经过时…但仍然很受欢迎
//简单演示:
# 192.168.56.103 -oX myscan.xml

在这里插入图片描述

将xml文件转换为html文件,可以使用xsltproc工具

# xsltproc myscan.xml -o myscan.html

在这里插入图片描述

六,时间排程控制选项

Nmap可通过-T选项指定时间排程控制的模式。它有6种扫描模式

  • paranoid(0):每5分钟发送一次数据包,且不会以并行方式同时发送多组数据,这种模式的扫描不会被IDS检测到

  • sneakky(1):每5分钟发送一次数据包,且不会以并行方式同时发送多组数据

  • polite(2):每0.4秒发送一个数据包,且不会以并行方式同时发送多组数据

  • normal(3):此模式同时向多个目标发送多个数据包,为Nmap默认的模式,该模式能自动在扫描时间和网络负载之间进行平衡

  • aggressive(4):在这种模式下,Nmap对每个既定的主机只扫描5分钟,然后扫描下一台主机。它等待响应的时间不超过1.25秒

  • insane(5):在这种模式下,Nmap对每个既定的主机仅扫描75秒,然后扫描下一台主机,它等待响应的时间不超过0.3秒

七,常用选项

  1. 服务版本识别
    Nmap程序可以在进行端口扫描的时候检测服务端软件的版本信息。如果要启用这一功能,就要指定Nmap的
    -sV选项

    # nmap -sV 192.168.0.103 -p 22 
    
  2. 操作系统检测

    Nmap还能识别目标主机的操作系统,如果需要启用这一功能就使用-O选项

    # nmap -O 192.168.0.101
    
  3. 禁用主机检测
    如果主机屏蔽了ping请求,Nmap可能认为该主机没有开机,强制进行扫描的话就使用-Pn

    # nmap -Pn 192.168.0.1
    
  4. 强力检测选项
    启用-A选项之后,Nmap将检测目标主机的下述信息:

    服务版本识别(-sV)

    操作系统识别(-O)

    脚本扫描(-sC)

    Traceroute(–traceroute)

    # namp -A 192.168.0.1
    


八,扫描IPv6主机

启用Nmap的-6选项可以扫描IPv6的目标主机

# nmap -6 fe80::a00:27ff:fe43:5551


九,脚本引擎

NSE(nmap scripting engine)是Nmap的脚本引擎功能,NSE可使用户的各种网络检测工作更为自动化,有助于识别应用程序中新发现的漏洞,检测程序版本等nmap原本不具有的功能,使用 -sC 启用NSE脚本(–script==default)

# nmap -sC 192.168.0.1


十,规避检测的选项

当目标主机通常处于防火墙或IDS系统的保护之中的时候,在这种环境中使用Nmap的默认选项进行扫描,不仅会被发现,而且往往一无所获,此时,我们就要使用Nmap规避检测的有关选项

  • -f(使用小数据包):Nmap将使用8字节甚至更小数据体的数据包
  • –mtu:这个选项用来调查数据包的包大小。MTU(最大传输单元)必须是8的整数倍,否则Nmap将报错
  • -D (诱饵):这个选项应指定假IP,即诱饵的IP,启用这个选项之后,Nmap在发送侦测数据包的时候会掺杂一些源地址是假IP(诱饵)的数据包,这种功能意在以藏木于林的方法掩盖本机的真实IP。您所指定的诱饵主机应当在线,否则很容易击溃目标主机,另外,使用了过多的诱饵可能会造成网络拥堵,应当极力避免上述情况
  • –source-port 或-g(模拟源端口):如果防火墙只允许某些源端口的入站流量,这个选项就非常有用
  • –data-length:这个选项用于改变Nmap发送数据包的默认长度,以避免被识别出来是Nmap的扫描数据
  • –max-parallelism:这个选项可限制Nmap并发扫描的最大连接数
  • –scan-delay

1.5 Unicornscan

Unicornscan是信息收集和关联分析的引擎。它能对TCP/IP设备发起主动扫描,并根据响应进行分析。Unicornscan具备下述特性:

  • 可进行异步无状态TCP端口扫描

  • 可通过异步无状态TCP扫描获取TCP banner

  • 可进行异步UDP端口扫描

  • 可通过主动方式和被动方式识别远程操作系统和应用程序

    默认安装的kali linux并不带Unicornscan程序,您可以通过软件仓库安装它

    //安装
    #apt-get install unicornscan
    
    //查看帮助
    # unicornscan -h
    

    unicornscan在UDP端口的扫描耗时相对其他同类UDP扫描工具耗时较短,是它的优势所在
    您可以设置Unicornscan每秒发送多少个包,每秒发送包(PPS)设置得越高,扫描速度也就越快,但会导致网络负载加重,PPS的默认值是300

//	-m U 检测UDP协议	-Iv 详尽输出

# unicornscan -m U -Iv 192.168.0.1:1-65535

//	-r 调整发包率
//调整发包率为10000简单演示
# unicornscan -m U -Iv 192.168.0.1:1-65535 -r 10000
//调整发包率会加快扫描速度,但是如果您网速不好,将会拖垮整个网络

1.6 Zenmap

Zenmap是Nmap的图形化工具,相较于Nmap,Zenmap具备如下优势

  • Zenmap的交互性更好,输出更为直观,甚至能将网络的探索结果绘制成拓扑图

  • 可以比较两次扫描的结果

  • 能够记录扫描的结果

  • 渗透人员可调整Zenmap的配置文件,以使用相同的配置进行多次扫描

  • 会显示所执行的指令,便于渗透人员检查指令的正确性

    //启动命令
    # zenmap
    

    在这里插入图片描述

1.7 Amap

Amap程序可检测在指定端口上运行的应用程序信息。Amap向目标端口发送检测数据,在收到目标响应之后,将响应信息于数据库中结果进行匹配,并显示出匹配的应用程序

//指定扫描目标主机的22端口
# amap -bq 192.168.56.103 22

//指定扫描目标主机的多个端口
# amap 192.168.56.103 80 3306

在这里插入图片描述

2. SMB枚举

针对windows主机,使用SMB枚举工具可以直截了当的获取给系统的信息
nbtscan工具可以扫描IP地址并获取NetBIOS名称信息。它所生成的扫描报告含有相应的主机的IP地址,NetBIOS计算机名,服务名称,已登录的用户名和MAC地址信息,这款工具将产生大量的网络流量,而且可能被目标主机记录在Log里

//搜索192.168.0.0内各主机的NetBIOS名称,可使用下述指令
# nbtscan 192.168.0.0-254

//	-hv查看网络服务
# nbtscan -hv 192.168.56.103

3. SNMP枚举

SNMP(Simple Network Monitoring Protocol)SNMP对于渗透人员来说可以从配置不当的SNMP的设备上获取配置文件,挖掘重要信息,甚至可能有权限修改它的配置文件

3.1 onesixtyone

onesixtyone程序是SNMP扫描程序,它可扫描指定设备,确定它们是否支持某些特定SNMP字符串,它与其他SNMP扫描程序不同,可以以最快速度(间隔10毫秒)发送所有的SNMP请求,然后等待目标响应并将之记录。如果某台设备支持SNMP协议,这个设备就会以包含SNMP字符串的信息进行响应

3.2 snmpcheck

使用snmpcheck程序搜集SNMP设备的有关信息

# snmpcheck -t 192.168.56.103

4. Virtual Private Network 枚举

4.1 ike-scan

一套完整的流程方法

(一) 探测网络

ike-scan是探测,识别并测试IPSec Virtual Private Network系统的安全工具,IPSec是特别常见的Lan-to-Lan链接技术,同时也是多数Virtual Private Network方案所采用的远程访问技术,IPSec采用下述三种主要协议

  • Authentication Headers(AH):提供了数据的完整性
  • Encapsulating Security Payloads(ESP):保障数据的完整性和保密性
  • Internet Key Exchange(IKE):通信终端之间进行参数协商的通讯协议,它用于安全关联的建立,维持和终止
# ike-scan

//	-M将ppayload的解码信息分为多行显示,以便于阅读
//	-A使用IKE的aggressive mode
//	-P将aggressive mode的预共享密钥的哈希值保存为文件
# ike-scan -M -A -Pike-hashkey 192.168.0.10
(二) 破解Virtual Private Network密码

使用psk-crack程序破解Virtual Private Network连接的哈希值

# psk-crack -d rockyou.txt ike-hashkey

声明

本测试仅供学习交流所用,不得在未经被测方有效法律允许的情况下擅自测试

猜你喜欢

转载自blog.csdn.net/qq_41136216/article/details/105774632