操作系统后门,泛指绕过目标系统安全控制体系的正规用户认证过程来维持对目标系统的控制权及隐匿控制行为的方法。系统维护人员可以清除操作系统中的后门,以恢复目标系统安全控制体系的正规用户认证过程。
粘滞键后门是一种比较常见的持续控制方法。在Windors主机上连续按5次"Shit" 健,就可以调出粘滞键。Windws 的粘滞键主要是为无法同时按多个按键的用户设计的,例如,在使用组合健Curl+P时用户需要同时按下"Cur"和P两个键,如果使用粘滞键来实现组合键"Ctrl+P"的功能,就只需按一个键。
针对粘滞键后门,可以采取如下防范措施。
在普通用户权限下,攻击者会将需要执行的后门程序或者脚本路径填写到注册表键HKCU:Sofware\Microsoft\Windows\CurrentVersion\Run中( 键名可以任意设置)。
计划任务在Windows7及之前版本的操作系统中使用at命令调用,在从Windows8 版本开始的操作系统中使用schtasks 命令调用。计划任务后门分为管理员权限和普通用户权限两种。管理员权限的后门可以设置更多的计划任务,例如重启后运行等。
计划任务后门的基本命令如下。该命令表示每小时执行一次 notepad.exe。
1.在Metaplont中模报计划任务后门
使用Poweshell payload web delivery模块,可以模拟攻击者在目标系统中快速建立会话的行为。因为该行为不会被写人磁盘, 所以安全防护软件不会对该行为进行检测。
2.在PowerSploit中模拟计划任务后门
3.在empire中模拟计划任务后门
WMI型后门只能由具有管理员权限的用户运行。WMI型后门通常是用PowerShell编写的可以直接从新的WMI属性中读取和执行后门代码、给代码加密。通过这种方法,攻击者可以在系统中安装一个具有持久性的后门,且不会在系统磁盘中留下任何文件。WMI型后门主要使用了WMI的两个特征,即无文件和无进程。其基本原理是:将代码加密存储于WMI中,达到所谓的“无文件";当设定的条件被满足时,系统将自动启动PowerShell 进程去执行后门程序,执行后,进程将会消失(持续时间根据后门的运行情况而定,一般是几秒).达到所谓的“无进程”。
在Empire下使用Invoke-WMI模块。
Web后门俗称WebShell,是一段包含 ASP、ASP.NET、PHP、JSP程序的网页代码。这些代码都运行在服务器上。攻击者会通过一-段精心设计的代码, 在服务器上进行一些危险的操作, 以获取某些敏感的技术信息,或者通过渗透和提权来获得服务器的控制权。IDS、杀毒软件和安全工具一般都能将攻击者设置的Web后门检测出来。不过,有些攻击者会编写专用的Web后门来隐藏自己的行为。
Nishang是一款专门针对powershell的渗透测试工具,其中有ASPX的大马,在\nishang\Antak-Webshell目录下
weevely 是款用 Python语言编写的针对PHP平台的WebShell 其主要功能如下。
这是一款针对PHP平台的工具
MSF中的shell_reverse_tcp
payload,可以创建具有meterpreter功能的shellcode
MSF中的PHP meterpreter
payload,可以创建具有meterpreter功能的shellcode
在获得域控制器的权限后,攻击者通常会对现有的权限进行持久化操作。
DSRM ( Directory Services Restore Mode,目录服务恢复模式)是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账户 (也就是DSRM账户)。DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。修改DSRM密码最基本的方法是在DC上运行ntdsutil 命令行工具。在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。如果域控制器的系统版本为Windows Server 2008,需要安装KB961320才可以使用指定域账号的密码对DSRM的密码进行同步。在Windows Server 2008以后版木的系统中不需要安装此补丁。如果域控制器的系统版本为Windows Server 2003则不能使用该方法进行持久化操作。
我们知道,每个域控制器都有本地管理员账号和密码(与城管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理品用户, 通过网络连接城控制器, 进而控制域控制器。
SSP(Security Support Provider)是Windows操作系统安全机制的提供者。简单地说,SSP是个DlL文件,主要用来实现Windows操作系统的身份认证功能,例如NTLM、Ketberos,Negotiare. Seure Channe (Schannel )、Digest、Credental ( CredSSP )。
SSPI ( Security Support Provider Interfce.安全支持提供程序接口)是Windows操作系统在执行认证操作时使用的API接口。可以说,SSPI是SSP的API接口。
如果获得了网络中目标机器的System权限,可以使用该方法进行持久化操作。其主要原理是: LSA (Local Security Authority)用于身份验证; lsass.exe 作为Windows的系统进程,用于本地安全和登录策略;在系统启动时,SSP 将被加载到lsass.exe进程中。但是,假如攻击者对LSA进行了扩展,自定义了恶意的DLL文件,在系统启动时将其加载到lsass.exe进程中,就能够获取lsass.exe进程中的明文密码。这样,即使用户更改密码并重新登录,攻击者依然可以获取该账号的新密码。
每个用户都有自己的SID。SID的作用主要是跟踪安全主体控制用户连接资源时的访问权限。SID History是在域迁移过程中需要使用的个属性。如果将A域中的域用户迁移到B域中,那么在B域中新建的用户的SID会随之改变,进而影响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。使用mikaz,可以将SID History 属性添加到域中任意用户的SID History 属性中。在渗透测试中,如果获得了域管理员权限(或者等同于域管理员的权限).就可以将SIDHisoy作为实现持久化的方法。
黄金票据伪造的是票据授予票据(TGT),TGT=krbtgt hash(session key,client info,end time)。TGT由AS返回给client,然后client用TGT来向TGS验证自己的身份,而client是不知道krbtgt hash的,只有AS与TGS知道krbtgt hash,所以要想伪造TGT就需要知道krbtgt hash。所以攻击者伪造黄金票据TGT的前提是获得管理员访问域控制器的权限并抓取到krbtgt hash。
而session key是由AS随机生成的,TGS在收到TGT之前并不知道,所以可以伪造。client info和end time也是可以自己定的。所以我们可以伪造由client发给TGS的TGS REQ,进而获得server ticket。
Silver Ticket(白银票据不同于 Golden Ticket, Silver Ticket的利用过程是伪造TGS,通过已知的授权服务密码生成一张可以访问该服务的TGT。因为在票据生成过程中不需要使用KDC,所以可以绕过域控制器,很少留下日志。而Golden Ticket在利用过程中需要KDC颁发TGT,且在生成伪造的TGT 的20分钟内,TGS不会对该TGT 的真伪进行校验。
Silver Ticket 依赖于服务账号的密码散列值,这不同于 Golden Tickett账号的密码散列值,因此更加隐蔽。
Golden Ticket使用krbtgt账号的密码散列值,利用伪造高权限任意服务访回权限的票据,从而获得域控制器权限。而Silver Ticket会通过相应的服务账号来伪造TGS,例如LDAP、 MSSQL、WinRM、 DNS、CIFS 等,范围有限,只能获取有限的权限。
Golden Ticket是由krbtgt账号加密的,而Silver Ticket是由特定的服务账号加密的。
1.在mimikatz中可以使用Skeleton Key
2.在empire中也可以使用Skeleton KEY
Hook PaswordChangeNoify的作用是当用户修改密码后在系统中进行同步。攻击者可以利用该功能获取用户修改密码时输人的密码明文。
在修改密码时,用户输人新密码后,LSA会调用PasswordFileter来检查该密码是否符合复杂性要求。如果密码符合复杂性要求,LSA会调用PasswordChangeNotify,在系统中同步密码。
Nishang 是基于Powersthel的渗透测试工具,集成了很多框架、脚本及各种 Payload在Nishang环境中对一些脚本后门进行分析。
HTTP-Backdoor脚本
此脚本可以帮助攻击者在目标主机上下载和执行Powershell脚本,接收来自第三方网站的指令,在内存中执行PowerShell脚本,其语法如下。
Add-ScrnSaveBackdoor
Add ScrnSaveBackdoor脚本可以帮助攻击者利用Windows的屏幕保护程序来安插一个隐藏的后门
Execute- -OnTime
Execute-OnTime脚本用于在目标主机上指定PowerShell脚本的执行时间,与HTTP-Backdoor脚本的使用方法相似,只不过增加了定时功能
Invoke- ADSBackdoor
Invoke-ADSBackdoor脚本能够在NTFS数据流中留下一个 永久性的后门。这种方法的威胁是很大的,因为其留下的后门是永久性的,且不容易被发现。