Hacking&Security Workshop

ตอนนี้ MaYaSeVeN ได้ย้าย Blog ไปที่ http://blog.mayaseven.com


Thursday, January 3, 2013

ICMP Tunneling(Shell,Backdoor) [ bypass Firewall ]

# บทความนี้เขียนในมุมมองของผู้ทดสอบเจาะระบบ (Penetration Tester)    

    ในบางครั้งเวลาที่เราทดสอบเจาะระบบก็เจอปัญหาที่เราไม่สามารถทำการเปิด Port ที่เครื่องเหยื่อหรือให้เครื่องเหยื่อเชื่อมต่อกลับมาที่เครื่องผู้ทดสอบเจาะระบบได้ตามที่ต้องการ เพราะถูก Firewall ที่ทำการตั้งค่าไว้อย่างรัดกุมป้องกันเอาไว้ ในบทความนี้เราจะมาพูดถึงอีกหนึ่งวิธีในการ Bypass Firewall และป้องกันการเกิด Log เวลาที่เราสั่งการบอทของเรา โดยเราจะควบคุมบอทของเราผ่าน ICMP Packets หรือควบคุมเครื่องเหยื่อผ่านการ Ping !!!

รูปที่ 1 Bypass Firewall


    ตามนั้นครับฟังไม่ผิดเราจะควบคุมเครื่องเหยื่อของเราผ่าน ICMP Packets !!! โดยปกตินั้นเหล่าบอทหรือเครื่องที่ติด Trojan จะทำการเชื่อมต่อผ่าน TCP/Application ซึ่งแน่นอนว่าต้องมีเรื่อง Port มาเกี่ยวข้อง
ไม่ว่าจะให้เครื่องเหยื่อเปิด Port แล้วให้ผู้โจมตีเชื่อมต่อเข้าไปหรือให้เครื่องผู้โจมตีเปิด Port รอแล้วให้เครื่องเหยื่อเชื่อมต่อเข้ามา ซึ่งง่ายต่อการ Config ให้ Firewall Block Traffic เหล่านั้น แต่ถ้าเป็น ICMP ซึ่งทำงานใน Layer 3 ตาม OSI Model นั้นเราไม่ต้องใช้ Port ในการเชื่อมต่อ และการ Block ICMP Traffic นั้นเป็นการกระทำที่ไม่เหมาะสมบนสภาพแวดล้อมจริงเพราะจะมีปัญหาในการจัดการและบำรุงรักษาเครือข่ายในอนาคต ซึ่งรายละเอียดของ Protocol นี้เราสามารถอ่านเพิ่มเติมได้จาก Wikipedia https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol


      รูปที่ 2 ตัวย่าง ICMP Packets ที่กำหนดขนาด Payload เป็น 0 และกำหนดให้ส่งเพียง 1 Packet ซึ่งแสดงให้เห็นว่า ICMP มีขนาดเล็กที่สุด 42 Byte บนการเชื่อต่อแบบ Ethernet โดย ICMP Header มีขนาด 8 Byte
 
     เอาละที่นี้เราจะมาพูดถึงหลักการทำงานของ ICMP Tunneling ที่เราจะใช้ควบคุมเครื่องเหยื่อของเรา หลักการทำงานคือเราจะส่งคำสั่งที่เราต้องการจะให้ทำงานบนเครื่องเหยื่อออกไปด้วยในการ Ping โดยส่งเป็น payload ของ ICMP Packets เมื่อฝั่งเครื่องเหยื่อได้รับ Packet นั้นก็ทำการแกะเอา Payload มา Run แล้วทำการส่ง Output กลับมายังเครื่องผู้โจมตีตามรูปที่ 3 และ 4


    รูปที่ 3. เครื่องผู้โจมตีทำการส่ง Echo Request(Ping) โดยใน Payload คือ @@whoami โดยคำสั่ง whoami เป็นคำสั่งที่ใช้สำหรับตรวจสอบสิทธ์ที่เราทำงานอยู่บนเครื่องเหยื่อ


    รูปที่ 4 เครื่องเหยื่อทำการส่ง Echo Reply(Ping) กลับมาโดยในส่วนของ Payload คือ Output จากคำสั่ง whoami นั้นคือ @@home-9v0yikhguq\administrator 


    สรุป เราสามารถควบคุมเครื่องเหยื่อผ่าน ICMP Packets ได้โดยใช้ Payload ของ ICMP Packets เป็นส่วนในการส่งคำสั้งในการควบคุมและรับ Output ของคำสั่ง


เพิ่มเติม : เมื่อเราได้ Shell บนเครื่องเหยื่อแล้วหลายคนอาจจะจินตนาการไม่ออกว่าเราสามารถทำอะไรกับเครื่องเหยื่อได้บ้างในส่วนนี้เรียกว่า Post Exploitation ซึ่งผมได้เขียนบทความและทำวิดีโอไว้แล้ว สามารถอ่านเพิ่มเติมได้ที่ http://www.mayaseven.com/2012/04/hack-add-user-open-remote-desktop.html

Shell Communication using ICMP by Matt Fuller