安全预警 | 通过 PAM 后门和 DNS 请求来泄漏用户凭据

前言

也许在渗透和红队中使用的最著名的Post-Exploitation技术之一,就是在PAM生态系统中打开后门来收集有效的凭证。通过后门获取的证书将帮助我们轻松地实现机器之间的横向移动。我们可以通过不同的选择来实现这一目标。

一个有趣的变化是将这种技术与传统的DNS数据渗漏技术(DNS exfiltration)相结合,这样我们就可以将凭据发送到我们的C&C,而无需担心防火墙和通信规则。我们只需要向机器使用的DNS服务器发送一个DNS请求,然后它将被转发到其他DNS服务器,并且在某个时候该请求将攻击我们的权威DNS服务器。所以我们可以用这个众所周知的渠道默默地取回凭证。

我们的路线图非常简单:添加一个自定义PAM模块,该模块以明文记录凭证,并通过DNS解析将其发送到我们的C&C。

顺便提一下:即使这是一个古老而著名的策略,它仍然是一个非常酷的来显示所需的文件完整性控件的方式。获取服务器根权限,等待管理员或操作员通过SSH登录并享受吧!

 

0x01 修改pam_unix_auth.c

(我们不会解释PAM是什么或者它是如何工作的。要获得有关PAM的更深入的信息,请使用man)。

为了检索明文中的用户和密码,我们将把有效的pam_unix.so模块替换为我们修改过的模块。如果我们检查原始模块的源代码(从这里下载安装在目标服务器上的PAM版本的源代码),我们可以在pam_unix_Auth.c文件中看到一个名为pam_sm_certiate的函数,并且在这个函数中调用_unix_Version_Password,其中的参数是身份验证中使用的用户名和密码:

[/crayon]
因此,在这一点上注入我们的过滤逻辑看起来很好。作为PoC,我们可以使用这段代码(SilverMoon-29/4/2009),所以主要的外排逻辑还没有实现(这段代码有一些缺陷-例如,它没有将服务器IP从Resolv.conf-…中取走) 因此,如果要在真正的渗透中使用它,需要改进代码;D)。让vim文件pam_unix_Auth.c添加所需的函数和头文件!:

[/crayon]
最后,一点小修改:

[/crayon]
编译该模块(./configure && make),用我们的版本替换原来的pam_unix.so,然后打开一个tcpdump/wireshark并通过SSH登录到机器中:

[/crayon]
很好!完成了一个DNS请求,因此我们可以将用户名和密码转储到由我们控制的外部服务器。但现在我们遇到了一个问题:在密码中使用大写/小写/符号(uppercase / lowercase / symbols)会发生什么?在后面的0x03一节中,我们将讨论这一点。

 

0x02 LD_PRELOAD

在某些情况下,需要采取另一种办法。如果服务器对关键二进制文件(如pam_unix.so和其他模块)或配置文件执行任何类型的文件完整性检查,则需要使用经典的LD_PRELOAD策略。我们将预加载一个共享对象,该对象挂接PAM使用的一些函数,因此我们可以轻松地将我们的退出逻辑注入其中。

我们的目标函数将是pam_get_Item。当以项类型PAM_AUTHTOK作为参数调用此函数时,它检索所使用的身份验证令牌。我们将hook这个函数,因此当调用它时,我们将调用pam_get_user()来检索用户名,然后调用原始pam_get_Item(获得正确的返回值和身份验证令牌),通过DNS将其过滤掉,最后返回之前获得的值。

[/crayon]
编译(gcc pam_fucked.c -shared -fPIC pam_fucked.so),停止SSH守护进程,用LD_PRELOAD=/../module/location…/启动它

使用LD_PRELOAD几乎没有什么负面影响,比如需要重新启动守护进程,因此它可以生成其他类型的事件来警告蓝队。另一方面,如果要以SSH的形式重新启动关键服务,则必须从SSH以外的某个点(可能是反向shell)进行操作,并注意避免终止当前会话。

 

0x03 与C&C的交流

如前所述,我们需要对将被过滤的数据进行编码(并对此信息进行真正的加密)。最好的选择是将其编码为十六进制或base32。C&C必须配置为一个权威的DNS,最好是使用一个模拟公司使用的真实域的伪造的域名类型。

你可以安装一个真正的DNS服务器,或者只使用python和dnslb创建所需的逻辑。

 

0x04 最后

我希望你通过典型的DNS数据渗漏技术找到一种酷的方法。这是一种非常简单的方法,可以在最近受到攻击的服务器中获得新的凭据,并征服网络中的其他点。

本文由 孤独常伴 作者:孤独常伴 发表,其版权均为 孤独常伴 所有,文章内容系作者个人观点,不代表 孤独常伴 对观点赞同或支持。如需转载,请注明文章来源。

0

发表评论