Hacking&Security Workshop

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


Tuesday, April 19, 2011

Hacker คืออะไร ? แก่นของการ Hack ? เสียดาย Script Kiddie ไม่ได้อ่าน :D

Hacker คืออะไร ? แก่นของการ Hack ? เสียดาย Script Kiddie ไม่ได้อ่าน :D

ปัจจุบันนี้มีคนหลายกลุ่มตีความคำว่า hacker ออกไปในทางที่ แย่,เลว,คนไม่ดี,อาชญากรคอมพิวเตอร์ เหตุผลที่เป็น เช่นนั้น เพราะสื่อใช้คำที่ไม่ถูกต้องบวกกับพฤติกรรมของพวก Script Kiddie ที่ไปโชว์เกรียน Deface หน้าเว็บ ไป Drop database; เขามั้งละ ซึ่งมันก็เป็นผลให้คนทั่วไปที่รับข่าวจากสื่อเข้าใจผิดซึ่งถ้าจะแยกประเภทจริงๆนั้นมันเยอะพอสมควร ผมจะยกข้อความบางส่วนจาก Wikipedia มาแล้วกัน



Hacker หมายถึงผู้เชี่ยวชาญในสาขาคอมพิวเตอร์ บางครั้งยังใช้หมายถึงผู้เชี่ยวชาญในสาขาอื่นนอกจากคอมพิวเตอร์ด้วย โดยเฉพาะผู้ที่มีความรู้ในรายละเอียด หรือ ผู้ที่มีความเฉลียวในการแก้ปัญหาจากข้อจำกัด ความหมายที่ใช้ในบริบทของคอมพิวเตอร์นั้นได้เปลี่ยนแปลงไปจากความหมายดั้งเดิม โดยผู้ใช้คำในช่วงหลังนั้นได้ใช้ในความหมายที่กว้างออกไป รวมทั้งในบางครั้งยังใช้ในความหมายที่ขัดแย้งกัน

ในปัจจุบัน Hacker นั้นใช้ใน 2 ความหมายหลัก ในทางที่ดี และ ไม่ค่อยดีนัก ความหมายที่เป็นที่นิยม และพบได้บ่อยในสื่อนั้น มักจะไม่ดี โดยจะหมายถึง อาชญากรคอมพิวเตอร์ ส่วนในทางที่ดีนั้น Hacker ยังใช้ในลักษณะของคำติดปาก หมายถึง ความเป็นพวกพ้อง หรือ สมาชิกของกลุ่มคอมพิวเตอร์ นอกเหนือจากนี้ คำว่า Hacker ยังใช้หมายถึงกลุ่มของผู้ใช้คอมพิวเตอร์ โดยเฉพาะโปรแกรมเมอร์ที่มีความสามารถในระดับผู้เชี่ยวชาญ ตัวอย่างเช่น "ลีนุส ทอร์วัลด์ส ผู้สร้างลินุกซ์ นั้นเป็นนักเลงคอมพิวเตอร์อัจฉริยะ"

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

สามารถอ่านเกี่ยวกับนิยาม Hacker และประเภทต่างๆเพิ่มเติมได้ที่ http://th.wikipedia.org/wiki/%E0%B8%99%E0%B8%B1%E0%B8%81%E0%B9%80%E0%B8%A5%E0%B8%87%E0%B8%84%E0%B8%AD%E0%B8%A1%E0%B8%9E%E0%B8%B4%E0%B8%A7%E0%B9%80%E0%B8%95%E0%B8%AD%E0%B8%A3%E0%B9%8C

จากด้านบนเราจะได้เห็นนิยามที่ถูกต้องของ Hacker โดยผมอ้างอิงข้อความจาก Wikipedia ทีนี้เราจะมาลงรายละเอียดกันว่าตกลงแล้ว Hacker ทำอะไร ทำอย่างไร แล้วแบบไหนถึงเรียกว่า Hacker (ในที่นี้จะพูดถึง Hacker และแนวคิดที่นอกเหนือจากระบบคอมพิวเตอร์ด้วย)

โจทย์คณิตศาสตร์ต่อไปนี้ได้แสดงให้เห็นถึงสาระสำคัญในการ Hack
"ใช้แต่ละตัวเลขต่อไปนี้ 1,3,4 และ 6 เพียงครั้งเดียวกับ Operation ทางคณิตศาสตร์พื้นฐาน 4 อย่าง(การบวก,ลบ,คูณ,หาร)เพื่อให้ได้มาซึ่งตัวเลขสุดท้ายคือ 24 คุณสามารถกำหนดกลุ่มของ Operation หรือกำหนดลำดับการกระทำได้ เช่น 3*(4+6)+1 = 31 นั้นถูกต้อง อย่างไรก็ตามผลลัพธ์ที่ได้ไม่ถูกต้องเพราะมันไม่เท่ากับ 24"
โจทย์นี้ถูกกำหนดมาบน Logic อย่างง่ายๆ แต่กระนั้นคำตอบของโจทย์นี้ดูจะน่างุนงงทีเดียวว่าจะทำได้อย่างไรกัน คำตอบของโจทย์ในการ Hack ระบบก็เช่นเดียวกัน (ระวัง Comments Spoil) (ได้ผู้ชนะแล้ว Masters Cerzz)

จากตัวอย่างก็พอจะมองภาพออกแล้วว่าการ Hack ที่แท้จริงก็คือการเอาชนะ Logic ที่คนทั่วๆไปเขาทำกัน สำหรับผมเรียกสิ่งนี้ว่า "ความสร้างสรรค์(Art)" จะยกอีกสักตัวอย่างที่ผมได้ทำเอาไว้ เช่น ในบทความ How to hack back to the basic ในบทความนั้นเป็นการเอาชนะ Logic ตัวโปรแกรม Ftp Server ซึ่งหน้าที่ของมันถูกเขียนให้เป็น Service ในการบริการรับส่งไฟล์ระหว่าง Client กับ Server ซึ่งในบทความนั้นได้เอาชนะ Logic ด้วยการหาช่องโหว่จนสามารถเข้าไปควบคุม Flow การทำงานของโปรแกรมจาก Service ให้บริการรับส่งไฟล์กลายเป็น Service Backdoor ให้ Hacker สามารถ Hack เข้าไปได้ ! สิ่งเหล่านี้คือแก่นแท้ของการ Hack ที่แท้จริง ไม่ใช่การ Hack เข้าไปสร้างความชิบหายให้กับคนอื่นแต่เป็นการเอาชนะสิ่งที่ทุกคนเชื่อว่า(Logic)มันถูกต้องแล้ว

อีกตัวอย่างเพื่อให้เห็นภาพเพื่อตอกย้ำ เช่น ในเว็บแห่งหนึ่งมีการรับค่า Username และ Password เพื่อใช้ในการ Login โดยใช้ Code ประมาณนี้

<?php
   $sql = "SELECT * FROM members WHERE username='" . $_POST['username'] . "' AND password='" . $POST_['password'] . "'";
   Login = mysql_query($sql);
?>

จาก Code ข้างบนนี้สมมุติ กรอก Username คือ admin และ Password คือ mayaseven ลงไปก็จะได้ queryString ในการติดต่อ Database ดังนี้

SELECT * FROM users WHERE username='admin' AND password='mayaseven'

เราก็จะเห็นว่ามันก็ปกติดี แต่ถ้ามีการใส่ Input ที่มีการเอาชนะ Logic นี้ เช่น ใส่ Username คือ admin และ Password คือ mayaseven' OR 'a' = 'a เราก็จะได้ QueryString ดังนี้

SELECT * FROM users WHERE username='admin' AND password='mayaseven' OR 'a' = 'a'

เราจะเห็นว่าในส่วนของ password='mayaseven' OR 'a' = 'a' ยังไงพจน์นี้ก็เป็นจริงเพราะยังไง 'a' = 'a' และใน Logic OR นั้นมีจริงเพียงหนึ่งก็เท่ากับเป็นจริงในที่นี้(True AND False OR True --> True)
จะเห็นว่าเงื่อนไขเป็นจริงและสามารถ Login เข้าไปได้ด้วย Username Admin และ Password mayaseven ' OR 'a' = 'a  เทคนิคนี้เรียกว่า SQL Injection

หรือจะเป็นตัวอย่างล่าสุดเช่นในการทำ Black SEO เพื่อเอาชนะ Algorithm ของ Google ในการจัดอันดับเว็บไซต์เพื่อให้เว็บตัวเองติดอันดับต้นๆอย่างเช่นพวก Content farm ซึ่งไม่มีเนื้อหาที่ตรงตามที่ผู้ใช้ค้นหาต้องการแม้แต่น้อยจน Google ได้มีการประกาศสงความกับ Content farm เหล่านั้นโดยปรับ Algorithm เพื่อต่อสู้กับเว็บเหล่านั้น

สิ่งเหล่านี้มันอยู่ในการดำรงชีวิตของมนุษย์ไม่ได้อยู่เฉพาะในคอมพิวเตอร์เพียงอย่างเดียว ทักษะเหล่านี้สามารถนำไปใช้แก้ปัญหาเพื่อข้ามขีดจำกัดต่างๆที่ตามทฤษฏีบอกว่าไม่น่าจะเป็นไปได้ และสิ่งเหล่านี้แระที่ทำให้ผมหลงใหลในศาสตร์นี้เข้าขั้น :D

Reference :
ข้อความบางส่วนจาก :
1.)Wikipedia
http://th.wikipedia.org/wiki/%E0%B8%99%E0%B8%B1%E0%B8%81%E0%B9%80%E0%B8%A5%E0%B8%87%E0%B8%84%E0%B8%AD%E0%B8%A1%E0%B8%9E%E0%B8%B4%E0%B8%A7%E0%B9%80%E0%B8%95%E0%B8%AD%E0%B8%A3%E0%B9%8C
2.)The Art of Exploitation
http://nostarch.com/hacking2.htm


#เขียนโดย MaYaSeVeN http://mayaseven.blogspot.com
#อนุญาติให้ Copy ไปโพสต่อที่ไหนก็ได้แต่ต้องแนบเครดิตด้วยนะครับ