
Cobalt Strike और BloodHound एकीकरण के साथ वेब-आधारित रेड टीम गतिविधि लॉगिंग, रिपोर्टिंग और स्थितिजन्य जागरूकता उपकरण।
रेड टीम गतिविधि के लिए एक केंद्र, जो अभिलेख रखरखाव, परिस्थितिजन्य जागरूकता और रिपोर्टिंग में सहायता करता है। Stepping Stones टीम के लिए गतिविधि लॉग करने और रिपोर्ट स्निपेट उत्पन्न करने हेतु एक वेब-आधारित UI प्रदान करता है। UI को इतना तीव्र रखने का लक्ष्य है कि इसका उपयोग पूरे अभियान के दौरान किया जा सके, न कि केवल रिपोर्टिंग चरण में।
Stepping Stones एक Python Django एप्लिकेशन है, इसलिए स्थानीय प्रति चलाने के लिए:
python -m venv .venv.venv\Scripts\activate या *nix पर source .venv/bin/activatepip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migratepython manage.py runserver और python manage.py process_tasks को एक साथ चलाएँpython manage.py check --deploy चलाएँ, और फिर इस प्रकार की गाइड का पालन करें:
https://docs.djangoproject.com/en/6.0/howto/deployment/टीम सर्वर पर - Stepping Stones को कनेक्ट करने की अनुमति देने के लिए फ़ायरवॉल में छेद करें, उदा.
sudo ufw allow proto tcp from 172.31.16.0/20 to any port 50050यदि स्थानीय प्रति चला रहे हैं, जब git में कोड अपडेट हो गया हो और आप नई सुविधाएँ चाहते हों:
sudo service ssbot stopsudo service steppingstones stoprm -rf /tmp/stepping-stones-main; unzip /tmp/stepping-stones-main.zip && cp -R /tmp/stepping-stones-main/* /opt/steppingstones.venv\Scripts\activate या *nix पर source .venv/bin/activatepip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migrate।
यदि आप विभिन्न कार्यों के लिए समान इंस्टेंस का उपयोग कर रहे हैं और पुराने डेटा को संग्रहीत करके नए सिरे से शुरू करना चाहते हैं तो आप यह कर सकते हैं:
mv db.sqlite3 db.sqlite.OLD_CLIENT_NAMEसिस्टम SQLite का उपयोग करता है। अपने मूल्यवान डेटा की सुरक्षा के लिए सर्वर के रूट में db.sqlite3 फ़ाइल का बैकअप समय-समय पर या Web UI के माध्यम से लें।
कॉन्फ़िगर किए गए वेब हुक URL में से प्रत्येक को प्रमुख घटनाओं पर एक छोटा JSON दस्तावेज़ भेजा जाएगा। JSON दस्तावेज़ की संरचना हमेशा इस प्रकार होती है:
{
"type": "notification type",
"message": "Human readable message"
}
type फ़ील्ड निम्न में से एक हो सकती है:
new beacon (पहले कभी न देखा गया बीकन किसी निगरानी वाले Team Server से जुड़ा है)respawned beacon (पहले देखा गया बीकन किसी निगरानी वाले Team Server से जुड़ा है)returned beacon (एक बीकन जिसकी पुनः कनेक्शन के लिए स्पष्ट रूप से निगरानी की जा रही थी, अभी पुनः कनेक्ट हुआ है)इसे उपभोग करने के लिए, आप निम्नलिखित ब्लूप्रिंट पर आधारित https://make.com स्केनारियो का उपयोग कर सकते हैं:
{"name":"Webhook to iOS","flow":[{"id":1,"module":"gateway:CustomWebHook","version":1,"parameters":{"hook":129792,"maxResults":1},"mapper":{},"metadata":{"designer":{"x":-386,"y":-129},"restore":{"parameters":{"hook":{"data":{"editable":"true"},"label":"My webhook"}}},"parameters":[{"name":"hook","type":"hook:gateway-webhook","label":"Webhook","required":true},{"name":"maxResults","type":"number","label":"Maximum number of results"}],"interface":[{"name":"type","type":"text"},{"name":"message","type":"text"}]}},{"id":8,"module":"ios:SendNotification","version":1,"parameters":{"device":171760},"mapper":{"body":"{{1.message}}","title":"{{1.type}}","action":"","priority":10,"collapsible":false},"metadata":{"designer":{"x":-31,"y":-128},"restore":{"expect":{"action":{"label":"Default"},"priority":{"label":"Deliver immediately"}},"parameters":{"device":{"data":{"editable":"undefined"},"label":"Personal Phone"}}},"parameters":[{"name":"device","type":"device:apn","label":"Device","required":true}],"expect":[{"name":"title","type":"text","label":"Title","required":true},{"name":"body","type":"text","label":"Body"},{"name":"action","type":"select","label":"Action","validate":{"enum":["open_url"]}},{"name":"priority","type":"select","label":"Priority","required":true,"validate":{"enum":[10,5]}},{"name":"collapsible","type":"boolean","label":"Collapse push notifications","required":true}]}}],"metadata":{"instant":true,"version":1,"scenario":{"roundtrips":1,"maxErrors":3,"autoCommit":true,"autoCommitTriggerLast":true,"sequential":false,"confidential":false,"dataloss":false,"dlq":false},"designer":{"orphans":[]},"zone":"eu1.make.com"}}
उपरोक्त ब्लूप्रिंट को एक खाली स्केनारियो बनाकर और Web UI के निचले केंद्र में पाए जाने वाले "..." (अधिक) मेनू के अंतर्गत "Import Blueprint" सुविधा का उपयोग करके आयात करें।
फिर दो और चरणों की आवश्यकता होती है:
वेबहुक को Stepping Stones वेबहुक पृष्ठ पर एक बटन के माध्यम से परीक्षण किया जा सकता है।
Stepping Stones Django के मॉडल स्तर की अनुमति प्रणाली का उपयोग करता है, जिससे उपयोगकर्ताओं को प्रत्येक प्रकार के डेटा मॉडल को बनाने, संपादित करने, देखने और हटाने से प्रतिबंधित किया जा सकता है।
समूह /admin कंसोल में पाए जा सकते हैं जो उस समूह के किसी भी सदस्य को अनुमतियों का एक सेट प्रदान करते हैं, उदा. किसी क्लाइंट की ब्लू टीम के लिए उपयुक्त।
मौजूदा समूह हैं:
| भूमिका | विवरण |
|---|---|
| क्लाइंट ब्लू टीम - केवल पढ़ने योग्य | इवेंट्स और फ़ाइलें पृष्ठ पढ़ सकते हैं |
| क्लाइंट ब्लू टीम - सीमित लेखन | क्लाइंट ब्लू टीम - केवल पढ़ने योग्य के अनुसार, किसी इवेंट के परिणाम और पहचान फ़ील्ड पर लेखन पहुँच के साथ |
स्थापना प्रक्रिया के दौरान बनाए गए उपयोगकर्ताओं को "superuser" का दर्जा दिया जाता है, इसलिए उनके पास निहित रूप से सभी संभावित अनुमतियाँ होती हैं। हालाँकि, व्यवस्थापक कंसोल के माध्यम से मैन्युअल रूप से उपयोगकर्ता बनाते समय सुनिश्चित करें कि उन्हें "staff" या "superuser" के रूप में चिह्नित नहीं किया गया है, ताकि वे बिना किसी निहित अनुमति के शुरू करें और इसलिए केवल समूहों में जोड़े जाने से अनुमतियाँ प्राप्त करें।
उपयोगकर्ताओं के समय क्षेत्र /admin पोर्टल के माध्यम से संशोधित किए जा सकते हैं। रिपोर्टों में समय जानबूझकर UTC में आउटपुट किया जाता है ताकि ब्लू टीमों द्वारा आसान सहसंबंध संभव हो सके।
Stepping Stones द्वारा प्रस्तुत दिनांक प्रारूप वेब ब्राउज़र के लोकेल से मेल खाने चाहिए। अर्थात जिन उपयोगकर्ताओं का ब्राउज़र US लोकेल के साथ कॉन्फ़िगर किया गया है, वे वेब UI और रिपोर्ट स्निपेट में दिनांक MM/DD/YYYY प्रारूप में देखेंगे।
Stepping Stones अन्य टूल्स से लॉग इन्जेस्ट कर सकता है यदि उन्हें JSON आधारित, विशेष EventStream प्रारूप में स्वरूपित किया गया हो। यह प्रारूप SteppingStones के वेब इंटरफ़ेस के भीतर विस्तृत है, जिसमें स्कीमा और उदाहरण डेटा शामिल हैं।
एक बार EventStream लॉग को Stepping Stones द्वारा इन्जेस्ट कर लिए जाने के बाद, रिपोर्ट के लिए विशिष्ट प्रासंगिक प्रविष्टियों को इवेंट्स में क्लोन किया जा सकता है।
Cobalt Strike को एकीकृत करने का पसंदीदा तरीका SSBot के माध्यम से है। इसके लिए /opt/cobaltstrike या c:\tools\cobaltstrike में Cobalt Strike की एक लाइसेंस प्राप्त प्रति की आवश्यकता होती है, जिसका उपयोग वेब इंटरफ़ेस में कॉन्फ़िगर किए गए किसी भी (सक्षम) टीम सर्वर से संपर्क करने के लिए किया जाएगा।
एक बार एकीकृत होने के बाद:
यदि SSBot इच्छित रूप से काम नहीं कर रहा है तो अतिरिक्त CLI कमांड उपलब्ध हैं:
.\manage.py reset_cs_data [-s SERVER] - दिए गए टीम सर्वर से पार्स किए गए किसी भी डेटा को रीसेट करेगा, या यदि कोई नाम नहीं दिया गया है तो सभी को। यह CS लॉग से प्राप्त डेटा को प्रभावित नहीं करेगा, उदा. मैन्युअल रूप से क्लोन किए गए इवेंट्स या क्रेडेंशियल्स।.\manage.py parse_log_tar <file name> - एक टीम सर्वर से लिए गए और tar किए गए logs निर्देशिका की सामग्री को पार्स करेगा। नोट: इसमें SSBot द्वारा सुलभ सभी डेटा शामिल नहीं है और इसलिए यह पसंदीदा इन्जेस्ट तकनीक नहीं है।वेब UI के माध्यम से कॉन्फ़िगर किए गए Neo4j सर्वर का उपयोग इसके लिए किया जाएगा:
owned स्थिति को अद्यतन करना।प्लगइन्स के माध्यम से Stepping Stone की कार्यक्षमता का विस्तार करना संभव है। अतिरिक्त दस्तावेज़ यहाँ उपलब्ध हैं।
python manage.py makemigrationssudo service ssbot restartsudo service steppingstones restartjournalctl -u steppingstones के साथ