
Venom - पेनिट्रेशन टेस्टर्स के लिए एक मल्टी-हॉप प्रॉक्सी
Venom एक गो में विकसित मल्टी-लेवल प्रॉक्सी टूल है जो पेनिट्रेशन टेस्टर्स के लिए डिज़ाइन किया गया है।
Venom कई नोड्स को जोड़ सकता है, और फिर नोड्स का उपयोग स्प्रिंगबोर्ड के रूप में करके मल्टी-लेवल प्रॉक्सी का निर्माण कर सकता है।
पेनिट्रेशन टेस्टर्स आसानी से Venom का उपयोग करके नेटवर्क ट्रैफ़िक को मल्टी-लेयर इंट्रानेट में प्रॉक्सी कर सकते हैं, और प्रॉक्सी नोड्स को आसानी से प्रबंधित कर सकते हैं।
यह उपकरण केवल सुरक्षा अनुसंधान और शिक्षण तक सीमित है, उपयोगकर्ता इस उपकरण के उपयोग से होने वाली सभी कानूनी और संबंधित जिम्मेदारियाँ वहन करता है! लेखक कोई कानूनी या संबंधित जिम्मेदारी नहीं लेता है!
चूँकि IoT उपकरणों (arm/mips/... आर्किटेक्चर) में आमतौर पर सीमित संसाधन होते हैं, बाइनरी फ़ाइल का आकार कम करने के लिए, IoT पर्यावरण के लिए संकलित बाइनरी फ़ाइलें पोर्ट रीयूज़ और SSH टनल सुविधाओं का समर्थन नहीं करती हैं, और मेमोरी उपयोग को कम करने के लिए नेटवर्क समवर्ती और बफ़र आकार को सीमित किया गया है।
आप सीधे release में संकलित निष्पादन योग्य फ़ाइल डाउनलोड और उपयोग कर सकते हैं।
यदि आप स्रोत कोड से इस प्रोजेक्ट को संकलित करना चाहते हैं, तो go >= 1.11 स्थापित करना आवश्यक है, फिर नीचे दिए गए आदेश निष्पादित करें।
go get -u github.com/Dliv3/Venom/...
# $GOPATH एक पर्यावरण चर है जो Go स्थापित करते समय कॉन्फ़िगर किया गया है, इसे go env कमांड द्वारा देखा जा सकता है
cd $GOPATH/src/github.com/Dliv3/Venom
# संकलित बाइनरी फ़ाइलें वर्तमान निर्देशिका के अंतर्गत release फ़ोल्डर में संग्रहीत हैं
./build.sh
Youtube डेमो वीडियो: https://www.youtube.com/playlist?list=PLtZO9vwOND91vZ7yCmlAvISmEl2iQKjdI
admin और agent नोड्स कनेक्शन को सुन सकते हैं या शुरू कर सकते हैं
admin पोर्ट सुनता है, agent कनेक्शन शुरू करता है:
./admin_macos_x64 -lport 9999
./agent_linux_x64 -rhost 192.168.0.103 -rport 9999
agent पोर्ट सुनता है, admin कनेक्शन शुरू करता है:
./agent_linux_x64 -lport 8888
./admin_macos_x64 -rhost 192.168.204.139 -rport 8888
agent नोड पोर्ट रीयूज़ का समर्थन करता है
agent दो पोर्ट रीयूज़ विधियाँ प्रदान करता है:
Venom द्वारा प्रदान की गई पोर्ट रीयूज़ सुविधा का उपयोग करके, Windows पर आप apache, mysql आदि सेवाओं के पोर्ट को रीयूज़ कर सकते हैं, लेकिन RDP, IIS आदि सेवा पोर्ट को अस्थायी रूप से रीयूज़ नहीं कर सकते। Linux पर आप अधिकांश सेवा पोर्ट को रीयूज़ कर सकते हैं। रीयूज़ किए गए पोर्ट अभी भी सामान्य रूप से अपनी मूल सेवा प्रदान कर सकते हैं।
पहली पोर्ट रीयूज़ विधि
# उदाहरण के लिए Windows पर apache के साथ
# apache के 80 पोर्ट को रीयूज़ करें, apache द्वारा सामान्य http सेवा प्रदान करने पर कोई प्रभाव नहीं पड़ता
# -lhost का मान स्थानीय IP होना चाहिए, 0.0.0.0 नहीं लिख सकते, अन्यथा पोर्ट रीयूज़ संभव नहीं है
./agent.exe -lhost 192.168.204.139 -reuse-port 80
./admin_macos_x64 -rhost 192.168.204.139 -rport 80
दूसरी पोर्ट रीयूज़ विधि
# उदाहरण के लिए Linux पर apache के साथ
# root अनुमति आवश्यक है
sudo ./agent_linux_x64 -lport 8080 -reuse-port 80
यह पोर्ट रीयूज़ विधि स्थानीय मशीन पर iptables नियम सेट करेगी, reuse-port के ट्रैफ़िक को lport पर अग्रेषित करेगी, और फिर agent ट्रैफ़िक वितरित करेगा।
एक बात ध्यान देने योग्य है: यदि प्रोग्राम को sigterm या sigint सिग्नल (kill या ctrl-c) के माध्यम से समाप्त किया जाता है, तो प्रोग्राम स्वचालित रूप से iptables नियमों को साफ़ कर सकता है। यदि agent को kill -9 से मारा जाता है, तो यह स्वचालित रूप से iptables नियमों को साफ़ नहीं कर सकता, और मैन्युअल सफाई की आवश्यकता होगी, क्योंकि agent प्रोग्राम sigkill सिग्नल को संभाल नहीं सकता।
iptables नियमों के स्वचालित रूप से साफ़ न होने से पेनिट्रेशन टेस्टर 80 पोर्ट सेवा तक पहुँचने में असमर्थ हो सकता है, इसलिए दूसरी पोर्ट रीयूज़ विधि में iptables फ़ॉरवर्डिंग नियम को चालू या बंद करने के लिए एक विशेष TCP पैकेट के माध्यम से iptables -m recent का उपयोग किया गया है।
यहाँ का कार्यान्वयन https://threathunter.org/topic/594545184ea5b2f5516e2033 का संदर्भ लेता है।
# Linux होस्ट पर agent शुरू करके iptables नियम सेट करना
# यदि rhost इंट्रानेट में है, तो SOCKS5 प्रॉक्सी स्क्रिप्ट ट्रैफ़िक का उपयोग किया जा सकता है। SOCKS5 प्रॉक्सी का उपयोग नीचे देखें।
python scripts/port_reuse.py --start --rhost 192.168.204.135 --rport 80
# agent नोड से कनेक्ट करें
./admin_macos_x64 -rhost 192.168.204.135 -rport 80
# यदि फ़ॉरवर्डिंग नियम बंद करना चाहते हैं
python scripts/port_reuse.py --stop --rhost 192.168.204.135 --rport 80
नोड्स के बीच संचार एन्क्रिप्शन
Venom नोड्स के बीच संचार एन्क्रिप्शन सुविधा प्रदान करता है। उपयोगकर्ता -passwd विकल्प के माध्यम से पासवर्ड निर्दिष्ट कर सकता है, जो AES एन्क्रिप्शन के लिए आवश्यक कुंजी उत्पन्न करने के लिए उपयोग किया जाता है।
# -passwd के माध्यम से पासवर्ड dlive@dubhe निर्दिष्ट करें
./admin_macos_x64 -lport 8889 -passwd dlive@dubhe
# agent समान पासवर्ड निर्दिष्ट करके admin नोड से कनेक्ट करता है
./agent_macos_x64 -rhost 192.168.0.103 -rport 8889 -passwd dlive@dubhe
help सहायता जानकारी प्रिंट करें
(admin node) >>> help
help Help information.
exit Exit.
show Display network topology.
getdes View description of the target node.
setdes [info] Add a description to the target node.
goto [id] Select id as the target node.
listen [lport] Listen on a port on the target node.
connect [rhost] [rport] Connect to a new node through the target node.
sshconnect [user@ip:port] [dport] Connect to a new node through ssh tunnel.
shell Start an interactive shell on the target node.
upload [local_file] [remote_file] Upload files to the target node.
download [remote_file] [local_file] Download files from the target node.
socks [lport] Start a socks5 server.
lforward [lhost] [sport] [dport] Forward a local sport to a remote dport.
rforward [rhost] [sport] [dport] Forward a remote sport to a local dport.
show नेटवर्क टोपोलॉजी प्रदर्शित करें
A admin नोड को दर्शाता है, संख्याएँ agent नोड्स को दर्शाती हैं।
नीचे दिया गया टोपोलॉजी आरेख दर्शाता है कि admin नोड के नीचे नोड 1 जुड़ा है, नोड 1 के नीचे नोड 2 और 4 जुड़े हैं, और नोड 2 के नीचे नोड 3 जुड़ा है।
(node 1) >>> show
A
+ -- 1
+ -- 2
+ -- 3
+ -- 4
ध्यान दें: नए जोड़े गए नोड पर संचालन करने के लिए, पहले admin नोड पर show कमांड चलाकर नेटवर्क टोपोलॉजी और नोड नंबरों को सिंक्रोनाइज़ करना आवश्यक है।
goto किसी नोड पर संचालन करें
(admin node) >>> goto 1
(node 1) >>>
किसी नोड पर goto करने के बाद, आप नीचे वर्णित कमांड का उपयोग कर सकते हैं।
getdes/setdes नोड जानकारी विवरण प्राप्त करें/सेट करें
(node 1) >>> setdes linux x64 blahblahblah
(node 1) >>> getdes
linux x64 blahblahblah
connect/listen/sshconnect नोड्स को आपस में जोड़ना