Hacking&Security Workshop

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


Tuesday, December 25, 2012

The Matrix Reloaded วิเคราะห์ฉาก Trinity Hack ปิดการทำงานของโรงไฟฟ้า [วิเคราะห์ทางเทคนิคเชิงลึก]

ฉากที่ Trinity Hack ปิดการทำงานของโรงไฟฟ้า

    ใครที่เคยดู The Matrix ภาคนี้คงจะจำกันได้นะครับ มีฉากหนึ่งที่ Trinity พยายาม Hack เข้าไปปิดระบบการทำงานไฟฟ้าของเมือง เราจะมาวิเคราะห์กันว่าการ Hack ครั้งนี้สมจริงหรือแค่หนังสร้างขึ้นมาโดยไม่อิงความจริง หลังจากที่ดูคลิปข้างบนแล้วหลายคนอาจจะดูไม่ทันเรามาดูคลิปขั้นตอนการ Hack เต็มๆได้จากคลิปด้านล่างนี้


ขั้นตอนการ Hack ในหนังโดยละเอียด

    หลังจากดูคลิปนี้แล้วสรุปขั้นตอนได้ดังนี้
1. เขียน Exploit สำหรับใช้โจมตีโดยตั้งชื่อว่า sshnuke โดยเขียนด้วย ภาษา Assembly จาก Opeation หลายๆตัวที่ผมเห็นที่ Trinity พิมพ์ผมเข้าใจน่าจะเป็นของสถาปัตยกรรม x86(ใช้ความคุ้นเคยเดาเอา :D)

2. ใช้เทคนิค pinging broadcast address เพื่อหา Host ที่ online ในวง Lan
    # ping 10.2.0.0 ( จริงๆแล้วควรจะเป็น # ping -b 10.2.0.0 )

3. # nmap -v -sS -O 10.2.2.2
    -v หมายความว่าให้แสดงข้อมมูลรายละเอียดในการ Scan มากขึ้น
    -sS ให้ Scan แบบใช้เทคนิค Syn Scan
    -O ให้ตรวจสอบ OS ขอบเป้าหมายด้วยว่าใช้ OS อะไร

ได้ผลการทำงานประมาณนี้
           state       service
22/tcp     open        ssh
No exact OS matches for host
nmap run completed -- 1 IP address (1 host up) scanneds

4. หลังจากนั้นได้ทำการยิง Exploit
    # sshnuke 10.2.2.2 -rootpw="Z1ON0101"
    สิ่งที่ Exploit นี้ทำก็คือ Reset root password ให้เป็น Z1ON0101 นั้นเอง

ได้ผลดังนี้
# sshnuke 10.2.2.2 -rootpw-"Z1ON0101"
Connecting to 10.2.2.2:ssh ... successful.
Attempting to exploit SSHv1 CRC32 ... successful.
Reseting root password to "Z1ON0101".
System open: Access Level (9)
# ssh 10.2.2.2 -l root
root@10.2.2.2's password: 

5. พอได้สิทธิ์ root ก็ทำการสั่งปิดการทำงานของโรงงานไฟฟ้า
RTF-CONTROL> disable grid nodes 21 - 48
Warning: Disabling nodes 21-48 will disconnect sector 11 (27 nodes)

        ARE YOU SURE ? (y/n)

Grid Node 21 offline...
Grid Node 22 offline...
Grid Node 23 offline...
Grid Node 24 offline...
Grid Node 25 offline...
Grid Node 26 offline...
Grid Node 27 offline...
Grid Node 28 offline...
Grid Node 29 offline...
Grid Node 30 offline...
Grid Node 31 offline...
Grid Node 32 offline...
Grid Node 33 offline...
Grid Node 34 offline...
Grid Node 35 offline...
Grid Node 36 offline...
Grid Node 37 offline...
Grid Node 38 offline...
Grid Node 39 offline...
Grid Node 40 offline...
Grid Node 41 offline...
Grid Node 42 offline...
Grid Node 43 offline...
Grid Node 44 offline...
Grid Node 45 offline...
Grid Node 46 offline...
Grid Node 47 offline...
Grid Node 48 offline...

โอเคมาเริ่มวิเคราะห์การ Hack ครั้งนี้กัน

เริ่มจาก Trinity สามารถเข้ามาที่ห้องควบคุมได้และทำการเชื่อมต่อคอมพิวเตอร์ของตัวเองเข้ากับเครือข่ายได้นั้นหมายความว่า Trinity เข้ามาอยู่ในวง Network ภายในแล้วหรือภาษาบ้านๆก็คือยู่ในวง Lan เดียวกันนั้นเอง

ขั้นตอนที่ 1 เขียน Exploit หน้าเครื่อง นั้นแลดูไม่ make sense เพราะถ้าจะโจมตีองค์กรใหญ่ๆนั้นต้องทำการเก็บข้อมูลเป้าหมายมาอย่างดีรวมถึงจำลอง Environment ให้เหมือนเป้าหมายที่สุดและทดสอบ Exploit มาอย่างดีแล้วเท่านั้นเพราะถ้า Run พลาดครั้งเดียว Service Crash ก็คือ Game Over Exploit นั้นก็ใช้ไม่ได้จนกว่าจะ Restart Service ใหม่

ขั้นตอนที่ 2 ใช้เทคนิค pinging broadcast address เพื่อหา Host ที่ online ในวง Lan อันนี้เป็นขั้นตอนสมจริงเลยทีเดียวและ IP address 10.x.x.x ก็เป็น Class A ซึ่งเป็น private address ใช้ภายในองค์กร เมื่อเข้ามาอยู่ Network ภายในของเป้าหมายได้แล้ว สิ่งที่ต้องทำก็คือหา Host ที่มีจุดอ่อน ซึ่งในที่นี้ Trinity น่าจะมีเป้าหมายอยู่แล้ว เพราะต้องการปิดการทำงานของโรงไฟฟ้า ดังนั้นสิ่งที่ต้องทำคือค้นหา Host ที่ควบคุมการทำงานของไฟฟ้าที่สามารถทำการปิดการทำงานของโรงงานไฟฟ้าได้

ขั้นตอนที่ 3 ใช้ Nmap ในการพิจรณา Services หรือ OS ของ Host ว่าใช่เป้าหมายที่เราต้องการหรือไม่ โดยในส่วนนี้ต้องสืบข้อมูลมาก่อนว่า Host เป้าหมายมีเอกลักษ์อย่างไรและทำการเปิด Services ใดบ้างเพื่อเตรียม Exploit ในการโจมตี

ขั้นตอนที่ 4 ใช้ Exploit เพื่อทำการ Reset root password ให้เป็น Z1ON0101 ย้อนกลับไปนิดหนึ่งประเด็นคือ Exploit ช่องโหว่ Service อะไรและช่องโหว่ที่ในหนังเอามาแสดงนั้นมีจริงหรือไม่ ? คำตอบก็คือเป็นช่องโหว่ ของ SSHv1 CRC32 ซึ่งเป็นช่องโหว่ที่มีอยู่จริงและมีการรายงานในวันที่  Feb 8, 2001 ซึ่งรายละเอียดของช่องโหว่นั้นอ่านได้จาก http://www.securityfocus.com/bid/2347/discuss ช่องโหว่นี้เกิดจากการกำหนดตัวแปรให้มีขนาด 16 bit แต่ในการทำงานจริงสามารถเกิดสถานการณ์ที่ได้รับ input ที่เป็นขนาด 32 bit ได้ สิ่งนี้เรียกว่า Integer Overflow ซึ่งตัวแปรนี้สุดท้ายจะมาเป็น parameter ของ Function malloc() จากจุดนี้ทำให้ผู้โจมตีสามารถเขียนคำสั่งใดๆก็ได้ลงใน Memory ของเป้าหมาย ช่องโหว่นี้ก็เป็นที่ฮือฮาในสมัยนั้นพอสมควรเพราะมีผลกระทบในวงกว้าง SSH เป็น Service พื้นฐานที่ต้องใช้กันในการ Remote เข้าไปจัดการ Server และในสัมยนั้น Service นี้ทำงานด้วยสิทธิ Root ทำให้เมื่อโจมตี Service นี้สำเร็จผู้โจมตีก็จะได้สิทธิ Root ไปเลยทันที ส่วนการวิเคราะห์ Exploit นั้นสามารถอ่านรายละเอียดได้จาก http://www.ouah.org/ssh_exploit.pdf สรุปก็คือการ Exploit เพื่อ Reset root password ในหนังเรื่องนี้นั้นสามารถเป็นไปได้ในทางเทคนิค แต่มันมีประเด็นนิดหนึ่งช่องโหว่นี้รายงานในปี 2001 หนังฉายปี 2003 แต่สถานการณ์ในหนังมันปี 2199 ซึ่งในปีของหนังคงไม่มีใครใช้ SSHv1 แล้วละครับ ฮ่าๆ แต่ตามปกติเมื่อมีช่องโหว่รายงานก็มี Server ที่ไม่ทำการ Patch อยู่จำนวนหนึ่งเสมอและลดลงตามเวลาที่ผ่านไป นั้นหมายความว่าถ้าในหนังเป็นสถาการณ์ของปี 2003 นั้นมีความสมจริงมากทีเดียวเพราะตามธรรมชาติของเรื่องความปลอดภัยคนดูระบบไม่ค่อยได้ใส่ใจในเรื่อง Security เท่าที่ควร

ขั้นตอนที่ 5 ปิดการทำงานของโรงงานไฟฟ้า อันนี้ไม่มีประเด็นแล้วแต่เป้าหมาย ถ้าเราได้สิทธิ์ Root บนเป้าหมายที่เหมาะสมแล้วเราก็สามารถทำได้ทุกอย่างที่เราต้องการ ซึ่งถ้า Host นั้นสามารถควบคุมการทำงานของโรงไฟฟ้าได้เราก็สมารถควบคุมให้มันทำงานอย่างที่เราต้องการได้

สรุป ขั้นตอนโดยรวมที่ Trinity ใช้โจมตีนั้นมีความสมจริงมากเลยทีเดียว ซึ่งในหนังนั้นเป็นแค่ฉากไม่กี่วินาทีแต่ผู้สร้างได้ให้รายละเอียดไว้อย่างน่าประทับใจเลยครับสำหรับหนังเรื่องนี้ซึ่งก็เป็นหนังโปรดของผมเช่นกัน :)

เพิ่มเติม : สำหรับในปัจจุบันนั้นได้มีการโจมตีในลักษณะนี้หรือการโจมตีทาง Cyberspace เกิดขึ้นจริงแล้วโดย อเมริกาได้ใช้การโจมตีทาง Cyber เพื่อทำให้โรงงานเสริมสมรรถนะยูเรเนียมที่ใช้ผลิตระเบิดนิวเคลียร์ของอิหร่านไม่สามารถทำงานได้ ผมได้เขียนบทความเรื่องนี้ไว้อย่างละเอียดแล้วสามารถอ่านได้ที่ http://mayaseven.blogspot.com/2012/01/stuxnet.html

ฉากในหนังตอนที่ Trinity สามารถเข้าถึงสิทธิ์ Root ได้

Edited 1.5 : 13:06 Dec 25, 2012 แก้ไขข้อผิดพลาดและเพิ่มรายละเอียดของช่องโหว่ที่เกิดขึ้นและส่วนอื่นๆ

Written by MaYaSeVeN