【测试】Kali Linux 渗透安全学习笔记(4) - 单一服务器扫描

距离上次做 Kali Linux 分享已经相隔半年之久了,刚好需要主导公司每半年一次的本地安全加固工作,这次将简单分享自己是如何做单一服务器的扫描。

声明:

  1. 本文测试的站点为自家站点仅做学习使用,不存在侵犯网络信息安全问题;
  2. 本文只介绍工具的使用并不鼓吹任何非法活动,请各位看官三思而后行一切后果自负;
  3. 本文涉及敏感信息将会进行脱敏处理;

1. 端口扫描

在正式进入系统扫描前先进行网络端口扫描(由外到内)。由于本次是做已知的单一服务器扫描,因此已经获取到目标服务器 ip 直接对目标服务器扫描即可。

# 创建目录存储扫描内容
┌──(root💀b8ef6c2abc47)-[~]
└─# mkdir /home/standalone/nmap┌──(root💀b8ef6c2abc47)-[~]
└─# cd /home/standalone/nmap┌──(root💀b8ef6c2abc47)-[/home/standalone/nmap]
└─# nmap -sV -sS -O -p- -oA scan_all 192.168.xxx.xxx
Starting Nmap 7.94 ( https://nmap.org ) at 2024-04-19 03:41 UTC
Nmap scan report for 192.168.xxx.xxx
Host is up (0.0027s latency).
Not shown: 65533 closed tcp ports (reset)
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 7.4 (protocol 2.0)
2377/tcp open  ssl/swarm?
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port2377-TCP:V=7.94%T=SSL%I=7%D=4/19%Time=6621E7FC%P=x86_64-pc-linux-gn
SF:u%r(NULL,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(GenericLines,F,"\0\
SF:0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(GetRequest,F,"\0\0\x06\x04\0\0\0\0
SF:\0\0\x05\0\0@\0")%r(HTTPOptions,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0"
SF:)%r(RTSPRequest,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(RPCCheck,F,"
SF:\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(DNSVersionBindReqTCP,F,"\0\0\x0
SF:6\x04\0\0\0\0\0\0\x05\0\0@\0")%r(DNSStatusRequestTCP,F,"\0\0\x06\x04\0\
SF:0\0\0\0\0\x05\0\0@\0")%r(Help,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%
SF:r(SSLSessionReq,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(TerminalServ
SF:erCookie,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(TLSSessionReq,F,"\0
SF:\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(Kerberos,F,"\0\0\x06\x04\0\0\0\0\
SF:0\0\x05\0\0@\0")%r(SMBProgNeg,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%
SF:r(X11Probe,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(FourOhFourRequest
SF:,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(LPDString,F,"\0\0\x06\x04\0
SF:\0\0\0\0\0\x05\0\0@\0")%r(LDAPSearchReq,F,"\0\0\x06\x04\0\0\0\0\0\0\x05
SF:\0\0@\0")%r(LDAPBindReq,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(SIPO
SF:ptions,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(LANDesk-RC,F,"\0\0\x0
SF:6\x04\0\0\0\0\0\0\x05\0\0@\0")%r(TerminalServer,F,"\0\0\x06\x04\0\0\0\0
SF:\0\0\x05\0\0@\0")%r(NCP,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(Note
SF:sRPC,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(JavaRMI,F,"\0\0\x06\x04
SF:\0\0\0\0\0\0\x05\0\0@\0")%r(WMSRequest,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\
SF:0\0@\0")%r(oracle-tns,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(ms-sql
SF:-s,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0")%r(afp,F,"\0\0\x06\x04\0\0\0
SF:\0\0\0\x05\0\0@\0")%r(giop,F,"\0\0\x06\x04\0\0\0\0\0\0\x05\0\0@\0");
Device type: printer|WAP
Running (JUST GUESSING): HP embedded (86%), Netgear embedded (85%)
OS CPE: cpe:/h:hp:officejet_pro_8500 cpe:/h:netgear:wgr614v7
Aggressive OS guesses: HP Officejet Pro 8500 printer (86%), HP PSC 2400-series Photosmart printer (85%), Netgear WGR614v7 wireless broadband router (85%)
No exact OS matches for host (test conditions non-ideal).OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 106.11 seconds

关于扫描命令中的参数如下:

  • -sV:探测开放端口的服务版本信息
  • -sS:使用SYN半开式扫描,速度快且相对隐蔽
  • -O:启用操作系统指纹识别
  • -p-:扫描目标 IP 的全部 65535 个端口
  • -oA scan_all:将扫描结果以标准格式、XML 格式和 Grepable 格式存储为 scan_all 开头的三个文件

接着,我们可以粗略分析一下返回的信息:

PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 7.4 (protocol 2.0)
2377/tcp open  ssl/swarm?
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
...
Device type: printer|WAP
Running (JUST GUESSING): HP embedded (86%), Netgear embedded (85%)
OS CPE: cpe:/h:hp:officejet_pro_8500 cpe:/h:netgear:wgr614v7
Aggressive OS guesses: HP Officejet Pro 8500 printer (86%), HP PSC 2400-series Photosmart printer (85%), Netgear WGR614v7 wireless broadband router (85%)
No exact OS matches for host (test conditions non-ideal).

通过返回得知,这台服务器开放了 2 个 TCP 端口,一个是 22 端口它运行着 OpenSSH 7.4 服务,另一个是 2377 端口运行着未知服务,但可能是 SSL/swarm。此外 2377 端口返回了一些数据,但 Nmap 无法识别服务,虽然 Nmap 提供了一些服务指纹但内容是经过加密的,因此无法窥探一二。

根据 Nmap 推测,该设备可能是一台打印机或无线接入点(WAP)。其中,86%可能性是 HP Officejet Pro 8500 打印机,85%可能性是 HP PSC 2400 系列 Photosmart 打印机,85%可能性是 Netgear WGR614v7 无线宽带路由器。并且没有找到完全匹配的操作系统。

其实根据我们过往的经验可以知道 22 端口一般都是 ssh 远程连接端口,而 2377 很熟但一时间想不起来,需要进一步排查。此外,如果想以 Html 方式查看结果可以通过 xsltproc 工具进行转换:

┌──(root💀b8ef6c2abc47)-[/home/standalone/nmap]
└─# xsltproc scan_all.xml -o scan_all.html┌──(root💀b8ef6c2abc47)-[/home/standalone/nmap]
└─# ls
scan_all.gnmap  scan_all.html  scan_all.nmap  scan_all.xml

结果如下图:
image.png

2. 系统漏洞扫描

在系统漏洞扫描方面,这次我选用了 Nessus 进行全面扫描。关于 Nessus 的安装可以参考以下的文章,我就不再详述了。

Kali Linux Nessus详细安装步骤!!!

但不知为何,有可能是我用 Docker Kali 的缘故 Kali 死活装不了 Nessus,于是采用第二种解决方案:Docker 部署。通过 tenable 官网得知只需几个参数就可以部署并使用 Nessus 非常方便,如下图:
image.png
于是直接下载镜像并且运行(用户信息的哪些启动了容器再说)

(base) yuanzhenhui@MacBook-Pro ~ % docker pull tenable/nessus:latest-ubuntu
latest-ubuntu: Pulling from tenable/nessus
7f8e4ec648be: Pull complete 
Digest: sha256:169fa12a6b297638737b777bea60e3a5fbdbea9b679f3a813eddcace22940849
Status: Downloaded newer image for tenable/nessus:latest-ubuntu
docker.io/tenable/nessus:latest-ubuntuWhat's Next?View summary of image vulnerabilities and recommendations → docker scout quickview tenable/nessus:latest-ubuntu
(base) yuanzhenhui@MacBook-Pro ~ % docker run -d --name nessus -p 8834:8834 tenable/nessus:latest-ubuntu
c3c58732640a6503a5e3b9900d1b135dfcd2f9f1d3901d6a75be85f5fc2a2a7a

容器启动后就可以使用 https://localhost:8834 进行访问了。(如果用新版 Chrome 浏览器这里一定要用 https)

第一次访问时会要求注册,这个不难一步一步跟着做就可以了。如果像我一样想快速体验一下可以选择“Register for Nessus Essentials” 用邮箱注册即可获取激活码(有 7 天试用)。

image.png

PS:之前并不是使用 Nessus 进行系统扫描的,只不过我们的运维小哥力荐这次就尝试一下吧。

在安装的收尾阶段 Nessus 会自动下载插件,并且需要一些时间进行编译。在编译结束后会要求重新登录。登录成功后就可以创建扫描任务了。点击右上方“New Scan”按钮后就跳转到 Scan Templates 页面,这里选择“Basic Network Scan”。

image.png

接下来就可以进行扫描配置了(这里图例我做最基础配置)

image.png
虽然已经用 Nmap 做了端口扫描,但是既然提供了这种服务那选择就选择全端口扫描吧。
image.png
值得一提的是,Nessus 也有提供 Web 漏洞扫描方案,在这里也选择了混合扫描方式。
image.png

输出的报告不让修改,因此做了反选处理

image.png

在点击“Save”保存配置后就可以开始扫描了

image.png

最后扫描出来的结果如下:

image.png

由扫描结果可知,当前服务器大部分问题都是 info 级别,但也有零星几个是中等级和低等级的。

image.png
这里就是展示具体问题的地方了,点击后可以展开来看。里面含有有修复建议,提示还算清晰。
image.png
最后点击右上角的“Report” 按钮即可导出 pdf 报告。

3. Web应用漏洞扫描

接下来本应进行 Web 应用的漏洞扫描的,但通过端口扫描得知目前开放的端口只有 22 和 2377 端口。经查明 22 为 ssh 远程端口,2377 为 Docker 通讯端口。两者皆不是 Web 应用因此无需进行 Web 应用扫描了。
PS:如果要进行 Web 应用扫描可以使用之前介绍过的 Nikto

【测试】Kali Linux 渗透安全学习笔记(3) - Nikto 简单应用

或者 Burp suite 来做。后者 Burp suite 是 Kali 自带的并且提供了图形化界面,用起来更加直观是个不错的选择(后面有机会会说说)。

4. 密码检测

网络、系统、应用都基本扫过一遍了,剩下的就是对弱密码方面进行扫描检测了。由端口扫描得知这台服务器存在 ssh 远程服务,那么可以通过工具验证一下这个 ssh 的密码强度,若发现存在弱密码的情况必须立刻修复。

这里我选择 Ncrack 来实施这项工作( Hydra、Ncrack、Medusa、Patator 这 4 个主流工具都可以做密码检测的事情,功能也都大同小异。Ncrack 相对而言比较简单一点)。

接着就可以准备用户名清单(username.txt)和密码字典(password.txt)文件了。在这里将使用 rockyou.txt 作为密码字典,因为 Kali 里面本来就预安装了 rockyou.txt.gz ,在/usr/share/wordlists 路径底下,如下图:

┌──(root💀b8ef6c2abc47)-[/usr/share/wordlists]
└─# ls
amass       dirb       dnsmap.txt     fern-wifi  legion      nmap.lst        seclists    wfuzz
brutespray  dirbuster  fasttrack.txt  john.lst   metasploit  rockyou.txt.gz  sqlmap.txt  wifite.txt┌──(root💀b8ef6c2abc47)-[/usr/share/wordlists]
└─# gzip -d rockyou.txt.gz ┌──(root💀b8ef6c2abc47)-[/usr/share/wordlists]
└─# ls
amass       dirb       dnsmap.txt     fern-wifi  legion      nmap.lst     seclists    wfuzz
brutespray  dirbuster  fasttrack.txt  john.lst   metasploit  rockyou.txt  sqlmap.txt  wifite.txt

接下来创建文件夹并将 rockyou.txt 拷贝到这个目录下备用,如下图:

┌──(root💀b8ef6c2abc47)-[/usr/share/wordlists]
└─# mkdir /home/ncrack┌──(root💀b8ef6c2abc47)-[/usr/share/wordlists]
└─# cd /home/ncrack┌──(root💀b8ef6c2abc47)-[/home/ncrack]
└─# cp /usr/share/wordlists/rockyou.txt .

就在同样的文件夹下创建 username.txt(内容比较敏感就不展示了,反正每个用户名一行就可以了)。之后就可以执行命令进行检测了,如下图:

┌──(root💀b8ef6c2abc47)-[/home/ncrack]
└─# ncrack -p 22 --user username.txt -P rockyou.txt 192.168.xxx.xxxStarting Ncrack 0.7 ( http://ncrack.org ) at 2024-04-19 11:22 UTCNcrack done: 1 service scanned in 326.03 seconds.Ncrack finished.

此外,通过网上搜索得知,CrackStation 网站也有提供数据字典下载:

CrackStation’s Password Cracking Dictionary (Pay what you want!)

密码本大小解压后足足有15GB,对于 txt 文件来说这个量足够庞大。
image.png

5. 总结

在完成了以上的一系列操作后,剩下的还会有渗透测试与验证以及安全加固和复测两项任务。

这里的渗透测试与验证主要是针对上面扫描的结果去进行漏洞的验证并试图获取系统控制权。但本次任务主要是对自家本地服务器的进行加固,因此没有这番操作的必要。

而安全加固和复测任务可以依据上述扫描结果按需进行漏洞修复即可,该打补丁打补丁,该配置安全策略配策略。所有工作加固动作完成后按照上述办法进行重测就能够验证效果并更新安全配置基线,留存到 CMDB 里面。

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

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

相关文章

【C语言】——内存函数的使用及模拟实现

【C语言】——内存函数的使用及模拟实现 前言一、 m e m c p y memcpy memcpy 函数1.1、函数功能(1)函数名理解(2)函数介绍 1.2、函数的使用1.3、函数的模拟实现 二、 m e m m o v e memmove memmove 函数2.1、函数功能2.2、函数的…

HarmonyOS开发环境搭建 移动开发 鸿蒙开发 ArkTS

📜目录 💡 环境搭建 🚀安装nodejs 🤵安装ohpm 🍔安装SDK 💥Emulator安装 🌶️新建ArkTs项目 🏆️ArkTS语言 ✨️基本语法 🎈 声明式UI描述 🍱组件 …

java的单元测试和反射

单元测试 就是针对最小的功能单元,编写测试代码对其进行正确性测试 Junit单元测试框架: 可以用来对方法进行测试 有点: 可以灵活的编写测试代码,可以针对某个方法进行测试,也支持一键完成对全部方法的自动发测试&a…

理解JMM

JMM 对volatile的理解 volatile 是java虚拟机提供轻量级的同步机制 1、保证可见性 2、不保证原子性 3、禁止指令重排 那么可见性与JMM相关 什么是JMM Java内存模型,不存在的东西,是一个概念,是一个约定 线程加锁前,必须读取…

uni-app 如何添加模拟器

uni-app 如何添加模拟器 使用微信开发者工具运行微信小程序使用 HBuilderX 内置模拟器使用第三方 Android 模拟器 下载并安装:配置环境:连接模拟器: 总结 有哪些可以使用的安卓模拟器软件 uni-app 如何添加模拟器 Uni-App 是一个基于 Vue.js…

认知觉醒 PDF电子版 下载

认知觉醒 PDF电子版 开启自我改变的原动力 周岭 / 人民邮电出版社 / 2020-10 链接:https://pan.baidu.com/s/1EHUK_AhvE5TWAZsYXFQ5QA?pwdwrho 提取码:wrho

基于IIoT的设备预测性维护设计

基于IIoT的设备预测性维护设计 一、引言 在工业物联网(IIoT)的背景下,设备预测性维护成为了一种关键的战略,能够帮助企业提前发现并解决设备故障,从而提高生产效率、减少停机时间,并降低总体维护成本。为了…

uniapp 如何区分目前运行环境(app、web、mp-weixin)

platform 区分 iOS、Android uniplatform 区分 app、web、mp-weixin ....

GPT-3.5 Turbo 的 temperature 设置为 0 就是贪婪解码?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 将 GPT-3.5 Turbo 的 temperature 设置为 0 通常意味着采用贪婪解码(greedy decoding)策略。在贪婪解码中,模型在每一步生成文本时选择概率最高的词元,从…

Microchip 32位MCU CAN驱动图文教程-附源码

文章目录 创建一个新的32位MCU工程Microchip MCC Harmony配置界面说明在MCC下配置系统的时钟在MCC下配置所需要使用的模块配置调试打印模块配置CAN模块配置管脚功能修改系统堆栈大小生成代码 添加用户代码 创建一个新的32位MCU工程 确保电脑上已经安装最新的MPlab X IDE、XC32编…

ubuntu安装QEMU

qemu虚拟机的使用(一)——ubuntu20.4安装QEMU_ubuntu安装qemu-CSDN博客 遇到的问题: (1)本来使用git clone https://github.com/qemu/qemu.git fatal: 无法访问 https://github.com/qemu/qemu.git/:GnuTLS recv error (-110): …

[阅读笔记18][CITING]LARGE LANGUAGE MODELS CREATE CURRICULUM FOR INSTRUCTION TUNING

这篇论文是23年10月提交到arxiv上的,也是用大模型蒸馏小模型的思路。 作者在这篇论文中提出了课程指令微调,大体流程如下图所示,教师模型给出一个问题,让学生模型回答一下,这时候学生回答大概率不够准确,这…

深度学习之图像分割从入门到精通——基于unet++实现细胞分割

模型 import torch from torch import nn__all__ [UNet, NestedUNet]class VGGBlock(nn.Module):def __init__(self, in_channels, middle_channels, out_channels):super().__init__()self.relu nn.ReLU(inplaceTrue)self.conv1 nn.Conv2d(in_channels, middle_channels, …

生态短讯 | Tapdata 与 TDengine 完成产品兼容性互认证,打造物联网实时数据生态

近月,深圳钛铂数据有限公司(以下简称钛铂数据)自主研发的实时数据平台(Tapdata Live Data Platform)与北京涛思数据科技有限公司(以下简称涛思数据)自主研发的大数据平台 TDengine,已…

【深度学习】Dropout、DropPath

一、Dropout 1. 概念 Dropout 在训练阶段会让当前层每个神经元以drop_prob( 0 ≤ drop_prob ≤ 1 0\leq\text{drop\_prob}\leq1 0≤drop_prob≤1)的概率失活并停止工作,效果如下图。 在测试阶段不会进行Dropout。由于不同批次、不同样本的神…

数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418)

数据库管理171期 2024-04-18 数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418)1 基本概念2 用处3 注意事项总结 数据库管理-第171期 Oracle是用这种方式确保读一致的(20240418) 作者:胖头鱼的鱼缸&#x…

MySQL中explain的用法

执行结果各字段的含义 EXPLAIN SQL语句 如: EXPLAIN SELECT * FROM test 执行结果: 列名描述id在一个大的查询语句中每个SELECT关键字都对应一个 唯一的idselect_typeSELECT关键字对应的那个查询的类型table表名partitions匹配的分区信息type针对单表…

P2P面试题

1)描述一下你的项目流程以及你在项目中的职责? 一个借款产品的发布,投资人购买,借款人还款的一个业务流程,我主要负责测注册,登录,投资理财这三个模块 2)你是怎么测试投资模块的&am…

HttpServlet,ServletContext,Listener它仨的故事

1.HttpServlet。 听起来是不是感觉像是个上古词汇,是不是没有阅读下去的兴趣了?Tomcat知道吧,它就是一个servlet容器,当用户向服务器发送一个HTTP请求时,Servlet容器(如Tomcat)会根据其配置找到…

overflow(溢出)4个属性值,水平/垂直溢出,文字超出显示省略号的详解

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合…