[Day5] Process

一个渗透测试的流程,可以简略的分成两大阶段,资讯蒐集与漏洞利用。而资讯蒐集阶段则又可以分为侦查与扫描;而漏洞利用则又可以分为普通的漏洞利用与提权,这边来与各位介绍一下这几个阶段分别具体需要实作的事情有哪些。

侦查

当我们获取了一个目标,刚开始,我们会需要尝试着蒐集各种与目标相关的公开情报。以公司来说,我们可以透过各种的搜寻引擎获取机构的部分资料,例如人士、Email、电话等。很多时候这些资料对於後续的攻击流程会有很大的帮助。

接下来我们可以试图了解我们攻击目标相关的资料,例如使用的作业系统版本,服务器版本等,假设是一个指定网段的资料蒐集,除了自行的动手扫描之外,我们也可以藉由许多开放资料的平台,例如 Shodan 、 ZoomEye 等。

通常在做侦查的阶段,我们也会同时的进行扫描的动作,侦查与扫描主要是为了可以让我们更进一步的了解我们的目标,确立可以攻击的弱点等。

扫描

在进行了一系列的侦查之後,我们就可以开始尝试着对攻击的目标进行资讯的扫描。通常面对一台服务器,我们的起手式会是对端口(Port) 进行扫描,目的是观察服务器有开了哪一些的服务,在这边,通常我会使用的工具是 nmaprustscan 等。

如果是网页服务器,通常可以对网页的目录进行扫描,这边常见的工具有 dirsearchdirbgobuster 等;部分扫描路径的工具,也具有扫描 Sub-domain 的功能,例如 gobusterffuf 等,我们也可以观察浏览器中的 header 等资讯,或是透过 Wappalyzer 工具进行分析。

侦查与扫描通常不会一次就全部的完成,例如我们扫描到了某个 Port 号,开启了一个网页服务器,则可能会再透过人工方式对於这个网页服务器进行一些侦查的工作;而侦查完毕後,则可能更换下一个 Port 号开启的服务进行进一步的侦查与扫描。

寻找漏洞

待我们在侦查与扫描获得了各种的资讯,就可以试着寻找网路上对於该版本的作业系统、服务器软件是否有公开的弱点 (CVE),如果有相关弱点的话,是否有可以进行漏洞利用(Exploti)的脚本,在这边,通常我会直接在 Google 上搜寻 {服务版本} Exploit,除此之外,也可以透过 exploit-dbsearchsploit 以及 Github 等方式查找相关的利用方式。

很多时候,我们查找到了某些的漏洞,却不一定可以马上地进行使用。举例来说,我们发现了某个 CMS 在相应版本中的漏洞,而它的使用条件是需要先进行登入,在这种条件下,我们可以先暂存着相关的资讯,以备不时之需,并试图寻找与开发其他漏洞。

漏洞利用

寻找完相关的 Exploit 脚本後,我们就可以试着执行这些脚本,达到漏洞利用的效果。很多时候,我们也可能需要串接多个不同的漏洞,才能达到远端命令执行 (RCE)。

当然在大多数情况下,我们不一定有办法寻找到相对应版本的漏洞进行利用,这种时候就需要透过人工对各个目标进行测试。这种情境下就会比较类似 CTF 的思路,以网页为例,通常就会以 OWASP Top 10 上常出现的漏洞开始下手进行测试。而 Binary 的 Protocol 则有可能会需要使用到 CTF 中, pwn 的相关技术,进行 Binary Exploitation 利用 Buffer Overflow 等。

渗透测试还有一种与 CTF 不太一样的攻击方式:暴力破解,暴力破解是一种非常废的攻击方式,常常被厉害的骇客们看不起。现实生活中,使用弱密码的机率真的是非常高,无论是台湾人爱用的注音密码、使用英文名字、生日等资讯构成的密码、或是依照键盘顺序输入的一段文字。此时我们就可以藉由先前侦查阶段获得的 Email / 帐号名称等资讯建构目标专属的密码字典档,进行暴力破解。在此要注意,许多的系统都会对於密码输入错误有次数的限制。因此在暴力破解阶段,最好先设法取得密码的 hash 值,再於本地端进行暴力破解。

将近所有的资讯安全问题,都是来自於人的操作疏失。除了已知漏洞、自行挖掘漏洞与暴力破解之外,我们也可以试图观察一些常见的服务设定是否有疏失。例如 FTP 或 SMB 等服务是否有开启匿名 (Anonymous) 登入。如果有开启的话,我们也可以试图对其进行连线,观察是否有有用的资料,可以进一步的利用。

提升权限

提升权限我觉得是渗透测试当中,最特别也最有趣的一个阶段,通常我们可以把它视为後渗透阶段 (post-penetration)。在这个阶段中,我们假设已经对於一个服务器取得了 RCE,可以任意执行指令。以 Linux 作业系统的 Web Server 为例,我们很可能只具有 www-data 使用者的权限,而提升权限则是试着可以将自己提升为高阶的使用者或 root, Windows 作业系统上称为 system 权限。

在这个时候,我们不一定可以直接地从 www-data 成为 root , 但可能有机会先横向的在机器中移动到其他的高阶使用者,再更进一步地进行利用。通常,提升权限的方式有两种,第一种是基於服务器管理者的设定缺失,例如可以透过 sudo 执行特定的指令、将特定的程序设有 suid、透过高阶使用者权限执行低阶使用者可以修改的 crontab job 等;第二种则为系统上,程序的漏洞,例如今年超有名的 CVE-2021-3156 等。

提权阶段我们又会需要重新地进行一轮的侦查、扫描与漏洞利用,在这边也有许多的工具可以进行使用,例如 PEAS 、 LinEnum 、 LSE 等,详细的使用方法将於之後的文章再与各位进行介绍。


<<:  点光源与自发光

>>:  [Day5] Project,IAM

从 IT 技术面细说 Search Console 的 27 组数字 KPI (23) :KPI 总表

在填完上篇所说的资料後,次级资料是用之前资料所计算出来的,虽然前面的文章都说过了,这边再整理一下。 ...

我们的基因体时代-AI, Data和生物资讯 Day17-分析定序档案格式SAM, BAM的工具

上一篇我们的基因体时代-AI, Data和生物资讯 Day16- 视觉浏览定序档案格式SAM, BA...

Day-12 Pytorch 介绍

机器学习的路上仍然需要撰写程序来达到我们期望的效果,在前面的文章中,我们已经介绍了从机器学习的基本...

[Day 21] 调整模型超参数利器 - Optuna

Optuna 今日学习目标 Optuna 如何采样参数? 实作 Optuna 搜寻最佳超参数 以 X...

Day 20 : Jenkins Pipeline与撰写Jenkinsfile

Jenkins Pipeline介绍 如昨天的文章,我们将Code推上远端仓库後Jenkins会自动...