
Microsoft O365를 대상으로 하는 사용자명 열거 및 비밀번호 스프레이 도구
o365spray는 Microsoft Office 365(O365)를 대상으로 하는 사용자명 열거 및 비밀번호 스프레이 도구입니다. 이 도구는 감사의 글에서 언급된 연구자들이 발견하고 식별한 다양한 열거 및 스프레이 기술을 재구현합니다.
교육, 승인 및/또는 연구 목적으로만 사용하세요.
경고: Autologon, oAuth2 및 RST 사용자 열거 모듈은 사용자당 한 번의 인증 시도를 제출하여 작동합니다. 모듈을 단일 실행에서 비밀번호 스프레이와 함께 실행하면, o365spray는 비밀번호 스프레이를 수행하기 전에 자동으로 잠금 타이머를 재설정합니다. 열거만 단독으로 실행하는 경우, 사용자는 각 인증 시도가 몇 번, 언제 이루어졌는지 인지하고 비밀번호 스프레이를 수행하기 전에 수동으로 잠금 타이머를 재설정해야 합니다.
도메인이 O365를 사용 중인지 확인:
o365spray --validate --domain test.com
지정된 도메인에 대해 사용자명 열거 수행:
o365spray --enum -U usernames.txt --domain test.com
지정된 도메인에 대해 비밀번호 스프레이 수행:
o365spray --spray -U usernames.txt -P passwords.txt --count 2 --lockout 5 --domain test.com
usage: o365spray [flags]
o365spray | Microsoft O365 User Enumerator and Password Sprayer -- v3.0.4
options:
-h, --help 도움말 메시지를 출력하고 종료
Target:
-d DOMAIN, --domain DOMAIN
검증, 사용자 열거 및/또는 비밀번호 스프레이를 위한
대상 도메인.
Actions:
--validate 도메인 검증만 실행.
--enum 사용자 열거 실행.
--spray 비밀번호 스프레이 실행.
Credentials:
-u USERNAME, --username USERNAME
쉼표로 구분된 사용자명.
-p PASSWORD, --password PASSWORD
쉼표로 구분된 비밀번호.
-U USERFILE, --userfile USERFILE
사용자명 목록이 포함된 파일.
-P PASSFILE, --passfile PASSFILE
비밀번호 목록이 포함된 파일.
--paired PAIRED username:password 형식의 자격 증명 목록이 포함된 파일.
Password Spraying Configuration:
-c COUNT, --count COUNT
잠금 계정 타이머를 재설정하기 전에 사용자당 실행할
비밀번호 시도 횟수.
기본값: 1
-l LOCKOUT, --lockout LOCKOUT
잠금 정책 재설정 시간(분 단위).
기본값: 15분
Module Configuration:
--validate-module VALIDATE_MODULE
실행할 검증 모듈을 지정.
기본값: getuserrealm
--enum-module ENUM_MODULE
실행할 열거 모듈을 지정.
기본값: office
--spray-module SPRAY_MODULE
실행할 비밀번호 스프레이 모듈을 지정.
기본값: oauth2
--adfs-url ADFS_URL 비밀번호 스프레이를 위한 대상 도메인의 ADFS 로그인 페이지
AuthURL.
Scan Configuration:
--sleep [-1, 0-120] HTTP 요청을 `N`초마다 제한. 값 `-1`을 전달하면
무작위화(1초~2분) 가능.
기본값: 0
--jitter [0-100] 지터는 --sleep 기간을 지정된 백분율(0-100)만큼 확장.
기본값: 0
--rate RATE 열거 및 스프레이 중 동시 연결(시도) 수.
기본값: 10
--poolsize POOLSIZE ThreadPoolExecutor의 최대 크기.
기본값: 10000
--safe SAFE 잠긴 계정이 `N`개 관찰되면 비밀번호 스프레이 실행을 종료.
기본값: 10
HTTP Configuration:
--useragents USERAGENTS
무작위화를 위한 사용자 에이전트 목록이 포함된 파일.
--timeout TIMEOUT HTTP 요청 시간 초과(초). 기본값: 25
--proxy PROXY 트래픽을 전달할 HTTP/S 프록시
(예: http://127.0.0.1:8080).
--proxy-url PROXY_URL
FireProx API URL.
Output Configuration:
--output OUTPUT 결과 및 테스트 케이스 파일의 출력 디렉토리.
기본값: 현재 디렉토리
Debug:
-v, --version 도구 버전 출력.
--debug 디버그 출력 활성화.
onedrive 모듈은 대상 사용자가 이전에 OneDrive에 로그인한 적이 있어야 합니다. 유효한 사용자가 아직 OneDrive를 사용하지 않은 경우 해당 계정은 '유효하지 않음'으로 표시됩니다.
oAuth2 모듈은 페더레이션 스프레이에 사용될 수 있지만, 대상 테넌트에서 비밀번호 동기화가 활성화된 경우에만 작동합니다. 그렇지 않으면 인증이 항상 실패합니다. 기본 메커니즘은 페더레이션이 확인되면 'adfs' 모듈로 기본 설정됩니다.
Microsoft는 비밀번호 스프레이를 더 어렵게 만들었으므로 FireProx와 같은 도구를 사용하면 IP 주소 기반 속도 제한을 우회하는 데 도움이 됩니다.
o365spray와 함께 FireProx를 사용하려면 아래 기본 URL 테이블을 기반으로 주어진 o365spray 모듈에 대한 프록시 URL을 생성하세요. 그런 다음 프록시 URL을 --proxy-url로 전달할 수 있습니다.
참고: FireProx URL을 생성하는 데 사용된 기본 URL과 일치하는 올바른
--enum-module또는--spray-module플래그를 사용해야 합니다.
OneDrive URL의 'tenant' 값은
--domain플래그로 제공된 도메인 이름 값입니다.
이제 User-Agent 무작위화가 지원되며, --useragents 플래그에 User-Agent 파일을 제공하여 수행할 수 있습니다. o365spray는 resc/user-agents.txt를 통해 4,800개 이상의 에이전트가 포함된 예제 파일을 제공합니다.
예제 데이터 세트의 에이전트는 다음에서 수집되었습니다:
o365spray 프레임워크가 새로운 도구인 Omnispray로 포팅되었습니다. 이 도구는 원래의 열거 및 스프레이 프레임워크를 모듈화하여 O365뿐만 아니라 일반적인 대상을 대상으로 할 수 있도록 합니다. Omnispray에는 수정하여 모든 대상에 활용할 수 있는 열거 및 스프레이용 템플릿 모듈이 포함되어 있습니다.
버그/오류가 발견되면 자세한 내용과 함께 이슈를 개설하거나(또는 제안된 수정 사항이 포함된 풀 리퀘스트) 제출해 주세요. 이전 버전 사용에 대한 자세한 내용은 아래 섹션을 참조하세요.
문제가 발생하면 코드 재작성 이전의 버전을 확인해 보세요:
# v1.3.7
git checkout e235abdcebad61dbd2cde80974aca21ddb188704
# v2.0.4
git checkout a585432f269a8f527d61f064822bb08880c887ef
| 모듈 | 기본 URL |
|---|
| autodiscover | https://outlook.office365.com/ |
| autologon | https://autologon.microsoftazuread-sso.com/ |
| oauth2 | https://login.microsoftonline.com/ |
| office | https://login.microsoftonline.com/ |
| rst | https://login.microsoftonline.com/ |
| onedrive | https://<tenant>-my.sharepoint.com/ |
| 모듈 | 기본 URL |
|---|
| activesync | https://outlook.office365.com/ |
| adfs | 현재 구현되지 않음 |
| autodiscover | https://autodiscover-s.outlook.com/ |
| autologon | https://autologon.microsoftazuread-sso.com/ |
| oauth2 | https://login.microsoftonline.com/ |
| reporting | https://reports.office365.com/ |
| rst | https://login.microsoftonline.com/ |
| 저자 | 도구/연구 | 링크 |
|---|
| gremwell | o365enum: office.com을 통한 인증 없는 사용자 열거 | o365enum |
| grimhacker | office365userenum: ActiveSync 사용자 열거 연구 및 발견 | office365userenum / 블로그 게시물 |
| Raikia | UhOh365: Autodiscover를 통한 인증 없는 사용자 열거 | UhOh365 |
| dafthack | MSOLSpray: MSOL을 통한 비밀번호 스프레이 | MSOLSpray |
| byt3bl33d3r | MSOLSpray: Python 재구현 | Gist |
| nyxgeek | onedrive_user_enum: OneDrive 사용자 열거 | onedrive_user_enum / 블로그 게시물 |
| Mr-Un1k0d3r | adfs-spray: ADFS 비밀번호 스프레이 | adfs-spray |
| Nestori Syynimaa | AADInternals: oAuth2 및 autologon 모듈 | AADInternals |
| Daniel Chronlund / xFreed0m | Invoke-AzureAdPasswordSprayAttack / ADFSpray: Office 365 보고 API 비밀번호 스프레이 | Invoke-AzureAdPasswordSprayAttack / ADFSpray |
| Optiv (여러 저자) | Go365: RST 사용자 열거 및 비밀번호 스프레이 모듈 | Go365 |
| byt3bl33d3r | SprayingToolkit: 코드 참조 | SprayingToolkit |
| sensepost | ruler: 코드 참조 | Ruler |