信息收集--主机发现


一、主机发现是什么?

  根据nmap.org官网对主机发现的描述,可总结为如下描述。
  网络探测任务的最初几个步骤之一就是把一组IP范围(有时该范围是巨大的)缩小为 一列活动的或者您感兴趣的主机,一个外部入侵测试人员可能绞尽脑汁用各种方法试图突破防火墙的封锁。
  主机发现有时候也叫做ping扫描,但却不仅限于用ping工具发送简单的ICMP回声请求报文,就比如,我们可以跳过ping扫描或者使用多个端口把  扫描局域网时,像Nmap,默认情况下它就发送一个TCP ACK报文到80端口和一个ICMP回声请求到每台目标机器,一般来说这样就足够了,但是如果要进行安全审核,则需要更加的细致全面的探测。

二、Nmap

1.Nmap简介及安装

官网:https://nmap.org/
安装:

  • Mac os:brew install nmap
  • Centos:yum install nmap
  • Ubuntu:apt-get insatll nmap

手册:https://nmap.org/book/install.html

这里带大家一起装一下
  先说一下,Nmap 曾经是一个仅限 Unix 的工具,而 Windows 版本是2000年发布,最终成为第二大流行的 Nmap 平台(仅次于 Linux)。

  Windows 端口并不像 Unix 那样高效,它有着如下一些限制。

  • Nmap 仅支持以太网接口(包括大多数 802.11 无线网卡和许多 VPN 客户端)进行原始数据包扫描。除非使用-sT -Pn这些选项,否则不支持 RAS 连接(例如 PPP 拨号)和某些 VPN 客户端。
  • 当使用 Nmap 和 WinPcap 而不是 Npcap 时,您通常无法从自身扫描您自己的机器(使用环回IP(例如 127.0.0.1 或其任何注册 IP 地址)。

Windows版
下载界面:https://nmap.org/download.html
  点击这里下载自安装版的可执行文件,至于为什么使用自安装版,当然是因为它最方便安装,还提供了安装 Zenmap GUI 和其他工具的选项。
  而像什么利用命令行Zip二进制文件,从源代码编译的方式都是可以的,看个人选择。
信息收集--主机发现
运行可执行文件,点击I Agree
信息收集--主机发现
这些我个人就全给它装了
信息收集--主机发现
信息收集--主机发现
中间弹出来的这个,点击I Agree
信息收集--主机发现
信息收集--主机发现
信息收集--主机发现
这里打开cmd,输入nmap -version,查看一下是否安装成功
信息收集--主机发现Nmap版本7.91 (https://nmap.org)
平台:i686-pc-windows-windows
编译使用:nmap-liblua-5.3.5 openssl-1.1.1h nmap-libssh2-1.9.0 nmap-libz-1.2.11 nmap-libpcre-7.6 Npcap-1.00 nmap-libdnet-1.12 ipv6
没有编译:可用的nsock引擎:iocp poll选择

打开Zenmap也是成功可用的
信息收集--主机发现
Ubuntu版
简单明了,一句命令搞定
apt-get install nmap
信息收集--主机发现
namp -h,查看一下安装情况
信息收集--主机发现

2.扫描方式

  • TCP:-sT (列表扫描 - 简单地列出要扫描的目标)

  它简单地列出指定网络的每个主机,而不向目标主机发送任何数据包。列表扫描是一项很好的健全性检查,可确保您的目标拥有正确的 IP 地址。

  • SYN:-sS (TCP SYN扫描)

  它可以快速执行,在不受限制性防火墙阻碍的快速网络上每秒扫描数千个端口。它也相对不显眼和隐蔽,因为它永远不会完成 TCP 连接。这种技术通常称为半开扫描,因为您不会打开完整的 TCP 连接。
  大致过程为这样,如果多次重传后均未收到响应,则将该端口标记为已过滤。如果收到 ICMP 不可达错误(类型 3,代码 0、1、2、3、9、10 或 13),端口也会被标记为已过滤。如果在响应中接收到 SYN 数据包(没有 ACK 标志),则该端口被视为打开。

  • ACK:-sA (ACK扫描)

  它用于映射防火墙规则集,确定它们是否有状态以及过滤哪些端口。ACK 扫描探测数据包仅设置了 ACK 标志,当扫描未过滤的系统时,打开和关闭的端口都将返回一个RST包,然后Nmap将它们标记为未过滤的,这意味着它们可以被ACK包访问,但它们是打开还是关闭是不确定的。而没有响应的端口,或者发送特定的ICMP错误消息(类型3,代码0、1、2、3、9、10或13),被标记为过滤。

  • UDP:-sU (UDP 扫描)

  DNS、SNMP 和 DHCP(端口 53、161/162 和 67/68)被广泛部署为UDP协议,由于 UDP 扫描通常比 TCP 慢且难度更大,因此一些安全审核员会忽略这些端口,但这是一个错误的做法,因为可利用的 UDP 服务非常普遍,攻击者当然不会忽略整个协议。
  它可以与 TCP 扫描类型(例如 SYN 扫描 ( -sS))结合使用,以在同一运行期间检查两种协议。

  UDP 扫描的工作原理是向每个目标端口发送一个 UDP 数据包。如果返回 ICMP 端口不可达错误(类型 3,代码 3),则端口为关闭,其他 ICMP 不可达错误(类型 3,代码 0、1、2、9、10 或 13)将端口标记为filtered,有时候,服务将响应一个UDP包,证明它是开放的。如果在重新发送后没有收到响应,端口被标记为打开或者被过滤。这意味着端口可能是开放的,或者数据包过滤器阻止了通信。
  版本检测(-sV) 可用于帮助区分真正开放的端口和过滤的端口。

  • RPC:-sR (RPC扫描)

  这种方法和许多端口扫描方法联合使用。它对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图 确定它们是否RPC端口,如果是, 是什么程序和版本号。-sR作为版本扫描(-sV)的一部分自动打开,由于版本探测包括它并且全面得多,-sR很少被需要。

  • ICMP:-sP (进行Ping扫描)

  打印出对ping扫描做出响应的主机,不做进一步测试

  • Disable Port Scan:-sn (Ping 扫描 - 禁用端口扫描)

  ping探测扫描主机, 不进行端口扫描

ICMP 不可达错误 类型3及代码如下
信息收集--主机发现

Nmap识别的六个端口状态

  • 打开 open
  • 关闭 closed
  • 过滤 filtered
  • 未过滤 unfiltered
  • 打开|过滤 open|filtered
  • 关闭|过滤 closed|filtered

3.常见扫描方案

  • 扫描10000端口、操作系统、版本
nmap -T4 -A <Target> 

-T<0-5>:设置时序模板(越高越快)
-A:启用操作系统检测、版本检测、脚本扫描和traceroute
信息收集--主机发现

  • 版本探测
nmap -sV <Target> 

版本检测是用来扫描目标主机和端口上运行的软件的版本
信息收集--主机发现

  • 操作系统
nmap -O <Target> 
信息收集--主机发现

4.其他技巧

  • –host-timeout 放弃低速目标主机 主机超时时间 通常选值:18000
  • –scan-delay 报文时间间隔 通常选值:1000
  • -S<源地址> 定义扫描源地址,为了不被发现

示例

nmap -v -iR 100000 -P0 -p 80 

这段主要意思是随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因此使用-P0禁止主机列表。

-v:增加详细级别(使用 -vv 或更多以获得更大的效果)
-iR :选择随机目标
-P0:将所有主机视为在线,跳过主机发现
-p:扫描指定端口
信息收集--主机发现

host -l company.com | cut -d -f 4 | nmap -v -iL - 

host 命令是常用的分析域名查询工具,是一个 DNS 查找实用程序,用于查找域名的 IP 地址。
host -l 列出一个域中的所有主机
信息收集--主机发现
cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中。
-f : 提取指定的字段,cut 命令使用 Tab 作为默认的分隔符。
-d : Tab 是默认的分隔符,使用这一选项可以指定自己的分隔符。

语法: cut -d ‘分隔字符’ [-cf] n
-d 后面指定分隔符,单引号引起来,必须是单个字符
-f 指定第几段,可以跟多个数字,用逗号隔开 -f 1 就是截取第一段。
-c 后面只有一个数字,表示截取第几个字符

nmap中
-v:增加详细级别
-iL :从主机/网络列表输入
信息收集--主机发现
输出

grepable 输出的 -oG如果使用 - 选项会将其发送到 STDOUT,而不是发送到文件。

利用操作系统检测扫描

sudo nmap -O -oG - 192.168.70.1 

信息收集--主机发现
IPID Seq 字段是来自标准输出的 IP 序列生成字段,它将告诉主机如何生成 IPID,包括增量、随机、随机正增量等。此值将有助于确定主机对某些类型的攻击和信息收集策略的脆弱程度。
Seq Index 字段是预测下一个 TCP 序列号的难度等级。在正常输出中,我们有一些关键术语来帮助读取这个数字,但基本思想是数字越大,猜测 TCP 标头中的下一个 TCP 序列号就越困难。
Seq < 10 - Trivial Joke 极简单
11 < Seq < 80 - Easy 简单
81 < Seq < 3000 - Medium Difficulty 中等难度
3001 < Seq < 5000 - Formidable 强大
5001 < Seq < 10000 - Worthy challenge 值得挑战
10001 < Seq - “Good Luck!” 祝你好运喽

nmap 192.168.70.1 -oG - | awk '/open/{print $2}' 
信息收集--主机发现

我们使用 -oG - 将 grepable 输出发送到 STDOUT,然后将其通过管道传输到 awk。awk 命令正在运行这个简单的脚本,其中 /open/ 匹配测试打开(与“grep 打开”相同),并打印第二个字段,以空格分隔输出。

利用 ping 扫描

sudo nmap -oG - -sP 192.168.70.1/24  

ping 扫描,我们可以看到基本格式是相同的,仍然是制表符 (t) 分隔的条目
信息收集--主机发现

三、masscan

1.masscan简介及安装

masscan:海量 IP 端口扫描器。
这是一个 Internet 规模的端口扫描器。它可以在 5 分钟内扫描整个 Internet,从一台机器每秒传输 1000 万个数据包。

项目地址:https://github.com/robertdavidgraham/masscan
安装:
这里安装在Debian/Ubuntu 上的方法如下

sudo apt-get --assume-yes install git make gcc git clone https://github.com/robertdavidgraham/masscan cd masscan make sudo make install 

该工具兼容Nmap的参数

安装过程
信息收集--主机发现
信息收集--主机发现
信息收集--主机发现
信息收集--主机发现
信息收集--主机发现
信息收集--主机发现信息收集--主机发现

2.高级选项

masscan --ports 1-10000 192.168.70.1 --adapter-ip 192.168.70.144 
信息收集--主机发现
  • –adapter-ip 指定发包的ip地址
  • –adapter-port 指定发包的源端口
  • –adapter-mac 指定发包的源MAC地址
  • –router-mac 指定网关的MAC地址
  • –exclude IP地址范围黑名单,防止masscan扫描
  • –excludefile 指定IP范围黑名单文件
  • –includefile,-iL 读取一个范围列表进行扫描
  • –wait 指定发送完包之后的等待时间,默认为10秒

示例

扫描192.168.70.0子网
扫描两个子网上的端口 80 和范围 8000 到 8100,或总共 102 个端口

masscan -p80,8000-8100 192.168.70.0/24 
信息收集--主机发现

获取Banner

masscan 10.0.0.0/8 -p80 --banners --source-ip x.x.x.x 

扫描10.x.x.x网段80端口的开放信息,并且获取banner信息。–source-ip 是指定源IP,这个ip必须指定独立有效的IP地址。

设置扫描时忽略一些网段

masscan 0.0.0.0/0 -p0-65535 --excludefile exclude.txt 

输出到指定文件中

masscan 0.0.0.0/0 -p0-65535 -oX scanRes.xml 

设置扫描速度

masscan 0.0.0.0/0 -p0-65535 --max-rate 100000 

扫描器使用的默认的速率是100包/秒,这条命令将以每秒10万包的速率进行扫描。

四、nbtscan

nbtscan是一款用于扫描Windows网络上NetBIOS名字信息的程序,它可以取到PC的真实IP地址和MAC地址。

信息收集--主机发现
这个工具在Kail Linux 已经安装好了

 $ whereis nbtscan  nbtscan: /usr/bin/nbtscan /usr/share/man/man1/nbtscan.1.gz  $nbtscan  ....  nbtscan [-v] [-d] [-e] [-l] [-t timeout] [-b bandwidth] [-r] [-q] [-s separator]   .... 

信息收集--主机发现
nbtscan 示例

$ nbtscan -v -s : 192.168.1.0/24 

以:分割显示结果
信息收集--主机发现

$ nbtscan -r 192.168.70.0/24 

扫描整个c段
信息收集--主机发现

$ nbtscan 192.168.1.25-137 

扫描一个范围
信息收集--主机发现

$ nbtscan -f <File> 

以文件读取扫描范围
信息收集--主机发现
信息收集--主机发现

高级用法

$ nbtscan -v -s : 192.168.1.0/24                 Scans C-class network. Prints results in script-friendly                 format using colon as field separator.                 Produces output like that:                 192.168.0.1:NT_SERVER:00U                 192.168.0.1:MY_DOMAIN:00G                 192.168.0.1:ADMINISTRATOR:03U                 192.168.0.2:OTHER_BOX:00U                 ... $ nbtscan -v -s : 192.168.1.0/24 | awk '{print $1}' | uniq 				192.168.0.1 				... 

uniq 命令用于检查及删除文本文件中重复出现的行列
awk 是一种处理文本文件的语言
awk ‘{[pattern] action}’ {filenames} # 行匹配语句 awk ’ ’ 只能用单引号

五、hping3

hping3主要是测试防火墙的拦截规则,对网络设备进行测试

信息收集--主机发现
常用模式

  • -0 --rawip IP原始报文
  • -1 --icmp ICMP模式
  • -2 --udp UDP模式
  • -8 --scan 扫描模式
  • -9 --listen 监听模式
$ hping3 --scan 1-30,70-90 -S 192.168.70.1 

-S 设置syn标志

SYN方式扫描主机端口
信息收集--主机发现

可以看到,目标主机回复了:S…A,代表了SYN/ACK

$ hping3 -S -a 114.114.114.114  -p 53 114.114.114.114 -c 5 

-a 欺骗源地址
-p 目的端口
-c 包的数量

测试防火墙对ICMP包的反应,是否支持traceroute,是否开放某个端口、对防火墙进行拒绝服务攻击(DoS attack)。例如,以LandAttack方式测试目标防火墙(Land Attack是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接)。

DRhttps://man.linuxde.net/hping3

版权声明:玥玥 发表于 2021-08-07 18:38:45。
转载请注明:信息收集--主机发现 | 女黑客导航