渗透测试:主机发现和端口扫描的方法总结(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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/775627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未能加载文件或程序集socutdata或它的某一个依赖项试图加载格式不正确的程序

未能加载文件或程序集socut data或它的某一个依赖项试图加载格式不正确的程序 Socut.Data.dll找不到类型或命名空间名称 把bin目录下面 的socut.data.dll删除就行了 C#报错未能加载文件或程序集socut data或它的某一个依赖项试图加载格式不正确的程序 "/"应用程序…

Navicat 干货 | 通过检查约束确保 PostgreSQL 的数据完整性

数据完整性对于任何数据库系统来说都是很重要的一方面&#xff0c;它确保存储的数据保持准确、一致且有意义的。在 PostgreSQL 中&#xff0c;维护数据完整性的一个强大工具是使用检查约束。这些约束允许你定义数据必须遵守的规则&#xff0c;以防止无效数据的插入或修改。本文…

服务器详解

一、服务器的概念 什么是服务器? 专业解答—— 服务器是计算机的一种&#xff0c;它比普通让算机运行更块&#xff0c;负裁更高&#xff0c;价格更贵。服务器在网络中为客户机&#xff08;如PC机、智能手机、ATM等终端甚至是火车系统等大型设备)提供计算或者应用服务。服务…

机器人寻路算法双向A*(Bidirectional A*)算法的实现C++、Python、Matlab语言

机器人寻路算法双向A*&#xff08;Bidirectional A*&#xff09;算法的实现C、Python、Matlab语言 最近好久没更新&#xff0c;在搞华为的软件挑战赛&#xff08;软挑&#xff09;&#xff0c;好卷只能说。去年还能混进32强&#xff0c;今年就比较迷糊了&#xff0c;这东西对我…

C# 运算符重载 之前的小总结

C# 中支持运算符重载&#xff0c;所谓运算符重载就是我们可以使用自定义类型来重新定义 C# 中大多数运算符的功能。运算符重载需要通过 operator 关键字后跟运算符的形式来定义的&#xff0c;我们可以将被重新定义的运算符看作是具有特殊名称的函数&#xff0c;与其他函数一样&…

C++经典面试题目(八)

1、什么是友元函数&#xff1f;它有什么特点&#xff1f; 友元函数是在 C 中的一种特殊机制&#xff0c;它允许某个函数访问类的私有成员。友元函数不是类的成员函数&#xff0c;但具有访问类的私有成员的权限。特点&#xff1a; 友元函数可以在类的内部或外部声明和定义。友元…

[flask]执行上下文的四个全局变量

flask上下文全局变量&#xff0c;程序上下文、请求上下文、上下文钩子 -- - 夏晓旭 - 博客园 (cnblogs.com) 执行上下文 执行上下文&#xff1a;即语境&#xff0c;语意&#xff0c;在程序中可以理解为在代码执行到某一行时&#xff0c;根据之前代码所做的操作以及下文即将要…

视觉循迹小车(旭日x3派、摄像头、循迹)

1、旭日x3派&#xff08;烧录好系统镜像&#xff09; 2、USB摄像头 3、TB6612 4、小车底盘&#xff08;直流电机或直流减速电机&#xff09; 视觉循迹原理 x3派读取摄像头图像&#xff0c;转换成灰度图像&#xff0c;从灰度图像中选择第 120 行&#xff08;图像的一个水平线…

Stable Diffusion XL之使用Stable Diffusion XL训练自己的AI绘画模型

文章目录 一 SDXL训练基本步骤二 从0到1上手使用Stable Diffusion XL训练自己的AI绘画模型2.1 配置训练环境与训练文件2.2 SDXL训练数据集制作(1) 数据筛选与清洗(2) 使用BLIP自动标注caption(3) 使用Waifu Diffusion 1.4自动标注tag(4) 补充标注特殊tag(5) 训练数据预处理(标注…

neo4j相同查询语句一次查询特慢再次查询比较快。

现象&#xff1a; neo4j相同查询语句一次查询特慢再次查询比较快。 分析&#xff1a; 查询语句 //查询同名方法match(path:Method) where id(path) in [244333030] and NOT path:Constructor//是rpc的方法match(rpc_method:Method)<-[:DECLARES]-(rpc_method_cls:Class) -…

从零开始为香橙派orangepi zero 3移植主线linux——1.uboot

从零开始为香橙派orangepi zero 3移植主线linux——1.uboot 0.前言一、准备二、制作引导文件1.BL312.SCP firmware (Crust)3.uboot 三、烧录四、运行 0.前言 之前买了块香橙派zero3&#xff0c;CPU是全志H618&#xff0c;四核cortex-A53&#xff0c;烧录了官方的ubuntu系统后就…

vscode上编辑vba

安装xvba插件更换vscode的工作目录启动扩展服务器在config.json中添加目标工作簿的名称加载excel文件&#xff08;必须带宏的xlsm&#xff09;这个扩展就会自动提取出Excel文件中的代码Export VBA&#xff08;编辑完成的VBA代码保存到 Excel文件 &#xff09;再打开excel文件可…

了解XSS和CSRF攻击与防御

什么是XSS攻击 XSS&#xff08;Cross-Site Scripting&#xff0c;跨站脚本攻击&#xff09;是一种常见的网络安全漏洞&#xff0c;它允许攻击者在受害者的浏览器上执行恶意脚本。这种攻击通常发生在 web 应用程序中&#xff0c;攻击者通过注入恶意脚本来利用用户对网站的信任&…

centos2anolis

我的centos7原地升级到anolis7记录 注意&#xff1a;如果是桌面版请先卸载firefox&#xff0c;否则so文件冲突。 参考&#xff1a; CentOS 7和8Linux系统迁移到国产Linux龙蜥Anolis OS 8手册_disable pam_pkcs11 module in pam configuration-CSDN博客 关于 CentOS 迁移龙蜥…

使用JMeter的JSON提取器:通过递归下降查找,从接口响应中提取特定字段

在接口测试中&#xff0c;我们经常需要从返回的JSON数据中提取特定字段以便后续使用。JMeter提供了JSON提取器&#xff0c;可以帮助我们实现这一目标。本文将介绍如何使用JMeter的JSON提取器通过递归下降查找的方式从接口响应中提取特定字段&#xff0c;并通过示例解释JSON表达…

【大模型】非常好用的大语言模型推理框架 bigdl-llm,现改名为 ipex-llm

非常好用的大语言模型推理框架 bigdl-llm&#xff0c;现改名为 ipex-llm bigdl-llmgithub地址环境安装依赖下载测试模型加载和优化预训练模型使用优化后的模型构建一个聊天应用 bigdl-llm IPEX-LLM is a PyTorch library for running LLM on Intel CPU and GPU (e.g., local P…

QT中的服务器与客户端

一、前言 本文主要讲讲QT中服务器与客户端的使用方法&#xff0c;QT已经封装好了&#xff0c;调用相应类直接访问即可。本文以QT中的QT中的TCP为例子&#xff0c;讲下使用方法以及线程中使用。 二、正文 2.1 Sever的使用方法 2.1.1 思路 QT中Sever使用的时候大致步骤为&…

网络链路层之(2)PPP协议

网络链路层之(2)PPP协议 Author: Once Day Date: 2024年3月27日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CSDN…

STM32学习笔记(6_8)- TIM定时器的编码器接口代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 现在开…

MyEclipse将项目的开发环境与服务器的JDK 版本保持一致

前言 我们使用MyEclipse开发Java项目开发中&#xff0c;偶尔会遇到因项目开发环境不协调&#xff0c;导致这样那样的问题&#xff0c;在这里以把所有环境调整为JDK1.6 为例。 操作步骤 1.Window-->Preferences-->Java-->Installed JRES 修改为 1.6版本 2.Window-->…