0x003 Reverse Engineer Lab Setup

สวัสดีครับมาต่อกัน
จาก blog ที่แล้วที่ผมเคยพูดไว้ว่า "เรารู้มากแค่ไหนว่าสิ่งนี้มันทำงานยังไง ?"
มันมีผลอย่างมาก ต่อการเตรียมสภาพแวดล้อม ที่จะทำการ reverse engineer ของเรา

Lab นั้นมีองค์ประกอบหลักคือ "การลงทุนด้วยปัจจัยการเงิน" ซึ่งแต่ละคนมีไม่เท่ากัน
และถ้าเราเข้าใจข้อจำกัดนี้ ก็จะทำให้เรา ยอมรับ หรือคาดหวัง ผลลัพธ์ได้ ว่าเราจะเจอกับอะไร

ก่อนอื่น LAB นั้นคือองค์ประกอบของ hardware ที่เราจะเตรียมเพื่อให้ไฟล์อันตราย หรือ ไฟล์ที่เราจะทำการ reverse นั้นมีสภาพแวดล้อมที่สามารถแสดงศักยภาพทุกๆอย่างออกมาอย่างเต็มที่ เมื่อเกิดการ execute
ไม่มีการป้องกัน ไม่มีการปิดกั้นอะไรเลย แล้วเราก็จะทำการตรวจสอบพฤติกรรม วิธีที่มันทำสิ่งมุ่งร้าย (malicious activity) ด้วยเครื่องมือต่างๆ+ความรู้ความสามารถของเรา(หรือทีมเรา)+เวลา

ดังนั้นก่อนไปถึง lab คำถามแรกคือ ณ ตอนนี้เรารู้อะไรแล้วบ้าง
ย้อนมาดูที่พีระมิดก่อนครับ โดนจะมีพีระมิดที่เราพบเจอได้ หากเราค้นหาเกี่ยวกับกระบวนการ Malware Analysis หรือ Reverse Engineering

https://www.sans.org/blog/how-you-can-start-learning-malware-analysis/
https://www.sans.org/blog/how-you-can-start-learning-malware-analysis/
  1. เริ่มจากพีระมิดล่างสุด คือการทำ Fully Automated Analysis คือ การใช้เครื่องมือฟรีที่ให้บริการออนไลน์อยู่แล้วเช่น
    1.1 Virustotal
    1.2 Any.run
    1.3 Hybrid Analysis
    1.4 filescan.io
    เป็นต้น อันนี้ยกมาแค่ส่วนหนึ่ง ยังมีอีกมากมายหลายระบบ หลายเว็บไซต์ ต้องไปสืบเสาะกันเองนะครับ ไม่ยากเกินไป
    ุจุดเริ่มต้นนี้ เป็นจุดเริ่มต้นที่จะให้ข้อมูลเรามากระดับหนึ่งเลยทีเดียว เพราะพวกเขาผ่านประสบการณ์ในการวิเคราะห์ไฟล์ต่างๆ มามากมายแล้ว หรือถ้าเรามี hash file แล้ว เราก็แทบจะสรุปสิ่งต่างๆ ได้ทันทีว่ามันคืออะไรครับ

พีระมิดในระดับต่อมา คือ

  1. การทำ Static Analysis
    วิธีการนี้คือ การที่ไฟล์ malware นั้น อยู่เฉยๆ ยังไม่เกิดการ execute ใดๆ , เราจะใช้เครื่องมือต่างๆ พยายามดูองค์ประกอบของมันและแปลผลให้ได้มากที่สุด
    โดยที่ "ยังไม่มีการ execute เกิดขึ้น" จุดนี้จะต้องทำความเข้าใจให้ชัดเจนอย่างมากนะครับ
    เพราะการ execute malware เกิดขึ้นนั้น "อาจจะส่งผลให้ระบบพังได้สูง" หรือ แม้แต่ถ้าเรา execute malware ใน virtual machine นั้น เราจะมั่นใจได้ไงว่ามันไม่แพร่ มายังเครื่องจริงที่เราใช้นทำงาน
    ใช้ส่งงาน ใช้หาเงิน หรือใช้ในเครือข่าย ที่ชาวบ้าน เพื่อนร่วมงานเราทำงานกัน (corporate network) ถ้ามันดันเป็น malware มีความสามารถสูง หลบเลี่ยงทุกอย่างทะลุทะลวงได้ละ

ดังนั้น "มันอันตรายอย่างมาก" ที่จะทำ Static Analysis ในเครื่องจริง หรือระบบ งานของเรา เพราะเราไม่อาจรู้ได้ว่ามันจะกระทบอะไรบ้าง
เราควรพึ่งพาการทำ static analyze ในทางอื่นๆ ที่เรามั่นใจว่าจะไม่กระทบระบบงาน หรือระบบหาเงิน ของเราซึ่งเดี๋ยวผมจะเขียนแผนภาพให้เห็นอีกทีครับ

พีระมิดในระดับต่อมา คือ

  1. การทำ Dynamic Analysis
    คือการเตรียม environment ที่เข้มงวด เพื่อการ execute malware file ให้เกิดการทำงาน
    และตามตรวจสอบพฤติกรรมของมัน ว่ามันทำอะไรบ้าง
    จะต้องประกอบด้วยองค์ประกอบทางด้าน Infrastructure ที่ยืนยันได้ว่าปลอดภัยอย่างมากจริงๆ
    ดังนั้นจึงมีเรื่องการลงทุนด้วยเงินเข้ามาเกี่ยวข้อง อย่างเลี่ยงไม่ได้
    เช่นการอัพเกรดคอมพิวเตอร์ ให้สามารถ เปิด virtual machine พร้อมรัน procmon ได้หรือมี CAPEv2 อีก vm นึงในการรับ feed behavior ด้วย
    ซึ่งต้องใช้ RAM / CPU ที่สูงพอสมควร RAM อาจจะ 32-64GB ก็ว่ากันไปตามงบประมาณ

นอกจากนี้ยังมีการทำ Snapshot หรือการบันทึกสถานะของ VM ที่ "สะอาด" ก่อนที่จะทำการ Dynamic Analysis เอาไว้
แต่การทำ Snapshot นี้ "ใช้พื้นที่ storage" ด้วยเช่นกัน หลาย GB หรืออาจจะหลัก 10++ GB
เราจะต้องมั่นใจว่ามีพื้นที่พอ ซึ่งถ้าหากไม่พอ ก็หนีไม่พ้น ใช้เงินแก้ปัญหา ซื้อ storage เพิ่ม

และยังไม่พอ หาก malware ที่เราเจอนั้นเป็น Advanced Malware สามารถตรวจได้ว่าเรากำลัง Analysis มันอยู่หรือเปล่า
เช่น malware มีการรันคำสั่งอันตรายก็จริง แต่อีกฟังก์ชั่นหนึ่ง มันก็มีการเรียก API เพื่อถามไปยัง Windows ว่า "ตอนนี้ CPU ที่ใช้เป็นแบบไหน" ถ้า Windows รับ API Call ของ malware ไปแล้วได้่ค่า return ว่า "เป็น Virtual CPU"
ไม่ใช่ CPU จริง
malware ก็จะรู้ว่านี่คือการ Analysis ไม่ใช่เครื่องจริงแล้ว มีคนกำลังตรวจจับ มันก็จะ switch ไปยัง function ที่เกี่ยวกับการทำให้หลับ หยุด เงียบ หรือ terminate ตัวเองทิ้งไป

อันนี้เป็นการยกตัวอย่าง กับ concept ที่ผมเคยเขียนไว้บนสุดว่า
"เรารู้มากแค่ไหนว่าสิ่งนี้มันทำงานยังไง ?" อย่างกรณีนี้ที่มันหลับได้ ถ้าเราไม่รู้ แล้วเราไปทำ Dynamic Analysis เราก็จะแห้ว แพ้ให้กับ malware ตัวนี้
ก็ต้องเริ่ม analyze ใหม่ หรือทำ reverse engineer ซึ่งต้องใช้ความรู้และเวลา มากไปอีก

อันที่จริง เรื่องเครื่องจริงหรือ VM นี้ ก็มีคนทำแนวทางไว้ในการ เอาชนะการ Anti Analysis ของ Malware นั่นก็คือ
ก็ใช้เครื่องจริง execute malware ไปเลย ทำเครื่องจริงที่ว่านี้ให้เรียบร้อย สะอาด > จากนั้นทำการ image ไว้ > แล้วก็ทำการ execute malware
หลังจากวิเคราะห์เสร็จ > ก็ใช้ image ทำการ restore อีกที เช่นทำผ่าน PXE Boot ก็คือ Boot ผ่าน network เพื่อ restore image ที่สะอาดกลับคืน

แต่มันก็ยังไม่สุด
เพราะพีระมิดในระดับบนสุด คือ

  1. การทำ Manual Code Analysis หรือ reverse engineering
    โดยจะมีวิธีย่อย 2 วิธีคือ
    4.1 Static Code Analysis reverse Engineering method หรือเรียกว่า Disassemble โดยใช้ Disassembler
    4.2 Dynamic Code Analysis reverse Engineering method หรือเรียกว่า Debugging โดยใช้ Debugger

วิธีนี้คือวิธีที่ยากที่สุด ใช้เวลามากที่สุด และต้องใช้ความรู้ความเข้าใจ มากที่สุดมากกว่า 3 วิธีแรกที่ผ่านมา
แต่มันคือวิธีที่ "เปลือย" Malware ออกมาได้มากที่สุด ไม่ข้ามสิ่งไหนออกไป ขึ้นอยู่กับความสามารถของเราว่าหาเจอมั้ย
วิธีแรก 4.1 คือวิธีที่ไม่มีการ execute เกิดขึ้น , ใช้เครื่องมือ Disassembler ในการให้ข้อมูล เครื่องมือก็จะ พยายามแปลงข้อมูล execute file ออกมาให้เราเห็นให้มากที่สุดว่า
มันมีข้อมูลอะไรบ้าง โดยมากมักจะเป็นภาษา Assembly ซึ่งถ้าเราจบงานได้จากเครื่องมือพวกนี้ เราจะต้องเชี่ยวชาญภาษา Assembly อย่างมาก ซึ่งเป็นเรื่องยากมากเพราะภาษา Assembly ไม่ได้มีโครงสร้าง pattern ที่เข้าใจง่าย ตรงกันข้ามกลับมีการกระโดดไปมา (jmp / jne ) ที่ทันทีไม่สนหน้าอินทร์หน้าพรม คนที่ไล่ก็ต้องเหนื่อยมาก ถ้าจะไล่ได้เร็วก็ต้องคุ้นเคยหรืออาจจะมีประสบการณ์ เชี่ยวชาญทำมาหลายครั้งแล้วจริงๆ เครื่องมือที่ใช้ก็เช่น Ghidra (Code Browser) , IDA Free เป็นต้น

ส่วนวิธีที่สอง 4.2 เป็นการใช้เครื่องมือ Debugger คือ "เกิดการ execute" ขึ้นจริงใน Windows , และเครื่องมือจะมีความสามารถให้เราควบคุมค่อยๆ หยุดทีละ step แบบช้าๆ ไม่ได้ให้โปรแกรมจบในทันที (breakpoint) ทำให้เราเห็นว่าเกิดอะไรขึ้นบ้างทีละขั้นทีละตอน
เครื่องมือที่ใช้ก็เช่น x64dbg , IDA Pro , Ghidra (Debugger) เป็นต้น

กระบวนการวิเคราะห์ทั้ง 4 ลำดับที่ผมเล่ามา ล้วนแล้วแต่จะต้องใช้สภาพแวดล้อมที่ปลอดภัยในการลงมือ
แต่ก็ควรสอดคล้องกับการลงทุน งบประมาณของตัวเองด้วยนะครับ ,
ซึ่ง lab setup ประกอบด้วย Software และ Hardware โดย Software ก็มักจะเป็น

Linux ที่ชื่อว่า REMnux ส่วน Windows ก็จะใช้ Flare-VM หรือจะทำเองก็ได้ (หมายถึงลง Windows เองแล้วลบอะไรต่างๆ เอง กับ หา tools เอง)

 

Computer Hardware โดยเฉพาะ x86 CPU ที่รองรับ Virtualization

Intel / AMD แล้วแต่สะดวก และงบประมาณ , RAM ก็แล้วแต่สะดวกและงบประมาณเช่นกัน แต่แนะนำให้ใช้เยอะ เพราะเราทำงานเกี่ยวกับ Virtualization แบบเลี่ยงไม่ได้

สุดท้ายคือ Storage , ยิ่งเยอะก็ยิ่งดี ตามงบ (สรุปคุยไปคุยมามีแต่เรื่องเงิน ฮ่าๆๆ) เอาเป็นว่า ไกด์ให้ประมาณตารางนี้ครับ


Lab ระดับ 1 ใช้ Remnux VM สำหรับ static analysis เป็นหลัก RAM VM ประมาณ 4/8/GB , Disk ประมาณ 40GB)


Lab ระดับ 2 Windows Flare-VM ค่อนข้างประหยัด ใช้ทำ Code Reverse ได้แล้ว RAM VM ประมาณ 8/16GB  Disk ประมาณ 100GB แต่ถ้าจะทำงาน Dynamic Analysis ซึ่งมักจะต้องใช้ procmon ที่จอง Ram และ Storage เพิ่มขึ้นก็ควรเตรียมไว้ และอย่าลืม storage สำหรับใช้ snapshot นะครับ ยิ่งมากยิ่งดี

Lab ระดับ 3 Windows Flare-VM + CAPEv2 เป็นเครื่องจริงที่ใช้ Ubuntu มี CAPEv2 เป็นตัว "รับ" , ตัว Flare-VM จะติดตั้ง Python agent ของ CAPEv2 และมันจะทำการเฝ้าดูและเก็บข้อมูลพฤติกรรมต่างๆ ไว้ให้ อันนี้จะเน้นไปทาง Malware Dynamic Analysis มากขึ้น RAM VM ประมาณ 16 GB , Disk ประมาณ 150GB เป็นอย่างน้อย แนะนำเป็น 250GB Up

LAB ระดับ 4 Windows Flare VM + CAPEv2 + Remnux ระดับนี้จะมีความ Advance มากขึ้น เพราะ Flare-VM จะทำการติดต่อส่ง และแลกเปลี่ยนข้อมูลไปยัง REMnux แปลว่าเราต้องเปิด VM 2 ตัวพร้อมกัน ในขณะที่เครื่องจริงก็จะมี CAPEv2 คอยช่วยเก็บข้อมูลให้ด้วย ดังนั้น RAM และ Storage จะต้องเพิ่มขึ้น RAM VM ประมาณ 16+8  , Disk ประมาณ 300GB

LAB ระดับ 5 Windows Flare เครื่องจริง + CAPEv2 + FOG ระดับนี้คือการ runmalware บนเครื่องจริง แทนที่ flare-vm แบบ virtualization แบบนี้จะทำให้ malware ที่มีการทำ anti analysis จะต้องแสดงพฤติกรรมมุ่งร้ายออกมาได้เต็มที่ ในขณะที่ flare-vm แบบ virtualization จะใช้ CPU แบบ virtual , ตัว malware ที่ทำ anti analysis มักจะมี Call API ในการตรวจ ว่า CPU ที่รันอยู่เป็น virtual หรือไม่ ถ้าเป็นก็จะ หลบ / หลับ (sleep) ไม่แสดงอาการอะไร , การ setup lab แบบนี้เปลืองเงินและเปลืองไฟพอสมควร แต่ถ้าได้ลงมือทำ ก็จะได้ความรู้เรื่องต่างๆ มากมาย ทั้ง PXE Imaging โดย FOG / เรื่อง Network / เรื่อง CAPEv2 configuration ต่างๆ อีกมากมาย เหนื่อยและใช้เงินพอสมควรสำหรับ LAB นี้แต่สิ่งที่ได้แลกมาก็น่าจะคุ้มอยู่ ลองดูนะครับ RAM 16+8+8 บนเครื่องจริงตามลำดับ , Disk ก็แยกเอาตามกำลังเงินได้เลย

หรือคิดง่ายๆ ถ้าคอมพิวเตอร์เรามีทรัพยากรมาก เราก็มี capability ในการทดลองอะไรได้สูงมากตามไปด้วย เช่นเดียวกัน


สำหรับผมแล้วมักจะใช้แค่ Flare-VM ที่เป็น VM แล้วทำ Snapshot ก็พอ
เพราะว่างบประมาณไม่เยอะ และเครื่องจริงของผมก็เป็น Arch Linux / Ubuntu Linux มากกว่า
เวลาทำการ Execute malware ใน flare-vm เลยไม่ค่อยกังวลการแพร่กระจาย จาก flare-vm มายังเครื่องจริงมากนัก

 

ดังนั้นถ้าใครใช้เครื่องจริงเป็น Windows / และกำลังวิเคราะห์ malware ที่ทำงานบน Windows (PE) ก็ต้องระวังให้มาก ทำความเข้าใจเรื่อง Network Adapter ของ VM ให้ดี เพื่อป้องกันการแพร่กระจายหรือกระโดดข้ามจาก VM มาเครื่องจริง , ทำการ update โปรแกรม Virtualization ของคุณให้เป็น version ล่าสุดเพื่อป้องกันช่องโหว่ต่างๆ รวมไปถึง Backup และสำรองข้อมูล งานสำคัญของคุณไปยังที่ที่ปลอดภัย หรือ Air Gap ไม่เชื่อมต่อกับระบบพวกนี้

Leave a Reply

Your email address will not be published. Required fields are marked *