
स्वतंत्रता सेनानी मोड: ओपन सोर्स हैकिंग हार्नेस
FFM एक हैकिंग हार्नेस है जिसका उपयोग आप रेड-टीमिंग अभियान के पोस्ट-एक्सप्लॉइटेशन चरण के दौरान कर सकते हैं। इस उपकरण का विचार 2007 सम्मेलन @thegrugq से प्राप्त किया गया था।
इसे SSTIC 2018 (वीडियो) में प्रस्तुत किया गया था और संबंधित स्लाइड डेक इस यूआरएल पर उपलब्ध है। यदि आप इस प्रकार के उपकरणों से परिचित नहीं हैं, तो यह दृढ़ता से अनुशंसा की जाती है कि आप उन पर एक नज़र डालें ताकि यह समझा जा सके कि एक हैकिंग हार्नेस का उद्देश्य क्या है। सभी टिप्पणियाँ स्लाइड्स में शामिल हैं।
यह प्रोजेक्ट GPL v3 लाइसेंस की शर्तों के तहत वितरित किया जाता है।
प्राथमिक दस्तावेज़ीकरण इस README और commands/ के अंतर्गत कमांड मॉड्यूल में रहता है।
ऊपर दिए गए SSTIC टॉक लिंक हार्नेस के उपयोग के तरीके के लिए सर्वोत्तम उच्च-स्तरीय पृष्ठभूमि बने हुए हैं।
अतिरिक्त वॉकथ्रू सामग्री यहाँ उपलब्ध है:
ice-wzl ने प्रोजेक्ट इतिहास के दौरान कमांड, दस्तावेज़ीकरण और रीफ़ैक्टर का योगदान दिया।docker का उपयोग करने की अत्यधिक अनुशंसा करते हैं।Dockerfile का उपयोग करने से संभावित त्रुटियों में काफी कमी आएगी।Docker स्थापित हैgit clone https://github.com/JusticeRage/FFM.git
cd /FFM
docker build Docker_Install/ -t ffm:ffm
docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/ffm ffm fb6dd17e3b91 9 minutes ago 614 MB
docker.io/library/ubuntu 22.04 3b418d7b466a 2 weeks ago 80.3 MB
#run your new container and drop into a /bin/bash prompt as root
docker run -it --entrypoint /bin/bash -u 0 fb6dd17e3b91
root और neo के लिए passwd सेट करेंsu neo और अब आप तैयार हैं git clone https://github.com/JusticeRage/FFM.git
cd /FFM
pip install -r requirements.txt
एक हैकिंग हार्नेस का लक्ष्य एक सहायक के रूप में कार्य करना है जो पोस्ट-एक्सप्लॉइटेशन चरण के दौरान सामान्य कार्यों को स्वचालित करता है, लेकिन उपयोगकर्ता को उन गलतियों से भी बचाता है जो वे कर सकते हैं।
यह शेल का एक इंस्ट्रुमेंटेशन है। इसे सक्रिय करने के लिए ./ffm.py चलाएँ और आप तुरंत काम करना शुरू कर सकते हैं।
कमांड commands/ के अंतर्गत छोटे मॉड्यूल में विभाजित हैं, जिनमें
commands/command_manager.py डिस्कवरी और पंजीकरण को संभालता है। मुख्य समूह हैं
गणना, सहायता, गुप्तता, स्थानांतरण, और निष्पादन।
दो कमांड हैं जिनके बारे में आपको जानना आवश्यक है:
!list टाइप करें।!list tags टाइप करें जिनमें कमांड को वर्गीकृत किया जा सकता है!list tags
List of commands available:
enumeration
execution
help
stealth
transfer
!list enumeration (या अन्य टैग में से एक) टाइप कर सकते हैं।!list enumeration
List of commands available:
!backup-hunter: Hunts for backup files
!info: Returns CPU(s), Architecture, Memory, and Kernel Verison for the current machine.
!log: Toggles logging the harness' input and output to a file.
!mtime: Returns files modified in the last X minutes
!os: Prints the distribution of the current machine.
!db-hunter: Hunts for .sqlite, .sqlite3, and .db files
!sshkeys: Hunts for Private and Public SSH keys on the current machine.
!suid: Finds SUID, SGID binaries on the current machine.
--snip--
SHIFT+TAB दबाएं। यह उपयोगी हो सकता है यदि आप
SSH के माध्यम से एक रिमोट कंप्यूटर में लॉग इन हैं लेकिन आपको अपने बॉक्स पर स्थित फ़ाइल को संदर्भित करने की आवश्यकता है।यह हैकिंग हार्नेस कुछ सुविधाएँ प्रदान करता है जिनका वर्णन नीचे किया गया है। जैसे-जैसे उनका वर्णन किया जाएगा, उपकरण के पीछे डिज़ाइन दर्शन भी प्रस्तुत किया जाएगा। यह अपेक्षित नहीं है कि FFM में लागू सभी कमांड आपको सूट करेंगे। हर किसी के पास काम करने का अपना तरीका होता है, और हार्नेस को आपकी विशिष्ट आवश्यकता के अनुसार ट्यून करने के लिए संभवतः आपको कुछ कोड संशोधित करने हो सकते हैं और/या कुछ प्लगइन लिखने होंगे। यह सुनिश्चित करने के लिए काफी प्रयास किया गया है कि यह एक दर्द रहित कार्य हो।
!os एक अत्यंत सरल कमांड है जो यह दिखाने के लिए केवल cat /etc/*release* चलाता है कि वर्तमान मशीन किस OS
पर चल रही है। यह संभवतः एक प्रदर्शन के रूप में सबसे मूल्यवान है कि हैकिंग हार्नेस के संदर्भ में,
आप उपनामों को परिभाषित कर सकते हैं जो मशीन सीमाओं के पार काम करते हैं।
किसी भी कंप्यूटर में SSH करें, !os टाइप करें और कमांड चल जाएगा। गणना कमांड
commands/enumeration_commands.py में, सहायता कमांड commands/help_commands.py में, और
गुप्तता-संबंधित कमांड commands/stealth_commands.py,
commands/notty_sudo.py, और commands/log_control.py में विभाजित हैं।!backup-hunter बैकअप फ़ाइलों की खोज करता है!info वर्तमान मशीन के लिए CPU(s), आर्किटेक्चर, मेमोरी, और कर्नेल संस्करण लौटाता है।!log हार्नेस के इनपुट और आउटपुट को एक फ़ाइल में लॉग करने को टॉगल करता है। commands/log_control.py में कार्यान्वित किया गया है।!mtime पिछले X मिनटों में संशोधित फ़ाइलें लौटाता है। उदाहरण के लिए !mtime 5 स्थानीय मशीन पर उन सभी फ़ाइलों को प्राप्त करेगा (जिन्हें देखने का आपके पास अधिकार है) जो पिछले 5 मिनटों में संशोधित की गई हैं।!db-hunter .sqlite, .sqlite3, और .db फ़ाइलों और अन्य डेटाबेस फ़ाइलों की खोज करता है!sshkeys वर्तमान मशीन पर निजी और सार्वजनिक SSH कुंजियों की खोज करता है।!suid वर्तमान मशीन पर SUID, SGID बाइनरी ढूँढता है।!strange-dirs एक होस्ट पर अजीब निर्देशिकाओं के लिए उपयोगकर्ता द्वारा निर्दिष्ट पथ से शुरू होने वाले उपकरण की जाँच करता है!sudo-version एक कमजोर sudo संस्करण की जाँच करता है!vm जाँचता है कि उपकरण एक वर्चुअल मशीन है या नहीं!download [remote file] [local path] रिमोट मशीन से एक फ़ाइल प्राप्त करता है और उसे स्थानीय रूप से कॉपी करता है
टर्मिनल के माध्यम से। यह कमांड थोड़ा अधिक जटिल है क्योंकि अधिक कठोर त्रुटि जाँच आवश्यक है लेकिन यह एक और कमांड है जिसे आप आसानी से पढ़ सकते हैं। यह commands/download_file.py में रहता है। ध्यान दें कि इसके ठीक से काम करने के लिए रिमोट मशीन पर xxd या od की आवश्यकता होती है।!download-dir [remote directory] [local destination] एक रिमोट निर्देशिका के tar संग्रह को टर्मिनल के माध्यम से स्ट्रीम करता है और इसे रिमोट फ़ाइल सिस्टम को छुए बिना स्थानीय रूप से निकालता है। यह commands/download_directory.py में रहता है। इसे रिमोट मशीन पर tar और base64 की आवश्यकता होती है, और उपलब्ध होने पर gzip का भी उपयोग करता है।!upload [local file] [remote path] बिल्कुल पिछले कमांड की तरह काम करता है, सिवाय इसके कि एक स्थानीय फ़ाइल रिमोट मशीन पर रखी जाती है। यह commands/upload_file.py में रहता है।