โครงงานคอมพิวเตอร์ re zero ·...

51
โครงงานคอมพิวเตอร์ Re Zero โดย รหัสประจําตัว 573020801-7 นางสาวชลธิชา ชาวบ้านใน รหัสประจําตัว 573020803-3 นายชิษณุพงษ์ เรืองไพศาล รหัสประจําตัว 573020818-0 นายมหิทธา กิจเหล็ก รหัสประจําตัว 573021391-5 นายธินวรรธน์ มธุรส รหัสประจําตัว 573021407-6 นางสาวรัชดา ปุญญา รหัสประจําตัว 573021413-1 นายสุทธิเกียรต์ ศรีประไพ เสนออาจารย์ รศ.ดร.จักรชัย โสอินทร์ รายงานนี ;เป็นส่วนหนึ >งของการศึกษาวิชา @AA@B6 INFORMATION AND COMMUNICATION TECHNOLOGY SECURITY ภาคเรียน T ปีการศึกษา AUU9 ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยขอนแก่น

Upload: others

Post on 28-Dec-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

โครงงานคอมพวเตอร Re Zero

โดย

รหสประจาตว 573020801-7 นางสาวชลธชา ชาวบานใน รหสประจาตว 573020803-3 นายชษณพงษ เรองไพศาล รหสประจาตว 573020818-0 นายมหทธา กจเหลก รหสประจาตว 573021391-5 นายธนวรรธน มธรส รหสประจาตว 573021407-6 นางสาวรชดา ปญญา รหสประจาตว 573021413-1 นายสทธเกยรต ศรประไพ

เสนออาจารย

รศ.ดร.จกรชย โสอนทร

รายงานน; เปนสวนหน>งของการศกษาวชา @AA@B6 INFORMATION AND COMMUNICATION TECHNOLOGY SECURITY

ภาคเรยน T ปการศกษา AUU9 ภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตร

มหาวทยาลยขอนแกน

Page 2: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

หลกการและเหตผล

เน>องจากเวบเกมเปนเวบท>ตองสมาชกในการเขาเลนเกม และอาจจะมข;นตอนการสมครสมาชกท>งาย จงทาใหงายตอการรบกวนฐานขอมล ทางเราจงสรางโปรแกรเพ>อศกษาของขอผดพลาดน;วาทางานอยางไรและปองกนอยางไร

วตถประสงค

� เพ>อสรางโปรแกรมในการป; มการสรางสมาชก

� เพ>อโจมตฐานขอมลเวบไซต

� เพ>อศกษาชองโหวของเวบดวยคาส>ง sql command เบ;องตน

ทฟษฎท�เก�ยวของ

Tor คออะไร

Tor เปนบรการท>สรางโดย Electronic Frontier Foundation (EFF): มลนธพรมแดนอเลกทรอนกส (อเอฟเอฟ) ซ> งเปนองคกรไมแสวงกาไรดานสทธในการเขาถงอนเทอรเนต บรการน;ฟร ไมมคาใชจายใดๆ Tor สรางเครอขายพเศษข;นมาโดยอาศยคอมพวเตอรของอาสาสมครจานวนมากท>วโลกสงตอขอมลไปมาหลายคร; ง ทาใหผใหบรการอนเทอรเนตท>เราเช>อมตออยไมสามารถรไดวาเรากาลงเขาชมอะไร (ทาใหเราเขาถงเวบไซตท>ถกบลอคจากภายในประเทศได) และตวเวบไซตท>เรากาลงเขาชมกไมสามารถรไดวาเรากาลงเขาชมจากท>ไหน (ทาใหเราสามารถดเน;อหาท>ตวเวบไซตจากดไมใหผชมบางประเทศดได) การสงตอขอมลดงกลาว เกดข;นหลายคร; งขามไปมาหลายประเทศท>วโลก ทาใหผไมหวงดไมสามารถยอนรอยหาตวตนของเราไดโดยงาย

Tor และ HTTPS?

แผนภาพโดยโครงการ Tor ดานลางเหลาน;แสดงใหเหนวา ใครบางท>จะดขอมลเราได ท>จดไหน และมขอมลอะไรของเราท>เขาดได (โปรดสงเกตในกลองสสม ท>จะบอกวามขอมลอะไรท>จะถกดไดบาง)คลกท>แตละภาพ

Page 3: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

เพ>อขยาย หรอดแผนภาพแบบ interactive — คลกท>ปม Tor และ HTTPS มมซายบน เพ>อเปด-ปดการใชงาน — สเขยวคอเปดใชอย สเทาคอปดใชอย

ภาพท> 1 : ไมใช Tor ไมใช HTTPS ทกคนในเครอขายรไดหมดวาเราสงขอมลอะไร

Page 4: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ภาพท> 2 : ไมใช Tor ใชเฉพาะ HTTPS คนไมรวาเราสงขอมลอะไร แตรวาเราคยกบใคร เปดเวบไซตไหน

Page 5: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ภาพท> 3 : ใช Tor แตไมไดใช HTTPS คนไมรวาเราเปดเวบไซตไหน แตมโอกาสจะรขอมลของเราถาเขาไปดกท>ผใหบรการปลายทาง

Page 6: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ภาพท> 4 : ใชท/ง Tor และ HTTPS พรอมกน การดกฟงและตามตวจะยงยากข;นมาก

Page 7: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

1.ดาวนโหลด Tor Browser Bundle ใหตรงกบกบระบบปฏบตการท>เราใช – https://www.torproject.org/ (ใหแนใจวากาลงดาวนโหลดโดยตรงจากเวบไซต Tor อยางเปนทางการเทาน;น เพ>อใหปลอดภยจากไวรสหรอมลแวรอ>นๆ)

2. ตดต;ง Tor

3. กดตดต;ง

Page 8: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

4. เม>อการตดต;งเสรจส;น กด Finish

5.เปดโปรแกรม Tor Browser Bundel หลงจาก Tor Network Settings ทางาน ใหกดปม Connect เพ>อเร>มเช>อมตอกบเครอขาย Tor

Page 9: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

6. กาลงเช>อมตอ

7. หลงเช>อมตอเสรจแลว เบราวเซอร “TorBrowser” จะปรากฏข;นมา

Page 10: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

8.ทดสอบวาเช>อมตอกบเครอขาย Tor แลวจรงๆ โดยการเขาไปท>เวบไซต https://check.torproject.org/?lang=th

Page 11: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

SQL Injection SQL Injection คออะไร

การโจมตโดยการยงคาส>ง SQL เขาไปยงเวบใดๆน;นจะทาใหเหนถงขอมลเก>ยวกบ Database ขอดของมนคอใชเพ>อตรวจสอบหาชองโหวในการใสคา Input ในพวก User Interface ของเวบไซต (website) ในทางทฤษฎเวบไซตควรมการตรวจสอบทกคาท>ปอนเขามากอนจะสง query น;นไปยง database แตถาการตรวจสอบ input น;นไมไดสมบรณทกอนหรอทกๆ input ท>เขามา (อาจมเปนรอยเปนพนเลยกได) ละ Attacker อาจจะเปล>ยนแปลงบางสวนของ web request (สวนใหญกพวก URL parameter) เพ>อใหสามารถ query ขอมลจาก database ได ผลของการ query จะถกแสดงในสวนของ HTML response ซ> งสรางเวบไซตน;น มาลองดตวอยาง SQL Injection แบบงายๆกนดกวาครบ โดยเราจะลองโจมตเวบเก>ยวกบสขภาพเวบหน>งในเวบน;จะมการแสดงหมายเลขประกนสงคมของสมาชกในครอบครวโดยอางองจากเพศดวย URL

หลงการสง query น; ไปยง database แลว Web Application จะมองวาเปนคาส>งดงน;

โดย XXX จะหมายถงช>อของครอบครวท>เอามาจากการลอกอนฐานขอมล ถาเวบน; ไมแขงแรงตอการ SQL Injection บนพารามเตอร sex แลวจะทาให Attacker สามารถจดการเวบน;ไดอยางงายไดดวยการ injection คาส>งเขามา เชน

เม>อสง URL น;ไปยง database แลวจะเกดผลอะไรบาง คอมนจะมการ query โดยคาส>ง

Page 12: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ซ>งคาส>งน; จะทาใหมการแสดงขอมลของคนไขท;งหมดในฐานขอมลออกมา แลวแสดงไปยง Attacker SQL Injection น;นสามารถทาใหไดมาซ> ง username เปนพนๆไดในการโจมตเพยงคร; งเดยวเลย ทาใหมนเปนหน>งในภยคกคามท>อนตรายท>สดเก>ยวกบการขโมยขอมลของ web application เลยทเดยว การปองกน SQL Injection ดวย Signature

กระบวนการในปองกนดวย signature น;น คอ ตวอปกรณตางๆ ไมวาจะเปน Firewall, IPS จะคอยตรวจด traffic ใน network โดยจะมองหา text string หรอขอความใน packet ท>เหมอนกบ signature แลวอปกรณเหลาน;นจะมองวาเปน Attack โดยสวนใหญแลว String จะเปนรปแบบของ SQL Injection เชน “or 1=1” แบบน;เปนแบบเบสกท> Attacker ใชกน ดงน;นมนกจะ match กบ signature ท>มอย ฐานขอมลของ signature สวนใหญจะเปนโจมตอยางงายๆ รปแบบท>วๆไปเทาน;นถงมนจะระบไดวาเปน attack แตเม>ออปกรณรแลว คณคดวามนษยอยาง Attacker จะไมรหรอวารปแบบงายๆจะถกตรวจจบได กทาใหพวกเขาพฒนาความเกงกาจข;นตาม 5555 การหลกเล�ยงเพ�อไมให match กบ signature อยางงายๆ

Attacker สวนมากจะใชเทดนคอยางงายๆเพ>อหลกเล>ยง signature แลวปทางไปสการใชเทคนคข;นโปร บกตอไป มาดวธท>งายๆกน สก 2-3 วธ 1) การเขารหส(Encoding)

เทคนคน; ถาลองไปดประวตการโจมตตางในเก>ยวกบคอมพวเตอรจะเหนวาตองมเทคนคน; เหตผลท>มการใชแบบน; กนมากเพราะบางอปกรณลมเหลวกบการถอดรหส(Decoding), บางตวอาจถอดรหสไดแตไมสามารถทาแบบ real time ได เทคนคการเขารหส เชน URL Encoding, UTF-8 บอยคร; งท>เทคนคพวกน;จะใชซอน attack จากการปองกนแบบ signature ได 2) การใชชองวาง (White Spaces Diversity)

signature ท>ใชปองกน SQL Injection หลายรปแบบจะใชวธแยก expression ดวยชองวาง มนกงายเลยท>จะเกด false positives จานวนมากถามนแยกไมเจอคาอยาง SELECT ท> match กบ signature ชวๆเลย แตกมการท>จะหลกเล>ยงไดเหมอนกนถา signature น;นไมระวงมากนก Attack อาจหลบการตรวจเจอไดโดยแทนท> 1 ชองวางหรอการกด spacebar 1 คร; ง ดวยการใส 2 ชองวาง หรอ 1 ชองวาง+กด tab 1 คร; ง 3) การแบงเปนสวนยอยๆ ของ IP และ TCP

เปนเทคนคการเล>ยง signature อกวธหน>ง ท>จะซอนการโจมตไมให match กบ signature โดยการแบงขอความ(string) ใสลงไปในหลายๆสวนยอยของ packet

Page 13: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

เทคนคการเล�ยง Signature แบบ advance

เม>อไดลองเทคนคขางบนมาแลวแตไมประสบความสาเรจเลย attacker กจะเปล>ยนมาใชเทคนคข;นสงข;น เพ>อเล>ยงฐานขอมลของ signature เรากมาแนะนาข;นท>สงข;นหนอย มาลองดกน 1) การเล�ยง signature สาหรบ OR 1=1

SQL Injection ท>ทกคนเคยใชกนอยาง “or 1=1” น;น อยาคดเลยวาจะไมม signature มาจบมนเปน attack ท>ถกจบมากท>สด แตกโชคราย (หรอโชคดสาหรบ attacker เอ;กๆ) มนมทรกท>มความหมายเดยวกบ (equivalent) “or 1=1” อยาง OR ‘Unusual’ = ‘Unusual’ แตยงไงกตามระบบท>ตรวจจบดๆ กยงสามารถระบรปแบบท>เหมอนกนแบบงายๆน; ได ดงน;น Attacker กตองหาทางเพ>มเปน 2 expressionเพ>อใหดตางไปแตความหมายเหมอนเดม อยางการเพ>ม N เขาไป เชน OR ‘Simple’ = N’Simple’ คาส>งน; เปนการบอก SQL Server วา cast คา ‘Simple’หลง N เปนชนด nvarchar แตการเปรยบเทยบคายงเทาเดม แตยงมวธท>ดกวาน;นโดยเราอาจแยก string ออกเปน 2 ตว คากยงเทาเดม เชน OR ‘Simple’ = ‘Sim’ + ‘ple’

วธน; กอาจเหมอนวาจะดท>สดใหในการเล>ยงไมให signature จบได แตพวก vender สราง regular expression มารบมอโดยจะมองหา “or” หรอ “=” ในขอความแตวธน;กทาใหเกด false positive จานวนมากเลยทเดยว แต attacker กไมกลวหา expression ใหมท>ใหคาเปน true กพอมาใชอยาง “LIKE” ในคาส>ง SQL ท>เปนการเปรยบเทยบคาบางสวน เชน OR ‘Simple LIKE ‘Sim%’

ตวเลอกอ>นกมอยางพวกตวดาเนนการ “>”,”<” OR ‘Simple’ > ‘S’

OR ‘Simple’ < ‘X’

OR 2 > 1 หรอ Attacker อาจใช “IN” หรอ “BETWEEN” statements OR ‘Simple’ IN (‘Simple’)

OR ‘Simple’ BETWEEN ‘R’ AND ‘T’

เม>อเทคนคหลบเล>ยงใหมๆถกพฒนาข;น signature ท>รองรบการโจมตน;นๆกถกคดคนข;นตามดวยแตการพยายามเพ>ม signature ใหครอบคลมทกๆเทคนคน;นกลบทาใหประสทธภาพของระบบลดลงและประมวลผลชาอกตางหากและยงมความเปนไดหากให match กบ SQL Keyword หรอ Meta Character จะเกด false positives ดอยาง URL น;

Page 14: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

กจะเหนวากระบวนการตรวจจบดวย signature อาจจะไมใชวธแกปญหาท>ตรงนกเทาไร 2) การเล�ยง signature ดวยชองวาง หลายๆ signature จะรวมชองวางไปดวย เพราะ string บางอยาง เชน “UNION SELECT” หรอ “EXEC SP_” จะตองมชองวางถงจะทางานไดถกตอง ในตอนตนเรากแนะนาการใชชองวางอยางงายไปแลว แตมนกควรเพ>มเทคนคกนหนอยเพ>อตอกรกบ signature ใหมๆ โดยอาจไมใชชองวางเลยหรอเพ>ม character อะไรเขาไป ตวอยางเชน

…OrigText’ OR ‘Simple’ = ‘Simple’ อาจแทนดวย …OrigText’OR’Simple’=’Simple’ จากท>แสดงขางตนท;ง 2 แบบใหคาเทากนแตแบบท>ลางไมมชองวางทาใหหลบเล>ยง signature ได แตวธน; ใชกบ keyword อยาง “UNION SELECT” ไมได ไมเชนน;นมนจะไมทางาน กยงมวธท>เหมาะสมกบ keyword พวกน; อยางภาษาซถาเพ>อนๆเคยเขยนกนมาบาง กคงทราบวาถาตองการใหสวนใดของโปรแกรมไมแสดงผลการทางานหรอแค comment ไวเฉยๆ กใชสญลกษณเร>มดวย “/*” และจบดวย “*/” วธน; กสามารถใชไดกบ SQL เหมอนกน

SELECT * FROM tblProducts /* List of Prods */ WHERE ProdID = 5 จากความคดน; เรากสามารถ Injection code ไดดงน;

…&ProdID=2 UNION /**/ SELECT name … Signature จะพยายามตรวจจบ “UNION” ท>ตามดวยชองวางแลวตามดวย “SELECT” กจะทาใหไมสามารถจบการโจมตน;ได สวนใหญเคส “/**/” สามารถแทนท>ชองวางเพ>อหลกเล>ยง signature ท> sensitive มากๆ อยาง “SELECT” หรอ “INSERT” SQL keyword พวกน;จะตามดวย 1 ชองวาง จากตวอยางขางบน กจะกลายเปน

…&ProdID=2/**/UNION/**/SELECT/**/name… เทคนคน;สามารถใชกบ Oracle ได แมวา Oracle น;นจะไมยอมใหเวนชองวางหลายๆชองได แตมนกยอมใหใชสญลกษณ comment อยาง …

OrigText’/**/OR/**/’Simple’=’Simple’ สวนเทคนคตอไปเปนการหลบเล>ยงเม>อมการสงคาพารามเตอร 2 คาเขาไปใน SQL เพ>อ Login อยางเชน

Page 15: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

http://site/login.asp?User=X&Pass=Y จาก request น; จะไดคาส>ง query ดงน;

SELECT * FROM Users WHERE User=’X’ AND Pass=’Y’ ในกรณน; เราสามารถใส comment เพ>อกาจดไปซกพารามเตอรนง แลวใสพารามเตอรอ>นเขาไป อยางน;ครบ

…login.asp?User=X’OR’1’/*&Pass=Y*/=’1 กจะ query ไดผลลพธดงน;

SELECT * FROM Users WHERE User=’X’OR’1’/* AND Pass=’*/=’1′ SQL Keyword อยาง “SELECT” และ “INSERT” อาจถกทาเปน signature แตกเจอปญหาเดยวกบ “OR” ซ> งกคอ False Positive ลองคดกนดนะครบ ถาในหวขอ “Contact Us” ของพวกเวบไซต ecommerce ลกคาอาจพมมาวา “I have selected the product, but then had a problem.” Signature มนกจะถกหลอกนกวาเปนการโจมตแตท>จรงแลวไมใชการโจมตอะไรท;งส;น

3) การเล�ยงดวยรปแบบของสตรง อกวธหน>งกคอการแยก string ออกเปนสวนๆ ซ> งสามารถทาไดหลายรปแบบเชนกน แบบแรกเลยกกลบไปท>วธ comment ของภาษาซ แมวามนจะไมทางานเม>อไปใชแทนชองวางใน MySQL แตมนกสามารถแยกคาออกจากกนได เชน

…UN/**/ION/**/ SE/**/LECT/**/… อกวธใชการตอ string(string concatenation) ฐานขอมลสวนใหญจะให user ใชคาส>ง query โดยผานการสง string ไปยง server มนกจะงายๆเลยถาเราวธน;แฝงไปในสตรงท>สงออกไป signature กจะจบไมได ตวอยางงายๆ ใน MS SQL ดวยคาส>ง EXEC จะได

…; EXEC(‘INS’+’ERT INTO…’) โดย keyword “INSERT” ถกแยกเปน 2 สวน ดงน;น signature กจะไมสามารถจบได ยงมตวอยางอ>นๆอกท>คลายกน คอ ใน MS SQL จะม SP_EXECUTESQL เปนเวอชนใหมของ SP_SQLEXEC ซ> งท;งสองน;จะรบ string ท>ม SQL query มา execute ทาใหใชวธน;โจมตได ในฐานขอมลอ>นกพบปญหาคลายๆกน วธน; ยงมความนาสนใจอก คอ string ท>ใชจะถกเขารหสเปนฐาน 16 เพ>อไปรนอกท อยาง “SELECT” จะไดคาเปน “0X73656c656374” ซ>งถาทาแบบน; signature ไมมทางตรวจเจอเลย อกตวอยางท>ดของ MYSQL อยาง

Page 16: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

คาส>ง OPENROWSET ท>อาจถก string concatenation attack แฝงมาแมการโจมตน;จะถกพบแตหลายอปกรณยงไมสามารถใช signature ตรวจเจอได ทาไม Signature เพยงอยางเดยวถงไมเพยงพอ Signature ไมมประสทธภาพพอท>จะตอกรกบ SQL Injection ซกเทาไรนกจากท>ผานๆมา การท>พยายามสราง Signature ใหครอบคลมทกการโจมตน;นจะทาใหย>งแยลงดวย 2 สาเหต คอ performance ลดลงและเกด false positive

1) Performance ภาษา SQL น;นมความยดหยนสง Attacker สามารถเล>ยง signature ไดในหลายๆวธ แมวาเราจะมฐานขอมล signature เปนรอยๆตอ 1 ฐานขอมลซ> งทาใหมนตรวจจบการโจมตได และคณคดหรอเปลาวาองคกรแตละแหงไมไดมแค database ชนดเดยวแนๆ คราวน; signature ท>ไว detect คงเกอบพน แลวทน; performance (throughput & latency) ละครบจะเปนยงไง ลดลงอยางฮวบฮาบแนนอน คงจะไมมใครท>ยอมรบในเร>องไดแนเลย เพราะไมง;นกตองมาเสยคาใชจายในการเพ>ม performance กนอก

2) False Positive อยางใน MSSQL Server ม keyword มากมาย เชน SELECT, INSERT, CREATE, DELETE, FROM, WHERE, OR, AND, LIKE, EXEC, SP_, XP_, SQL, ROWSET, OPEN, BEGIN, END, DECLARE และ Meta Characters อก ไดแก ; — + ‘ ( ) = > < @ แตลองคดดซครบถาคาเหลาน; ถกนามาใชเปน signature หมด คราวน;ขอมลท> user สงมาจะถกบลอกมากกวา attacker โจมตเขามาเสยอก มนคงแยแนนอก คราวน; คณคงตองการความชวยเหลอแลวละ

การขดขวาง SQL Injection ดวย SecureSphere Web Application Firewall การจะพจารณาวาพฤตกรรมท>เกดข;นเปน SQL Injection จรงๆหรอไมน;น อาจตองยนยนจากหลายๆอยาง เชน ผดแลระบบคนหน>ง(ทางานเตมเวลาเพยงแคน>งเผาดและหาวาม security alert อะไรเกดข;นบาง) อาจจะสงเกตเหนวา IDS แจงเตอนวาม SQL Injection เกดข;นมา เขากตองไปมองหาวามพฤตกรรมอะไรผดปกตเกดข;นใน database log files ถาเขาเจอวามกจกรรมของฐานขอมลท>ผดปกตเกดพรอมกบท> signature แจงเตอนมา เขากสามารถม>นใจวากาลงมการโจมตเกดข;น เพ>อระบจรงวาการแจงเตอนน;นไมใช false positive น>เปนจดประสงคหน>งท> SecureSphere Web Application Firewall จะมาชวยคณได ทาใหไมตองจางคนมาน>งเฝาตลอดเวลา โดยอปกรณตวน; จะรวมฐานขอมล signature ของ IPS เขากบการเกบขอมลเปน profile (Dynamic Profiling) และความรนแรงของการโจมตท>พบในแตละ layer จะเช>อมโยงกนโดยอตโนมตอยางถกตองซ> งการปองกนโดย signature อยางเดยวไมสามารถทาได

Advanced IPS ท>จะสามารถระบ characters ของ SQL Injection

Page 17: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

SecureSphere Web Application Firewall น;นถกออกแบบมาเพ>อตรวจจบการรวมกนของ character ท>จะส>อถง SQL Injection. ฐานขอมล signature เก>ยวกบ SQL Injection ของ SecureSphere(ทกชนดฐานขอมล) จะมการอพเดตทกสปดาหโดยทมวจยของ Imperva (The Application Defense Center, ADC) ถาเพ>อนๆ ยงจาไดจากตวอยางแรกๆเลย การโจมตแบบเบสกอยาง “or 1=1” SecureSphere IPS จะบลอกทนทไมไตถามใดๆท;งส;น แตถาเปนเทคนคการเล>ยง signatureแบบตางๆน;น SecureSphere จะอาศยจากประสบการณของมน โดยข;นแรก SecureSphere จะ apply signature ท>จาเปนและไมมากจนเกนไปนก อยางการเล>ยงจาก signature “or 1=1” ดวย “Unusual = Unusual” ภยคกคามอนน; จะถกระรไดโดย SecureSphere IPS signature จะมองหาการใช “or” และ “=” รวมกน ภายใน URL parameter และ Signature Violation กจะแจงเตอนข;นมา แตถา “or” และ “=” เปนคาท>วๆไปใน parameter การ match บน signature น;จะไมถกบลอกแตอาจเกด false positive เปนบางคร; ง SecureSphere จะเกบขอมลการใชงานเพ>อเปนหลกฐานไวใน Dynamic Profiling

Dynamic Profiling ท>จะสามารถระบพารามเตอรท>ผดปกตได เทคโนโลย Dynamic Profiling ของ SecureSphere จะพจารณา traffic อยางอตโนมตแลวสราง เปน “profile” ของไซตน;นๆ โดยจะระบแตละองคประกอบไวในโปรไฟล อาทเชน URLs, HTTP methods, Cookies, Parameter names, Parameter lengths, Parameter types และอ>นๆ Profile จะทาการเกบคาเม>อมการใชงาน Application และ SecureSphere น;นสามารถตรวจจบพฤตกรรมการใชงานเวบไซตและเขาถงฐานขอมลท>ผดปกตได ดงน;นเม>อมการใชงานเวบไซตมากข;น SecureSphere จะมอลกอรทมในการเรยนรและอพเดตคาท>เกบในโปรไฟลอตโนมตโดยเทยบจากพฤตกรรมสวนใหญท>ใชเวบไซตน;นๆ และเรายงสามารถปรบคาเองไดดวยถามนเปน false positive อยางท>ผมไดยกตวอยางในตอนแรกสดเลยเก>ยวกบเวบเก>ยวกบสขภาพท>ตองมการสงคาพารามเตอร sex ซ> งอาจถก SQL Injection ได เชน “OR Unusual = Unusual” แตเรารวา sex มการสงคาเพยง 1 ตวอกษร ถาเรากาหนดไดเรากจะปองกนการโจมตน; ได มาดความสามารถของ SecureSphere Dynamic Profile กน

Page 18: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

SecureSphere Parameter Length Violation Alert กจะแจงเตอน

Dynamic Profile ยงใชในการตรวจสอบการโจมตโดยถามเหตการณใดเกดจาก user คนเดมซ; าๆกน จะทาใหอกความสามารถของ SecureSphere คอ SecureSphere’s Correlated Attack Validation ทางาน Correlated Attack Validation (CAV) โดย CAV จะเช>อมโยงการโจมตหรอ Violation ตางๆท>เกดข;นจาก user คนเดยวกนท>ขามผานดานความปลอดภยเขามาได (IPS, Dynamic Profile ฯลฯ) ถา user คนหน>ง attack แบบเดมๆหลายๆคร; ง เรากจะม>นใจไดเลยวาเขาต;งใจจะโจมตจรงๆ จากตวอยาง CAV เช>อมโยง SQL signature violation กบ Parameter length violation เพ>อตรวจวาเปนการโจมตแบบจรง ทาให CAV สามารถชวยระบการโจมตไดอยางแมนยาย>งเม>อมการใชเทคนคในการเล>ยง signature ข;นสง มนกจะเช>อมโยงทก violation ท>เกดข;นแลวระบไปยง user คนท>โจมตมาได บทสรป

1) SQL Injection คอ การใสหรอแฝงคาส>ง SQL เขาไปใน HTTP request ท>จะสงไปยง Server เพ>อทาการ query, insert, delete หรอใดๆ กบฐานขอมล 2) การเล>ยงไมให SQL Injection ไป match กบ signature แบบงายๆ ม 3 แบบท>ไดแนะนาไป คอ การเขารหส การใชชองวางและการแบงออกเปนสวนยอยๆของ IP และ TCP สวนการเล>ยงแบบข;นสงอาจใชคาส>งท>มความหมายเหมอนกนแตคนละรปแบบการใชการตอสตรง (string concatenation) การใชคอมเมนทท>ใชในภาษาซ เปนตน

Page 19: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

3) การใช Signature Mechanism ไมเพยงพอตอการปองกน SQL Injection เพราะการโจมตมการพฒนาอยเร>อยๆ ถาตองการใหครอบคลมทกการโจมตจะตองเพ>ม signature เขาไปจานวนมากทาใหเกดขอเสยอก 2 ขอใหญ คอ ทาให Performance ลดลงและ เกด False Positive จานวนมาก 4) การปองกน SQL Injection บน SecureSphere Web Application Firewall โดยใช Advanced IPS, Dynamic Profiling และ Correlated Attack Validation ทาใหมประสทธภาพในการปองกนและเกด false positive นอยมาก เทคนคการ hack โดยใช sql injection SELECT * FROM users WHERE userName = $_GET [‘Login Name’] AND password = $_GET [‘password’] จาก code ขางบน น;นหากคนเคยเขยนเวบจะรดวาไมควรใช GET เเต ควรใช POST จะปลอดภยมากกวา $_POST รบขอมลจากการ submit เเตถงอยางน;น method POST กยงสามารถ ยด SQL Injection เขาไปได ***คนหาเวบเปาหมาย โดยใช dorks คนใน google*** dorks คออะไร

Example : Inurl:admin login.asp หรอ Inurl:login.asp etc หนา login สวนใหญจะเปน username : password : ใหกรอก ประมานน; เม>อ submit เเลวมนกจะไป query ใน database หากเราลอง กรอก = '1' = OR '1 = 1' username: 1' = OR '1 = 1 Password: 1' = OR '1 = 1 เวลาโปรแกรมทางาน ผลลพธ ของ SQL จะเปนดงน; SELECT * FROM users WHERE userName = '1'=OR'1=1' หรอถาหากเรารกสามารถกรอกลงไปไดเชน admin AND password = '1'=OR'1=1'

Page 20: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ทาใหเง>อนไขเปนจรงเสมอ ในกรณน;อาจไดขอมลของ User ทกคนในระบบ หรอ ถาเขยนโปรแกรมไมด อาจจะทาให Login ผานเขารหสเรรยบรอย &gt;___&lt; ถาคณคนหา dorks ใน google inurl:article.php?ID= inurl:newsDetail.php?id= inurl:view.php?id= inurl:page.php?id= inurl:productdetail.php?id= สมมตวา เจอเปาหมายท>ผมตองการเจาะเเลว สมมต เปน www.un.com/view.php?id=47 เอามาหา report error กนโดยการ ใส view.php?id=47 order by 1 ถาไม error ใส สมมตวาผมใส view.php?id=47 order by 10 เเลวมน error ข;นมา เลข 10 น;นเเหละครบท>รในตอนน; คอ column. เรากทาการ www.un.com/view.php?id=-47 union select 1,2,3,4,5,6,7,8,9 -- ในurl ของweb browserไรกได จากน;นเรากมองหา บคท>จดท>เราจะเขาถง เอาละครบบางคนอาจสงสยวา เลข 10 เม>อก>เราตองการทาไม select 1,2,3,4,5,6,7,8,9 ตอบคณได สมมตวาเราเจอ table เเลว ลองทดสอบ www.un.com/view.php?id=-47 union select 1,table_name ,3,4,5,6,7,8,9 from information_schema.table --

Page 21: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

SQL Injection SQL Injection คออะไร

การโจมตโดยการยงคาส>ง SQL เขาไปยงเวบใดๆน;นจะทาใหเหนถงขอมลเก>ยวกบ Database ขอดของมนคอใชเพ>อตรวจสอบหาชองโหวในการใสคา Input ในพวก User Interface ของเวบไซต (website) ในทางทฤษฎเวบไซตควรมการตรวจสอบทกคาท>ปอนเขามากอนจะสง query น;นไปยง database แตถาการตรวจสอบ input น;นไมไดสมบรณทกอนหรอทกๆ input ท>เขามา (อาจมเปนรอยเปนพนเลยกได) ละ Attacker อาจจะเปล>ยนแปลงบางสวนของ web request (สวนใหญกพวก URL parameter) เพ>อใหสามารถ query ขอมลจาก database ได ผลของการ query จะถกแสดงในสวนของ HTML response ซ> งสรางเวบไซตน;น มาลองดตวอยาง SQL Injection แบบงายๆกนดกวาครบ โดยเราจะลองโจมตเวบเก>ยวกบสขภาพเวบหน>งในเวบน;จะมการแสดงหมายเลขประกนสงคมของสมาชกในครอบครวโดยอางองจากเพศดวย URL

หลงการสง query น; ไปยง database แลว Web Application จะมองวาเปนคาส>งดงน;

โดย XXX จะหมายถงช>อของครอบครวท>เอามาจากการลอกอนฐานขอมล ถาเวบน; ไมแขงแรงตอการ SQL Injection บนพารามเตอร sex แลวจะทาให Attacker สามารถจดการเวบน;ไดอยางงายไดดวยการ injection คาส>งเขามา เชน

เม>อสง URL น;ไปยง database แลวจะเกดผลอะไรบาง คอมนจะมการ query โดยคาส>ง

Page 22: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ซ>งคาส>งน; จะทาใหมการแสดงขอมลของคนไขท;งหมดในฐานขอมลออกมา แลวแสดงไปยง Attacker SQL Injection น;นสามารถทาใหไดมาซ> ง username เปนพนๆไดในการโจมตเพยงคร; งเดยวเลย ทาใหมนเปนหน>งในภยคกคามท>อนตรายท>สดเก>ยวกบการขโมยขอมลของ web application เลยทเดยว การปองกน SQL Injection ดวย Signature

กระบวนการในปองกนดวย signature น;น คอ ตวอปกรณตางๆ ไมวาจะเปน Firewall, IPS จะคอยตรวจด traffic ใน network โดยจะมองหา text string หรอขอความใน packet ท>เหมอนกบ signature แลวอปกรณเหลาน;นจะมองวาเปน Attack โดยสวนใหญแลว String จะเปนรปแบบของ SQL Injection เชน “or 1=1” แบบน;เปนแบบเบสกท> Attacker ใชกน ดงน;นมนกจะ match กบ signature ท>มอย ฐานขอมลของ signature สวนใหญจะเปนโจมตอยางงายๆ รปแบบท>วๆไปเทาน;นถงมนจะระบไดวาเปน attack แตเม>ออปกรณรแลว คณคดวามนษยอยาง Attacker จะไมรหรอวารปแบบงายๆจะถกตรวจจบได กทาใหพวกเขาพฒนาความเกงกาจข;นตาม 5555 การหลกเล�ยงเพ�อไมให match กบ signature อยางงายๆ

Attacker สวนมากจะใชเทดนคอยางงายๆเพ>อหลกเล>ยง signature แลวปทางไปสการใชเทคนคข;นโปร บกตอไป มาดวธท>งายๆกน สก 2-3 วธ 1) การเขารหส(Encoding)

เทคนคน; ถาลองไปดประวตการโจมตตางในเก>ยวกบคอมพวเตอรจะเหนวาตองมเทคนคน; เหตผลท>มการใชแบบน; กนมากเพราะบางอปกรณลมเหลวกบการถอดรหส(Decoding), บางตวอาจถอดรหสไดแตไมสามารถทาแบบ real time ได เทคนคการเขารหส เชน URL Encoding, UTF-8 บอยคร; งท>เทคนคพวกน;จะใชซอน attack จากการปองกนแบบ signature ได 2) การใชชองวาง (White Spaces Diversity)

signature ท>ใชปองกน SQL Injection หลายรปแบบจะใชวธแยก expression ดวยชองวาง มนกงายเลยท>จะเกด false positives จานวนมากถามนแยกไมเจอคาอยาง SELECT ท> match กบ signature ชวๆเลย แตกมการท>จะหลกเล>ยงไดเหมอนกนถา signature น;นไมระวงมากนก Attack อาจหลบการตรวจเจอไดโดยแทนท> 1 ชองวางหรอการกด spacebar 1 คร; ง ดวยการใส 2 ชองวาง หรอ 1 ชองวาง+กด tab 1 คร; ง 3) การแบงเปนสวนยอยๆ ของ IP และ TCP

เปนเทคนคการเล>ยง signature อกวธหน>ง ท>จะซอนการโจมตไมให match กบ signature โดยการแบงขอความ(string) ใสลงไปในหลายๆสวนยอยของ packet

Page 23: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

เทคนคการเล�ยง Signature แบบ advance

เม>อไดลองเทคนคขางบนมาแลวแตไมประสบความสาเรจเลย attacker กจะเปล>ยนมาใชเทคนคข;นสงข;น เพ>อเล>ยงฐานขอมลของ signature เรากมาแนะนาข;นท>สงข;นหนอย มาลองดกน 1) การเล�ยง signature สาหรบ OR 1=1

SQL Injection ท>ทกคนเคยใชกนอยาง “or 1=1” น;น อยาคดเลยวาจะไมม signature มาจบมนเปน attack ท>ถกจบมากท>สด แตกโชคราย (หรอโชคดสาหรบ attacker เอ;กๆ) มนมทรกท>มความหมายเดยวกบ (equivalent) “or 1=1” อยาง OR ‘Unusual’ = ‘Unusual’ แตยงไงกตามระบบท>ตรวจจบดๆ กยงสามารถระบรปแบบท>เหมอนกนแบบงายๆน; ได ดงน;น Attacker กตองหาทางเพ>มเปน 2 expressionเพ>อใหดตางไปแตความหมายเหมอนเดม อยางการเพ>ม N เขาไป เชน OR ‘Simple’ = N’Simple’ คาส>งน; เปนการบอก SQL Server วา cast คา ‘Simple’หลง N เปนชนด nvarchar แตการเปรยบเทยบคายงเทาเดม แตยงมวธท>ดกวาน;นโดยเราอาจแยก string ออกเปน 2 ตว คากยงเทาเดม เชน OR ‘Simple’ = ‘Sim’ + ‘ple’

วธน; กอาจเหมอนวาจะดท>สดใหในการเล>ยงไมให signature จบได แตพวก vender สราง regular expression มารบมอโดยจะมองหา “or” หรอ “=” ในขอความแตวธน;กทาใหเกด false positive จานวนมากเลยทเดยว แต attacker กไมกลวหา expression ใหมท>ใหคาเปน true กพอมาใชอยาง “LIKE” ในคาส>ง SQL ท>เปนการเปรยบเทยบคาบางสวน เชน OR ‘Simple LIKE ‘Sim%’

ตวเลอกอ>นกมอยางพวกตวดาเนนการ “>”,”<” OR ‘Simple’ > ‘S’

OR ‘Simple’ < ‘X’

OR 2 > 1 หรอ Attacker อาจใช “IN” หรอ “BETWEEN” statements OR ‘Simple’ IN (‘Simple’)

OR ‘Simple’ BETWEEN ‘R’ AND ‘T’

เม>อเทคนคหลบเล>ยงใหมๆถกพฒนาข;น signature ท>รองรบการโจมตน;นๆกถกคดคนข;นตามดวยแตการพยายามเพ>ม signature ใหครอบคลมทกๆเทคนคน;นกลบทาใหประสทธภาพของระบบลดลงและประมวลผลชาอกตางหากและยงมความเปนไดหากให match กบ SQL Keyword หรอ Meta Character จะเกด false positives ดอยาง URL น;

Page 24: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

กจะเหนวากระบวนการตรวจจบดวย signature อาจจะไมใชวธแกปญหาท>ตรงนกเทาไร 2) การเล�ยง signature ดวยชองวาง หลายๆ signature จะรวมชองวางไปดวย เพราะ string บางอยาง เชน “UNION SELECT” หรอ “EXEC SP_” จะตองมชองวางถงจะทางานไดถกตอง ในตอนตนเรากแนะนาการใชชองวางอยางงายไปแลว แตมนกควรเพ>มเทคนคกนหนอยเพ>อตอกรกบ signature ใหมๆ โดยอาจไมใชชองวางเลยหรอเพ>ม character อะไรเขาไป ตวอยางเชน

…OrigText’ OR ‘Simple’ = ‘Simple’ อาจแทนดวย …OrigText’OR’Simple’=’Simple’ จากท>แสดงขางตนท;ง 2 แบบใหคาเทากนแตแบบท>ลางไมมชองวางทาใหหลบเล>ยง signature ได แตวธน; ใชกบ keyword อยาง “UNION SELECT” ไมได ไมเชนน;นมนจะไมทางาน กยงมวธท>เหมาะสมกบ keyword พวกน; อยางภาษาซถาเพ>อนๆเคยเขยนกนมาบาง กคงทราบวาถาตองการใหสวนใดของโปรแกรมไมแสดงผลการทางานหรอแค comment ไวเฉยๆ กใชสญลกษณเร>มดวย “/*” และจบดวย “*/” วธน; กสามารถใชไดกบ SQL เหมอนกน

SELECT * FROM tblProducts /* List of Prods */ WHERE ProdID = 5 จากความคดน; เรากสามารถ Injection code ไดดงน;

…&ProdID=2 UNION /**/ SELECT name … Signature จะพยายามตรวจจบ “UNION” ท>ตามดวยชองวางแลวตามดวย “SELECT” กจะทาใหไมสามารถจบการโจมตน;ได สวนใหญเคส “/**/” สามารถแทนท>ชองวางเพ>อหลกเล>ยง signature ท> sensitive มากๆ อยาง “SELECT” หรอ “INSERT” SQL keyword พวกน;จะตามดวย 1 ชองวาง จากตวอยางขางบน กจะกลายเปน

…&ProdID=2/**/UNION/**/SELECT/**/name… เทคนคน;สามารถใชกบ Oracle ได แมวา Oracle น;นจะไมยอมใหเวนชองวางหลายๆชองได แตมนกยอมใหใชสญลกษณ comment อยาง …

OrigText’/**/OR/**/’Simple’=’Simple’ สวนเทคนคตอไปเปนการหลบเล>ยงเม>อมการสงคาพารามเตอร 2 คาเขาไปใน SQL เพ>อ Login อยางเชน

Page 25: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

http://site/login.asp?User=X&Pass=Y จาก request น; จะไดคาส>ง query ดงน;

SELECT * FROM Users WHERE User=’X’ AND Pass=’Y’ ในกรณน; เราสามารถใส comment เพ>อกาจดไปซกพารามเตอรนง แลวใสพารามเตอรอ>นเขาไป อยางน;ครบ

…login.asp?User=X’OR’1’/*&Pass=Y*/=’1 กจะ query ไดผลลพธดงน;

SELECT * FROM Users WHERE User=’X’OR’1’/* AND Pass=’*/=’1′ SQL Keyword อยาง “SELECT” และ “INSERT” อาจถกทาเปน signature แตกเจอปญหาเดยวกบ “OR” ซ> งกคอ False Positive ลองคดกนดนะครบ ถาในหวขอ “Contact Us” ของพวกเวบไซต ecommerce ลกคาอาจพมมาวา “I have selected the product, but then had a problem.” Signature มนกจะถกหลอกนกวาเปนการโจมตแตท>จรงแลวไมใชการโจมตอะไรท;งส;น

3) การเล�ยงดวยรปแบบของสตรง อกวธหน>งกคอการแยก string ออกเปนสวนๆ ซ> งสามารถทาไดหลายรปแบบเชนกน แบบแรกเลยกกลบไปท>วธ comment ของภาษาซ แมวามนจะไมทางานเม>อไปใชแทนชองวางใน MySQL แตมนกสามารถแยกคาออกจากกนได เชน

…UN/**/ION/**/ SE/**/LECT/**/… อกวธใชการตอ string(string concatenation) ฐานขอมลสวนใหญจะให user ใชคาส>ง query โดยผานการสง string ไปยง server มนกจะงายๆเลยถาเราวธน;แฝงไปในสตรงท>สงออกไป signature กจะจบไมได ตวอยางงายๆ ใน MS SQL ดวยคาส>ง EXEC จะได

…; EXEC(‘INS’+’ERT INTO…’) โดย keyword “INSERT” ถกแยกเปน 2 สวน ดงน;น signature กจะไมสามารถจบได ยงมตวอยางอ>นๆอกท>คลายกน คอ ใน MS SQL จะม SP_EXECUTESQL เปนเวอชนใหมของ SP_SQLEXEC ซ> งท;งสองน;จะรบ string ท>ม SQL query มา execute ทาใหใชวธน;โจมตได ในฐานขอมลอ>นกพบปญหาคลายๆกน วธน; ยงมความนาสนใจอก คอ string ท>ใชจะถกเขารหสเปนฐาน 16 เพ>อไปรนอกท อยาง “SELECT” จะไดคาเปน “0X73656c656374” ซ>งถาทาแบบน; signature ไมมทางตรวจเจอเลย อกตวอยางท>ดของ MYSQL อยาง

Page 26: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

คาส>ง OPENROWSET ท>อาจถก string concatenation attack แฝงมาแมการโจมตน;จะถกพบแตหลายอปกรณยงไมสามารถใช signature ตรวจเจอได ทาไม Signature เพยงอยางเดยวถงไมเพยงพอ Signature ไมมประสทธภาพพอท>จะตอกรกบ SQL Injection ซกเทาไรนกจากท>ผานๆมา การท>พยายามสราง Signature ใหครอบคลมทกการโจมตน;นจะทาใหย>งแยลงดวย 2 สาเหต คอ performance ลดลงและเกด false positive

1) Performance ภาษา SQL น;นมความยดหยนสง Attacker สามารถเล>ยง signature ไดในหลายๆวธ แมวาเราจะมฐานขอมล signature เปนรอยๆตอ 1 ฐานขอมลซ> งทาใหมนตรวจจบการโจมตได และคณคดหรอเปลาวาองคกรแตละแหงไมไดมแค database ชนดเดยวแนๆ คราวน; signature ท>ไว detect คงเกอบพน แลวทน; performance (throughput & latency) ละครบจะเปนยงไง ลดลงอยางฮวบฮาบแนนอน คงจะไมมใครท>ยอมรบในเร>องไดแนเลย เพราะไมง;นกตองมาเสยคาใชจายในการเพ>ม performance กนอก

2) False Positive อยางใน MSSQL Server ม keyword มากมาย เชน SELECT, INSERT, CREATE, DELETE, FROM, WHERE, OR, AND, LIKE, EXEC, SP_, XP_, SQL, ROWSET, OPEN, BEGIN, END, DECLARE และ Meta Characters อก ไดแก ; — + ‘ ( ) = > < @ แตลองคดดซครบถาคาเหลาน; ถกนามาใชเปน signature หมด คราวน;ขอมลท> user สงมาจะถกบลอกมากกวา attacker โจมตเขามาเสยอก มนคงแยแนนอก คราวน; คณคงตองการความชวยเหลอแลวละ

การขดขวาง SQL Injection ดวย SecureSphere Web Application Firewall การจะพจารณาวาพฤตกรรมท>เกดข;นเปน SQL Injection จรงๆหรอไมน;น อาจตองยนยนจากหลายๆอยาง เชน ผดแลระบบคนหน>ง(ทางานเตมเวลาเพยงแคน>งเผาดและหาวาม security alert อะไรเกดข;นบาง) อาจจะสงเกตเหนวา IDS แจงเตอนวาม SQL Injection เกดข;นมา เขากตองไปมองหาวามพฤตกรรมอะไรผดปกตเกดข;นใน database log files ถาเขาเจอวามกจกรรมของฐานขอมลท>ผดปกตเกดพรอมกบท> signature แจงเตอนมา เขากสามารถม>นใจวากาลงมการโจมตเกดข;น เพ>อระบจรงวาการแจงเตอนน;นไมใช false positive น>เปนจดประสงคหน>งท> SecureSphere Web Application Firewall จะมาชวยคณได ทาใหไมตองจางคนมาน>งเฝาตลอดเวลา โดยอปกรณตวน; จะรวมฐานขอมล signature ของ IPS เขากบการเกบขอมลเปน profile (Dynamic Profiling) และความรนแรงของการโจมตท>พบในแตละ layer จะเช>อมโยงกนโดยอตโนมตอยางถกตองซ> งการปองกนโดย signature อยางเดยวไมสามารถทาได

Advanced IPS ท>จะสามารถระบ characters ของ SQL Injection

Page 27: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

SecureSphere Web Application Firewall น;นถกออกแบบมาเพ>อตรวจจบการรวมกนของ character ท>จะส>อถง SQL Injection. ฐานขอมล signature เก>ยวกบ SQL Injection ของ SecureSphere(ทกชนดฐานขอมล) จะมการอพเดตทกสปดาหโดยทมวจยของ Imperva (The Application Defense Center, ADC) ถาเพ>อนๆ ยงจาไดจากตวอยางแรกๆเลย การโจมตแบบเบสกอยาง “or 1=1” SecureSphere IPS จะบลอกทนทไมไตถามใดๆท;งส;น แตถาเปนเทคนคการเล>ยง signatureแบบตางๆน;น SecureSphere จะอาศยจากประสบการณของมน โดยข;นแรก SecureSphere จะ apply signature ท>จาเปนและไมมากจนเกนไปนก อยางการเล>ยงจาก signature “or 1=1” ดวย “Unusual = Unusual” ภยคกคามอนน; จะถกระรไดโดย SecureSphere IPS signature จะมองหาการใช “or” และ “=” รวมกน ภายใน URL parameter และ Signature Violation กจะแจงเตอนข;นมา แตถา “or” และ “=” เปนคาท>วๆไปใน parameter การ match บน signature น;จะไมถกบลอกแตอาจเกด false positive เปนบางคร; ง SecureSphere จะเกบขอมลการใชงานเพ>อเปนหลกฐานไวใน Dynamic Profiling

Dynamic Profiling ท>จะสามารถระบพารามเตอรท>ผดปกตได เทคโนโลย Dynamic Profiling ของ SecureSphere จะพจารณา traffic อยางอตโนมตแลวสราง เปน “profile” ของไซตน;นๆ โดยจะระบแตละองคประกอบไวในโปรไฟล อาทเชน URLs, HTTP methods, Cookies, Parameter names, Parameter lengths, Parameter types และอ>นๆ Profile จะทาการเกบคาเม>อมการใชงาน Application และ SecureSphere น;นสามารถตรวจจบพฤตกรรมการใชงานเวบไซตและเขาถงฐานขอมลท>ผดปกตได ดงน;นเม>อมการใชงานเวบไซตมากข;น SecureSphere จะมอลกอรทมในการเรยนรและอพเดตคาท>เกบในโปรไฟลอตโนมตโดยเทยบจากพฤตกรรมสวนใหญท>ใชเวบไซตน;นๆ และเรายงสามารถปรบคาเองไดดวยถามนเปน false positive อยางท>ผมไดยกตวอยางในตอนแรกสดเลยเก>ยวกบเวบเก>ยวกบสขภาพท>ตองมการสงคาพารามเตอร sex ซ> งอาจถก SQL Injection ได เชน “OR Unusual = Unusual” แตเรารวา sex มการสงคาเพยง 1 ตวอกษร ถาเรากาหนดไดเรากจะปองกนการโจมตน; ได มาดความสามารถของ SecureSphere Dynamic Profile กน

Page 28: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

SecureSphere Parameter Length Violation Alert กจะแจงเตอน

Dynamic Profile ยงใชในการตรวจสอบการโจมตโดยถามเหตการณใดเกดจาก user คนเดมซ; าๆกน จะทาใหอกความสามารถของ SecureSphere คอ SecureSphere’s Correlated Attack Validation ทางาน Correlated Attack Validation (CAV) โดย CAV จะเช>อมโยงการโจมตหรอ Violation ตางๆท>เกดข;นจาก user คนเดยวกนท>ขามผานดานความปลอดภยเขามาได (IPS, Dynamic Profile ฯลฯ) ถา user คนหน>ง attack แบบเดมๆหลายๆคร; ง เรากจะม>นใจไดเลยวาเขาต;งใจจะโจมตจรงๆ จากตวอยาง CAV เช>อมโยง SQL signature violation กบ Parameter length violation เพ>อตรวจวาเปนการโจมตแบบจรง ทาให CAV สามารถชวยระบการโจมตไดอยางแมนยาย>งเม>อมการใชเทคนคในการเล>ยง signature ข;นสง มนกจะเช>อมโยงทก violation ท>เกดข;นแลวระบไปยง user คนท>โจมตมาได บทสรป

1) SQL Injection คอ การใสหรอแฝงคาส>ง SQL เขาไปใน HTTP request ท>จะสงไปยง Server เพ>อทาการ query, insert, delete หรอใดๆ กบฐานขอมล 2) การเล>ยงไมให SQL Injection ไป match กบ signature แบบงายๆ ม 3 แบบท>ไดแนะนาไป คอ การเขารหส การใชชองวางและการแบงออกเปนสวนยอยๆของ IP และ TCP สวนการเล>ยงแบบข;นสงอาจใชคาส>งท>มความหมายเหมอนกนแตคนละรปแบบการใชการตอสตรง (string concatenation) การใชคอมเมนทท>ใชในภาษาซ เปนตน

Page 29: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

3) การใช Signature Mechanism ไมเพยงพอตอการปองกน SQL Injection เพราะการโจมตมการพฒนาอยเร>อยๆ ถาตองการใหครอบคลมทกการโจมตจะตองเพ>ม signature เขาไปจานวนมากทาใหเกดขอเสยอก 2 ขอใหญ คอ ทาให Performance ลดลงและ เกด False Positive จานวนมาก 4) การปองกน SQL Injection บน SecureSphere Web Application Firewall โดยใช Advanced IPS, Dynamic Profiling และ Correlated Attack Validation ทาใหมประสทธภาพในการปองกนและเกด false positive นอยมาก เทคนคการ hack โดยใช sql injection SELECT * FROM users WHERE userName = $_GET [‘Login Name’] AND password = $_GET [‘password’] จาก code ขางบน น;นหากคนเคยเขยนเวบจะรดวาไมควรใช GET เเต ควรใช POST จะปลอดภยมากกวา $_POST รบขอมลจากการ submit เเตถงอยางน;น method POST กยงสามารถ ยด SQL Injection เขาไปได ***คนหาเวบเปาหมาย โดยใช dorks คนใน google*** dorks คออะไร

Example : Inurl:admin login.asp หรอ Inurl:login.asp etc หนา login สวนใหญจะเปน username : password : ใหกรอก ประมานน; เม>อ submit เเลวมนกจะไป query ใน database หากเราลอง กรอก = '1' = OR '1 = 1' username: 1' = OR '1 = 1 Password: 1' = OR '1 = 1 เวลาโปรแกรมทางาน ผลลพธ ของ SQL จะเปนดงน; SELECT * FROM users WHERE userName = '1'=OR'1=1' หรอถาหากเรารกสามารถกรอกลงไปไดเชน admin AND password = '1'=OR'1=1'

Page 30: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ทาใหเง>อนไขเปนจรงเสมอ ในกรณน;อาจไดขอมลของ User ทกคนในระบบ หรอ ถาเขยนโปรแกรมไมด อาจจะทาให Login ผานเขารหสเรรยบรอย &gt;___&lt; ถาคณคนหา dorks ใน google inurl:article.php?ID= inurl:newsDetail.php?id= inurl:view.php?id= inurl:page.php?id= inurl:productdetail.php?id= สมมตวา เจอเปาหมายท>ผมตองการเจาะเเลว สมมต เปน www.un.com/view.php?id=47 เอามาหา report error กนโดยการ ใส view.php?id=47 order by 1 ถาไม error ใส สมมตวาผมใส view.php?id=47 order by 10 เเลวมน error ข;นมา เลข 10 น;นเเหละครบท>รในตอนน; คอ column. เรากทาการ www.un.com/view.php?id=-47 union select 1,2,3,4,5,6,7,8,9 -- ในurl ของweb browserไรกได จากน;นเรากมองหา บคท>จดท>เราจะเขาถง เอาละครบบางคนอาจสงสยวา เลข 10 เม>อก>เราตองการทาไม select 1,2,3,4,5,6,7,8,9 ตอบคณได สมมตวาเราเจอ table เเลว ลองทดสอบ www.un.com/view.php?id=-47 union select 1,table_name ,3,4,5,6,7,8,9 from information_schema.table --

Page 31: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ข/นตอนการใชงานของโปรแกรม

1.

เม>อเขาสหนาโปรแกรม ใหผใช ลองทาการป�มสมครเวบไซด โดยท>คลกไปท> Bot Register

Page 32: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

A. เม>อคลกแลวจะพบวามเมนตางๆใหผใชไดต ;งคา

-ชอง URL ท>ใสเวบเปาหมายท>เปนหนาสมครสมาชก

-ชอง username จะเปนเหมอน prefixname ท>จะสมครหลายรอบแลวมจานวนรอบกากบหลง username

-ชอง username ในสวนของการ config tag name ใหใสตาม name ท>ใสอยในเวบโดยผใชตรวจสอบ โดยกด F12

แลวหา

Page 33: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

หรอผใชอาจคลกขวาท> object ท>ตองการแลวตรวจสอบ

ใหผใชทาการด name ของ object แตละชอง แลวทาการคดลอกไปใสในชองโปรแกรมตาม option ท>ตองการ

Page 34: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ทาจนครบตามชองท>จาเปนตองสมคร

Page 35: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ใหผใชลองสมครเองกอน Tคร; ง เพ>อดผลท>ออกมาแลวทาการกกอปป; เพ>อท>จะเชคในการเซฟรหสผานท>เราเคย

สมครแลวสาเรจ

ทาการกอปป; ผลท>ออกมา

Page 36: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

สงเกตหนาจอ ซ> ง สามารถทาความเขาใจได ตามชองตวอยางท>ตองกรอกจากน;นเม>อเชคเสรจทกอยางใหกด Kill

Page 37: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ตวโปรแกรม จะทาการเซฟขอมล ท>สามารถสมครไดสาเรจแลวเราสามารถนาขอมลน; ไปใชตามวตถประสงคได

Page 38: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม
Page 39: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม
Page 40: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม
Page 41: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม
Page 42: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม
Page 43: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม
Page 44: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ตอไปจะเปนการเชค ไอพ เพ>อทดสอบการปลอมไอพทาใหการป�มการสมครมความปลอดภยมากข;น

Page 45: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

สงเกตเมน Hide ip mode ซ> งพอกดลว ตวโปรแกรมจะทาการปลอมไอพ ซ> ง ใช poxy ของtorในการเขาเวบไซต

ใหผใชลองกด เชคไอพ เพ>อดวา โปรแกรมน;นไดทาการปลอมไอพโดยใช poxy แลว

หลงจากใชโหมดปลอมไอพ สงเกตวาไอพเราถกเปล>ยนแลว

Page 46: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ในท>น;หากรนโปรแกรมไมได แสดงกวา พาทท>ลง tor ไมตรงกบโปรแกรมท>กาหนดคา ใหผใชเปล>ยนท>

อยโปรแกรมโดยใชรปแบบตามตวอยางไปท> firefox.exe จากน;นกด config

ตอไปจะเปนอกโหมดของโปรแกรม น;นกคอการตรวจหาชองโหวในการ by pass ลอคอนเขาสระบบ

Page 47: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

ตวอยางจะเปนเวบท>สรางข;นมาเองโดยมคาส>งในการ select ตรงๆ

โดยหลกการคอ login แลวจะแสดงหนาวาลอคอนสาเรจ

Page 48: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม

โดยท>น>ใหเราทาการ

Page 49: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม
Page 50: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม
Page 51: โครงงานคอมพิวเตอร์ Re Zero · หลักการและเหตุผล เนืองจากเว็บเกมเป็นเว็บทีต้องสมาชิกในการเข้าเล่นเกม