后渗透来到了权限维持这步,再配合对痕迹的清理,基本就完成了攻击计划。权限维持是要留后门backdoor。后门是攻击者留在目标计算机上的一个软件,不容易被发现,用来随时连接,操控受害者的计算机。这省去了每次渗透的成本,即使漏洞被修复仍能通过后门来控制计算机。
也就是说,当我们发现有人入侵我们的计算机时,就应该快速找到攻击者留下的后门,然后快速删掉它。
一、操作系统后门
指的是绕过目标系统安全控制体系的正规用户认证过程来维持对目标系统的控制权以及隐蔽控制权的方法
1.粘滞键后门
连按5次shift唤出粘滞键。粘滞键是帮助不能完成按组合键的人设计的。
书本讲述利用粘滞键留后门的思路:
①用可执行文件sethc.exe.bak替换windows\system32目录下的粘滞键可执行文件sethc.exe
cd windows\system32
move sethc.exe sethc.exe.bak
copy cmd.exe sethc.exe
②之后唤出粘滞键就会弹出命令提示符,会直接以system权限执行系统命令、创建管理员用户、登陆服务器等
使用empire也可以实现
【防御】:
·在远程登陆服务器时,连续按5次shift,判断是否被入侵
·拒绝使用sethc.exe
·在控制面板中关闭启用粘滞键
2.注册表注入后门
在普通用户权限下,攻击者会将需要执行的后门程序或者脚本路径填写到注册表键HKCU:Software\Microsoft\CurrentVersion\Run中(键名可以任意设置)
使用empire
【防御】:
·杀软针对这类后门有机制,根据杀软的提示进行删除
3.计划任务后门
回忆一下到win7可以用at调用计划任务,win8之后用schtasks命令调用。而计划任务还分为管理员权限和普通用户权限,管理员可以设置更多任务。
比如,让系统执行每小时执行一次notepad.exe
sthtasks /Create /tn Updater /tr notepad.exe /sc hourly /mo 1
常见任务后门:
①在Metsaploit中的Powershell payloaad web delivery模块,模拟攻击者在目标快速建立会话,该行为不会被写入磁盘因此杀软不会对该行为进行检测
【防御】杀软会告警
②在Powerspolit中的persistence模块,模拟生成一个自动创建计划任务的后门脚本
③在empire中模拟
【防御】
·安装杀软,杀软会告警
·及时打补丁
·使用高强度的密码
4.meterperter后门
使用它自带的后门程序persistence
【防御】杀软会告警
5.Cymotho后门
这是一个可以将shellcode注入现有进程的后门工具
6.WMI型后门
WMI型后门只能由管理员权限的用户执行,通常用powershell命令编写。攻击者可从新的wmi属性中读取、执行后门代码,不会再系统磁盘留下记录。
WMI型后门利用两个特征:
无文件:将代码加密存储在WMI中
无进程:执行后进程消失
empire中的invoke-WMI模块可以模拟
这类后门重启之后目标机器会自动上线
【防御】:
·删除自动运行列表中的恶意WMI条目
·在powershell中用Get-WMIObject命令删除域WMI持久化相关的组件
二、WEB后门
俗称webshell,常见的webshell是由ASP、ASP.NET、PHP、JSP代码写的。恶意代码运行在服务器上
1.Nishang的webshell
nishang是针对powershell的渗透测试工具。存着很多大马
2.weevely后门
python写的针对PHP平台的webshell,功能为:
·执行命令、浏览远程文件
·检测服务器配置问题
·创建TCP shell、Reverse shell
·扫描端口
·安装HTTP代理
3.webacoo后门
webcoo(web backdoor cookie) 针对PHP平台的web后门工具
4.ASPX meterpreter后门
5.PHP meterpreter后门
三、域控制器权限持久化
1.DSRM域后门
DSRM(directory services restore mode,目录服务恢复模式),用来恢复域环境。每个域控制器DC都有一个本地管理员(dsrm)账号,修改DSRM使用工具ntdsutil
注意到:
·如果操作系统为win2008,需要安装KB961320才能使用指定域账号的密码对DSRM的密码进行同步
·如果操作系统为win2003,不能使用该方法来进行持久化操作
DSRM可以作为域控制器的本地管理员账号控制DC
修改DSRM方法
命令行模式下:
·NTDSUTIL:打开ntdsutil
·set dsrm password:设置DSRM密码
·reset password on server null:在当前域控制器上恢复DSRM密码
·<password>:修改后的密码
·q(第一次):退出DSRM密码设置模式
·q(第二次):推出ntdsutil
若OS为win2008并且安装了kb961320,就可以用已存在的域账号密码同步DSRM密码
·NTDSUTIL:打开ntdsutil
·set dsrm password:设置DSRM密码
·sync from domain account domainuername:让DSRM密码与指定域用户同步
·q(第一次):退出DSRM密码设置
·q(第二次):退出ntdsutil
DSRM三个登录方式:
①0:默认值只有当域控制器重启并进入DSRM模式,才使用DSRM管理账号
②1:只有当本地AD、DS停止服务,才可以使用DSRM账号登录DC
③2:在任何情况下都可以使用DSRM账号登录
【防御】:
·定期检查注册表中用于控制DSRM登录方式的键值
HKLM\System\CurrentControlSet\Control\Lsa\DsrmAdminLogonBehavior,确认键值为1,或者删除键值
·定期修改域中所有DC的DSRM账号
·经常检查日志中ID为4794的日志,因为该日志记录了尝试设置DSRM的管理员密码
2.SSP维持域控制权限
SSP(security support provider)是windows安全机制的提供者,是一个DLL文件,用来实现windows操作系统的身份认证功能,例如:NTLM、KERBEROS、Negotiate、Secure Channel、Digest、Credential
SSPI(security supportprovider interface,安全支持提供程序接口):也就是SSP的api接口
当得到目标计算机的system权限,可以该方法持久化。原理:
LSA(local security authority)用于身份验证;lsass.exe是windows的一个进程用来进行本地安全和登陆策略;系统启动时SSP被加载到lsass.exe进程中。
当LSA被写入恶意代码,加载到lsass.exe时就会获取明文密码
【防御】:
·检查HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages项目中是否含有可疑的DLL文件
·检查C;\Windows\System32\ 目录下是否有可以的DLL文件
·用第三方工具检查LSA中是否有可疑的DLL文件
3.SID history域后门
每个域用户有自己的SID,SID的作用是判断权限,进行访问控制。而SID history是域迁移过程的一个重要属性,因为打比方从A域迁移到B域,SID会变,那么员原本访问A域的权限就发生了变化。此时SID history记录着以前的属性,那么就可以实现迁移过后仍可以访问原来的资源。
所以可以利用SID history来实现持久化。所谓注入SID history,简单地说,我有一个恶意用户test,我把admin的SID添加到test 的SID history中,就获得了admin的属性
【防御】:
·经常检查域用户中SID为500的用户
·完成域迁移工作后,对相同SID history属性的用户进行检查
·定期检查ID为4765和4666的日志。4765日志记录了将SID history属性添加到用户的事件,4766为将SID history属性添加到用户失败的日志
4.golden ticket黄金票据
经常讲的krbtgt(是KDC服务使用的账号,输入domain admins组,每个账号的票据由krbtgt生成)当我们发现被入侵,忘记重置krbtgt,攻击者会快速重新拿回DC控制权,因为krbtgt可以伪造域内任意用户身份
如果攻击者在域内要使用黄金票据进行票据传递攻击,需要掌握:
·需要伪造的域管理员用户名
·完整的域名
·域SID
·krbtgt的NTLM Hash或AES-256
【防御】:
修改密码
5.silver ticket白银票据
跟黄金票据区别是,白银票据伪造的是TGS,通过已知的授权服务密码生成一张可以访问该服务的tgt。
票据在生成过程中不需要使用KDC,可以绕过域控制器DC,很少留下日志。黄金票据在利用过程中使用的是KDC颁发的tgt,并且在生成伪造的tgt的20分钟内,TGS不会对TGT真假进行校验
之所以叫白银,我认为它的权限没有黄金票据那么高,不需要达到任意服务伪造为目的去使用krbtgt账号,而是针对性的伪造某个服务,因此被发现的几率比黄金票据要小。
【防御】:
·在内网装杀软,及时更新补丁
·使用组策略在域中配置,限制mimikatz在网络中使用
·计算机账号密码默认每30天更改一次,检查是否生效
6.Skeleton Key
使用skeleton key万能密码。可以对域内权限进行持久化操作
7.Hook passwordChangeNotify
攻击者利用它实现获取用户修改密码时的明文密码
四、Nishang下的脚本后门
总结:我在没有完整学习完所有渗透流程之前学习内网安全,我自认为能明白其中近7成概念、理念。内网安全跟常规渗透流程既有相似处又有其特点。往往我们关注特定的服务、日志、功能等,说到底还是回到了人的安全。学习这一书很多时候攻击者能利用漏洞,也是在利用人的漏洞。作为安全专业的人员,我们必须时刻提醒我们要符合安全规范,不要贪图省事省力而放松了规则的制定,并且要处处留心眼,及时发现异常之处。
而在阅读ATT&CK框架一书,我能明显感觉理解上些许吃力,但信号我先阅读了内网安全一书,对于ATT一书的许多概念不至于陌生。触类旁通,我以本书知识去学习其他内容是更为帮助我理解、思考,因此我认为这段时间阅读本书时十分有意义的,我将继续不断学习。