渗透测试——情报收集阶段——主机探测与端口扫描(nmap常用命令)

本文中示例的环境:
在这里插入图片描述


活跃主机扫描

①ICMP Ping 命令

Ping (Packet Internet Grope,因特网包探索器)是一个用于测试网络连接的程序。Ping程序会发送一个 ICMP echo 请求消息给目的主机,并报告应答情况。如果Ping后面跟的是域名,那么它会首先尝试将域名解析,然后向解析得到的IP地址发送数据包。
在这里插入图片描述

②arping

arping 向目标主机发送arp数据包,常用来检测一个ip是否在网络中已被使用。因为主机的 arp 功能是无法关闭的,若关闭了 arp 功能则无法与网络通信。因此 arping 比 ping 的通用性更好。同时,还可以采用 arp-scan --interface=网卡名 网段来扫描一个网段的活跃主机。
arping

③Metasploit 的主机发现模块

Metasploit中提供了一些辅助模块可用于活跃主机的发现,这些模块位于Metasploit源码路径的 modules/auxiliary/scanner/discovery 目录中,主要有以下几个:arp_sweep、ipv6_multicast_ping、ipv6_neighbor、ipv6_neighbor_router_advertisement、udp_prove、udp_sweep。其中两个最常用模块的主要功能为:

  • arp_sweep 使用ARP请求枚举本地局域网络中的所有活跃主机
  • udp_sweep 通过发送UDP数据包探查指定主机是否活跃,并发现主机上的UDP服务
    在这里插入图片描述
④使用Nmap进行主机探测

Nmap (Network mapper)是目前最流行的网络扫描工具,它不仅能够准确地探测单台主机的详细情况,而且能够高效率地对大范围的IP地址段进行扫描。使用Nmap能够得知目标网络上有哪些主机是存活的,哪些服务是开放的,甚至知道网络中使用了何种类型的防火墙设备等。


操作系统辨识

获取了网络中的活跃主机后,就应该关注于这些主机安装了什么操作系统,准确区别出设备使用的操作系统对于后续渗透流程的确定和攻击模块的选择非常重要。同时,漏洞扫描器得到的扫描结果中一般会存在误报现象,而准确地操作系统辨识能排除这些误报项目。

可以使用 nmap -O 网络或网段 对目标的操作系统进行识别
在这里插入图片描述


端口扫描与服务类型探测

可以通过端口扫描了解到目标网络极为详细的信息,为下一步开展网络渗透打下基础。目前常见的端口扫描技术有如下几类:TCP Connect、TCP SYN、TCP ACK、TCP FIN。此外还有一些更为高级的端口扫描技术,如TCP IDLE。
TCP Connect扫描指的是扫描器发起一次真实的TCP连接,如果连接成功表明端口是开放的,这种扫描得到的结果最精确,但速度最慢,此外也会被扫描目标主机记录到日志文件中,容易暴露扫描。而SYN、ACK、FIN等则是利用了TCP协议栈的一些特性,通过发送一些包含了特殊标志位的数据包,根据返回信息的不同来判定端口的状态,这类扫描往往更加快速和隐蔽。

①Metasploit中的端口扫描器

Metasploit 的辅助模块中提供了几款实用的端口扫描器,可以输入search portscan命令找到相关的端口扫描器。
Metasploit中的端口扫描器

  • ack:通过 ACK 扫描方式对防火墙上未被屏蔽的端口进行探测
  • ftpbounce:通过 FTP bounce 攻击的原理对TCP服务进行枚举,一些新的 FTP 服务器软件能够很好的防范 FTP bounce 攻击,但在一些旧的 Solaris 和 FreeBSD 系统的 FTP 服务中此类攻击方式仍能够被利用
  • syn:使用发送 TCP SYN 标志的方式探测开放的端口
  • tcp:通过一次完整的 TCP 连接来判断端口是否开放,这种扫描方式最准确,但扫描速度较慢
  • xmas:一种更为隐秘的扫描方式,通过发送 FIN、PSH和URG标志,能够躲避一些高级的 TCP 标记监测器的过滤

下面是使用 syn 方式的端口扫描示例:
在这里插入图片描述

②Nmap 的端口扫描功能

大部分扫描器会对所有的端口分为 open (开放) 或 closed (关闭) 两种类型,而 Nmap 对端口状态的分析粒度更加细致,共分为六个状态:open (开放)、closed (关闭)、filtered (被过滤)、unfiltered (未过滤)、open|filtered (开放或被过滤)、closed|filtered (关闭或被过滤)。

  • open:一个应用程序正在此端口上进行监听,以接收来自 TCP、UDP 或 SCTP 协议的数据。这是在渗透测试中最关注的一类端口,开放端口往往能够为我们提供一条能够进入系统的攻击路径
  • closed:关闭的端口指的是主机已经响应,但没有应用程序监听的端口。这些信息并非没有价值,扫描出关闭端口至少说明主机是在活跃状态
  • filtered:指 Nmap 不能确认端口是否开放,但根据响应数据猜测该端口可能被防火墙等设备过滤
  • unfiltered:仅在使用 ACK 扫描时,Nmap 无法确定端口是否开放,会归为此类。可以使用其他类型的扫描 (如 Window 扫描、SYN扫描、FIN扫描) 来进一步确认端口的信息
    在这里插入图片描述
③ Bank Track 5 的 Autoscan 功能

BT5 提供了一个完全图形化、简单易用的工具 Autoscan,可在如下位置找到:Applications → BackTrack → Information Gathering → Net Analysis → Network Scanner → Autoscan。虽然实际使用的效果比不上 Nmap,但能够提供一个非常直观的系统网络情况在这里插入图片描述


Nmap 常用命令

①活跃主机扫描
  • -sL:简单列表扫描
  • -sn:Ping 扫描主机,但不进行端口扫描
  • -sP:进行 Ping 扫描
  • -sA:发送 TCP 的 ack 包进行探测
  • -iL:若有一个 IP地址列表,将其保存为一个 txt 文件,并和 nmap 在同一目录下,则可以使用该命令扫描该 txt 文件中的 IP地址
    用法:nmap -iL IP.txt
②端口扫描
  • -sT:TCP connect 扫描,类似 Metasploit 中的 tcp 扫描模块
  • -PU:UDP ping 扫描
  • -sS:TCP SYN 扫描,类似 Metasploit 中的 syn 扫描模块
  • -sF / -sX / -sN:这些扫描通过发送一些特殊的标志位以避开设备或软件的监测
  • -sU:探测目标开放了哪些 UDP 端口
  • -Pn:在扫描之前,不发送 ICMP Ping 来测试目标是否活跃
  • -F:快速扫描模式,只扫描在 nmap-services 中列出的端口
  • -p<端口范围>:指定希望扫描的端口,也可以使用一段端口范围。
  • -sO:指定想要扫描的协议号 (0 ~ 255)
  • -sV:扫描目标主机和端口上运行的软件及版本信息
③ 绕过防火墙
  • -f:通过分片绕过防火墙
  • -D:使用诱饵隐蔽扫描,用法:nmap -D [ip1,ip2 …… | RND:10] 目标主机。即可以指定诱饵主机,也可以使用 RND 随机生成指定数量的主机
  • -S:源地址欺骗,可以修改扫描时的源地址,如:nmap -S 10.10.10.10
  • –source-port 或 -g:源端口欺骗,修改扫描时的端口
④其他命令
  • -e:指定网络接口,扫描时使用哪个网卡
    用法:nmap -e eth0 目标IP

  • -S:可以伪装源地址进行扫描,使对方发现不到自己的真实IP。
    注:若使用 -S 伪装自己的源地址进行扫描,则必须使用 -e 指定网卡,同时使用 -Pn 参数才能伪装
    用法:nmap -e eth0 目标IP -S 要伪装成的IP -Pn

  • -O:可用来扫描目标的操作系统类型

  • -A:获取目标所有信息,最全最完整的一个扫描

  • -v:显示扫描规程

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
namp 2011-06-25 02:13:43| 分类: Linux | 标签:namp |字号大中小 订阅 . 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):   nmap -sP 192.168.1.0/24   仅列出指定网络上的每台主机,不发送任何报文到目标主机:   nmap -sL 192.168.1.0/24   探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   nmap -PS 192.168.1.234 nmap -PS 127.0.0.1 -p 100-700   使用UDP ping探测主机:   nmap -PU 192.168.1.0/24   使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:   nmap -sS 192.168.1.0/24   当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:   nmap -sT 192.168.1.0/24   UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:   nmap -sU 192.168.1.0/24   确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):   nmap -sO 192.168.1.19   探测目标主机的操作系统:   nmap -O 192.168.1.19   nmap -A 192.168.1.19   另外,nmap官方文档中的例子:   nmap -v scanme.   这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。   nmap -sS -O scanme./24   进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。   nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127   进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。   nmap -v -iR 100000 -P0 -p 80   随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。   nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20   扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。   host -l | cut -d -f 4 | nmap -v -iL -   进行DNS区域传输,以发现中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。   其他选项:   -p (只扫描指定的端口)   单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。   -F (快速 (有限的端口) 扫描)namp 2011-06-25 02:13:43| 分类: Linux | 标签:namp |字号大中小 订阅 . 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):   nmap -sP 192.168.1.0/24   仅列出指定网络上的每台主机,不发送任何报文到目标主机:   nmap -sL 192.168.1.0/24   探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   nmap -PS 192.168.1.234 nmap -PS 127.0.0.1 -p 100-700   使用UDP ping探测主机:   nmap -PU 192.168.1.0/24   使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:   nmap -sS 192.168.1.0/24   当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:   nmap -sT 192.168.1.0/24   UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:   nmap -sU 192.168.1.0/24   确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):   nmap -sO 192.168.1.19   探测目标主机的操作系统:   nmap -O 192.168.1.19   nmap -A 192.168.1.19   另外,nmap官方文档中的例子:   nmap -v scanme.   这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。   nmap -sS -O scanme./24   进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。   nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127   进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。   nmap -v -iR 100000 -P0 -p 80   随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。   nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20   扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。   host -l | cut -d -f 4 | nmap -v -iL -   进行DNS区域传输,以发现中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。   其他选项:   -p (只扫描指定的端口)   单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。   -F (快速 (有限的端口) 扫描)namp 2011-06-25 02:13:43| 分类: Linux | 标签:namp |字号大中小 订阅 . 进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):   nmap -sP 192.168.1.0/24   仅列出指定网络上的每台主机,不发送任何报文到目标主机:   nmap -sL 192.168.1.0/24   探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):   nmap -PS 192.168.1.234 nmap -PS 127.0.0.1 -p 100-700   使用UDP ping探测主机:   nmap -PU 192.168.1.0/24   使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:   nmap -sS 192.168.1.0/24   当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:   nmap -sT 192.168.1.0/24   UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:   nmap -sU 192.168.1.0/24   确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):   nmap -sO 192.168.1.19   探测目标主机的操作系统:   nmap -O 192.168.1.19   nmap -A 192.168.1.19   另外,nmap官方文档中的例子:   nmap -v scanme.   这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。   nmap -sS -O scanme./24   进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。   nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127   进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。   nmap -v -iR 100000 -P0 -p 80   随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。   nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20   扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。   host -l | cut -d -f 4 | nmap -v -iL -   进行DNS区域传输,以发现中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU/Linux -- 其它系统进行区域传输时有不同的命令。   其他选项:   -p (只扫描指定的端口)   单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。   -F (快速 (有限的端口) 扫描)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值