新手科普— 如何脱离Metasploit进行渗透测试?

发表于:2018-12-11 11:59

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:yolanda    来源:SegmentFault 思否

分享:
  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 ...
  输出如下图所示:
  还没完,所有的exploit已经存储在kali中,可以通过以下命令将它们复制到当前目录:
 searchsploit -m [exploit database id]
  例如,要复制图上列表中的第一个exploit:
 
  如果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。
  
  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 [端口号]

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号