
एक फोरेंसिक साक्ष्य संग्राहक

Rust 1.50+ के साथ संकलित और परीक्षण किया गया। प्रोजेक्ट डायरेक्टरी में टर्मिनल खोलें और रिलीज़ बिल्ड संकलित करने के लिए टाइप करें:
cargo build --release
डीबग बिल्ड इस प्रकार संकलित किया जा सकता है:
cargo build
संकलित एक्जीक्यूटेबल target/release/gargamel.exe या target/debug/gargamel.exe में स्थित होता है।
यदि आप लॉगिंग स्तर बदलना चाहते हैं:
src/main.rs खोलेंLevelFilter::Info को (उदाहरण के लिए) LevelFilter::Trace में बदलें ताकि अधिक विस्तृत लॉगिंग हो सके।
LevelFilter::Trace पासवर्ड सहित सब कुछ लॉग करेगा।अभी, यह ऐप केवल विंडोज पर काम करता है और लक्ष्य कंप्यूटर विंडोज या लिनक्स का उपयोग कर रहा होना चाहिए।
सुनिश्चित करें कि Gargamel के समान डायरेक्टरी में निम्नलिखित प्रोग्राम हों:
psexec, डाउनलोडpaexec, PsExec का एक ओपन सोर्स विकल्प, डाउनलोडwinpmem, एक ओपन सोर्स मेमोरी इमेज टूल, डाउनलोड।
plink और pscp, ओपन सोर्स CLI SSH/SCP क्लाइंट, डाउनलोडSharpRDP, RDP का उपयोग करने वाला एक ओपन सोर्स कमांड निष्पादक, डाउनलोडWMImplant, एक ओपन सोर्स PowerShell WMI कमांड निष्पादक, डाउनलोड7za.exe, 7zip आर्काइवर का एक स्टैंडअलोन कंसोल संस्करण, डाउनलोडनोट: हमें psexec और paexec दोनों की आवश्यकता है। हालांकि दोनों एप्लिकेशन कार्यात्मक रूप से समतुल्य माने जाते हैं, फिर भी कुछ परिस्थितियों में उनका व्यवहार भिन्न होता है।
Gargamel को पूरी तरह कार्यशील होने के लिए एक उन्नत टर्मिनल (elevated terminal) से लॉन्च किया जाना चाहिए। वर्तमान में यह सीमित विशेषाधिकारों के साथ चलने पर UAC डायलॉग या किसी भी प्रकार की सूचना का समर्थन नहीं करता है। सीमित उपयोगकर्ता विशेषाधिकारों के साथ चलने पर, लक्ष्य मेमोरी डंपिंग जैसे कुछ ऑपरेशन काम नहीं करेंगे।
मान लें कि आप निम्नलिखित पैरामीटर वाले कंप्यूटर से कनेक्ट करना चाहते हैं:
192.168.42.47Janonbusr123निम्नलिखित कमांड PsExec विधि का उपयोग करके फ़ायरवॉल स्थिति, नेटवर्क स्थिति, लॉग इन उपयोगकर्ता, चल रही प्रक्रियाएँ,
सक्रिय नेटवर्क कनेक्शन, रजिस्ट्री, सिस्टम और एप्लिकेशन इवेंट लॉग प्राप्त करेगी।
साक्ष्य (evidence) Gargamel के स्थान के सापेक्ष testResults डायरेक्टरी में संग्रहीत किया जाएगा।
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults
Gargamel आपसे दूरस्थ उपयोगकर्ता का पासवर्ड मांगेगा, हमारे उदाहरण में पासवर्ड nbusr123 है।
ध्यान दें कि टाइप करते समय पासवर्ड छिपा रहेगा।
पासवर्ड को सीधे प्रोग्राम तर्क के रूप में निर्दिष्ट करना भी संभव है।
gargamel.exe -c 192.168.42.47 -u Jano --psexec -p nbusr123 -o testResults
मान लें कि आप एक डोमेन में निम्नलिखित पैरामीटर वाले कंप्यूटर से कनेक्ट करना चाहते हैं:
WORKSPACEJanovPCJanonbusr123निम्नलिखित कमांड PsExec विधि का उपयोग करके फ़ायरवॉल स्थिति, नेटवर्क स्थिति, लॉग इन उपयोगकर्ता, चल रही प्रक्रियाएँ, सक्रिय नेटवर्क कनेक्शन, रजिस्ट्री, सिस्टम और एप्लिकेशन इवेंट लॉग प्राप्त करेगी।
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -o testResults
या पासवर्ड प्रॉम्प्ट को छोड़ने के लिए सीधे पासवर्ड निर्दिष्ट करें।
gargamel.exe -c JanovPC -u Jano -d WORKSPACE --psexec -p nbusr123 -o testResults
PsExec समर्थित 5 कनेक्शन विधियों में से एक है।
आप --psexec को निम्नलिखित विकल्पों से बदल सकते हैं:
--psexec--psrem, यदि लक्ष्य मशीन पर PowerShell रिमोटिंग कॉन्फ़िगर की गई है।--rdp, यदि लक्ष्य मशीन पर RDP सक्षम है।--wmi.--ssh, यदि लक्ष्य मशीन लिनक्स का उपयोग करती है।एक साथ कई विधियों का उपयोग करना संभव है। उदाहरण के लिए, PsExec और RDP दोनों का उपयोग करने के लिए निम्नलिखित कमांड का उपयोग किया जा सकता है।
gargamel.exe -c 192.168.42.47 -u Jano --psexec --rdp -o testResults
एक विशेष स्विच --all भी है जो --psexec --rdp --psrem --wmi निर्दिष्ट करने के बराबर है।
नोट: लॉन्च पैरामीटर क्रम-अज्ञेय हैं, अर्थात पैरामीटर किस क्रम में निर्दिष्ट किए गए हैं, इससे कोई फर्क नहीं पड़ता।
मेमोरी डंप भी प्राप्त करने के लिए, प्रोग्राम पैरामीटर में केवल -m फ्लैग जोड़ें, उदाहरण के लिए:
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m
यदि आप अन्य साक्ष्य के बिना केवल मेमोरी डंप प्राप्त करना चाहते हैं, तो निम्नलिखित कमांड का उपयोग करें।
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -m --no-events-search --no-evidence-search --no-registry-search
यह कार्यक्षमता केवल विंडोज लक्ष्यों के लिए उपलब्ध है।
Gargamel दूरस्थ मशीन पर कस्टम विंडोज CMD या लिनक्स शेल कमांड चला सकता है।
पहले निम्नलिखित सामग्री के साथ एक फ़ाइल custom-commands.txt बनाएँ।
# किसी भी विधि का उपयोग करके चलाया जाएगा
ipconfig
# केवल तब चलेगा जब --all, --psexec, --wmi विधियों में से कम से कम एक के साथ लॉन्च किया जाए
:psexec:wmi ipconfig -all
उपरोक्त आदेशों के परिणाम -o विकल्प द्वारा निर्दिष्ट डायरेक्टरी में संग्रहीत किए जाएंगे।
custom-commands.txt में लिखे उपरोक्त आदेशों को चलाने के लिए -e स्विच का उपयोग करें, अर्थात:
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -e custom-commands.txt
Gargamel दूरस्थ फ़ाइलें डाउनलोड करने में सक्षम है।
पहले निम्नलिखित सामग्री के साथ एक फ़ाइल custom-files.txt बनाएँ।
C:\Users\Public\sss*
C:\Users\Jano\danove.pdf
# यह पंक्ति और अगली पंक्ति को अनदेखा किया जाएगा
# C:\Users\Jano\somBajecny.pptx
उपरोक्त आदेशों के परिणाम -o विकल्प द्वारा निर्दिष्ट डायरेक्टरी में संग्रहीत किए जाएंगे।
custom-files.txt में लिखे उपरोक्त आदेशों को चलाने के लिए -s स्विच का उपयोग करें, अर्थात:
gargamel.exe -c 192.168.42.47 -u Jano --psexec -o testResults -s custom-files.txt
सभी समर्थित स्विचों का वर्णन नीचे दिया गया है।
USAGE:
gargamel.exe [FLAGS] [OPTIONS] --user <user>
FLAGS:
-a, --all सभी समर्थित विधियों (PsExec, PsRemote, WMI, RDP) का उपयोग करके विंडोज मशीन से साक्ष्य प्राप्त करें।
--no-events-search विंडोज इवेंट लॉग अधिग्रहण अक्षम करता है।
--no-evidence-search आमतौर पर जल्दी डाउनलोड किए जा सकने वाले साक्ष्य (जैसे ipconfig, फ़ायरवॉल स्थिति आदि) का अधिग्रहण अक्षम करता है।
--no-registry-search लक्ष्य रजिस्ट्री अधिग्रहण अक्षम करता है।
-h, --help सहायता जानकारी प्रिंट करता है
-m, --mem-image वैकल्पिक: लक्ष्य विंडोज मशीन का मेमोरी डंप।
--local स्थानीय मशीन से साक्ष्य प्राप्त करें।
--nla वैकल्पिक: RDP का उपयोग करते समय नेटवर्क स्तर प्रमाणीकरण का उपयोग करें। (केवल विंडोज लक्ष्य)
--no-7z वैकल्पिक: रजिस्ट्री और मेमोरी इमेज के लिए 7zip संपीड़न अक्षम करें। इससे चलने का समय काफी कम हो जाएगा, लेकिन WMI और RDP कनेक्शन शायद ठीक से काम नहीं करेंगे। (केवल विंडोज लक्ष्य)
--psexec PsExec का उपयोग करके विंडोज मशीन से साक्ष्य प्राप्त करें। वर्तमान निर्देशिका या पथ में PsExec64.exe और paexec.exe दोनों की आवश्यकता है।
--psrem PowerShell का उपयोग करके विंडोज मशीन से साक्ष्य प्राप्त करें। वर्तमान निर्देशिका या पथ में PsExec64.exe और paexec.exe दोनों की आवश्यकता है।
--rdp RDP का उपयोग करके विंडोज मशीन से साक्ष्य प्राप्त करें। वर्तमान निर्देशिका या पथ में SharpRDP.exe की आवश्यकता है।
--ssh SSH का उपयोग करके लिनक्स मशीन से साक्ष्य प्राप्त करें। वर्तमान निर्देशिका या पथ में plink.exe और pscp.exe दोनों की आवश्यकता है।
-V, --version संस्करण जानकारी प्रिंट करता है
--wmi WMI का उपयोग करके विंडोज मशीन से साक्ष्य प्राप्त करें। वर्तमान निर्देशिका या पथ में WMImplant.ps1 और होस्ट मशीन पर PowerShell 3.0+ की आवश्यकता है। नोट: विंडोज डिफेंडर रीयल-टाइम सुरक्षा को अक्षम करना आवश्यक है (अन्य AV का परीक्षण नहीं किया गया)।
OPTIONS:
-c, --computer <computer> दूरस्थ कंप्यूटर का पता/नाम। [डिफ़ॉल्ट: 127.0.0.1]
-u, --user <user> दूरस्थ उपयोगकर्ता नाम
-d, --domain <domain> वैकल्पिक: दूरस्थ विंडोज डोमेन
-o, --output <local-store-directory>
साक्ष्य संग्रहीत करने के लिए स्थानीय निर्देशिका का नाम [डिफ़ॉल्ट: evidence-output]
-p, --password <password>
वैकल्पिक: दूरस्थ उपयोगकर्ता पासवर्ड। इस विकल्प को छोड़ने पर पासवर्ड छिपे हुए तरीके से दर्ज करने की संभावना होगी। खाली पासवर्ड निर्दिष्ट करने के लिए `-p ""` का उपयोग करें।
--redownload <re-download>
वैकल्पिक: लक्ष्य कंप्यूटर से निर्दिष्ट फ़ाइल डाउनलोड करें और हटाएं। पिछले असफल आंशिक ऑपरेशन के मामले में इसका उपयोग करें। केवल फ़ाइल डाउनलोड करने (बिना हटाए) के लिए कृपया `search` स्विच का उपयोग करें। यदि आप एक 7zip खंड (.7z.[चंक-नंबर], उदा. .7z.004) निर्दिष्ट करते हैं, तो यह स्वचालित रूप से बाद के खंडों को डाउनलोड करने का प्रयास करेगा। --psexec, --psrem, --rdp, --wmi, --all के साथ भी उपयोग करें।
-r, --remote-storage <remote-store-directory>
अस्थायी भंडारण के रूप में उपयोग की जाने वाली दूरस्थ निर्देशिका का नाम। (केवल विंडोज लक्ष्य) [डिफ़ॉल्ट: C:\Users\Public]
-e, --commands <custom-command-path> वैकल्पिक: दूरस्थ कंप्यूटर पर निष्पादित करने के लिए कस्टम कमांड वाली फ़ाइल।
-s, --search <search-files-path>
वैकल्पिक: दूरस्थ कंप्यूटर पर खोजी जाने वाली फ़ाइलों के नाम वाली फ़ाइल। फ़ाइल नामों में `*` और `?` वाइल्डकार्ड भी समर्थित हैं (लेकिन अभी तक मूल निर्देशिकाओं में नहीं)।
--key <ssh-key> वैकल्पिक: SSH निजी कुंजी फ़ाइल का नाम/पथ। (केवल लिनक्स लक्ष्य)
--timeout <timeout>
वैकल्पिक: लंबे समय तक चलने वाले ऑपरेशनों के लिए सेकंड में टाइमआउट। यह विकल्प WMImplant.ps1 और SharpRDP.exe में एक बग के लिए एक कार्य-समाधान है, जहां लंबे समय तक चलने वाले ऑपरेशन को समाप्त करने पर कभी-कभी कनेक्शन ठीक से बंद नहीं हो पाता है, जिससे Gargamel स्थिर (frozen) स्थिति में दिखता है या लक्ष्य साइट पर पिछला ऑपरेशन अधूरा रहने पर अगला ऑपरेशन निष्पादित करता है। इस टाइमआउट को बढ़ाने से लक्ष्य मशीन से रजिस्ट्री या मेमोरी इमेज प्राप्त करते समय समस्याएं हल हो सकती हैं। [डिफ़ॉल्ट: 300]
_ प्रतीक वाली फ़ाइल/पथ में नहीं लिख सकता।कॉपीराइट (C) 2020 LIFARS LLC
सर्वाधिकार सुरक्षित