
Automates Illicit Consent Grant attacks against Azure/O365 tenants to steal refresh tokens, exfiltrate emails/OneDrive data, and create malicious Outlook rules via a CLI and web management portal.
365-Stealer is a Python3-based tool designed to automate illicit consent grant attacks. When a target user unknowingly grants permission to an attacker's application, the attacker gains access to the victim's refresh token. This refresh token can then be used to generate other tokens, allowing the attacker to access sensitive data such as emails, files on OneDrive, and notes—without needing further input from the victim. Manually exploiting this can be time-consuming, but 365-Stealer simplifies and automates the process.
An illicit consent grant attack occurs when an attacker registers a malicious application within Azure, requesting access to sensitive data like contacts, emails, or documents. The attacker deceives a user into consenting to the app, usually by presenting it as legitimate. Once the victim clicks "Accept," they unknowingly provide access to the attacker, allowing them to act on behalf of the victim without needing the victim’s organizational credentials.
To explain more clearly, once the user grants permission, Entra ID sends a token to the attacker's server. This token gives the attacker the ability to read emails, send emails, access files on OneDrive, and perform other malicious activities using the victim's credentials. Unlike phishing attacks that rely on stealing passwords, illicit consent grant attacks bypass authentication entirely by abusing the permissions system of cloud applications.
--run-app command in the terminal or via the 365-Stealer Management portal.--no-stealing flag, the tool can steal only the tokens without further actions, allowing attackers to exploit them later.--client-id, and flags, attackers can easily obtain new access tokens.To automatically register an application in Azure using the provided Python script, follow these steps:
Ensure you have Python3 installed on your machine.
Clone the 365-Stealer repository:
git clone https://github.com/AlteredSecurity/365-Stealer.git
cd 365-Stealer
Install the required Python modules:
pip install -r requirements.txt
Run the automated Azure app registration script:
python 365-Stealer.py --app-registration
If you prefer to manually register an Azure application, follow these steps:
https://portal.azure.com and sign in to your account.App registrations in the left-hand menu.`New registration to begin the process of registering a new application.Accounts in any organizational directory (Any Microsoft Entra ID tenant - Multitenant).https://<DOMAIN/IP>:<PORT>/login/authorized, where your domain or IP corresponds to where you will host the 365-Stealer application.Register to create the application.
Certificates & secrets section under your registered application.New client secret, provide a description for the secret, and then click Add.
API permissions tab under your application.Add a permission to begin selecting the necessary permissions.Microsoft Graph.Delegated permissions to assign permissions that will act on behalf of the signed-in user.
Clone the 365-Stealer Repository:
git clone https://github.com/AlteredSecurity/365-Stealer.git
Install Required Applications:
Extract and Save the Files:
C:\xampp\htdocs\ that allows you to host the PHP application and run Python.Install Python Dependencies: Run the following command to install the necessary Python libraries.
cd C:\xampp\htdocs\365-Stealer
pip install -r requirements.txt
Follow Additional Setup Instructions: After installing the required applications and dependencies, make sure to follow the instructions provided in the yoursVictims/Readme.md file. This will guide you through setting up the necessary databases and tables for 365-Stealer to function properly.
Adjust the Script Paths:
365-Stealer.py, the database, and python3 in the index.php file located at C:/xampp/htdocs/yourvictims/.
Handling Spaces in File Paths:
"C:/Program Files/Python/python.exe"
Default Whitelisting:
Adding Remote IPs:
Disabling IP Whitelisting:
Access Restrictions: For security reasons, always restrict access to the 365-Stealer Management Portal to infrastructure that you control.
Avoid Public Exposure: Never expose the 365-Stealer Management Portal directly to the internet. Ensure it is only accessible through secure, private networks to avoid potential compromise.
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
Blog post for the new version of 365-stealder, which is a ground-up rewrite of the older one. This post explores how Illicit Consent Grant (ICG) attack works in Microsoft 365.
The old blog post - Introduction to 365-Stealer
Please raise an issue if you encounter a bug or have a feature request.
If you want to contribute to a project and make it better, your help is very welcome.
--client-secret--app-registration flag automates the process of Azure app registration, making it easier to set up the attack infrastructure without manual intervention.--custom-steal flag, attackers can selectively steal data from specific sources like OneDrive, Outlook, etc.