BPFdoor: Stealthy Linux malware bypasses firewalls for remote access

มัลแวร์ BPFdoor บน Linux สามารถ bypass ไฟร์วอลล์เพื่อแอบ Remote เข้าเครื่องเหยื่อ

มัลแวร์ที่ได้มีการตรวจพบเมื่อเร็ว ๆ นี้ชื่อว่า BPFdoor ซึ่งมุ่งเป้าการโจมตีไปยังระบบปฏิบัติการ Linux และ Solaris โดยไม่มีการถูกตรวจพบมานานกว่าห้าปี โดยมัลแวร์ BPFdoor เป็น Linux/Unix backdoor ที่ทำให้ผู้โจมตีสามารถเข้าถึง Shell บน Linux จากระยะไกล เพื่อเข้าควบคุมเครื่องเหยื่อได้อย่างสมบูรณ์

มัลแวร์ดังกล่าวไม่จำเป็นต้องใช้งานเฉพาะ Port ที่มีการเปิดไว้ผ่านไฟร์วอลล์ จึงทำให้มันสามารถรับคำสั่งจาก IP ใดๆก็ได้บนอินเทอร์เน็ต ทำให้มันเป็นเครื่องมือที่สุดยอดมากสำหรับผู้โจมตีในการขโมยข้อมูลจากองค์กร และแอบแฝงตัวอยู่บนระบบของเหยื่อได้เป็นอย่างดี

BPFdoor เป็น passive backdoor ซึ่งหมายความว่ามันสามารถใช้แค่ 1 Port หรือหลาย Port ก็ได้ สำหรับรับคำสั่งจากผู้โจมตีไปยังเครือข่ายที่ถูกควบคุมไว้

มัลแวร์มีการใช้ Berkeley Packet Filter (BPF) ซึ่งทำงานบน network layer interface เพื่อดูการรับส่งข้อมูลเครือข่ายทั้งหมด และส่งแพ็กเก็ตไปยังปลายทางอื่นๆ และด้วยการทำงานใน network Layer ทำให้มัลแวร์ BPF ไม่จำเป็นต้องผ่านการตรวจสอบของ firewall rules

นักวิจัยด้านความปลอดภัย Kevin Beaumont ผู้เผยแพร่ข้อมูลในบล็อกโพสต์เกี่ยวกับ BPFdoor บอกกับ BleepingComputer ว่า ผู้โจมตีใช้รหัสผ่านที่เรียกว่า “magic” เพื่อเข้าควบคุมระบบ

มัลแวร์ BPFdoor มีการแยกวิเคราะห์เฉพาะแพ็กเก็ต ICMP, UDP และ TCP โดยมีการตรวจสอบค่าข้อมูลเฉพาะ และรหัสผ่านสำหรับแพ็กเก็ต UDP และ TCP โดยสิ่งที่ทำให้ BPFDoor มีความพิเศษคือมันสามารถตรวจสอบพอร์ตใดๆ ก็ได้สำหรับ magic packet แม้ว่าพอร์ตเหล่านั้นจะถูกใช้งานโดย Service ที่เป็นการใช้งานปกติ เช่น webservers, FTP หรือ SSH

หากแพ็กเก็ต TCP และ UDP มีข้อมูล "magic" ที่ถูกต้อง และรหัสผ่านที่ถูกต้อง backdoor จะดำเนินการตามคำสั่ง เช่น การตั้งค่า Bind หรือ Reverse Shell

นักวิจัยสามารถค้นหาพฤติกรรมที่เกี่ยวกับมัลแวร์ BPFdoor บนเครือข่ายขององค์กรในหลายๆ ประเทศ ซึ่งรวมถึง Speedtest servers 11 แห่งที่ติดมัลแวร์ BPFdoor โดยนักวิจัยกล่าวว่ายังไม่ชัดเจนว่าเครื่องเหล่านี้ถูกบุกรุกได้อย่างไร โดยเฉพาะเมื่อทำงานบน closed-source software

การ Bypass local firewall

Rowland ได้มีการระบุในรายงานทางเทคนิคที่ครอบคลุมเกี่ยวกับ BPFdoor ว่า มัลแวร์มีการใช้วิธีการหลีกเลี่ยงการตรวจจับที่ชาญฉลาด ดังนี้

  • มีการแฝงอยู่ในหน่วยความจำระบบ และติดตั้ง anti-forensics (ลบ process environment แม้ว่าจะวางมัลแวร์ไว้ไม่สำเร็จก็ตาม)
  • มีการโหลดตัว Berkeley Packet Filter (BPF) sniffer เพื่อทำให้สามารถดำเนินการดักจับแพ็กเก็ต
  • แก้ไข 'iptables' rules เมื่อได้รับแพ็กเก็ตที่ทำให้ผู้โจมตีสามารถเชื่อมต่อผ่าน local firewall ได้
  • ปลอมแปลงไบนารีภายใต้ชื่อที่คล้ายกับ Common Linux system daemon
  • เปลี่ยนชื่อ และรันตัวเองเป็น /dev/shm/kdmtmpflush
  • เปลี่ยนวันที่ของไบนารี (timestomping) เป็น 30 ตุลาคม 2008 ก่อนจะมีการลบออก

Rowland เชื่อว่าคำอธิบายสำหรับ timestomping ซึ่งเป็นเทคนิค anti-forensics ในกรณีนี้ อาจเป็นไปได้ว่าผู้โจมตีอาจพยายามป้องกันไบนารีในกรณีที่การลบข้อมูลล้มเหลว และวัตถุประสงค์ของวันที่ปลอมอาจใช้เพื่อซ่อนมัลแวร์จากการค้นหาเพื่อใช้ค้นหาไฟล์ใหม่ในระบบ

การเปลี่ยน firewall rules มีความสำคัญเป็นอย่างมาก เนื่องจากช่วยทำให้ผู้โจมตีสามารถติดต่อกับ backdoor ผ่านการรับส่งข้อมูลที่ไฟร์วอลล์ไม่สามารถมองว่าเหตุการณ์ดังกล่าวเป็น suspicious

Rowland อธิบายว่าเมื่อโฮสต์ที่ติดไวรัสได้รับแพ็กเก็ต BPFdoor มัลแวร์จะ “วาง instance ใหม่ และเปลี่ยน iptables rules ในเครื่องเพื่อทำการเปลี่ยนเส้นทางจากโฮสต์ที่มีการ Request ไปยัง Shell port”

Rowland กล่าวว่าสำหรับ local shell มัลแวร์จะแก้ไขการกำหนดค่า 'iptables' เพื่อเปลี่ยนเส้นทางการรับส่งข้อมูลทั้งหมดที่มาจากผู้โจมตีผ่านพอร์ตที่เป็นการใช้งานปกติไปยัง port range ที่กำหนดไว้ในมัลแวร์ ด้วยวิธีนี้ ผู้โจมตีสามารถเลือกการเชื่อมต่อผ่านพอร์ตใดก็ได้ เพราะมันจะถูกส่งไปยัง Shell ที่อยู่ด้านหลังไฟร์วอลล์

Commands and detection

การวิเคราะห์ทางเทคนิคอื่นๆ เกี่ยวกับ BPFdoor จาก Tristan Pourcelot ของบริษัท ExaTrack ซึ่งเป็นบริษัทข่าวกรองด้านภัยคุกคาม ตั้งข้อสังเกตว่ามัลแวร์มาพร้อมกับชื่อ hardcoded หลายชื่อที่ตรงกับ Command string ภายในแพ็กเก็ตที่เกี่ยวข้อง:

  • justtryit, justrobot และ justforfun เพื่อสร้าง bind shell บนพอร์ต 42391 ถึง 42491
  • socket หรือ sockettcp เพื่อตั้งค่า reverse shell เป็นที่อยู่ IP ที่มีอยู่ในแพ็กเก็ต

ส่วนหนึ่งของเทคนิคของ BPFdoor ในการหลบเลี่ยงการตรวจจับคือการเปลี่ยนชื่อไบนารีเพื่อให้ปรากฏเป็น Linux daemon ปกติโดยใช้คำสั่งด้านล่าง:
/sbin/udevd -d
/sbin/mingetty /dev/tty7
/usr/sbin/console-kit-daemon --no-daemon
hald-addon-acpi: listening on acpi kernel interface /proc/acpi/event
dbus-daemon --system
hald-runner
pickup -l -t fifo -u
avahi-daemon: chroot helper
/sbin/auditd -n
/usr/lib/systemd/systemd-journald

Pourcelot กล่าวว่าผู้โจมตีได้มีการอัปเดต BPFdoor เป็นประจำ และปรับปรุงแต่ละรุ่นด้วยชื่อที่แตกต่างกันสำหรับคำสั่ง กระบวนการ หรือไฟล์ เช่น มีการเปลี่ยนจากการใช้คีย์เวิร์ดคำสั่งเป็น MD5 hash ซึ่งน่าจะเป็นการพยายามหลีกเลี่ยงการตรวจจับ

ปัจจุบันมี BPFdoor ที่มีการตรวจพบอย่างน้อย 21 เวอร์ชันบนแพลตฟอร์ม Virus Total โดยมีเวอร์ชันแรกสุดในเดือนสิงหาคม 2018

BPFdoor หนึ่งรายการของ Solaris ตั้งแต่ปี 2019 ไม่สามารถตรวจพบได้จนกระทั่งวันที่ 7 พฤษภาคม จึงจะมี antivirus engines 28 รายการที่ระบุว่าเป็นอันตราย
ที่มา:www.bleepingcomputer.com