โครงงานคอมพิวเตอร์ re zero ·...
TRANSCRIPT
โครงงานคอมพวเตอร Re Zero
โดย
รหสประจาตว 573020801-7 นางสาวชลธชา ชาวบานใน รหสประจาตว 573020803-3 นายชษณพงษ เรองไพศาล รหสประจาตว 573020818-0 นายมหทธา กจเหลก รหสประจาตว 573021391-5 นายธนวรรธน มธรส รหสประจาตว 573021407-6 นางสาวรชดา ปญญา รหสประจาตว 573021413-1 นายสทธเกยรต ศรประไพ
เสนออาจารย
รศ.ดร.จกรชย โสอนทร
รายงานน; เปนสวนหน>งของการศกษาวชา @AA@B6 INFORMATION AND COMMUNICATION TECHNOLOGY SECURITY
ภาคเรยน T ปการศกษา AUU9 ภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตร
มหาวทยาลยขอนแกน
หลกการและเหตผล
เน>องจากเวบเกมเปนเวบท>ตองสมาชกในการเขาเลนเกม และอาจจะมข;นตอนการสมครสมาชกท>งาย จงทาใหงายตอการรบกวนฐานขอมล ทางเราจงสรางโปรแกรเพ>อศกษาของขอผดพลาดน;วาทางานอยางไรและปองกนอยางไร
วตถประสงค
� เพ>อสรางโปรแกรมในการป; มการสรางสมาชก
� เพ>อโจมตฐานขอมลเวบไซต
� เพ>อศกษาชองโหวของเวบดวยคาส>ง sql command เบ;องตน
ทฟษฎท�เก�ยวของ
Tor คออะไร
Tor เปนบรการท>สรางโดย Electronic Frontier Foundation (EFF): มลนธพรมแดนอเลกทรอนกส (อเอฟเอฟ) ซ> งเปนองคกรไมแสวงกาไรดานสทธในการเขาถงอนเทอรเนต บรการน;ฟร ไมมคาใชจายใดๆ Tor สรางเครอขายพเศษข;นมาโดยอาศยคอมพวเตอรของอาสาสมครจานวนมากท>วโลกสงตอขอมลไปมาหลายคร; ง ทาใหผใหบรการอนเทอรเนตท>เราเช>อมตออยไมสามารถรไดวาเรากาลงเขาชมอะไร (ทาใหเราเขาถงเวบไซตท>ถกบลอคจากภายในประเทศได) และตวเวบไซตท>เรากาลงเขาชมกไมสามารถรไดวาเรากาลงเขาชมจากท>ไหน (ทาใหเราสามารถดเน;อหาท>ตวเวบไซตจากดไมใหผชมบางประเทศดได) การสงตอขอมลดงกลาว เกดข;นหลายคร; งขามไปมาหลายประเทศท>วโลก ทาใหผไมหวงดไมสามารถยอนรอยหาตวตนของเราไดโดยงาย
Tor และ HTTPS?
แผนภาพโดยโครงการ Tor ดานลางเหลาน;แสดงใหเหนวา ใครบางท>จะดขอมลเราได ท>จดไหน และมขอมลอะไรของเราท>เขาดได (โปรดสงเกตในกลองสสม ท>จะบอกวามขอมลอะไรท>จะถกดไดบาง)คลกท>แตละภาพ
เพ>อขยาย หรอดแผนภาพแบบ interactive — คลกท>ปม Tor และ HTTPS มมซายบน เพ>อเปด-ปดการใชงาน — สเขยวคอเปดใชอย สเทาคอปดใชอย
ภาพท> 1 : ไมใช Tor ไมใช HTTPS ทกคนในเครอขายรไดหมดวาเราสงขอมลอะไร
ภาพท> 2 : ไมใช Tor ใชเฉพาะ HTTPS คนไมรวาเราสงขอมลอะไร แตรวาเราคยกบใคร เปดเวบไซตไหน
ภาพท> 3 : ใช Tor แตไมไดใช HTTPS คนไมรวาเราเปดเวบไซตไหน แตมโอกาสจะรขอมลของเราถาเขาไปดกท>ผใหบรการปลายทาง
ภาพท> 4 : ใชท/ง Tor และ HTTPS พรอมกน การดกฟงและตามตวจะยงยากข;นมาก
1.ดาวนโหลด Tor Browser Bundle ใหตรงกบกบระบบปฏบตการท>เราใช – https://www.torproject.org/ (ใหแนใจวากาลงดาวนโหลดโดยตรงจากเวบไซต Tor อยางเปนทางการเทาน;น เพ>อใหปลอดภยจากไวรสหรอมลแวรอ>นๆ)
2. ตดต;ง Tor
3. กดตดต;ง
4. เม>อการตดต;งเสรจส;น กด Finish
5.เปดโปรแกรม Tor Browser Bundel หลงจาก Tor Network Settings ทางาน ใหกดปม Connect เพ>อเร>มเช>อมตอกบเครอขาย Tor
6. กาลงเช>อมตอ
7. หลงเช>อมตอเสรจแลว เบราวเซอร “TorBrowser” จะปรากฏข;นมา
8.ทดสอบวาเช>อมตอกบเครอขาย Tor แลวจรงๆ โดยการเขาไปท>เวบไซต https://check.torproject.org/?lang=th
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 โดยคาส>ง
ซ>งคาส>งน; จะทาใหมการแสดงขอมลของคนไขท;งหมดในฐานขอมลออกมา แลวแสดงไปยง 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
เทคนคการเล�ยง 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 น;
กจะเหนวากระบวนการตรวจจบดวย 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 อยางเชน
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 อยาง
คาส>ง 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
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 กน
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) การใชคอมเมนทท>ใชในภาษาซ เปนตน
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'
ทาใหเง>อนไขเปนจรงเสมอ ในกรณน;อาจไดขอมลของ User ทกคนในระบบ หรอ ถาเขยนโปรแกรมไมด อาจจะทาให Login ผานเขารหสเรรยบรอย >___< ถาคณคนหา 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 --
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 โดยคาส>ง
ซ>งคาส>งน; จะทาใหมการแสดงขอมลของคนไขท;งหมดในฐานขอมลออกมา แลวแสดงไปยง 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
เทคนคการเล�ยง 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 น;
กจะเหนวากระบวนการตรวจจบดวย 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 อยางเชน
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 อยาง
คาส>ง 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
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 กน
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) การใชคอมเมนทท>ใชในภาษาซ เปนตน
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'
ทาใหเง>อนไขเปนจรงเสมอ ในกรณน;อาจไดขอมลของ User ทกคนในระบบ หรอ ถาเขยนโปรแกรมไมด อาจจะทาให Login ผานเขารหสเรรยบรอย >___< ถาคณคนหา 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 --
ข/นตอนการใชงานของโปรแกรม
1.
เม>อเขาสหนาโปรแกรม ใหผใช ลองทาการป�มสมครเวบไซด โดยท>คลกไปท> Bot Register
A. เม>อคลกแลวจะพบวามเมนตางๆใหผใชไดต ;งคา
-ชอง URL ท>ใสเวบเปาหมายท>เปนหนาสมครสมาชก
-ชอง username จะเปนเหมอน prefixname ท>จะสมครหลายรอบแลวมจานวนรอบกากบหลง username
-ชอง username ในสวนของการ config tag name ใหใสตาม name ท>ใสอยในเวบโดยผใชตรวจสอบ โดยกด F12
แลวหา
หรอผใชอาจคลกขวาท> object ท>ตองการแลวตรวจสอบ
ใหผใชทาการด name ของ object แตละชอง แลวทาการคดลอกไปใสในชองโปรแกรมตาม option ท>ตองการ
ทาจนครบตามชองท>จาเปนตองสมคร
ใหผใชลองสมครเองกอน Tคร; ง เพ>อดผลท>ออกมาแลวทาการกกอปป; เพ>อท>จะเชคในการเซฟรหสผานท>เราเคย
สมครแลวสาเรจ
ทาการกอปป; ผลท>ออกมา
สงเกตหนาจอ ซ> ง สามารถทาความเขาใจได ตามชองตวอยางท>ตองกรอกจากน;นเม>อเชคเสรจทกอยางใหกด Kill
ตวโปรแกรม จะทาการเซฟขอมล ท>สามารถสมครไดสาเรจแลวเราสามารถนาขอมลน; ไปใชตามวตถประสงคได
ตอไปจะเปนการเชค ไอพ เพ>อทดสอบการปลอมไอพทาใหการป�มการสมครมความปลอดภยมากข;น
สงเกตเมน Hide ip mode ซ> งพอกดลว ตวโปรแกรมจะทาการปลอมไอพ ซ> ง ใช poxy ของtorในการเขาเวบไซต
ใหผใชลองกด เชคไอพ เพ>อดวา โปรแกรมน;นไดทาการปลอมไอพโดยใช poxy แลว
หลงจากใชโหมดปลอมไอพ สงเกตวาไอพเราถกเปล>ยนแลว
ในท>น;หากรนโปรแกรมไมได แสดงกวา พาทท>ลง tor ไมตรงกบโปรแกรมท>กาหนดคา ใหผใชเปล>ยนท>
อยโปรแกรมโดยใชรปแบบตามตวอยางไปท> firefox.exe จากน;นกด config
ตอไปจะเปนอกโหมดของโปรแกรม น;นกคอการตรวจหาชองโหวในการ by pass ลอคอนเขาสระบบ
ตวอยางจะเปนเวบท>สรางข;นมาเองโดยมคาส>งในการ select ตรงๆ
โดยหลกการคอ login แลวจะแสดงหนาวาลอคอนสาเรจ
โดยท>น>ใหเราทาการ