การเข้ารหัสโค้ดของมัลแวร์ขโมยข้อมูลแบบฟลูเอนต์

การวิเคราะห์แพ็กเกจมัลแวร์ขโมยข้อมูลแบบหลายขั้นตอน

สารบัญ

บทความที่ต้องอ่าน

บทความล่าสุดที่น่าสนใจ

แพ็คเกจ Python ด้ายลื่นซึ่งถูกค้นพบใน PyPI ได้รับการระบุว่าเป็น ที่เป็นอันตรายซึ่งประกอบด้วยมัลแวร์ขโมยข้อมูลทั่วไป อย่างไรก็ตาม คุณลักษณะเด่นของมันคือการใช้เทคนิคการปกปิดโค้ดขั้นสูงที่ซ่อนเนื้อหาหลักของมัน ทำให้การวิเคราะห์ทำได้ยากเป็นพิเศษ มัลแวร์นี้ใช้การปกปิดโค้ดสามชั้นซ้ำๆ ตลอดห่วงโซ่การโจมตี สร้างอุปสรรคสำคัญสำหรับการถอดรหัสด้วยตนเอง

ทีม Malware Early Warning ของเราได้รายงานแพ็กเกจดังกล่าวไปยังทีมรักษาความปลอดภัยของ PyPI ซึ่งได้ทำการลบออกอย่างรวดเร็ว ในบทความนี้ เราจะอธิบายขั้นตอนต่างๆ ด้ายลื่นการโจมตีของมัลแวร์ชนิดนี้และวิธีการที่ใช้ในการปกปิดจุดประสงค์ โดยเน้นที่การทำงานร่วมกันของมัลแวร์ขโมยข้อมูลและการเข้ารหัสลับ

คู่มือฉบับย่อ: มัลแวร์ Infostealer และการปกปิดรหัส

มัลแวร์ Infostealer คืออะไร?

มัลแวร์ขโมยข้อมูล (Infostealer) ทำตัวเหมือนโจรเงียบๆ ในโลกดิจิทัลของคุณ มันขโมยข้อมูลสำคัญ เช่น รหัสผ่าน หมายเลขบัตรเครดิต หรือรายละเอียดส่วนตัวของคุณ โดยที่คุณไม่รู้ตัว โปรแกรมเหล่านี้บันทึกสิ่งที่คุณพิมพ์ (keylogging) ยึดครองเบราว์เซอร์ของคุณ หรือสแกนไฟล์บนอุปกรณ์ของคุณเพื่อรวบรวมข้อมูลที่มีค่า ส่วนที่น่ากลัวที่สุดคือ พวกมันเก่งในการหลบเลี่ยงการตรวจจับ

ชั้นการปกปิดข้อมูลของมัลแวร์ 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

การขอ ด้ายลื่น มัลแวร์ขโมยข้อมูล ประกอบด้วยสี่ขั้นตอนที่แตกต่างกัน โดยแต่ละขั้นตอนจะมีการเพิ่มชั้นเพิ่มเติมเข้าไป การบดบังโค้ดขั้นตอนเหล่านี้ไม่เพียงแต่ทำหน้าที่ส่งมอบข้อมูลเท่านั้น แต่ยังช่วยปกป้องข้อมูลนั้นจากการตรวจจับและการวิเคราะห์อีกด้วย

การปกปิดรหัสของมัลแวร์ขโมยข้อมูล - 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 โดยใช้เทมเพลตที่แสดงไว้ที่นี่: 
การปกปิดรหัสของมัลแวร์ขโมยข้อมูล - threadfluent

กลยุทธ์การถอดรหัส

ในการวิเคราะห์แพ็กเกจที่คล้ายคลึงกัน นักวิจัยจะต้องทำการถอดรหัสชั้นการปกปิดข้อมูลอย่างเป็นระบบ:

  • จำลองขั้นตอนการปกปิดข้อมูล: เขียนสคริปต์เพื่อจำลองการแปลงข้อมูล (เช่น การถอดรหัส การคลายการบีบอัด) โดยไม่ต้องเรียกใช้ข้อมูลจริง
  • ชั้นการเข้ารหัสแบบย้อนกลับ: ดึงและถอดรหัสข้อมูลโดยใช้กุญแจและอัลกอริธึมที่ฝังอยู่ภายใน
  • การวิเคราะห์แบบวนซ้ำ: ประมวลผลแต่ละขั้นตอนกลางซ้ำๆ เพื่อสร้างข้อมูลปลายทางสุดท้ายขึ้นมาใหม่

เครื่องมืออัตโนมัติและสภาพแวดล้อมแบบแซนด์บ็อกซ์มีความสำคัญอย่างยิ่งในการทำให้การวิเคราะห์นี้มีประสิทธิภาพมากขึ้น

 

อยากเรียนรู้เพิ่มเติมเกี่ยวกับการรับมือกับภัยคุกคามแบบเรียลไทม์หรือไม่?

ดาวน์โหลดเอกสารไวท์เปเปอร์ของเราเรื่อง 'ระบบเตือนภัยล่วงหน้า: การตรวจจับและจัดลำดับความสำคัญของภัยคุกคามแบบเรียลไทม์' และค้นพบวิธีการปกป้องห่วงโซ่อุปทานซอฟต์แวร์ของคุณ

ผู้คุกคาม

ดูเหมือนว่าแพ็กเกจดังกล่าวได้รับการเผยแพร่จากบัญชี 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 การรักษาความปลอดภัยและการลดช่องโหว่ของแอปพลิเคชัน

sca-tools-software-composition-analysis-tools
จัดลำดับความสำคัญ แก้ไข และรักษาความปลอดภัยความเสี่ยงด้านซอฟต์แวร์ของคุณ
สมัครบัญชีฟรีได้เลย
ไม่ต้องใช้บัตรเครดิต

รักษาความปลอดภัยให้กับการพัฒนาและส่งมอบซอฟต์แวร์ของคุณ

ด้วยชุดผลิตภัณฑ์ Xygeni