【内网渗透】— 权限维持分析及防御(9)

前言

后门(Backdoor),本意是指在建筑物的背面开设的门,通常比较隐蔽。在信息安全领域,后门是指绕过安全控制措施获取对程序或者系统访问权限的方法。简单地说,后门就是一个留在目标主机的软件,它可以使攻击者随时与目标主机进行连接。在大多数情况下,后门是一个运行在目标主机上的隐蔽进程。因为后门可能允许一个普通的、未授权的用户控制计算机,所以攻击者经常使用后门来控制服务器。

攻击者在提升权限后,往往会建立后门来维持对目标主机的控制权。这样一来,即使修复了被攻击者利用的系统漏洞,攻击者还是可以通过后门继续控制目标系统。

操作系统后门分析与防范

操作系统后门,泛指绕过目标系统安全控制体系的正规用户认证过程来维持对目标系统的控制权及隐匿控制行为的方法。系统维护人员可以清除操作系统中的后门,以恢复目标系统安全控制体系的正规用户的认证过程。

粘滞键后门

粘滞键后门介绍

粘滞键后门是一种比较常见的持续控制的方法。

在Windows主机上连续按5次"Shift"键,即可调用出粘滞键 。Windows粘滞键主要是为无法同时按多个按键的用户设计的。例如,在使用组合键时,用户需同时按住两个或多个键位,但是如果使用粘滞键,用户只需要按一个键。

当攻击者用恶意脚本替换windows\system32 目录下的粘滞键可执行文件sethc.exe,连续按五次"Shift"键,可以直接以System权限执行系统命令、创建管理员用户、登录服务器等。

黏贴键后门防范措施

  • 在远程登录服务器时,连续按5次"Shift"键,判断服务器是否被入侵
  • 拒绝使用sethc.exe或者在"控制面板"中关闭"启用粘滞键"选项

注册表注入后门

注册表注入后门介绍

在普通用户权限下,攻击者会将需要执行的后门程序或者脚本路径填写到注册表键HKCU:Software\Microsoft\Windows\CurrentVersion\Run中(键名可以任意设置)。当管理员登录系统时,后门就会运行,服务端反弹成功。

注册表注入后门防范措施

杀毒软件对此类后门有专门的查杀机制,当发现系统中存在后门时会弹出提示框。根据提示的内容,采取相应的措施,即可删除此类后门。

计划任务后门

计划任务后门介绍

计划任务在Windows 7 及之前版本的操作系统中使用at命令调用,在从Windows 8 版本开始的操作系统中使用schtasks命令调用。计划任务的后门分为管理员权限和普通用户权限两种,管理员权限的后门可以设置更多的计划任务。

计划任务后门的防范

对计划任务后门,有效的防范措施是安装安全防护软件并对系统进行扫描;及时为系统打补丁;在内网中使用强度较高的密码。

meterpreter后门

Persistence是meterpreter自带的后门程序,是一个使用安装自启动方式的持久性后门程序。在使用这个后门程序时,需要在目标主机上创建文件,因此安全防护软件会报警。网络管理人员可以根据安全软件的报警信息,采取相应的防范措施。

Cymotha后门

Cymotha是一款可以将ShellCode注入现有进程的后门工具,使用Cymotha注入的后门程序能与被注入的程序共存。

WMI后门

WMI后门介绍

WMI型后门只能由具有管理员权限的用户运行。WMI型后门通常是用PowerShell编写的,可以直接从新的WMI属性中读取和执行后门代码、给代码加密。通过这种方法,攻击者可以在系统中安装一个具有持久性的后门,且不会在系统磁盘中留下任何文件。

WMI型后门主要使用了WMI的两个特征:即无文件和无进程。其基本原理是:将代码加密存储于WMI中,达到所谓的"无文件";当设定的条件被满足时,系统将自动启动PowerShell进程去执行后门程序,执行后,进程将会消失,达到所谓的"无进程"。

WMI后门防范

清楚WMI后门的常用方法有:删除自动运行列表中的恶意WMI条目;在PowerShell中使用Get-WMIObject命令删除与WMI持久化相关的组件

Web后门防范与分析

Web后门俗称WebShell,是一段包含ASP、ASP.NET、PHP、JSP程序的网页代码。这些代码都运行在服务器上。攻击者会通过一段精心设计的代码,在服务器上进行一些危险操作,以获取某些敏感的技术信息,或者通过渗透和提权来获得服务器的控制权。IDS、杀毒软件和安全工具一般都能将攻击者设置的Web后门检测出来。不过,有些攻击者会编写专门用的Web后门来隐藏自己的行为。

Nishang下的WebShell

Nishang是一款针对PowerShell的渗透测试工具,集成了框架、脚本和各种Payload,广泛用于渗透测试的各个阶段。

在Nishang中也存在ASPX的"大马"。该模块在\nishang\Antak-WebShell目录下。使用该模块,可以进行编码、执行脚本、上传/下载文件等。

weevely后门

weevely是一款用Python语言编写的针对PHP平台的WebShell,其主要功能如下:

  • 执行命令和浏览远程文件
  • 检测常见的服务器配置问题
  • 创建TCP Shell和Reverse Shell
  • 扫描端口
  • 安装HTTP代理

webacoo后门

webacoo(Web Backdoor Cookie)是一款针对PHP平台的Web后门工具。

ASPX meterpreter后门

Metasploit中有一个名为"shell_reverse_tcp"的Payload,可用于创建具有meterpreter功能的ShellCode。

PHP meterpreter后门

Metasploit中有一个名为"PHP meterpreter"的Payload,可用于创建具有meterpreter功能的 PHP WebShell。

域控制器权限持久化分析和防范

在获得域控制器的权限后,攻击者通常会对现有的权限进行持久化操作。

DSRM域后门

DSRM域后门介绍

DSRM(Directore Services Restore Mode,目录服务恢复模式)是Windows 域环境中域控制器的安全模式启动项。每个域控制器有一个本地管理员账户(也就是DSRM账户)。DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建之初,DSRM的密码需要在安装DC时设置,且很少会被重置。

在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。我们知道,每个域控制器都由本地管理员账号和密码(与域管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理员账户,通过网络连接域控制器,进而控制域控制器。

DSRM域后门的防御措施

  • 定期检查注册表中用于控制DSRM登录方式的键值HKL\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior,确认该键值为1,或者删除该键值
  • 定期修改域中所有控制器的DSRM账号
  • 经常检查ID为4794的日志。尝试设置活动目录服务还原模式的管理员密码会被记录在4794日志中

SSP维持域控权限

SSP介绍

SSP(Security Support Provider)是Windows操作系统的安全机制的提供者。简答的说,SSP就是一个DLL文件,主要用来实现Windows操作系统的身份认证功能,例如NTML、Kerberos、Negotiate、Secure Channel、Digets、Credential。

SSPI(Security Support Provider Interface,安全支持提供程序接口)是Windows操作系统在执行认证操作时使用的API接口,可以说,SSPI是SSP的API接口。

如果获得了目标网络的System权限,可以使用该方法进行持久化操作,其主要原理是:LSA(Local Security Authority)用于身份验证;lsass.exe作为Windows的系统进程,用于本地安全和登陆策略;在系统启动时,SSP将被加载到lsass.exe进程中。但是,假如攻击者对LSA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能获取到lsass.exe的明文密码。这样,即使用户更改密码重新登陆,攻击者依然能获取该账号的新密码。

SSP维持域控制器权限的防御措施

  • 检查HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages项中是否有可疑的DLL文件
  • 检查C:\Windows\System32\目录下是否有可疑DLL文件
  • 使用第三方工具检查LSA中是否有可疑的DLL文件

SID History域后门

SID History域后门介绍

每个用户都有自己的SID,SID的主要作用是跟踪安全主题控制用户连接资源时的访问权限。SID History是在域迁移过程中需要使用的一个属性。

如果A域中的域用户迁移到B域中,那么在B域中的新建用户的SID会随之改变,进而影响迁移后的用户权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后的用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能访问其原来可以访问的资源。在渗透测试中,如果获得了域管理员权限,就可以将SID History作为持久化的方法。

SID History域后门的防御措施

  • 经常查看域用户中SID为500的用户
  • 完成域迁移工作后,对有相同SID History属性的用户进行检查
  • 定期检查ID为4765和4766的日志:4765为将SID History属性添加到用户的日志;4766为将SID History属性添加到用户失败的日志

Golden Ticket

Golden Ticket介绍

在渗透测试中,如果发现系统中存在恶意行为,应及时更改域管理员密码,对受控制的机器进行断网处理,然后进行日志分析取证。然而,攻击者往往会留下多条进入内网的通道,如果我们忘记将krbtgt账号重置,攻击者就可以很快拿到域控制器权限。

krbtgt是KDC服务使用的账号,属于Domain Admins组,在域环境中,每个用户账号的票据都是由krbtgt生成的,如果攻击者拿到了krbtgt的NYLM Hash或者AES-256值,就可以伪造域内任意用户的身份,并以该用户的身份访问其他服务。

攻击者在使用域的Golden Ticket(黄金票据)进行票据攻击时,通常需要掌握以下信息:

  • 需要伪造的域管理员用户名
  • 完整的域名
  • 域SID
  • krbtgt的NTLM Hash或AES-256值

使用Golden Ticket伪造的用户可以是任意用户(即使这个用户不存在),因为TGT的加密是由krbtgt完成的,所以,只要TGT被krbtgt账户和密码正确的加密,那么任意KDC使用krbtgt将TGT解密后,TGT的所有信息都是可信的。

Golden Ticket攻击的防御措施

管理员通常会修改域管理员的密码,但有时会忘记将krbtgt密码一并重置,所以,要想防止Golden Ticket攻击,就需要将krbtgt密码重置两次。

Silver Ticket

Silver Ticket介绍

Silver Ticket(白银票据)不同于Golden Ticket。Silver Ticket的利用过程是伪造TGS,通过已知授权服务密码生成一张可以访问该服务的TGT。因为在票据生成过程中不需要使用KDC,所以可以绕过域控制器,很少留下日志。而Golden Ticket在利用过程中需要由KDC颁发TGT,并且在生成伪造的TGT的20分钟内,TGS不会对该TGT真伪进行校验。

Silver Ticket依赖于服务账号的密码散列值,这不同于Golden Ticket利用需要使用krbtgt账号密码的散列值,因此更加隐蔽。

Golden Ticket使用krbtgt账号的密码散列值,利用伪造最高权限的TGT向KDC要求颁发拥有任意服务访问权限的票据,从而获得域控制器权限。而Silver Ticket会通过相应的账号服务来伪造TGS,范围有限,只能获得对应的权限服务。Golden Ticket是由krbtgt账号加密的,而Silver Ticket是由特定的服务账号加密的。

攻击者在使用Silver Ticket对内网进行攻击时,需要掌握以下信息:

  • 域名
  • 域SID
  • 目标服务器的FQDN
  • 可利用的服务
  • 服务账号的NTLM Hash
  • 需要伪造的用户名

Silver Ticket攻击的防范措施

  • 在内网中安装杀毒软件,及时更新系统补丁
  • 使用组策略在域中进行相应的设置,现值mimikatz在内网中的使用
  • 计算机的账号密码默认30天清理一次,检查该设置是否生效

Skeleton Key

使用Skeleton Key(万能密码),可以对域内权限进行持久化操作。

Skeleton Key攻击的防范措施

  • 域管理员要设置强口令,确保恶意代码不会再域控制器内执行
  • 在所有域用户中启动双因子认证,例如智能卡认证
  • 启动应用程序的白名单,以限制mimakatz在域控制器中的运行

Hook PasswordChangeNotify

Hook PasswordChangeNotify的作用是当用户修改密码后在系统中进行同步。攻击者可以利用该功能获取用户修改密码时输入的密码明文。

Hook PasswordChangeNotify攻击的防御措施

使用Hook PasswordChangeNotify不需要重启系统、不会再系统磁盘上留下DLL文件、不需要修改注册表。如果Hook PasswordChangeNotify被攻击者利用,网络管理员是很难检测到的。所以,在日常的网络维护工作中,需要对PowerShell进行严格检视,并启用约束语言模式,对Hook PasswordChangeNotify进行防御。

posted @ 2020-04-20 14:56  catt1e  阅读(408)  评论(0编辑  收藏