
Azure/O365 테넌트에 대한 Illicit Consent Grant 공격을 자동화하여 리프레시 토큰을 탈취하고, 이메일/OneDrive 데이터를 유출하며, CLI 및 웹 관리 포털을 통해 악성 Outlook 규칙을 생성합니다.
365-Stealer는 불법 동의 부여 공격(illicit consent grant attack)을 자동화하기 위해 설계된 Python3 기반 도구입니다. 대상 사용자가 공격자의 애플리케이션에 무심코 권한을 부여하면, 공격자는 피해자의 갱신 토큰(refresh token)에 접근하게 됩니다. 이 갱신 토큰은 이후 다른 토큰을 생성하는 데 사용되어, 공격자는 피해자의 추가 입력 없이도 이메일, OneDrive의 파일, 노트 등의 민감한 데이터에 접근할 수 있습니다. 수동으로 이를 악용하는 것은 시간이 많이 소요될 수 있지만, 365-Stealer는 이 과정을 간소화하고 자동화합니다.
불법 동의 부여 공격은 공격자가 Azure 내에서 악성 애플리케이션을 등록하여 연락처, 이메일, 문서와 같은 민감한 데이터에 대한 접근을 요청할 때 발생합니다. 공격자는 일반적으로 합법적인 것으로 가장하여 사용자를 속여 앱에 동의하도록 합니다. 피해자가 '수락'을 클릭하면, 자신도 모르게 공격자에게 접근 권한을 제공하게 되며, 공격자는 피해자의 조직 자격 증명 없이 피해자를 대신하여 작업을 수행할 수 있습니다.
더 명확히 설명하면, 사용자가 권한을 부여하면 Entra ID는 공격자의 서버에 토큰을 보냅니다. 이 토큰은 공격자에게 이메일 읽기, 이메일 보내기, OneDrive의 파일에 접근, 그리고 피해자의 자격 증명을 사용한 다른 악의적인 활동을 수행할 수 있는 능력을 제공합니다. 비밀번호 탈취에 의존하는 피싱 공격과 달리, 불법 동의 부여 공격은 클라우드 애플리케이션의 권한 시스템을 남용하여 인증을 완전히 우회합니다.
--run-app 명령을 사용하거나 365-Stealer 관리 포털을 통해 불법 동의 부여 공격을 수행하기 위한 가짜 애플리케이션을 호스팅할 수 있습니다.--no-stealing 플래그를 사용하면 추가 작업 없이 토큰만 탈취하여 공격자가 나중에 이를 악용할 수 있습니다.--refresh-token, --client-id, --client-secret 플래그를 사용하여 공격자는 쉽게 새로운 액세스 토큰을 얻을 수 있습니다.--app-registration 플래그는 Azure 앱 등록 과정을 자동화하여 수동 개입 없이 공격 인프라를 더 쉽게 설정할 수 있습니다.제공된 Python 스크립트를 사용하여 Azure에 애플리케이션을 자동으로 등록하려면 다음 단계를 따르세요:
시스템에 Python3가 설치되어 있는지 확인하세요.
365-Stealer 저장소를 클론합니다:
git clone https://github.com/AlteredSecurity/365-Stealer.git
cd 365-Stealer
필요한 Python 모듈을 설치합니다:
pip install -r requirements.txt
자동 Azure 앱 등록 스크립트를 실행합니다:
python 365-Stealer.py --app-registration
Azure 애플리케이션을 수동으로 등록하려면 다음 단계를 따르세요:
https://portal.azure.com으로 이동하여 계정에 로그인합니다.App registrations를 클릭합니다.`New registration을 클릭하여 새 애플리케이션 등록을 시작합니다.Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant)를 선택합니다.https://<DOMAIN/IP>:<PORT>/login/authorized여야 하며, 여기서 도메인 또는 IP는 365-Stealer 애플리케이션을 호스팅할 위치에 해당합니다.Register를 클릭하여 애플리케이션을 만듭니다.
Certificates & secrets 섹션으로 이동합니다.New client secret을 클릭하고 시크릿에 대한 설명을 입력한 후 Add를 클릭합니다.
API permissions 탭을 클릭합니다.Add a permission을 클릭하여 필요한 권한 선택을 시작합니다.Microsoft Graph를 선택합니다.Delegated permissions을 클릭하여 로그인한 사용자를 대신하여 작동할 권한을 할당합니다.
365-Stealer 저장소 클론:
git clone https://github.com/AlteredSecurity/365-Stealer.git
필요한 애플리케이션 설치:
파일 추출 및 저장:
C:\xampp\htdocs\에 넣습니다. 이렇게 하면 PHP 애플리케이션을 호스팅하고 Python을 실행할 수 있습니다.Python 종속성 설치: 다음 명령을 실행하여 필요한 Python 라이브러리를 설치합니다.
cd C:\xampp\htdocs\365-Stealer
pip install -r requirements.txt
추가 설정 지침 따르기: 필요한 애플리케이션과 종속성을 설치한 후, yoursVictims/Readme.md 파일에 제공된 지침을 따르십시오. 이 지침은 365-Stealer가 제대로 작동하는 데 필요한 데이터베이스와 테이블을 설정하는 방법을 안내합니다.
스크립트 경로 조정:
C:/xampp/htdocs/yourvictims/에 있는 index.php 파일에서 365-Stealer.py, 데이터베이스, python3의 경로를 수정합니다.
파일 경로의 공백 처리:
"C:/Program Files/Python/python.exe"
기본 화이트리스트:
원격 IP 추가:
IP 화이트리스트 비활성화:
$enableIpWhiteList = false;로 설정합니다.
접근 제한: 보안상의 이유로 365-Stealer 관리 포털에 대한 접근은 항상 귀하가 제어하는 인프라로 제한하십시오.
공개 노출 금지: 365-Stealer 관리 포털을 인터넷에 직접 노출하지 마십시오. 잠재적인 침해를 방지하기 위해 안전한 사설 네트워크를 통해서만 접근 가능하도록 하십시오.
usage: 365-Stealer.py [-h] [--app-registration] [--set-config] [--get-config] [--code CODE] [--token TOKEN] [--client-id CLIENT_ID]
[--client-secret CLIENT_SECRET] [--refresh-token REFRESH_TOKEN] [--token-path TOKEN_PATH]
[--refresh-all] [--refresh-user REFRESH_USER] [--redirect-url REDIRECT_URL]
[--database-path DATABASE_PATH] [--no-stealing] [--upload UPLOAD] [--create-rules CREATE_RULES]
[--send-mail SEND_MAIL] [--delete-all-data] [--delete-user-data DELETE_USER_DATA] [--run-app]
[--no-ssl] [--port PORT] [--disable-logs]
[--injection]
[--custom-steal {listusers,checklicence,outlook,onedrive,onenote} [{listusers,checklicence,outlook,onedrive,onenote} ...]]
[--delay DELAY]
optional arguments:
-h, --help show this help message and exit
--app-registration Azure App Registration
--set-config Set 365-Stealer Configuration
--get-config Get 365-Stealer Configuration
--code CODE Provide Authorization Code
--token TOKEN Provide Access Token
--client-id CLIENT_ID
Provide Application Client ID
--client-secret CLIENT_SECRET
Provide Application Client Secret
--refresh-token REFRESH_TOKEN
Provide Refresh Token
--token-path TOKEN_PATH
Provide Access Token file path
--refresh-all Steal all user's data again.
--refresh-user REFRESH_USER
Steal particular user's data again.(Provide EmailID)
--redirect-url REDIRECT_URL
Redirect Url
--database-path DATABASE_PATH
Provide Database Path
--no-stealing Steal only Tokens
--upload UPLOAD Add files in victim's OneDrive(Provide File Path)
--create-rules CREATE_RULES
Provide json file containing outlook rules
--send-mail SEND_MAIL
Provide json file to send email
--delete-all-data Delete all data from the database!
--delete-user-data DELETE_USER_DATA
Delete specific user data from the database!
--run-app Host the Phising App
--no-ssl Use http(port 80)
--port PORT Provide custom port to Host the Phishing App
--disable-logs Disable all http access logs
--custom-steal {listusers,checklicence,outlook,onedrive,onenote} [{listusers,checklicence,outlook,onedrive,onenote} ...]
Steal specific data
--injection Enable Macro Injection
--delay DELAY Delay the request by specifying time in seconds while stealing
새 버전의 365-Stealer(이전 버전을 완전히 다시 작성한 버전)에 대한 블로그 게시물입니다. 이 게시물은 Microsoft 365에서 불법 동의 부여(ICG) 공격이 어떻게 작동하는지 탐구합니다.
이전 블로그 게시물 - 365-Stealer 소개
버그를 발견하거나 기능 요청이 있으면 이슈를 제기해 주십시오.
프로젝트에 기여하고 더 좋게 만들고 싶다면, 여러분의 도움을 환영합니다.
--custom-steal