
एक Python पैकेज का उपयोग कई ऑपरेटिंग सिस्टम वातावरणों में Atomic Red Team परीक्षणों (Atomics) को निष्पादित करने के लिए किया जाता है।
यह पायथन पैकेज कई ऑपरेटिंग सिस्टम वातावरणों में एटॉमिक रेड टीम परीक्षणों (एटॉमिक्स) को निष्पादित करने के लिए उपयोग किया जाता है।
atomic-operator सुरक्षा पेशेवरों को atomic-red-team में परिभाषित निर्धारित तकनीकों के विरुद्ध उनकी पहचान और रक्षात्मक क्षमताओं का परीक्षण करने में सक्षम बनाता है। atomic-operator जैसे परीक्षण ढांचे का उपयोग करके, आप अपनी रक्षात्मक क्षमताओं के साथ-साथ रक्षात्मक कवरेज में कमियों की पहचान कर सकते हैं।
इसके अतिरिक्त, atomic-operator का उपयोग कई अन्य स्थितियों में भी किया जा सकता है जैसे:
iaas:aws के विरुद्ध एटॉमिक परीक्षण चलाने का समर्थन करता हैatomic-operator एक पायथन-केवल पैकेज है जो PyPi पर होस्ट है और Python 3.6 और उससे अधिक के साथ काम करता है।
यदि आप PowerShell संस्करण चाहते हैं, तो कृपया Invoke-AtomicRedTeam देखें।
pip install atomic-operator
अगले चरण आपको atomic-operator को सेट अप करने और चलाने में मार्गदर्शन करेंगे।
आप atomic-operator को OS X, Linux या Windows पर स्थापित कर सकते हैं। आप इसे सीधे स्रोत से भी स्थापित कर सकते हैं। स्थापित करने के लिए, नीचे संबंधित ऑपरेटिंग सिस्टम शीर्षक के अंतर्गत कमांड देखें।
निम्नलिखित लाइब्रेरीज़ आवश्यक हैं और atomic-operator द्वारा स्थापित की जाती हैं:
pyyaml==5.4.1
fire==0.4.0
requests==2.26.0
attrs==21.2.0
pick==1.2.0
pip install atomic-operator
git clone https://github.com/swimlane/atomic-operator.git
cd atomic-operator
# ModuleNotFoundError: No module named 'setuptools_rust' को संतुष्ट करें
brew install rust
pip3 install --upgrade pip
pip3 install setuptools_rust
# वापस हमारी नियमित प्रोग्रामिंग पर ...
pip install -r requirements.txt
python setup.py install
git clone https://github.com/swimlane/atomic-operator.git
cd atomic-operator
pip install -r requirements.txt
python setup.py install
आप atomic-operator को कमांड लाइन से या अपनी खुद की पायथन स्क्रिप्ट के भीतर चला सकते हैं। कमांड लाइन पर atomic-operator का उपयोग करने के लिए अपने टर्मिनल में निम्नलिखित दर्ज करें:
atomic-operator --help
atomic-operator run -- --help
कृपया ध्यान दें कि रन कमांड के बारे में विवरण देखने के लिए
atomic-operator run -- --helpचलाएं,atomic-operator run --helpनहीं।
atomic-operator का उपयोग करने के लिए आपके स्थानीय सिस्टम पर एक या अधिक atomic-red-team परीक्षण (एटॉमिक्स) होने चाहिए। atomic-operator आपको एटॉमिक रेड टीम रिपॉजिटरी डाउनलोड करने की क्षमता प्रदान करता है। आप कमांड लाइन पर निम्नलिखित चलाकर ऐसा कर सकते हैं:
atomic-operator get_atomics
# आप --destination फ़्लैग का उपयोग करके गंतव्य निर्देशिका निर्दिष्ट कर सकते हैं
atomic-operator get_atomics --destination "/tmp/some_directory"
एक परीक्षण चलाने के लिए आपको कुछ अतिरिक्त गुण (और यदि चाहें तो विकल्प) प्रदान करने होंगे। परीक्षण चलाने की मुख्य विधि run है।
# यह आपके स्थानीय ऑपरेटिंग सिस्टम के अनुकूल सभी परीक्षण चलाएगा
atomic-operator run --atomics-path "/tmp/some_directory/redcanaryco-atomic-red-team-3700624"
जब आप एक या अधिक विशिष्ट तकनीकें प्रदान करते हैं तो आप व्यक्तिगत परीक्षणों का चयन कर सकते हैं। उदाहरण के लिए कमांड लाइन पर निम्नलिखित चलाना:
atomic-operator run --techniques T1564.001 --select_tests
उपयोगकर्ता को उस तकनीक से संबंधित परीक्षणों की चयन सूची के साथ संकेत देगा। एक उपयोगकर्ता स्पेस बार का उपयोग करके वांछित परीक्षण को हाइलाइट करके एक या अधिक परीक्षणों का चयन कर सकता है:
Select Test(s) for Technique T1564.001 (Hide Artifacts: Hidden Files and Directories)
* Create a hidden file in a hidden directory (61a782e5-9a19-40b5-8ba4-69a4b9f3d7be)
Mac Hidden file (cddb9098-3b47-4e01-9d3b-6f5f323288a9)
Create Windows System File with Attrib (f70974c8-c094-4574-b542-2c545af95a32)
Create Windows Hidden File with Attrib (dadb792e-4358-4d8d-9207-b771faa0daa5)
Hidden files (3b7015f2-3144-4205-b799-b05580621379)
Hide a Directory (b115ecaf-3b24-4ed2-aefe-2fcb9db913d3)
Show all hidden files (9a1ec7da-b892-449f-ad68-67066d04380c)
निम्नलिखित आपको परीक्षणों के लिए कस्टम इनपुट तर्क प्रदान करने की अनुमति देगा। आप run विधि पर input_arguments पैरामीटर को एक शब्दकोश के रूप में कुंजियों और मानों का शब्दकोश प्रदान करके ऐसा करते हैं।
atomic-operator run --techniques T1564.001 --input_arguments '{"project-id": "some_value", "another_key": "another value"}'
# कृपया input_arguments मान के चारों ओर एकल उद्धरण शामिल करें।
दूरस्थ रूप से एक परीक्षण चलाने के लिए आपको कुछ अतिरिक्त गुण (और यदि चाहें तो विकल्प) प्रदान करने होंगे। परीक्षण चलाने की मुख्य विधि run है।
# यह आपके स्थानीय ऑपरेटिंग सिस्टम के अनुकूल सभी परीक्षण चलाएगा
atomic-operator run --atomics-path "/tmp/some_directory/redcanaryco-atomic-red-team-3700624" --hosts "10.32.1.0" --username "my_username" --password "my_password"
विंडोज़ होस्ट के विरुद्ध दूरस्थ रूप से कमांड चलाते समय आपको PSRemoting कॉन्फ़िगर करने की आवश्यकता हो सकती है। विवरण के लिए यहाँ देखें: विंडोज़ रिमोटिंग
आप निम्नलिखित कमांड चलाकर अतिरिक्त पैरामीटर देख सकते हैं:
atomic-operator run -- --help
आपको निम्नलिखित के समान आउटपुट देखना चाहिए:
NAME
atomic-operator run - वह मुख्य विधि जिसमें हम एटॉमिक रेड टीम परीक्षण चलाते हैं।
SYNOPSIS
atomic-operator run <flags>
DESCRIPTION
वह मुख्य विधि जिसमें हम एटॉमिक रेड टीम परीक्षण चलाते हैं।
FLAGS
--techniques=TECHNIQUES
Type: list
Default: ['all']
attack_technique ID द्वारा एक या अधिक परिभाषित तकनीकें। डिफ़ॉल्ट 'all' है।
--test_guids=TEST_GUIDS
Type: list
Default: []
एक या अधिक एटॉमिक परीक्षण GUID। डिफ़ॉल्ट None है।
--select_tests=SELECT_TESTS
Type: bool
Default: False
प्रदान की गई तकनीकों में से एक या अधिक परीक्षण चुनें। डिफ़ॉल्ट False है।
--atomics_path=ATOMICS_PATH
Default: '/U...
एटॉमिक परीक्षणों का पथ। डिफ़ॉल्ट os.getcwd() है।
--input_arguments={}
Default: {}
परीक्षण में पास करने के लिए इनपुट तर्कों का शब्दकोश।
--check_prereqs=CHECK_PREREQS
Default: False
प्रीरेक निर्भरताओं (prereq_comand) की जाँच करनी है या नहीं। डिफ़ॉल्ट False है।
--get_prereqs=GET_PREREQS
Default: False
क्या आप पूर्वापेक्षाएँ प्राप्त करना चाहते हैं। डिफ़ॉल्ट False है।
--cleanup=CLEANUP
Default: False
क्या आप क्लीनअप कमांड चलाना चाहते हैं। डिफ़ॉल्ट False है।
--copy_source_files=COPY_SOURCE_FILES
Default: True
क्या आप किसी भी संबंधित स्रोत (src, bin, आदि) फ़ाइलों को दूरस्थ होस्ट पर कॉपी करना चाहते हैं। डिफ़ॉल्ट True है।
--command_timeout=COMMAND_TIMEOUT
Default: 20
प्रत्येक कमांड के लिए टाइमआउट अवधि। डिफ़ॉल्ट 20 है।
--debug=DEBUG
Default: False
क्या आप चलाए जा रहे परीक्षणों के बारे में विवरण आउटपुट करना चाहते हैं। डिफ़ॉल्ट False है।
--prompt_for_input_args=PROMPT_FOR_INPUT_ARGS
Default: False
क्या आप प्रत्येक परीक्षण के लिए इनपुट तर्कों का संकेत चाहते हैं। डिफ़ॉल्ट False है।
--return_atomics=RETURN_ATOMICS
Default: False
क्या आप एटॉमिक्स को चलाने के बजाय वापस करना चाहते हैं। डिफ़ॉल्ट False है।
--config_file=CONFIG_FILE
Type: Optional[]
Default: None
एक conifg_file का पथ जो वातावरण में atomic-operator को स्वचालित करने के लिए उपयोग किया जाता है। डिफ़ॉल्ट None है।
--config_file_only=CONFIG_FILE_ONLY
Default: False
क्या आप केवल प्रदान किए गए config_file के आधार पर परीक्षण चलाना चाहते हैं। डिफ़ॉल्ट False है।
--hosts=HOSTS
Default: []
एक या अधिक दूरस्थ होस्टों की सूची जिन पर परीक्षण चलाना है। डिफ़ॉल्ट [] है।
--username=USERNAME
Type: Optional[]
Default: None
दूरस्थ कनेक्शन के प्रमाणीकरण के लिए उपयोगकर्ता नाम। डिफ़ॉल्ट None है।
--password=PASSWORD
Type: Optional[]
Default: None
दूरस्थ कनेक्शन के प्रमाणीकरण के लिए पासवर्ड। डिफ़ॉल्ट None है।
--ssh_key_path=SSH_KEY_PATH
Type: Optional[]
Default: None
दूरस्थ कनेक्शन के प्रमाणीकरण के लिए SSH कुंजी का पथ। डिफ़ॉल्ट None है।
--private_key_string=PRIVATE_KEY_STRING
Type: Optional[]
Default: None
दूरस्थ कनेक्शन के प्रमाणीकरण के लिए उपयोग की जाने वाली एक निजी SSH कुंजी स्ट्रिंग। डिफ़ॉल्ट None है।
--verify_ssl=VERIFY_SSL
Default: False
RDP (विंडोज़) पर कनेक्ट करते समय ssl सत्यापित करना है या नहीं। डिफ़ॉल्ट False है।
--ssh_port=SSH_PORT
Default: 22
दूरस्थ कनेक्शन के प्रमाणीकरण के लिए SSH पोर्ट। डिफ़ॉल्ट 22 है।
--ssh_timeout=SSH_TIMEOUT
Default: 5
दूरस्थ कनेक्शन के प्रमाणीकरण के लिए SSH टाइमआउट। डिफ़ॉल्ट 5 है।
अतिरिक्त फ़्लैग स्वीकार किए जाते हैं।
यदि प्रदान किया जाता है, तो एक परीक्षण के लिए इनपुट से मेल खाने वाली कुंजियाँ बदल दी जाएंगी। डिफ़ॉल्ट None है।
atomic-operator के साथ पैरामीटर पास करने की क्षमता के अलावा, आप एक config_file का पथ भी पास कर सकते हैं जिसमें सभी एटॉमिक परीक्षण और उनके संभावित इनपुट हों। आप इस config_file का एक उदाहरण यहाँ देख सकते हैं:
atomic_tests:
- guid: f7e6ec05-c19e-4a80-a7e7-241027992fdb
input_arguments:
output_file:
value: custom_output.txt
input_file:
value: custom_input.txt
- guid: 3ff64f0b-3af2-3866-339d-38d9791407c3
input_arguments:
second_arg:
value: SWAPPPED argument
- guid: 32f90516-4bc9-43bd-b18d-2cbe0b7ca9b2
atomic-operator का उपयोग करने के लिए आपको एक AtomicOperator ऑब्जेक्ट को इन्स्टेनशिएट करना होगा।
from atomic_operator import AtomicOperator
operator = AtomicOperator()
# यह एटॉमिक-रेड-टीम रिपॉजिटरी की एक स्थानीय प्रतिलिपि डाउनलोड करेगा
print(operator.get_atomics('/tmp/some_directory'))
# यह आपके स्थानीय सिस्टम पर परीक्षण चलाएगा
operator.run(
technique: str='All',
atomics_path=os.getcwd(),
check_dependencies=False,
get_prereqs=False,
cleanup=False,
command_timeout=20,
debug=False,
prompt_for_input_args=False,
**kwargs
)
यदि आपके कोई प्रश्न हैं या कोई समस्या आती है, तो कृपया एक issue बनाएं।
कृपया हमारे आचार संहिता और हमें पुल अनुरोध सबमिट करने की प्रक्रिया के विवरण के लिए CONTRIBUTING.md पढ़ें।
हम संस्करणकरण के लिए SemVer का उपयोग करते हैं।
इस परियोजना में भाग लेने वाले योगदानकर्ताओं की सूची भी देखें।
यह परियोजना MIT लाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें
| पैरामीटर नाम | प्रकार | डिफ़ॉल्ट | विवरण |
|---|
| techniques | list | all | attack_technique ID द्वारा एक या अधिक परिभाषित तकनीकें। |
| test_guids | list | None | एक या अधिक एटॉमिक परीक्षण GUID। |
| select_tests | bool | False | जब तकनीकें निर्दिष्ट की जाती हैं तो चलाने के लिए एक या अधिक एटॉमिक परीक्षण चुनें। |
| atomics_path | str | os.getcwd() | एटॉमिक परीक्षणों का पथ। |
| input_arguments | dict | {} | परीक्षण में पास करने के लिए इनपुट तर्कों का शब्दकोश। |
| check_prereqs | bool | False | प्रीरेक निर्भरताओं (prereq_comand) की जाँच करनी है या नहीं। |
| get_prereqs | bool | False | क्या आप पूर्वापेक्षाएँ प्राप्त करना चाहते हैं। |
| cleanup | bool | False | क्या आप क्लीनअप कमांड चलाना चाहते हैं। |
| copy_source_files | bool | True | क्या आप किसी भी संबंधित स्रोत (src, bin, आदि) फ़ाइलों को दूरस्थ होस्ट पर कॉपी करना चाहते हैं। |
| command_timeout | int | 20 | टाइमआउट से पहले प्रत्येक कमांड के लिए समय अवधि। |
| debug | bool | False | क्या आप चलाए जा रहे परीक्षणों के बारे में विवरण आउटपुट करना चाहते हैं। |
| prompt_for_input_args | bool | False | क्या आप प्रत्येक परीक्षण के लिए इनपुट तर्कों का संकेत चाहते हैं। |
| return_atomics | bool | False | क्या आप एटॉमिक्स को चलाने के बजाय वापस करना चाहते हैं। |
| config_file | str | None | एक conifg_file का पथ जो वातावरण में atomic-operator को स्वचालित करने के लिए उपयोग किया जाता है। |
| config_file_only | bool | False | क्या आप केवल प्रदान किए गए config_file के आधार पर परीक्षण चलाना चाहते हैं। |
| hosts | list | None | एक या अधिक दूरस्थ होस्टों की सूची जिन पर परीक्षण चलाना है। |
| username | str | None | दूरस्थ कनेक्शन के प्रमाणीकरण के लिए उपयोगकर्ता नाम। |
| password | str | None | दूरस्थ कनेक्शन के प्रमाणीकरण के लिए पासवर्ड। |
| ssh_key_path | str | None | दूरस्थ कनेक्शन के प्रमाणीकरण के लिए SSH कुंजी का पथ। |
| private_key_string | str | None | दूरस्थ कनेक्शन के प्रमाणीकरण के लिए उपयोग की जाने वाली एक निजी SSH कुंजी स्ट्रिंग। |
| verify_ssl | bool | False | RDP (विंडोज़) पर कनेक्ट करते समय ssl सत्यापित करना है या नहीं। |
| ssh_port | int | 22 | दूरस्थ कनेक्शन के प्रमाणीकरण के लिए SSH पोर्ट। |
| ssh_timeout | int | 5 | दूरस्थ कनेक्शन के प्रमाणीकरण के लिए SSH टाइमआउट। |
| **kwargs | dict | None | यदि रन कमांड में अतिरिक्त फ़्लैग पास किए जाते हैं तो हम एटॉमिक परीक्षणों में परिभाषित इनपुट से मिलान करने का प्रयास करेंगे और प्रदान किए गए मान से उनके मान को बदल देंगे। |