ในเดือนมกราคม 2018 เครือข่ายบริการสุขภาพ Hancock Health ในเมืองกรีนฟิลด์ รัฐอินเดียนา ถูกโจมตีโดยแรนซัมแวร์ SamSam แรนซัมแวร์นี้ได้เข้ารหัสไฟล์ที่มีข้อมูลผู้ป่วย ซึ่งส่งผลกระทบต่อบริการสำคัญของพวกเขา แม้ว่า SamSam จะไม่ใช่แรนซัมแวร์ตัวใหม่ แต่มันก็มีวิวัฒนาการมาอย่างต่อเนื่อง เราพบแรนซัมแวร์สายพันธุ์แรกในเดือนกุมภาพันธ์ 2016 ซึ่งใช้อัลกอริทึม RSA เพื่อเข้ารหัสไฟล์ของผู้ใช้เป้าหมาย อย่างไรก็ตาม ในครั้งนี้ เราพบการเปลี่ยนแปลงที่สำคัญในวิธีการเปิดตัวแรนซัมแวร์นี้ ความแตกต่างที่สำคัญระหว่างแรนซัมแวร์รุ่นเก่าและรุ่นใหม่คือการใช้ไฟล์ปฏิบัติการ 'runner.exe' ซึ่งจะถอดรหัสไฟล์นามสกุล '.stubbin' และรันเนื้อหาที่ถอดรหัสแล้ว ผลลัพธ์ของการถอดรหัสคือไฟล์แรนซัมแวร์ SamSam
รูปที่ 1 ด้านล่างแสดงถึงห่วงโซ่การโจมตีของแคมเปญแรนซัมแวร์ SamSam ในปัจจุบัน

เทคนิคการใช้งานทำให้ 'Runner' กลายเป็นองค์ประกอบสำคัญในแคมเปญแรนซัมแวร์ SamSam อย่างไรก็ตาม เราไม่ทราบแหล่งที่มาของการติดไวรัส 'runner.exe' ในโพสต์นี้ เราจะเจาะลึก 'runner.exe' ซึ่งเป็นองค์ประกอบสำคัญของแคมเปญนี้
รองชนะเลิศ
ในช่วงไม่กี่เดือนที่ผ่านมา เราพบเห็น 'runner.exe' หลายเวอร์ชัน ในแต่ละเวอร์ชัน เราสังเกตเห็นการเปลี่ยนแปลงของจำนวนอาร์กิวเมนต์ที่ส่งผ่านไปยัง 'runner.exe' อาร์กิวเมนต์แรกถูกใช้เป็นรหัสผ่านเพื่อถอดรหัสไฟล์ '.stubbin' และอาร์กิวเมนต์ที่เหลือจะถูกส่งผ่านเพื่อถอดรหัสเพย์โหลด ซึ่งก็คือแรนซัมแวร์ SamSam

มาดูรายละเอียดไฟล์ปฏิบัติการที่คอมไพล์ด้วย .NET (runner.exe) ของตัวแปรที่มีอาร์กิวเมนต์บรรทัดคำสั่งสามรายการกัน

'Runner.exe' จะค้นหาไฟล์ที่มีนามสกุล '.stubbin' ในไดเรกทอรีปัจจุบัน ไฟล์แรกที่พบคือไฟล์เข้ารหัสที่ต้องการ จากนั้นจะคัดลอกเนื้อหาของไฟล์ลงในอาร์เรย์ (arg_4E_0) และลบไฟล์ '.stubbin' ต้นฉบับ อาร์เรย์ของไบต์ที่เข้ารหัสและอาร์กิวเมนต์แรกจากบรรทัดคำสั่ง (รหัสผ่าน) จะถูกส่งไปยังฟังก์ชัน 'Decrypt' จากนั้น Runner จะโหลดไบต์ที่ถอดรหัสแล้วลงในหน่วยความจำและดำเนินการโดยส่งอาร์กิวเมนต์บรรทัดคำสั่งที่เหลือเป็นอินพุต
การถอดรหัสไฟล์ '.stubbin'
'Runner.exe' ใช้อัลกอริทึม Rijndael เพื่อถอดรหัสไบต์ที่ส่งผ่านเป็นข้อมูล Cipher ซึ่งเป็นอัลกอริทึมการเข้ารหัสแบบกุญแจสมมาตร โดยจะใช้คีย์ 32 ไบต์และเวกเตอร์เริ่มต้น (Initialization Vector: IV) 16 ไบต์เพื่อถอดรหัสไฟล์ '.stubbin'
รูปที่ 4 ด้านล่างแสดงการสร้างคีย์และ IV โดยใช้รหัสผ่าน

คลาส 'PasswordDeriveBytes' ใช้เพื่อสร้างคีย์และ IV คลาสนี้เป็นคอนสตรัคเตอร์ .NET ที่กำหนดไว้ล่วงหน้า ซึ่งรับรหัสผ่านและ salt เป็นอินพุตเพื่อสร้างคีย์ Salt คือข้อมูลสุ่มที่ใช้เป็นอินพุตเพิ่มเติมสำหรับฟังก์ชันที่ "แฮช" รหัสผ่านและใช้เพื่อทำให้รหัสผ่านทั่วไปไม่ซ้ำกัน
รูปที่ 5 ด้านล่างแสดงขั้นตอนการถอดรหัสที่ใช้ถอดรหัสไฟล์แรนซัมแวร์ SamSam

ตัวสร้าง 'CryptoStream' และตัวถอดรหัส Rijndael ใช้สำหรับการดำเนินการเข้ารหัสที่ดำเนินการบน CipherData การใช้ IV คีย์ของอัลกอริทึม Rijndael บนข้อมูล Cipher จะส่งผลให้เกิดเพย์โหลดของแรนซัมแวร์
นักวิ่งรุ่นต่างๆ
ในแรนซัมแวร์ SamSam เวอร์ชันเก่าที่สุด ไม่พบไฟล์ 'runner.exe' มีเพียงเพย์โหลดเท่านั้นที่ถูกรันด้วยคีย์สมมาตร RSA เป็นอาร์กิวเมนต์บรรทัดคำสั่ง แต่เวอร์ชันล่าสุดใช้ 'runner.exe' พร้อมอาร์กิวเมนต์ 4 ตัว
รูปที่ 6 ด้านล่างแสดงความแตกต่างระหว่างอาร์กิวเมนต์ที่ส่งผ่านใน 'runner.exe' เวอร์ชันต่างๆ

นอกจากนี้ เรายังสังเกตเห็นตัวแปรบางตัวที่ใช้การบดบังในชื่อโค้ดและฟังก์ชันด้วย

เทคนิคการใช้งานที่ใช้ในแคมเปญแรนซัมแวร์ SamSam ทำให้การกู้คืนแรนซัมแวร์หลักทำได้ยาก จึงเป็นอุปสรรคต่อกระบวนการตรวจจับแบบคงที่ของไฟล์แรนซัมแวร์ SamSam ลักษณะเฉพาะของ timedatestamp ในตัวแปรต่างๆ แสดงถึงการมาถึงของตัวแปรใหม่ของ 'runner.exe' ทุกเดือน ดังนั้น ในอีกไม่กี่วันข้างหน้า เราอาจได้เห็นตัวแปรใหม่ๆ ที่มีความสามารถในการพรางตัวมากขึ้นและมีฟังก์ชันการทำงานขั้นสูงบางอย่าง
ตัวบ่งชี้การประนีประนอม
D8469E625AE90AB64D4AEF0B63F42150
7A25B0D43047552CBDAD17CFB488317D
038FB413F51B0AB7EB088E0F3EA7BE90
A82DB52BC6F1E5477EB1809CD5F23489
ผู้เชี่ยวชาญเรื่อง
Dhwanit Shrivastava, Yogesh Bane | Quick Heal Security Labs



