Exp5 信息搜集与漏洞扫描

信息搜集技术与隐私保护


--

目录

1.信息搜集

1.1. 信息搜集的概念

  • 意义:渗透测试中首先要做的重要事项之一
  • 目的:尽可能多的查找关于目标的信息
    • 我们掌握的信息越多,渗透成功的机会越大
  • 任务:搜集关于目标机器的一切信息
    • 比如IP地址,开放的服务,开放的端口
  • 方法:间接信息搜集 直接信息搜集 社会工程学
    • 搜索引擎 扫描技术 社工技术

--

1.2. 间接收集

  • 概念:不接触目标
    • 无物理连接
    • 不访问目标
  • 方法:使用第三方信息源
    • 比如查询whois信息
      • 假设我们的目标是一个在线的Web服务,那么通过whois查询可以获得它的ip地址,域名信息,子域信息,服务器位置信息等。
    • 数据窃听与分析
      • 只有在特定环境下才可以实现
  • 其他用途:调查取证

--

1.3. 直接收集

  • 概念:建立逻辑连接并获取信息
  • 目的:对目标的安全性设置进一步理解
  • 方法:主动扫描技术,探测目标开放的端口和服务。

--

1.4. 社会工程学

  • 概念:类似于被动信息收集,主要是针对人为错误,信息以打印输出、电话交谈、电子邮件等形式泄露
  • 目的:获取信息
  • 方法:...
    • 收集信息的非常多
    • 社会工程学本身就是一个技术范畴

--

  • 社会工程的受害者被诱骗发布他们没有意识到会被用来攻击企业网络的信息。
    • 例如,企业中的员工可能会被骗向假装是她信任的人透露员工的身份号码。尽管该员工编号对员工来说似乎没有价值,这使得他在一开始就更容易泄露信息,但社会工程师可以将该员工编号与收集到的其他信息一起使用,以便更快的找到进入企业网络的方法。
    • 利用新员工愿意工作的积极性
    • 冒充内部人员发邮件让发敏感信息到分部

2. 各种搜索技巧的运用方式

  • 目的:
    • 从目标公司域名开始收集信息
    • 获取公司有关信息,收集子域名,检测蜜罐、收集电子邮件地址等
  • 方法:使用辅助模块中信息搜集类

--

2.1. CorpWatch

  • 模块名:auxiliary/gather/corpwatch_lookup_name
  • 功能:公司名称信息收集,包括名称,地址,部门和行业信息
  • 使用要求:该模块与CorpWatch API连接,以获取给定公司名称的公开可用信息。
  • 国内天眼查

--

2.2. 搜索引擎子域名搜集器

  • 模块名:auxiliary/gather/searchengine_subdomains_collector
  • 功能:从Yahoo和Bing收集域名的子域信息
  • 类比:通过卫星图在不进入校园的情况下拿到校园地图。

--

2.3. 在线搜索工具

--

1.搜索网址目录结构

原理:暴力破解一般就是指穷举法,它的原理就是使用攻击者自己的用户名和密码字典,一个一个去枚举,尝试是否能够登录,利用msf中的dir_scanner暴力破解。
方法:使用kali,进入指令界面输入如下指令:

msfconsole
use auxiliary/scanner/http/dir_scanner
set THREADS 20
set RHOSTS www.baidu.com
exploit


我们可以看到图片http网页状态码为302和200
200 (成功) 服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
302 (临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

2.检测特定类型的文件

1.原理:

1.filetype 能对搜索结果的文件类型进行限定,格式为“ 检索词 filetype:文件类型 ”“-”能在检索结果中获取检索词的补集,格式为“ 检索词 -词语 ”
2.site 能限制检索结果的来源,格式为“ 检索词 site:限制域名 ”(不要在“:”后的域名中输入“http:”和“www.”)
3.inurl 能在网址中进行搜索,格式为“ 检索词inurl:检索词 ”

2.步骤:

打开百度,设置高级搜索界面,高级搜索界面的入口在搜索引擎首页右上角“设置”->“高级搜索”输入 site:edu.cn filetype:xls 身份证号 。


3.使用traceroute命令进行路由侦查

原理:traceroute命令利用ICMP协议定位用户计算机和目标计算机之间的所有路由器。TTL指数据包经过的路由器或网关的数量,也可以记录数据包的生存时间,通过操纵独立ICMP呼叫报文的TTL值和观察该报文被抛弃的返回信息,traceroute命令能够遍历到数据包传输路径上的所有路由器。
方法:打开PowerShell输入命令tracert www.baidu.com

分析:从左到右的5条信息分别代表了“生存时间”(每次经过一个路由数量增加1)、“三次发送的ICMP包返回时间”(共计3个,单位为毫秒ms)和“途经路由器的IP地址”(如果有主机名,还会包含主机名)。星号(*)的信息表示该次ICMP包返回时间超时。

4.Zoomeye

ZoomEye是一款针对网络空间的搜索引擎,收录了互联网空间中的设备、网站及其使用的服务或组件等信息
使用:输入apache +country:"CN"查找中国地区的apache

全球视角

也可以找到我们学院

2.4. 其他

  • 蜜罐检查
  • 检测目标是否为蜜罐,避免浪费时间或因为试图攻击蜜罐而被封锁。使用Shodan Honeyscore Client模块,可以利用Shodan搜索引擎检测目标是否为蜜罐。结果返回为0到1的评级分数,如果是1,则是一个蜜罐。
  • 邮箱信息收集
    • 收集邮箱信息是渗透测试中常见的部分,它可以让我们了解互联网上目标的痕迹,以便用于后续的暴力攻击以及网络钓鱼等活动。

3. DNS IP注册信息的查询

  • 从给定的DNS服务器收集有关域名的信息
  • 执行各种DNS查询(如域传送,反向查询,SRV记录等)
msf5 > use auxiliary/gather/enum_dns //切换到 enum_dns模块
msf5 auxiliary(gather/enum_dns) > info //查看模块信息
...
Description:
  This module can be used to gather information about a domain from a
  given DNS server by performing various DNS queries such as zone
  transfers, reverse lookups, SRV record brute forcing, and other
  techniques.

References:
  https://cvedetails.com/cve/CVE-1999-0532/
  OSVDB (492)

msf5 auxiliary(gather/enum_dns) >

1.whois查询

原理:whois用来进行域名注册信息查询。
方法:在kali中进入root模式,在终端输入 whois baidu.com 可查询到3R注册信息,包括注册人的姓名、组织和城市等信息。(此处我们查询百度的域名注册信息)可以观察到ID和注册地区北京等信息
注:进行whois查询时去掉www等前缀,因为注册域名时通常会注册一个上层域名,子域名由自身的域名服务器管理,在whois数据库中可能查询不到

2.nslookup,dig域名查询

nslookup

原理:nslookup可以得到DNS解析服务器保存的Cache的结果,但并不是一定准确的。
方法:在终端输入 ```nslookup baidu.com````

dig

原理:dig可以从官方DNS服务器上查询精确的结果。
方法:在终端输入 dig baidu.com

+search :使用搜索列表或 resolv.conf 中的域伪指令(如果有的话)定义的搜索列表。缺省情况不使用搜索列表。
+trace :切换为待查询名称从根名称服务器开始的代理路径跟踪。缺省情况不使用跟踪。一旦启用跟踪,dig 使用迭代查询解析待查询名称。它将按照从根服务器的参照,显示来自每台使用解析查询的服务器的应答。
+identify :当启用 +short 选项时,显示 [或不显示] 提供应答的 IP 地址和端口号。
+stats :该查询选项设定显示统计信息:查询进行时,应答的大小等等。缺省显示查询统计信息。

3.IP2Location 地理位置查询

www.maxmind.com

原理:www.maxmind.com网站可以根据IP查询地理位置。
步骤:
在主机上利用ping www.baidu.com的查看百度的IP地址

打开网站网页www.maxmind.com在网站下方输入IP,点击前往查看结果,观察可知归属地在河北保定,结果可能不同

www.ip-adress.com(查看更加详细地址信息)

查看百度的地址信息,可以获得详细信息

查看自己主机IP地址,显示为私有地址

4.IP2反域名查询

原理:shodan搜索引擎(https://www.shodan.io/)可以进行反域名查询,可以搜索到该IP的地理位置、服务占用端口号,以及提供的服务类型.
方法:打开网站,输入IP地址,可以看到地理位置,端口号和提供的服务以及使用的网络技术具体信息

  • 更多
    • dns扫描和枚举模块也可以用于主动信息收集,通过爆破的方式,设置ENUM_BRT为true,可以通过字典暴力枚举子域名和主机名。WORDLIST选项可以设置字典文件。

--


4. 基本的扫描技术:主机发现、端口扫描、OS及服务版本探测、具体服务的查点(以自己主机为目标)

--

4.1. 扫描技术

  • 主机扫描
    • 发现网络上的活动主机
  • 端口扫描
    • 发现主机上的开放端口
  • 版本探测
    • 探测端口上的运行服务
  • 漏洞探测
    • 探测服务是否有相应漏洞

--

扫描是一个有趣的信息收集过程,它涉及对目标系统更深入的搜索,但是由于主动扫描涉及对目标系统直接访问,可能会被防火墙和入侵检测系统检测到。
扫描渗透测试请遵守当地法律法规,请勿直接扫描互联网设备。

--

4.2. 主机扫描(记得关闭防火墙哦)

4.2.1 PING

1.原理:ping命令用发送ICMP报文的方法检测活跃主机
2.方法:输入命令 ping www.baidu.com

4.2.2 metasploit中的arp_sweep模块和 udp_sweep 模块

原理:arp_sweep和udp_sweep都是metasploit中位于modules/auxiliary/scanner/discovery中的模块。arp_sweep使用ARP请求枚举本地局域网络中的所有活跃主机;udp_sweep模块除了可以探测到存活主机之外,还可以获得主机名称信息

- MSF模块:modules/auxiliary/scanner/discovery
  - arp_sweep
  - ipv6_multicast_ping,ipv6_neighbor, ipv6_neighbor_router_advertisement
  - udp_probe,udp_sweep.
--
- 例:arp_sweep
  - 原理:通过ARP请求可以枚举本地网络中的存活主机
  - 适用:攻击者和目标机器处于同一个局域网时
  - 模块:auxiliary/scanner/discovery/arp_sweep
  - 结果:如果启动了数据库,结果将存储在Metasploit数据库中,可以使用hosts显示已经发现的主机。

方法:1.arp_sweep(要先将Kali设成桥接模式)

msfconsole

use auxiliary/scanner/discovery/arp_sweep //进入arp_sweep 模块

set RHOSTS 主机地址 //用set进行hosts主机段设置

set THREADS 50 //加快扫描速度
show options //查询模块参数
run //执行run进行扫描

可以看到我主机的IP地址被扫描出来了

2.udp_sweep

use auxiliary/scanner/discovery/udp_sweep //进入udp_sweep 模块
show options //查询模块参数
set RHOSTS 192.168.1.134 //用set进行hosts主机段设置
set THREADS 33 //加快扫描速度
run //执行run进行扫描

可以看到扫描出主机相关信息

--

4.3. 端口扫描(使用NMAP)

可以通过search portscan 命令查看MSF中的端口扫描模块。

- TCP 端口扫描
  - MSF模块:auxiliary/scanner/portscan/tcp
- TCP SYN 扫描
  - MSF模块:auxiliary/scanner/portscan/syn
  - 不会完成TCP三次握手
    - SYN扫描速度更快
    - 躲避防火墙和入侵检测系统的检测。

- NMap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。
  - nmap是一个网络连接端扫描软件
    - 主机发现(Host Discovery);
    - 端口扫描(Port Scanning);
    - 版本侦测(Version Detection);
    - 操作系统侦测(Operating System Detection)。
  - 另外Nmap提供强大的NSE(Nmap Scripting Language)脚本引擎功能,脚本可以对基本功能进行补充和扩展。

--

  • 功能架构图

--

4.3.1. 基本用法

nmap一般会把主机发现、端口扫描、版本探测整合运行。

--

基本信息扫描

命令形式:
nmap targethosts

--

对主机全面扫描

  • 功能:nmap对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统侦测及调用默认NSE脚本扫描。
  • 命令形式:
    • nmap –T4 –A –v targethost
      • 其中-A选项用于使用进攻性(Aggressive)方式扫描;
      • 总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉
      • v表示显示冗余(verbosity)信息

--

4.3.2. 主机发现(Host Discovery)原理

--

1.默认情况下,Nmap会发送四种不同类型的数据包来探测目标主机是否在线。

1.  ICMP echo request
2.  a TCP SYN packet to port 443
3.  a TCP ACK packet to port 80
4.  an ICMP timestamp request

依次发送四个报文探测目标机是否开启。只要收到其中一个包的回复,那就证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。

--

2.通常主机发现并不单独使用,而只是作为端口扫描、版本侦测、OS侦测先行步骤。而在某些特殊应用(例如确定大型局域网内活动主机的数量),可能会单独专门适用主机发现功能来完成。
不管是作为辅助用法还是专门用途,用户都可以使用Nmap提供的丰富的选项来定制主机发现的探测方式,相关参数如图所示。

    -sL: List Scan 列表扫描,仅将指定的目标的IP列举出来,不进行主机发现。  
    -sn: Ping Scan 只进行主机发现,不进行端口扫描。  
    -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。  
    -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。  
    -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。-PO[protocollist]: 使用IP协议包探测对方主机是否开启。  
    -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。  
    --dns-servers <serv1[,serv2],...>: 指定DNS服务器。  
    --system-dns: 指定使用系统的DNS服务器     
    --traceroute: 追踪每个路由节点  

其中,比较常用的使用的是-sn,表示只单独进行主机发现过程;
-Pn表示直接跳过主机发现而进行端口扫描等高级操作(如果已经确知目标主机已经开启,可用该选项);
-n,如果不想使用DNS或reverse DNS解析,那么可以使用该选项。

--

3.例子
(1)探测scanme.nmap.org
下面以探测scanme.nmap.org 的主机为例,简单演示主机发现的用法。
命令如下:

nmap –sn –PE –PS80,135 –PU53 scanme.nmap.org

(2)探测局域网内活动主机
扫描局域网192.168.1.100-192.168.1.120范围内哪些IP的主机是活动的。
命令如下:

nmap –sn 192.168.1.100-120

--

4.3.3. 端口扫描(Port Scanning)

1.端口扫描是Nmap最基本最核心的功能,用于确定目标主机的TCP/UDP端口的开放情况。

2.默认情况下,Nmap会扫描1000个最有可能开放的TCP端口。

--

3.Nmap通过探测将端口划分为6个状态:

    open:端口是开放的。
    closed:端口是关闭的。
    filtered:端口被防火墙IDS/IPS屏蔽,无法确定其状态。
    unfiltered:端口没有被屏蔽,但是否开放需要进一步确定。
    open|filtered:端口是开放的或被屏蔽。
    closed|filtered :端口是关闭的或被屏蔽。

Open:端口处于开放状态,例如:当nmap使用TCP SYN对目标主机某一范围的端口进行扫描时,我们知道 TCP SYN报文是TCP建立连接的第一步,所以,如果目标主机返回SYN+ACK的报文,我们就认为此端口开放了并且使用了TCP服务。

Closed:端口处于关闭状态。例如:TCP SYN类型的扫描,如果返回RST类型的报文,则端口处于管理状态。这里我们值得注意的是关闭的端口也是可访问的,只是没有上层的服务在监听这个端口,而且,只是在我们扫描的这个时刻为关闭,当我们在另一个时间段进行扫描的时候,这些关闭的端口可能会处于open的状态。

Filtered(过滤的):由于报文无法到达指定的端口,nmap不能够决定端口的开放状态,这主要是由于网络或者主机安装了一些防火墙所导致的。当nmap收到icmp报文主机不可达报文(例如:type为3,code为13(communication administratively prohibit)报文)或者目标主机无应答,常常会将目标主机的状态设置为filtered。

Unfiltered(未被过滤的),当nmap不能确定端口是否开放的时候所打上的状态,这种状态和filtered的区别在于:unfiltered的端口能被nmap访问,但是nmap根据返回的报文无法确定端口的开放状态,而filtered的端口直接就没就没能够被nmap访问。端口被定义为Unfilterd只会发生在TCP ack扫描类型时当返回RST的报文。而端口被定义为filtered 状态的原因是是报文被防火墙设备,路由器规则,或者防火墙软件拦截,无法送达到端口,这通常表现为发送NMAP的主机收到ICMP报错报文,如:TYPE为3,code为13的报文(通信被认为的禁止 communication administratively prohibited),或者主机通过多次重复发送没有收到任何回应)。

Open|filtered状态,这种状态主要是nmap无法区别端口处于open状态还是filtered状态。这种状态只会出现在open端口对报文不做回应的扫描类型中,如:udp,ip protocol ,TCP null,fin,和xmas扫描类型。

Closed|filtered状态,这种状态主要出现在nmap无法区分端口处于closed还是filtered时。此状态只会出现在IP ID idle scan(这个类型我现在也不太理解,过段时间进行总结一些)中。

--

4.用法

端口扫描用法比较简单,Nmap提供丰富的命令行参数来指定扫描方式和扫描端口。
具体可以参见如下描述。

(1)扫描方式选项

    -sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。  
      
      -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。  
      
      -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。  
      
      --scanflags <flags>: 定制TCP包的flags。  
      
      -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)  
      
      -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况。  
      
      -sO: 使用IP protocol 扫描确定目标机支持的协议类型。  
      
      -b <FTP relay host>: 使用FTP bounce scan扫描方式  

--

(2)端口参数与扫描顺序

    -p <port ranges>: 扫描指定的端口  
      
    实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)  
      
    -F: Fast mode – 快速模式,仅扫描TOP 100的端口  
      
    -r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。  
      
    --top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)  
      
    --port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。  

1.namp -sn

原理:nmap -sn参数可以用来探测某网段的活跃主机
方法:进入root模式->输入命令 nmap -sn 主机地址
分析:扫描得到主机相关信息

2.端口扫描

方法:进入root模式->在命令行输入 nmap -sS -p 80-90 -v [IP地址] (sS是扫描端口,-p是指定端口,-v是详细信息)
分析:采用半开放扫描模式端口均关闭,后又尝试全开放扫描结果也是如此扫描kali主机

方法:输入nmap -PU 192.168.1.134对win主机进行扫描( -PA/-PU:分别向目标主机发送ACK/UDP报文进行主机探测)只显示开放端口

4.4.操作系统版本探测

nmap -O

原理:nmap -sV查看目标主机的详细服务信息
方法:进入root模式->输入命令 nmap -sV [IP地址] ,查看目标主机的详细服务信息,可以看到主机详细信息未被获取防护性能较好

nmap -sV

原理:nmap -sV查看目标主机的详细服务信息
方法:进入root模式->输入命令 nmap -sV [IP地址] ,查看目标主机的详细服务信息

4.5具体服务的查点

Telnet服务扫描

原理:telnet命令用于登录远程主机,对远程主机进行管理。
方法:

sudo msfconsole
use auxiliary/scanner/telnet/telnet_version //进入telnet模块
set RHOSTS 【IP地址】 //扫描10.1.1.0网段
set THREADS 50 //提高查询速度
run

SSH服务

原理:SSH(“安全外壳”)协议是用于从一个系统安全远程登录到另一个的方法。用户通过客户端 - 服务器架构格式的不安全网络使用安全通道,用于将SSH客户端与SSH服务器连接起来。
方法:

sudo msfconsole 
use auxiliary/scanner/ssh/ssh_version //进入ssh模块

set RHOSTS [IP地址] //扫描网段

set THREADS 50 //提高查询速度
run

Oracle数据库服务查点

方法:

sudo msfconsole
use auxiliary/scanner/oracle/tnslsnr_version
show options
set RHOSTS [IP地址]
set THREADS 50
run

--
说明主机不存在Oracle数据库

5.例子

这里,我们以扫描局域网内192.168.1.100主机为例。

命令如下:
nmap –sS –sU –T4 –top-ports 300 192.168.1.100

参数-sS表示使用TCP SYN方式扫描TCP端口;-sU表示扫描UDP端口;-T4表示时间级别配置4级;--top-ports 300表示扫描最有可能开放的300个端口(TCP和UDP分别有300个端口)。

--

--

4.4. 版本探测

  • 每个具体服务的版本探测都需要专用模块
  • 被探测主机在运行相应服务

--

4.4.1. SMB扫描和枚举

  • SMB协议
    • 一种在 Microsoft Windows系统中使用网络文件共享的协议
    • 已被证明是最容易被攻击的协议之一
    • 它允许攻击者枚举目标文件和用户,甚至远程代码执行。

msf5 > use auxiliary/scanner/smb/smb_
use auxiliary/scanner/smb/smb_enum_gpp
use auxiliary/scanner/smb/smb_enumshares
use auxiliary/scanner/smb/smb_enumusers
use auxiliary/scanner/smb/smb_enumusers_domain
use auxiliary/scanner/smb/smb_login
use auxiliary/scanner/smb/smb_lookupsid
use auxiliary/scanner/smb/smb_ms17_010
use auxiliary/scanner/smb/smb_uninit_cred
use auxiliary/scanner/smb/smb_version
msf5 > use auxiliary/scanner/smb/smb_

--

  • smb版本探测

--

  • 例:auxiliary/scanner/smb/smb_enumshares
  • 功能:
    • 无登陆凭据的SMB共享枚举模块,可以收集一些有价值的信息,比如共享名称,操作系统版本等
    • 有凭据时,可以轻松的枚举共享和文件列表
msf5 auxiliary(scanner/smb/smb_enumshares) > set RHOST 192.168.20.180
RHOST => 192.168.20.180
msf5 auxiliary(scanner/smb/smb_enumshares) > run

[-] 192.168.20.180:139    - Login Failed: Unable to Negotiate with remote host
[*] 192.168.20.180:       - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/smb/smb_enumshares) > 

--

-暴力破解


msf5 > use auxiliary/scanner/smb/smb_login
msf5 auxiliary(scanner/smb/smb_login) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/smb/smb_login) > set SMBUSER vagrant
SMBUSER => vagrant
msf5 auxiliary(scanner/smb/smb_login) > set PASS_FILE /root/password.lst
PASS_FILE => /root/password.lst
msf5 auxiliary(scanner/smb/smb_login) > run

[*] 192.168.177.144:445   - 192.168.177.144:445 - Starting SMB login bruteforce
[-] 192.168.177.144:445   - 192.168.177.144:445 - Failed: '.\vagrant:admin',
[-] 192.168.177.144:445   - 192.168.177.144:445 - Failed: '.\vagrant:admin123',
[+] 192.168.177.144:445   - 192.168.177.144:445 - Success: '.\vagrant:vagrant' Administrator
[*] 192.168.177.144:445   - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/smb/smb_login) >

--

4.4.2. SSH 版本扫描和检测

  • SSH是一个广泛使用的远程登录程序。
  • 思路:
    • 通过SSH版本扫描模块,确定目标使用的SSH版本,
    • 通过版本查找公开漏洞
    • 利用漏洞进行攻击
  • 漏洞扫描软件亦使用如上原理
  • auxiliary/scanner/ssh

--

  • 版本探测

msf5 > use auxiliary/scanner/ssh/ssh_version
msf5 auxiliary(scanner/ssh/ssh_version) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/ssh/ssh_version) > run

[+] 192.168.177.144:22    - SSH server version: SSH-2.0-OpenSSH_7.1 ( service.version=7.1 service.vendor=OpenBSD service.family=OpenSSH service.product=OpenSSH service.cpe23=cpe:/a:openbsd:openssh:7.1 service.protocol=ssh fingerprint_db=ssh.banner )
[*] 192.168.177.144:22    - Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/ssh/ssh_version) >

--

-- 可以使用SSH登录测试模块


msf5 > use auxiliary/scanner/ssh/ssh_login
msf5 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/ssh/ssh_login) > set USERNAME user
USERNAME => user
msf5 auxiliary(scanner/ssh/ssh_login) > set PASS_FILE /root/password.lst
PASS_FILE => /root/password.lst
msf5 auxiliary(scanner/ssh/ssh_login) > run

[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

--

4.4.3. FTP版本扫描


msf5 > use auxiliary/scanner/ftp/
use auxiliary/scanner/ftp/anonymous
use auxiliary/scanner/ftp/bison_ftp_traversal
use auxiliary/scanner/ftp/colorado_ftp_traversal
use auxiliary/scanner/ftp/easy_file_sharing_ftp
use auxiliary/scanner/ftp/ftp_login
use auxiliary/scanner/ftp/ftp_version
use auxiliary/scanner/ftp/konica_ftp_traversal
use auxiliary/scanner/ftp/pcman_ftp_traversal
use auxiliary/scanner/ftp/titanftp_xcrc_traversal

--

3.4.4. SMTP枚举

  • SMTP枚举用户的内部命令:
    • VRFY 确认有效用户名
    • EXPN显示用户的实际地址,别名和邮件列表

msf5 > use auxiliary/scanner/smtp/smtp_
use auxiliary/scanner/smtp/smtp_enum
use auxiliary/scanner/smtp/smtp_ntlm_domain
use auxiliary/scanner/smtp/smtp_relay
use auxiliary/scanner/smtp/smtp_version

--

4.4.5. SNMP枚举

  • SNMP(简单网络管理协议)
    • 用于管理网络设备的协议,
    • 比如监控设备的状态信息,接口信息,网络接口的数据吞吐量等。
    • 通过SNMP扫描器可以找到特定系统的大量信息。

如果目标系统为Windows且配置了SNMP(通常是RO/RW团体字符串),我们可以提取系统重启时间,系统上的用户名,系统网络信息,运行的服务等各种有价值的信息。


msf5 > use auxiliary/scanner/snmp/snmp_enum
msf5 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 192.168.177.144
RHOSTS => 192.168.177.144
msf5 auxiliary(scanner/snmp/snmp_enum) > run
[+] 192.168.177.144, Connected.
[*] System information:
Host IP                       : 192.168.177.144     
Hostname                      : metasploitable3     
Description                   : Hardware: Intel64 Family 6 Model 94 Stepping 3 AT/AT COMPATIBLE - Software: Windows Version 6.1 (Build 7601 Multiprocess
r Free) 
Contact                       : -                  
Location                      : -                   
Uptime snmp                   : 01:18:04.40         
Uptime system                 : 01:16:09.69         
System date                   : 2019-4-12 16:44:05.7
[*] User accounts:
["sshd"] 
["Guest"] 
["greedo"] 
["vagrant"] 
["han_solo"]
["kylo_ren"]
["boba_fett"]
["chewbacca"]
["ben_kenobi"]                                                                                     ..... 
[*] Network information:                            
IP forwarding enabled         : no                   
Default TTL                   : 128                
TCP segments received         : 70121              
TCP segments sent             : 70024               
TCP segments retrans          : 23                   
Input datagrams               : 634                
Delivered datagrams           : 825   
....
[*] Network interfaces:

Interface                     : [ up ] Software Loopback Interface 1
Id                            : 1
Mac Address                   : :::::
....

--

4.4.6. HTTP扫描


msf5 > use auxiliary/scanner/http/
Display all 242 possibilities? (y or n)

--

4.4.7. 版本探测模块小结

  • 每个具体的服务都有相应的版本探测和服务枚举模块
  • MSF现支持的模块有如下这些

root@wl:/usr/share/metasploit-framework/modules/auxiliary/scanner# ls
acpp           emc      kademlia   mysql       portmap    sip        udp
afp            etcd     llmnr      natpmp      portscan   smb        upnp
backdoor       finger   lotus      nessus      postgres   smtp       varnish
chargen        ftp      mdns       netbios     printer    snmp       vmware
couchdb        gopher   memcached  nexpose     quake      ssh        vnc
db2            h323     misc       nfs         rdp        ssl        voice
dcerpc         http     mongodb    nntp        redis      steam      vxworks
dect           ike      motorola   ntp         rogue      telephony  winrm
discovery      imap     mqtt       openvas     rservices  telnet     wproxy
dlsw           ip       msf        oracle      rsync      teradata   wsdd
dns            ipmi     msmail     pcanywhere  sap        tftp       x11
elasticsearch  jenkins  mssql      pop3        scada      ubiquiti



4.5.4. 版本侦测(Version Detection)

1.版本侦测,用于确定目标主机开放端口上运行的具体的应用程序及版本信息。

--

2.版本侦测主要分为以下几个步骤:

(1)首先检查open与open|filtered状态的端口是否在排除端口列表内。如果在排除列表,将该端口剔除。
(2)如果是TCP端口,尝试建立TCP连接。尝试等待片刻(通常6秒或更多,具体时间可以查询文件nmap-services-probes中Probe TCP NULL q||对应的totalwaitms)。通常在等待时间内,会接收到目标机发送的“WelcomeBanner”信息。nmap将接收到的Banner与nmap-services-probes中NULL probe中的签名进行对比。查找对应应用程序的名字与版本信息。
(3)如果通过“Welcome Banner”无法确定应用程序版本,那么nmap再尝试发送其他的探测包(即从nmap-services-probes中挑选合适的probe),将probe得到回复包与数据库中的签名进行对比。如果反复探测都无法得出具体应用,那么打印出应用返回报文,让用户自行进一步判定。
(4)如果是UDP端口,那么直接使用nmap-services-probes中探测包进行探测匹配。根据结果对比分析出UDP应用服务类型。
(5)如果探测到应用程序是SSL,那么调用openSSL进一步的侦查运行在SSL之上的具体的应用类型。
(6)如果探测到应用程序是SunRPC,那么调用brute-force RPC grinder进一步探测具体服务

--

3.版本侦测的用法

-sV: 指定让Nmap进行版本侦测  
  
--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。  
  
--version-light: 指定使用轻量侦测方式 (intensity 2)  
  
--version-all: 尝试使用所有的probes进行侦测 (intensity 9)  
  
--version-trace: 显示出详细的版本侦测过程信息。  

--

4.例子

命令:
nmap –sV 192.168.1.100

对主机192.168.1.100进行版本侦测。


4.5.5. 操作系统侦测(Operating System Detection)

1.操作系统侦测用于检测目标主机运行的操作系统类型及设备类型等信息。

2.Nmap拥有丰富的系统数据库nmap-os-db,目前可以识别2600多种操作系统与设备类型。

--

3.OS侦测用法

-O: 指定Nmap进行OS侦测。  
  
--osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。  
  
--osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。  

--

4.例子

命令:
nmap –O 192.168.1.100

db_nmap 方式
db_nmap命令是msfconsole中的一部分,所以只需要启动msfconsole并使用就好了。参数就和在命令行中单独使用nmap一样。


5.漏洞扫描与OpenVAS


隐私保护

  • 哪些信息是不得不公开的
    • 硬币的两个面
  • 哪些信息是可以选择不公开的
  • 谁在过度搜集信息又保护不足
  • 谁在窃取信息并从中牟利

安装

具体步骤:

apt-get update
apt-get dist-upgrade
apt-get install openvas
apt install gvm
sudo gvm-setup//这步时间非常非常非常长,找个网好的地方装,网千万别断,很容易出bug
gvm-feed-update

进行检查gvm-check-setup,显示安装gvm成功

(gvm创建扫描任务出现这个错误Failed to find config 'daba56c8-73ec-11df-a475-002264764cea'解决方法:我是和你报一样的错,只需要更新gvm:apt-get upgrade gvm,然后再进行kali重启,先输入gvm-stop,再gvm-start然后在new task里新建任务就可以了)

首先进行gvm-stop停止上次的gvm进程,然后在重新输入gvm-start重新打开gvm

在浏览器打开gvm界面

登录点击scan-Task

创建任务task-Wizard,输入主机的IP地址进行漏洞扫描


查看并分析扫描结果:打开该扫描结果的详细信息,并点击其中的“Full and fast”:

查看:

点击缓冲区溢出攻击Buffer overflow,可以看到运行的3CTFTPSVC TFTP服务器,容易出现缓冲区溢出漏洞:

解决方法,暂时没有较好的解决方法,从漏洞发现一年内暂时没有可靠的解决方法:

6. 实验回答问题

(1)哪些组织负责DNS,IP的管理。

ICANN(互联网名称与数字地址分配机构)是一个非营利性的国际组织,成立于1998年10月,是一个集合了全球网络界商业、技术及学术各领域专家的非营利性国际组织。负责在全球范围内对互联网唯一标识符系统及其安全稳定的运营进行协调,包括互联网协议(IP)地址的空间分配、协议标识符的指派、通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理。
这些服务最初是在美国政府合同下由互联网号码分配当局(Internet Assigned Numbers Authority,IANA)以及其它一些组织提供。现在,ICANN行使IANA的职能。
负责全球互联网域名管理的机构是ICANN中国管理机构是中国互联网信息中心简称CNNIC。
国际互联网的IP地址和域名的注册方法由四个美国机构制定、分配和管理,即:
1.美国国家科学学会(National Science Foundation简称NSF)制定IP地址和域名的技术标准;
2.网络分解公司(Network Solutions, Inc)对全球电脑主机IP地址和域名作分配和管理;
3.美国电话电报公司(AT&T) 则提供超级电脑数据库,储存全球电脑主机IP地址和对应的域名;
4.国际互联网中心(InterNIC)则统筹以上三个机构的关系,并具体负责全球互联网第二层域名的注册。世界上任何一部电脑主机要联上Internet,首先要向网络分解公司申请IP地址,然后向InterNIC注册域名,这部主机的IP地址和域名就被存入AT&T的数据库中,就在国际互联网中占了一个网点。

(2)什么是3R信息。

R指注册人(Registrant)、注册商(Registrar)、官方注册局(Registry)
3r指的3个仿真的TCP/IP协议。一般情况下它作为应用层上的一种协议;3r核心功能围绕两个方面:一是“数据”,应用层需要完成数据的管理和数据的处理;二是“应用”,仅仅管理和处理数据还远远不够,必须将这些数据与各行业应用相结合。例如在智能电网中的远程电力抄表应用。

(3)评价下扫描结果的准确性。

扫描结果准确清晰,但是遇到某些情况,例如主机没有留下痕迹时,扫描往往得不到想要的结果,但这也从另一方面保证了主机的安全性

7. 实验总结与体会

本次实验我学会了多种扫描方式对ip地址的信息有了更加清醒的认识,黑客的攻击往往是渗透在我们日常生活的每一个角落,我们要做好安全防护知识来保证自己的安全,同时gvm的安装磨练了我的心性,也加深了我对kali的认识,熟练的应用了kali对文件处理的方法

posted @ 2021-04-23 14:14  Mellivorac  阅读(523)  评论(0编辑  收藏  举报