
Microsoft Graph API का उपयोग करके Microsoft Teams चैनलों के माध्यम से एजेंट ट्रैफ़िक को टनल करने वाला Mythic C2 प्रोफ़ाइल, जिसमें AES256 एन्क्रिप्शन, jitter, kill dates, और proxy समर्थन शामिल है।
एक Mythic C2 प्रोफ़ाइल जो Microsoft Teams चैनल के माध्यम से संवाद करने के लिए Microsoft Graph API का उपयोग करती है।
Agent <---> Microsoft Teams Channel <---> C2 Server <---> Mythic
संचार सामान्य Teams चैनल गतिविधि के रूप में दिखाई देता है।
यह प्रोफ़ाइल समर्थन करती है:
अपने Mythic सर्वर से:
sudo ./mythic-cli install github https://github.com/Whispergate/msteams
या एक स्थानीय फ़ोल्डर से:
sudo ./mythic-cli install folder /path/to/msteams
ChannelMessage.Read.All - चैनल संदेश पढ़ेंChannelMessage.Send - चैनल संदेश भेजेंयदि ChannelMessage.Send उपलब्ध नहीं है, तो Group.ReadWrite.All का उपयोग करें या एक webhook URL कॉन्फ़िगर करें।
पूर्ण सेटअप निर्देश इंस्टॉलेशन के बाद https://<your-mythic-server>:7443/docs/c2-profiles/msteams पर Mythic दस्तावेज़ पृष्ठ में हैं।
Mythic UI के माध्यम से संपादित करें: C2 Profiles > msteams > View/Edit Config।
कोई भी Mythic एजेंट जो msteams C2 प्रोफ़ाइल पैरामीटर लागू करता है, इस प्रोफ़ाइल का उपयोग कर सकता है। एजेंट को आवश्यकता है:
किसी भी Azure या M365 खाते के बिना स्थानीय परीक्षण के लिए test/ में एक mock परीक्षण अवसंरचना शामिल है। यह आपको एक स्थानीय नकली Graph API के विरुद्ध पूर्ण C2 पाइपलाइन — संकलित इम्प्लांट सहित — का परीक्षण करने देता है।
test/mock_server.py को अपने Mythic होस्ट पर कॉपी करें और इसे प्रारंभ करें:
python3 mock_server.py
यह पोर्ट 8443 पर एक नकली Graph API प्रारंभ करता है।
Mythic में msteams C2 प्रोफ़ाइल को mock मानों के साथ कॉन्फ़िगर करें:
{
"tenant_id": "fake-tenant-id",
"client_id": "fake-client-id",
"client_secret": "fake-client-secret",
"team_id": "fake-team-id",
"channel_id": "fake-channel-id",
"graph_base": "http://<mythic-host-ip>:8443/v1.0",
"login_base": "http://<mythic-host-ip>:8443",
"poll_interval": 3,
"clear_messages": true,
"debug": true
}
Mythic UI में msteams प्रोफ़ाइल प्रारंभ करें।
mock के विरुद्ध एक वास्तविक संकलित एजेंट का परीक्षण करने के लिए, एजेंट बाइनरी को वास्तविक Graph API एंडपॉइंट्स के बजाय mock सर्वर के IP और पोर्ट के साथ हार्डकोडेड बनाने की आवश्यकता है। Starburst एजेंट कोड (agent_code/src/transport/msteams.cc) में:
// Change these for mock testing:
#define GRAPH_API_HOST "<mythic-host-ip>"
#define LOGIN_HOST "<mythic-host-ip>"
#define API_PORT 8443
// And change WINHTTP_FLAG_SECURE to 0 in WinHttpOpenRequest
// since the mock server uses plain HTTP:
WINHTTP_DEFAULT_ACCEPT_TYPES,
0
फिर Starburst को पुनः इंस्टॉल करें, msteams प्रोफ़ाइल के साथ एक पेलोड बनाएं (समान fake tenant/client/team/channel IDs का उपयोग करते हुए), और इसे एक Windows VM पर चलाएं जो Mythic होस्ट तक पहुंच सके।
उत्पादन पेलोड बनाने से पहले इन परिवर्तनों को वापस करना याद रखें:
#define GRAPH_API_HOST "graph.microsoft.com"
#define LOGIN_HOST "login.microsoftonline.com"
#define API_PORT 443
WINHTTP_DEFAULT_ACCEPT_TYPES,
WINHTTP_FLAG_SECURE
एजेंट को संकलित किए बिना एक त्वरित पाइपलाइन परीक्षण के लिए:
GRAPH_URL=http://<mythic-host-ip>:8443 python test/fake_agent.py
अधिक विवरण के लिए test/README.md देखें।
clear_messages सक्षम करेंpoll_interval उचित रखें (10-30s)msteams/
config.json # Mythic container config
C2_Profiles/msteams/
Dockerfile # Container image
main.py # Mythic service entrypoint
requirements.txt # Python dependencies
rabbitmq_config.json # RabbitMQ settings
msteams/
c2_functions/msteams.py # C2Profile class + parameters
c2_code/
server.py # Main polling loop
graph_client.py # MS Graph API client
mythic_client.py # Mythic API forwarder
config.py # Config singleton
config.json # Default config values
documentation-c2/msteams/_index.md # Mythic docs page
test/
mock_server.py # Mock Graph API server
fake_agent.py # Simulated agent for testing
test_c2_server.py # Standalone C2 server test harness
test_config.json # Test config with fake values
| पैरामीटर | विवरण | डिफ़ॉल्ट |
|---|
tenant_id | Entra ID टेनेंट (डायरेक्टरी) ID | |
client_id | App registration क्लाइंट ID | |
client_secret | App registration क्लाइंट सीक्रेट | |
team_id | Teams टीम ID | |
channel_id | Teams चैनल ID | |
webhook_url | भेजने के लिए वैकल्पिक webhook URL | |
graph_base | Graph API बेस URL | https://graph.microsoft.com/v1.0 |
login_base | लॉगिन एंडपॉइंट बेस URL | https://login.microsoftonline.com |
poll_interval | पोल के बीच सेकंड | 10 |
clear_messages | प्रसंस्करण के बाद संदेश हटाएं | false |
debug | वर्बोज़ लॉगिंग सक्षम करें | false |