แพ็คเกจ Python ด้ายลื่นซึ่งถูกค้นพบใน PyPI ได้รับการระบุว่าเป็น ที่เป็นอันตรายซึ่งประกอบด้วยมัลแวร์ขโมยข้อมูลทั่วไป อย่างไรก็ตาม คุณลักษณะเด่นของมันคือการใช้เทคนิคการปกปิดโค้ดขั้นสูงที่ซ่อนเนื้อหาหลักของมัน ทำให้การวิเคราะห์ทำได้ยากเป็นพิเศษ มัลแวร์นี้ใช้การปกปิดโค้ดสามชั้นซ้ำๆ ตลอดห่วงโซ่การโจมตี สร้างอุปสรรคสำคัญสำหรับการถอดรหัสด้วยตนเอง
ทีม Malware Early Warning ของเราได้รายงานแพ็กเกจดังกล่าวไปยังทีมรักษาความปลอดภัยของ PyPI ซึ่งได้ทำการลบออกอย่างรวดเร็ว ในบทความนี้ เราจะอธิบายขั้นตอนต่างๆ ด้ายลื่นการโจมตีของมัลแวร์ชนิดนี้และวิธีการที่ใช้ในการปกปิดจุดประสงค์ โดยเน้นที่การทำงานร่วมกันของมัลแวร์ขโมยข้อมูลและการเข้ารหัสลับ
คู่มือฉบับย่อ: มัลแวร์ Infostealer และการปกปิดรหัส
มัลแวร์ Infostealer คืออะไร?
มัลแวร์ขโมยข้อมูล (Infostealer) ทำตัวเหมือนโจรเงียบๆ ในโลกดิจิทัลของคุณ มันขโมยข้อมูลสำคัญ เช่น รหัสผ่าน หมายเลขบัตรเครดิต หรือรายละเอียดส่วนตัวของคุณ โดยที่คุณไม่รู้ตัว โปรแกรมเหล่านี้บันทึกสิ่งที่คุณพิมพ์ (keylogging) ยึดครองเบราว์เซอร์ของคุณ หรือสแกนไฟล์บนอุปกรณ์ของคุณเพื่อรวบรวมข้อมูลที่มีค่า ส่วนที่น่ากลัวที่สุดคือ พวกมันเก่งในการหลบเลี่ยงการตรวจจับ
Code Obfuscation คืออะไร?
การปกปิดโค้ด (Code Obfuscation) โดยพื้นฐานแล้วคือศิลปะแห่งการซ่อนสิ่งต่างๆ ไว้ในที่ที่มองเห็นได้ชัดเจน ซึ่งมักใช้โดยแฮกเกอร์เพื่อทำให้โค้ดที่เป็นอันตรายตรวจจับหรือเข้าใจได้ยากขึ้น ลองนึกภาพใครบางคนเขียนโค้ดในลักษณะที่จงใจทำให้สับสน เข้ารหัสบางส่วน หรือเปลี่ยนแปลงลักษณะของโค้ดเพื่อหลอกเครื่องมือป้องกันไวรัสหรือนักวิจัย มันเป็นกลยุทธ์ที่ชาญฉลาดแต่ก็สร้างความหงุดหงิด ซึ่งช่วยให้มัลแวร์ทำงานได้นานขึ้นและหลีกเลี่ยงการตรวจจับ
ชั้นการปกปิดข้อมูลของมัลแวร์ ThreadFluent Infostealer
1. การเข้ารหัสสามชั้น
กระบวนการปกปิดข้อมูลเริ่มต้นด้วยการฝังข้อมูลที่มีการเข้ารหัสอย่างแน่นหนาไว้ในตัวข้อมูลหลัก ฟลูเอนท์.พี ไฟล์ กระบวนการเข้ารหัสและถอดรหัสเบื้องต้นสามารถสรุปได้ดังนี้:
encoded_data = base64_module.b64decode("... BASE-6 with encrypted payload, IV and RSA-encrypted keys…”); # … Sequential decryption: ChaCha20, Blowfish and AES … encrypted_payload = AES_Cipher.new(aes_key, AES_Cipher.MODE_CBC, iv=aes_iv).decrypt(encrypted_payload[16:]) final_payload = unpad_function(encrypted_payload, AES_Cipher.block_size) exec( zlib_module.decompress(bz2_module.decompress(final_payload)) ) กระบวนการปกปิดข้อมูลนี้ประกอบด้วย:
- การอัด: ใช้ gzip และ bzip
- การเข้ารหัสแบบสมมาตร: การเข้ารหัสแบบลูกโซ่ด้วย ChaCha20, Blowfish และ AES
- การเข้ารหัสแบบอสมมาตรRSA ใช้ในการเข้ารหัสคีย์แบบสมมาตร
ผลลัพธ์จะถูกเข้ารหัสในรูปแบบ Base64 และแทรกเข้าไปดังนี้ ข้อมูลที่เข้ารหัสแต่ละรอบของการเข้ารหัสจะต่อยอดจากรอบก่อนหน้า ทำให้เกิดโครงสร้างการเข้ารหัสแบบซ้อนกัน ซึ่งทำให้ยากอย่างยิ่งที่จะเปิดเผยข้อมูลที่แท้จริงโดยปราศจากการวิศวกรรมย้อนกลับ
2. การคลายไฟล์ Gzip
ในขั้นตอนกลางหลายขั้นตอน มัลแวร์ใช้เทคนิคการปกปิดข้อมูลที่ตรงไปตรงมาแต่มีประสิทธิภาพ นั่นคือ การบีบอัดข้อมูลด้วย Gzip ร่วมกับการเข้ารหัส Base64
import base64, zlib; eval(zlib.decompress(base64.b64decode(<STR>).decode('utf-8')) เทคนิคนี้ช่วยให้มั่นใจได้ว่าข้อมูลที่ถูกเข้ารหัสจะยังคงซ่อนอยู่ตลอดทุกขั้นตอน
3. การรวมโค้ดและการคอมไพล์แบบไดนามิก
ขั้นตอนสุดท้ายเกี่ยวข้องกับการแบ่งข้อมูลที่ถูกเข้ารหัสออกเป็นหลายตัวแปร ซึ่งจะถูกนำมาต่อกันและถอดรหัสแบบไดนามิกในระหว่างการดำเนินการ:
import base64, zlib FEQXCBDOZKHVIhT = '...' # ....(111 other variables with base-64 encoded values) ... zZytWuvuEdBXSrO = eval(<FEQXCBDOZKHVIhT' encoded with '\x>) + eval(<next variable, encoded>) + eval( ' zlib.decompress(base64.b64decode(<VAR>)).decode('utf-8') ') + ... eval(compile(base64.b64decode(eval(zZytWuvuEdBXSrO)).decode('utf-8'), ‘<app>', 'exec')) ขั้นตอนนี้เป็นขั้นตอนที่ยุ่งยากเป็นพิเศษในการวิเคราะห์ย้อนกลับด้วยตนเอง เนื่องจากแต่ละตัวแปรจะต้องได้รับการถอดรหัสและรวมเข้าด้วยกันใหม่เพื่อเปิดเผยข้อมูลส่วนถัดไป
โดยการผสมผสานเทคนิคการปกปิดข้อมูลเหล่านี้เข้าด้วยกัน มัลแวร์ขโมยข้อมูล in ด้ายลื่น หลบเลี่ยงการตรวจจับ แสดงให้เห็นถึงบทบาทสำคัญของ การบดบังโค้ด ในการโจมตีทางไซเบอร์สมัยใหม่
ห่วงโซ่การโจมตีหลายขั้นตอนของ ThreadFluent
การขอ ด้ายลื่น มัลแวร์ขโมยข้อมูล ประกอบด้วยสี่ขั้นตอนที่แตกต่างกัน โดยแต่ละขั้นตอนจะมีการเพิ่มชั้นเพิ่มเติมเข้าไป การบดบังโค้ดขั้นตอนเหล่านี้ไม่เพียงแต่ทำหน้าที่ส่งมอบข้อมูลเท่านั้น แต่ยังช่วยปกป้องข้อมูลนั้นจากการตรวจจับและการวิเคราะห์อีกด้วย

ขั้นตอนที่ 0: การประมวลผลโค้ดเบื้องต้น
จุดเริ่มต้นคือ __init__.py ไฟล์ซึ่งเริ่มต้นการทำงานของเพย์โหลดที่ถูกเข้ารหัสไว้ใน ฟลูเอนท์.พีไฟล์นี้ใช้การเข้ารหัสแบบหลายชั้น (ตามที่อธิบายไว้ในขั้นตอนที่ 1–3) เพื่อสร้างตัวปล่อยสารในขั้นตอนที่ 1:
import os,threading def main(): if os.name == 'nt': from . import fluent fluent.main() thread = threading.Thread(target=main , daemon=True) thread.start() ขั้นตอนที่ 1: ยาหยอดเริ่มต้น
โปรแกรมดาวน์โหลดตัวแรก เมื่อถอดรหัสเสร็จแล้ว จะดาวน์โหลดและฝังโค้ดที่เป็นอันตรายเพิ่มเติมเข้าไป puts.pyจากที่เก็บข้อมูล GitHub Red-haired-shanks-1337/repuests (คำเตือน: อาจมีโค้ดที่เป็นอันตราย)
หลอดหยดฝังตัว puts.py เข้าสู่การติดตั้งในท้องถิ่นที่เป็นที่นิยม การร้องขอ ห้องสมุด โดยทำการแก้ไข __init__.py ไฟล์ที่จะใช้ในการถอดรหัสและดำเนินการขั้นตอนต่อไป การถอดรหัสนี้ประกอบด้วยการย้อนกลับการประยุกต์ใช้เลเยอร์การเข้ารหัสหลายชั้นตั้งแต่ 1 ถึง 3
ขั้นตอนที่ 2: หยดน้ำยาหยดที่สอง
ตัวดรอปเปอร์ตัวที่สอง เมื่อถอดรหัสตามกระบวนการเดียวกันแล้ว จะดาวน์โหลดไฟล์ข้อมูลอีกชุดหนึ่ง ssl.py จากที่เก็บ GitHub เปลี่ยนชื่อเป็น udp.pyและสร้างไฟล์ล็อกเพื่อป้องกันไม่ให้มัลแวร์ติดตั้งซ้ำ จากนั้นจึงเรียกใช้ไฟล์ล็อกเพื่อถอดรหัส ทำให้สามารถเรียกใช้เพย์โหลดขโมยข้อมูลขั้นสุดท้ายได้
ด่านที่ 3: ผู้ขโมยข้อมูลขั้นสุดท้าย
ขั้นตอนสุดท้ายคือเครื่องมือขโมยข้อมูลที่ใช้งานได้อย่างสมบูรณ์ ซึ่งใช้เทคนิคการหลบเลี่ยงขั้นสูง:
- คุณสมบัติต่อต้านการวิเคราะห์:
- ตรวจจับเครื่องมือป้องกันมัลแวร์และยุติการทำงานหากตรวจพบกระบวนการ IP ชื่อโฮสต์ หรือสภาพแวดล้อมเสมือนที่อยู่ในบัญชีดำ
- การขโมยข้อมูล:
- บันทึกข้อมูลอย่างละเอียดครบถ้วน ตั้งแต่ที่อยู่ IP, ที่อยู่ MAC, ข้อมูล VPN, คุกกี้/ประวัติการเข้าชมเว็บไซต์, ข้อมูลบัตรเครดิต และข้อมูลประจำตัวกระเป๋าเงินดิจิทัล รวมถึงภาพหน้าจอด้วย
- ส่งข้อมูลที่ถูกขโมย (เข้ารหัสแล้ว) ผ่านช่องทาง Telegram โดยใช้เทมเพลตที่แสดงไว้ที่นี่:

กลยุทธ์การถอดรหัส
ในการวิเคราะห์แพ็กเกจที่คล้ายคลึงกัน นักวิจัยจะต้องทำการถอดรหัสชั้นการปกปิดข้อมูลอย่างเป็นระบบ:
- จำลองขั้นตอนการปกปิดข้อมูล: เขียนสคริปต์เพื่อจำลองการแปลงข้อมูล (เช่น การถอดรหัส การคลายการบีบอัด) โดยไม่ต้องเรียกใช้ข้อมูลจริง
- ชั้นการเข้ารหัสแบบย้อนกลับ: ดึงและถอดรหัสข้อมูลโดยใช้กุญแจและอัลกอริธึมที่ฝังอยู่ภายใน
- การวิเคราะห์แบบวนซ้ำ: ประมวลผลแต่ละขั้นตอนกลางซ้ำๆ เพื่อสร้างข้อมูลปลายทางสุดท้ายขึ้นมาใหม่
เครื่องมืออัตโนมัติและสภาพแวดล้อมแบบแซนด์บ็อกซ์มีความสำคัญอย่างยิ่งในการทำให้การวิเคราะห์นี้มีประสิทธิภาพมากขึ้น
อยากเรียนรู้เพิ่มเติมเกี่ยวกับการรับมือกับภัยคุกคามแบบเรียลไทม์หรือไม่?
ดาวน์โหลดเอกสารไวท์เปเปอร์ของเราเรื่อง 'ระบบเตือนภัยล่วงหน้า: การตรวจจับและจัดลำดับความสำคัญของภัยคุกคามแบบเรียลไทม์' และค้นพบวิธีการปกป้องห่วงโซ่อุปทานซอฟต์แวร์ของคุณ
ผู้คุกคาม
ดูเหมือนว่าแพ็กเกจดังกล่าวได้รับการเผยแพร่จากบัญชี PyPI สองบัญชี อาบีร์ฮอสเซน10 และ anomilano785ถูกลบออกไปแล้วในขณะนี้
มีบัญชี GitHub ที่ใช้งานอยู่ชื่อว่า อาบีร์ฮอสเซน10ซึ่งอาจเกี่ยวข้องกับแคมเปญดังกล่าว ขาแดง-1337 ผู้ใช้งาน GitHub ที่เป็นเจ้าของคลังเก็บข้อมูลที่ใช้ดาวน์โหลดเพย์โหลดในขั้นตอนที่ 2 และ 3 ก็อยู่ระหว่างการตรวจสอบเช่นกัน
แม้ว่าการระบุตัวผู้กระทำผิดจะซับซ้อนเสมอ และมีความเป็นไปได้ที่ผู้กระทำผิดจะเป็นสมาชิกของทีมโจมตี แต่ลักษณะและปริมาณของข้อมูลที่ถูกขโมยไปนั้นบ่งชี้ว่าเป็นการกระทำของผู้ไม่ประสงค์ดี
สรุป: บทบาทของการปกปิดรหัสในการวิวัฒนาการของมัลแวร์
การขอ ด้ายลื่น แพ็กเกจนี้เป็นตัวอย่างของการปกปิดมัลแวร์สมัยใหม่ด้วยการส่งมอบหลายขั้นตอน เมื่อรวมกับเทคนิคการหลบเลี่ยงที่ใช้ แพ็กเกจนี้แสดงให้เห็นถึงความพยายามอย่างชัดเจนในการหลีกเลี่ยงการตรวจจับและต่อต้านการวิเคราะห์
การวิเคราะห์นี้เน้นย้ำถึงความสำคัญของความร่วมมือและเครื่องมืออัตโนมัติในการต่อสู้กับภัยคุกคามดังกล่าว การวิเคราะห์และทำความเข้าใจวิธีการเหล่านี้จะช่วยให้ผู้เชี่ยวชาญด้านความปลอดภัยสามารถพัฒนาระบบป้องกันมัลแวร์ที่คล้ายคลึงกันได้ดียิ่งขึ้นในอนาคต
ระบบ MEW ของ Xygeni ป้องกันแพ็กเกจ threadfluent ที่เป็นอันตรายไม่ให้เข้าสู่ระบบการผลิตได้อย่างไร
ของไซเกนี ระบบแจ้งเตือนมัลแวร์ล่วงหน้า (MEW) ระบบดังกล่าวมีบทบาทสำคัญในการหยุดยั้ง ด้ายลื่น แพ็คเกจ Python ซึ่งเป็นส่วนประกอบที่เป็นอันตรายที่แฝงด้วยเทคโนโลยีขั้นสูง รหัส obfuscation และหลายขั้นตอน มัลแวร์ขโมยข้อมูลก่อนที่มันจะส่งผลกระทบต่อสภาพแวดล้อมการผลิต นี่คือวิธีการ:
- การตรวจจับผ่านการวิเคราะห์แบบคงที่
พบเห็น MEW ด้ายลื่นรหัสลับที่ซ่อนอยู่ การค้นหาสัญญาณที่น่าสงสัย เช่น การเข้ารหัสแบบหลายชั้น และกิจกรรมการพึ่งพาที่ผิดปกติ - การประเมินความสามารถในการเข้าถึงขณะรันไทม์
ระบบตรวจพบว่าโค้ดของแพ็กเกจสามารถทำงานได้ในระหว่างการใช้งาน จึงจัดว่าเป็นภัยคุกคามร้ายแรงแม้ว่าจะไม่ได้เรียกใช้งานจริงก็ตาม - CI/CD Pipeline การป้องกัน
MEW บล็อก ด้ายลื่น ระบบดังกล่าวตรวจจับและหยุดการรวมโค้ดดังกล่าวในเวอร์ชันทดลองแบบเรียลไทม์ และป้องกันไม่ให้โค้ดนั้นเข้าสู่ขั้นตอนการผลิต นอกจากนี้ยังส่งการแจ้งเตือนที่สามารถนำไปปฏิบัติได้จริงไปยังนักพัฒนา ช่วยประหยัดเวลาอันมีค่า - การแบ่งปันข้อมูลข่าวกรองด้านภัยคุกคาม
Xygeni ได้รายงานแพ็กเกจดังกล่าวไปยัง PyPI อย่างรวดเร็ว และแบ่งปันผลการค้นพบกับเครือข่ายความปลอดภัยระดับโลก ทำให้แพ็กเกจนั้นหยุดการแพร่กระจายต่อไปได้
โดยการจับ ด้ายลื่น ในช่วงแรก ระบบ MEW ของ Xygeni ช่วยให้มั่นใจได้ว่าโค้ดที่เป็นอันตรายจะไม่ก่อให้เกิดอันตรายต่อห่วงโซ่อุปทานซอฟต์แวร์หรือ CI/CD เวิร์กโฟลว์
ปกป้อง CI/CD Pipelineฟรี
ป้องกันภัยคุกคามต่างๆ เช่น ด้ายลื่น ด้วยระบบแจ้งเตือนมัลแวร์ล่วงหน้าของ Xygeni เริ่มต้นใช้งานได้เลย ทดลองฟรี วันนี้และรักษาความปลอดภัยให้กับห่วงโซ่อุปทานซอฟต์แวร์ของคุณ
หลุยส์ โรดริเกซ
หลุยส์ โรดริเกซ เป็นนักกายภาพบำบัดcist + นักคณิตศาสตร์ และ CISSP ปัจจุบันดำรงตำแหน่งผู้ร่วมก่อตั้งและ CTO ของ Xygeni Security เขามีประสบการณ์ด้านความปลอดภัยซอฟต์แวร์มากกว่า 20 ปี และมีส่วนร่วมในโครงการต่างๆ เช่น SAST และ SCAปัจจุบันเขามุ่งเน้นไปที่... software supply chain security.
แดเนียลมาร์ติน
Daniel Martín เป็นผู้เชี่ยวชาญด้านความปลอดภัยทางไซเบอร์และสมาชิกของทีมวิจัยด้านความปลอดภัยของ Xygeni โดยมีความเชี่ยวชาญในด้านต่างๆ ดังนี้ SDLC การรักษาความปลอดภัยและการลดช่องโหว่ของแอปพลิเคชัน






