新手科普 | 如何脱离Metasploit进行渗透测试 – 作者:Covfefe

“努力!”是个传统美德,也一直是我们生活的口号,不过大多数人显然没有真正理解它的含义,他们十有八九只是在即时聊天时把努力挂在嘴边,这显得低幼且毫无帮助。同样的,如果不使用Metasploit我们将如何进行渗透测试?我也可以说“努力!”。然后用一个虚情假意的熊猫表情包结束这篇文章,但是我不会那么做。在这篇文章中,我会分享一些(可能)有帮助的,可操作的建议。如果你是个新手或正在为OSCP认证而学习,那么这篇文章了解一下。

487948614044465973.jpg

Metasploit以及其他类似工具在(不)著名的OSCP认证中受到严格限制。其背后有一个很好的理由:这样可以迫使学习者从实际上了解漏洞利用是如何运作的。准备的时候觉得这样很糟糕,但是最后会发现自己会的更多了,这也应该是你准备OSCP认证的目的,不是吗?为了摆脱对Metasploit的依赖,我们需要替代方案并更深入地理解一些关键概念。

为什么用Metasploit

在搞清楚如何才能不用Metasploit之前,得先搞清楚为什么要用它。在OSCP lab的情况下,用Metasploit主要是以下用途:

找到exploit

自定义payload

提权

得到反向shell

为了不使用Metasploit,我们就需要找到替代的东西。

寻找exploit

最快捷,最简单的方法是使用集成在Kali中的工具searchsploit。用上了这个工具,你会觉得每次敲击键盘都优雅了不少。废话不多说,其实Searchsploit只是在exploit-db数据库中搜索你提供的关键字。它会返回可在Metasploit中使用的或是独立的,用各种语言编写的exploit。

语法很容易记住:

searchsploit 关键词1 关键词2 关键词3 ...

输出如下图所示:

33096678141394039.png

还没完,所有的exploit已经存储在kali中,可以通过以下命令将它们复制到当前目录:

searchsploit -m [exploit database id]

例如,要复制图上列表中的第一个exploit:

292944218874835557.png

如果searchsploit中无法找到任何鲜美的exploit,请尝试Google。 如果Google也没有,那么可能还不是一个公开的exploit。此时你就要“努力!”了。

虚情假意的熊猫表情包.gif

自定义payload

如果你对Metasploit很熟练,那么你可能已经熟悉了payload的概念。使用Metasploit模块时设置的payload会定义exploit在成功利用后尝试的实际操作。通常,都是打开Meterpreter会话或反向shell,以便可以控制目标机器。

在Metasploit中选择payload时,就相当于在漏洞利用代码中手动替换payload.因此,要在此处替换Metasploit,我们需要做的就是手动替换payload。 这通常意味着我们需要生成一些shellcode。怎么做?继续往下读!

Msfvenom

谢天谢地,Msfvenom被允许用于OSCP认证。我们可以使用它来生成自定义payload,然后将其用于我们的exploit。需要注意的是:如果你正在进行OSCP认证,请坚持使用标准的反向shell payload,而不是Meterpreter。在OSCP认证中禁止使用Meterpreter。

创建shellcode的基本语法如下:

msfvenom -p [payload] -f [格式] LHOST=[你的ip] LPORT=[你的监听端口]

一旦获得了shellcode,我们只需将其复制-粘贴到漏洞利用代码中,以替换exploit中的当前payload。

例如,如果我们正在处理打开calc.exe(Windows漏洞中常见的PoC)的缓冲区溢出漏洞exploit,那就要编辑该漏洞的代码,用msfvenom生成的shellcode替换当前的calc.exe shellcode。

下图为msfvenom的实例。在这个例子中,我使用的是一个unstaged的TCP反向shell,LHOST设置为1.2.3.4,LPORT设置为1234。

56445374509486817.png

Staged和Unstaged Payload

你之前可能没有注意到,使用的大多数payload都有一个非常相似的双胞胎。例如,请注意“windows/shell_reverse_tcp”和“windows/shell/reverse_tcp”之间的细微差别。第一个是Unstaged的,而第二个是Staged的。 你会看到与许多其他payload相同的命名约定。

Staged和Unstaged有什么区别?如果使用Unstaged的payload,则会在一次命中后发送整个payload并在目标计算机上执行。这意味着你可以使用简单的netcat listener捕获shell,如果你用的是Staged payload,则需要使用Metasploit multi handler来捕获shell(顺便说一下,这在考试中是允许的!)。如果你尝试使用netcat listener来捕获shell,则会在建立连接后立即结束。staged payload初始是较小的payload,然后会从主机上的Metasploit handler下载完整payload。如果你没有足够的空间来利用,那么它们就很棒。最后,你应该用哪个?随你便。在缓冲区溢出的蜜汁世界中,有时一个会有用,而另一个则不会,所以最好同时拥有两个!

其他MSFVenom选项

还有很多其他的选择供你深入研究,但它们超出了本文的范围,这里有一些你可能会使用的最常见的清单,但尚未涵盖所有:

-e 允许你选择编码,其中最常见的是x86\shikata_ga_nai。这对于避免特殊符号或绕过杀毒软件非常有用……虽然对后者已经不太管用了。

-b 允许你设置去除的字符。特定漏洞利用的指定字符通常在公共利用代码中公开。

–lists(两个破折号) 将列出payload和格式,例如,如果要查看所有可能的payload的列表,可以运行msfvenom –list payloads

提权

有时,使用Metasploit进行提权就像1,2,get_system一样简单。不幸的是,如果没有Metasploit,就不那么容易了。首先我要说的是,这是一个很大的话题。对于这篇不起眼的文章来说,写不下,但我会在这里提供一些入门知识。

首先,如果没有参考传说级的“FuzzySecurity Windows Privilege Escalation”文章,就不能说Windows 提权是完整的。这篇文非常好地涵盖了手动Windows 提权的基础知识!

其次,Windows漏洞利用在Linux系统上进行编译会很烦人。你可以从Github下载预编译的漏洞利用程序

再次,同一个repository附带了很好的数据表,可以帮助你确定最有可能有用的漏洞。 你可以点击这里下载。

捕获反向shell

好消息是,这个过程并没有在OSCP中发生很大变化。主要区别在于无法使用Meterpreter。解决这个问题只需使用普通的反向shell payload。

最后我检查过,你可以在Metasploit中使用exploit/multi/handler来捕获shell。这比使用普通的旧netcat listener没有太大的优势,因为你无论如何都看不到Meterpreter或Metasploit的其他功能。唯一的例外是如果你使用的exploit payload限制了空间,在这种情况下,你可能需要使用staged payload。

再次提醒:staged payload不适用于netcat!你必须使用Metasploit的exploit/multi/handler模块。

最后,如果你决定使用Netcat方法,只需使用以下语法启动listener即可。

nc -nvlp [端口号]

*参考来源:medium,FB小编Covfefe编译,转载请注明来自FreeBuf.COM

来源:freebuf.com 2018-09-11 13:00:18 by: Covfefe

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论