渗透测试:主机发现和端口扫描的方法总结(nmap+arp-scan+ping命令+nc.traditional+伪设备连接)

目录

nmap环境

方法一:nmap扫描 

1.主机发现:

2.端口扫描:

​编辑

非nmap环境

方法二:arp-scan-主机发现

方法三:ping命令-主机发现

 方法四:netcat-端口扫描

  方法五:伪设备-端口扫描


信息搜集是渗透测试的第一步,而主机发现和端口扫描则是信息搜集的关键步骤。后续的渗透测试都是基于开始搜集侦察的信息进行测试的。这一步一定要保证把信息搜集完整齐全,否则一旦后续渗透过程出现了思路不畅,就会返工完全重做,非常浪费时间哪怕是扫描不到有效的信息,也要及时记录

nmap环境

方法一:nmap扫描 

 nmap是进行主机发现和端口扫描最为常见的工具,但由于nmap这个工具过于出名,其流量特征早已被分析透彻,因此使用nmap进行扫描是很容易暴露痕迹的,容易被蓝队发现。在常规的打靶自学中,nmap还是非常常规的工具,我们应该熟悉其常规的参数和原理。

nmap的参数使用帮助可使用nmap --help查看:

sudo nmap --help

nmap参数很多,细小的参数差异可能实现很多不同的功能,所以我们应该对nmap的参数有一定的研究,才能让我们在遇见需求时,选择正确的参数 

常用参数

-sn ping扫描,用于扫描自己主机的整个c段,用来探针网段内存活主机

-sT TCP扫描,扫描通过tcp的协议

-sU UDP扫描,扫描通过UDP的协议

-sV 服务版本,显示扫描的存活端口开放服务的具体版本

-O 操作系统,显示目标主机的操作系统

-p 接开放端口,-p-  全端口扫描

--script=漏洞脚本  常用脚本:vuln

-min-rate 10000 最小扫描速度,nmap以不小于每秒10000次的速率进行扫描

        10000这个数字是权衡的结果,数字过大,则扫描速度过快,有可能会有端口遗漏;数字过小,则扫描速度过慢,浪费时间。实际情况中建议扫描两次,保证没有端口遗漏。

1.主机发现:

对整个网段进行扫描。如果靶机和攻击机在同一个网段,我们可以扫描自己的网段确定靶机的ip,命令如下:

sudo nmap -sn 192.168.254.0/24 

网段中这么多ip怎么确定那个ip是我们的目标主机?

在实际的渗透中,要想保证扫描准确,可以在靶机上线前后各进行一次扫描,对比上线的ip即可确定靶机的ip

2.端口扫描:

2.1.全端口扫描

通过-min-rate 限制扫描速度,快速准确的扫描出目标主机的存活ip

sudo nmap -min-rate 10000 -p- 192.168.254.142

在实际的渗透过程中,会有网络延迟,防火墙的干扰,所以建议扫两遍以免遗漏;如果两次结果不同,就要分析原因调整参数;可以看到这些端口协议都走TCP

2.2.UDP扫描-扫描走UDP的端口是否有存活

UDP端口暴露的攻击面虽然较小,但我们也不要遗漏信息

sudo nmap -sU -min-rate 10000 -p- 192.168.254.142

2.3.服务版本探测

我们最为看重的一次扫描,会出现各种有价值的信息(各端口服务版本,操作系统版本)

sudo nmap -sT -sV -O -p22,80,3306,8080 192.168.254.142 

2.4.漏洞脚本扫描 

nmap中自带了一些内置脚本,其中就用漏洞脚本vuln,vuln是vulnerbility漏洞脆弱点的简写

sudo nmap --script=vuln -p22,80,3306,8080 192.168.254.142 

表示探测这些端口的漏洞。这一步扫描的时间较长,可能需要几分钟时间。nmap的漏洞扫描结果可以给我们一个渗透测试的大致思路,即哪里的漏洞较多,我们可以从哪个端口入手进行渗透。通常情况nmap的漏洞扫描不会有太多结果,仅仅是一个辅助

非nmap环境

实际情况中,可能我们无法使用nmap进行主机发现(不想暴露流量特征/nmap被ban/环境中没有nmap且无法联网等情况)

方法二:arp-scan-主机发现

arp-scan -l

一种基于ARP协议的网络扫描工具,可以快速扫描整个网段并显示活动主机的IP地址和MAC地址

方法三:ping命令-主机发现

ping命令查看帮助文档

ping --help

但ping命令每次只能ping一个,所以结合bash脚本,扫描整个c段

for i in {1..254}; do ping -c 1 -W 0.1 192.168.254.$i|grep from;done

 可以很方便的看到这个网段范围内存活的一些主机

方法四:netcat-端口扫描

 利用nc进行端口扫描,不过要实现端口扫描用的是旧版的nc,而kali中默认安装的新版的nc,因此要使用nc.traditional,可以先用nc.traditional -h查看参数帮助:

nc.traditional -h
  • -vv: 这是命令的选项之一,表示进行详细的输出(verbose)。通过使用该选项,命令将提供更多关于扫描进程的信息。

  • -z: 这也是命令的选项之一,表示进行端口扫描。它会尝试建立到指定IP地址和端口的连接,但不发送任何实际的数据。

端口扫描:

扫描20-120的端口开放情况,这是完成过滤后的语句,只会显示存活端口

sudo  nc.traditional -vv -z 192.168.254.142 1-65535 2>&1| grep -v refused

方法五:伪设备-端口扫描

伪设备,即/dev/tcp/ ,此处需要bash环境,而kali中的默认shell环境是zsh,可以用如下命令看到:

什么是伪设备?

在linux中所有设备都是映射成的文件,所以用文件模拟设备

echo $SHELL

先切换bsah环境(该命令在bash环境下更稳定)

bash

我们需要输入bash字符调整为bash的shell环境,若对20~120号端口进行扫描,bash脚本如下:

for i in {20..120}; do (echo < /dev/tcp/192.168.254.142/$i) &>/dev/null && printf "\n[+] The open port is : %d\n" "$i" || printf ".";done

这个脚本的作用是遍历指定的端口范围尝试与目标IP地址的每个端口建立TCP连接。如果连接成功,则显示一个带有开放端口号的消息,如果连接失败,则显示一个点号.表示关闭端口,同时表示程序正在运行。这样可以快速扫描目标主机的端口,识别哪些端口是开放的。

for循环会依次遍历端口号,循环体中使用/dev/tcp特殊文件(伪设备)来进行基于TCP的端口连接测试。192.168.200.144是要扫描的目标IP地址,$i表示当前循环的端口号。

这里插叙一下,如果遍历所有端口1-65535,时间会很长,通常情况大部分端口都是关闭的,会输出很多点. 如果我们想终止程序,需要用ctrl + z,然后再kill -9 %1终止上一条命令

 

参考:

渗透测试:主机发现和端口扫描的思路方法总结(nmap+ping命令+nc.traditional+伪设备连接)_nmap ping扫描-CSDN博客

  • 32
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值