HTTPS Insecurity Part 2

หลังจาก Part 1 ได้มีการปูพื้นฐานของ PKI/Digital Certificate/HTTPS (SSL protocol) ไปแล้ว ใน Part 2 นี้จะขอพูดถึงความเสี่ยงของ HTTPS ที่สามารถเกิดขึ้นได้ครับ

Case 1: Man-in-the-Middle Attack (MITM)

การดักข้อมูลระหว่างกลางโดยอาจจะใช้เทคนิค เช่น ARP spoofing หรือ DNS spoofing เพื่อทำการ Redirect เหยื่อ (ผู้ใช้งานทั่วไป/User) ไปที่ผู้ร้าย (Attacker) แล้วผู้ร้ายจะเป็นคน forward request ต่างๆของ เหยื่อ ไป Web ที่แท้จริงอีกต่อนึง

ซึ่งการโจมตีแบบ MITM ด้วยเทคนิคทั่วๆไปอย่างเดียวมักจะไม่ค่อยประสบความสำเร็จ เพราะ User มี Security Awareness ค่อนข้างดี (มั้งครับ) และ Web Browser ของ User จะมีการ Alert ว่าเป็น Untrusted Website เนื่องจาก Attacker มักจะใช้ Self-Signed Certificate (คือ Certificate ที่ issue เอง ไม่ใช่ issue มาจาก Trusted CA) มาหลอก User ที่ไม่รู้เรื่อง และคอยแต่จะกด Continue เพื่อติดตั้ง Certificate นั้นเข้าเครื่องตัวเอง หาก User ได้ติดตั้ง Certificate เข้า Trusted List แล้ว ก็สบาย Attacker เลยครับ เพราะว่าในภายหลังหากมีการเข้า Web นี้อีกก็จะไม่ขึ้น Alert เตือนแล้ว

Case ที่ 1 นี้ก็เป็นเรื่องน่าเบื่อที่ผู้ใช้งาน Internet คงได้ยินกันบ่อยๆอยู่แล้วนะครับ

certificate error

Certificate Error – Untrusted Issuer

เพิ่มเติม อีกเทคนิคที่ค่อนข้างดังและคล้ายๆกับ MITM นั้นคือ Man-in-the-Browser(MITB) โดย MITB นั้นคือการดักข้อมูลที่ Web Browser ฝั่ง User เพื่อคอยแก้ไข HTTP Response เพื่อหลอก User ซึ่งหากถูกโจมตีด้วยเทคนิค MITB นี้ HTTPS ก็ไม่สามารถช่วยอะไรได้ครับ เดี๋ยวนี้พวก Malware ส่วนใหญ่จะใช้เทคนิค MITB โดยรายละเอียดเพิ่มเติมสามารถไปอ่านได้ที่บทความก่อนหน้านี้ Banking Trojan ครับ

เพิ่มเติม สำหรับเทคนิค SSLStrip นั้นจะคล้ายๆกับ Case ที่ 1 แต่โดยส่วนตัวผมไม่คิดว่าเกี่ยวกับ Cryptography เท่าไรนัก แต่เดี๋ยวไว้จะเขียนในบทความถัดๆไปครับ

Case 2: Expired Certificate ( Certificate หมดอายุ)

ถ้าจำกันได้ในตอนที่ 1 นั้นได้อธิบายไปแล้วว่า Digital Certificate มี Validity Period อยู่ หากเลยเวลาในช่วงดังกล่าว Web Browser จะทำการแจ้งเตือนว่าเป็น Untrusted Website ซึ่งเป็นหน้าที่ของ Web Admin ที่จะต้องคอยดูแล ต่ออายุให้ Certificate นั้นๆ โดยส่วนตัวเคยเจอกับ Website ของบริษัท/สถาบันการเงินหลายแห่ง ซึ่งก็น่าเห็นใจ Web Admin เหมือนกัน เนื่องจาก หากมี Website ที่จะต้องคอยดูแลเป็นร้อยๆ และแต่ละ Certificate มีอายุ 1 ปี ก็แทบจะต้องต่อกันทุกวันเลยทีเดียว แต่หากจะยืดอายุ Certificate ให้นานขึ้นก็หมายถึงความเสี่ยงที่จะต้องยอมรับมากขึ้นหาก Certificate ถูก Compromised ไปครับ

Case 3: Endpoint get hacked

อีก 1 case สำหรับผู้ใช้งานทั่วไป หากโดนโจมตีไม่ว่าวิธีไหนก็ตามแล้วโดนติดตั้ง Certificate เถื่อนๆทั้งหลายบน Web Browser คราวนี้คงจะวุ่นวายมากทีเดียว เพราะว่าต่อให้เข้า Web ปลอมๆ ก็จะไม่มีอะไรแจ้งเตือนแล้ว หนึ่งในวิธีป้องกันคือการ Review Trusted List บน Web Browser บ่อยๆ ซึ่งคงจะไม่ Effective แน่ๆ ดังนั้นอย่างน้อยเราควรจะป้องกันเครื่องตัวเองให้รอดพ้นจากเงื้อมมือโจรร้าย ด้วยวิธีทั่วๆไปเช่น การ Update Patch, Update Application และ Update Antivirus Signature เป็นประจำ

วิธีการดู List ของ Certificate ที่มีการติดตั้งบนเครื่องเรา ดูได้ตาม Link ด้านล่างครับ

Case 4: Flame Malware

Malware ชื่อดังอย่าง Flame ซึ่งเป็น Malware ที่มุ่งโจมตีไปที่เครื่องในประเทศอิหร่าน โดยใช้ Certificate ซึ่งถูก issue โดย Microsoft CA หลักการในการกระจายตัวของ Flame นั้นเริ่มจากการดักจับ Request Windows Update จากเครื่องที่ยังไม่ติด Flame ใน Network วงเดียวกัน เมื่อเจอแล้วก็จะปลอมตัวเป็น Microsoft Update Server เพื่อกระจายตัวเองไปสู่เครื่องเหล่านั้น ซึ่งถือว่าเป็น MITM รูปแบบหนึ่ง แต่ว่าใช้ Certificate ที่ Valid ทำให้เหยื่อไม่สามารถรู้ตัวได้เลย

หลังจาก Flame ถูกค้นพบ ทาง Microsoft ได้รีบออก Patch เพื่อ Remove CA ที่ถูก Compromised ออกจาก Trusted List ทันที ซึ่งวิธีการป้องกันดูเหมือนจะง่ายมากสำหรับ User ทั่วๆไป แต่สำหรับองค์กรใหญ่ๆที่เครื่องเป็นหมื่น เป็นแสน นั้นคงไม่สามารถทำได้อย่างรวดเร็วแน่

flame certificate

Flame – Certificate Chain
Flame ใช้ Certificate ชื่อ MS ซึ่งดูเหมือนจะถูก Issue จาก Microsoft CA
Ref: http://www.microsoft.com/security/portal/threat/encyclopedia/entry.aspx?Name=Trojan:Win32/Flame.B!cert

Microsoft Security Advisory (2718704) Ref: http://technet.microsoft.com/en-us/security/advisory/2718704

Microsoft Security Advisory (2718704)
Ref: http://technet.microsoft.com/en-us/security/advisory/2718704

Case 5: Compromised Certificate Authority (CA) Server

เมื่อ CA Server ซึ่งเป็น Server สำหรับ Issue Digital Certificate ถูก Compromised นั้น ทำให้มีโอกาสที่ ผู้ร้ายจะสร้าง Rogue Digital Certificate เองแล้วนำไปใช้ ทำให้ Web ของผู้ร้ายมีความน่าเชื่อถือมากขึ้น หรือเลวร้ายกว่านั้น เช่น ข่าวเมื่อประมาณ 2 ปีที่แล้วของ DigiNotar ที่ถูก Hack CA Server โดยคาดว่าผู้ทีอยู่เบื้องหลังคือ รัฐบาลของประเทศอิหร่าน ทำไปเพื่อให้สามารถ monitor/intercept traffic ของกลุ่มผู้ที่คัดค้านรัฐบาลได้ โดยมีการ issue Certificate ของ Web ดังๆมากมายรวมไปถึง Google, Yahoo, WordPress, Twitter, Microsoft ซึ่ง Case ถึงกับทำให้ DigiNotar เสียหายรุนแรงจนต้องปิดบริษัทไป

CASE 6: การสร้าง Rogue CA Certificate

เทคนิคการสร้าง Rogue CA Certificate นี้เป็นเทคนิคที่ดังมากในช่วงปี 2008 – 2009 โดยจะใช้เทคนิคที่เรียกว่า Collision Attack บน Hash Function ที่มี Algorithm เป็น MD5

Hash Function คือวิธีการคำนวณรูปแบบหนึ่งที่จะ map ค่า (Value) ใดๆก็ตามให้เป็นอีกค่าหนึ่งซึ่งมีความยาวจำกัด (Fixed Length) ซึ่งรายละเอียดของ Hash Function นั้นขอไม่ลงรายละเอียด เดี๋ยวจะยาวเกินไปนะครับ

สำหรับ Collision Attack คือ การโจมตีที่พยายามหาค่า (Value) ใดๆก็ตาม 2 ค่าที่ process ผ่าน Hash Function แล้วได้ค่าเดียวกัน ตามตัวอย่างด้านล่าง “John Smith” และ “Sandra Dee” จะมี Hash Value ที่ตรงกันนั่นคือ “02″

MD5 เป็น Hash Function Algorithm ชนิดหนึ่ง ซึ่งปัจจุบันถือว่าไม่ปลอดภัยแล้ว จึงเปลี่ยนมาใช้ Algorithm ที่เป็น SHA แทน

การสร้าง Rogue CA Certificate โดยคร่าวๆนั้นเริ่มจาก

1a. Attacker เลือก CA ที่มีความน่าเชื่อถือที่ใช้ MD5 เป็น Hashing Algorithm สร้าง Digital Certificate ให้ โดยขั้นตอนนี้เป็นการ Request Certificate จาก CA ตามปกติ เช่น Request CA ให้สร้าง Web Server Certificate ซักอัน

1b. Attacker สร้าง Rogue CA Certificate ขึ้นมาโดยระบุประเภทของ Certificate นี้ให้ใช้สำหรับ Intermediate CA Server (หากเป็นประเภทอื่น Certificate นี้จะไม่สามารถนำไป Issue Certificate อื่นๆอีกได้) ซึ่ง Attribute ต่างๆของ Rogue CA Certificate นี้จะถูกคำนวณมาอย่างดี เพื่อให้มีค่า MD5 Hash value ที่ตรงกันกับ Digital Certificate ที่ได้จากข้อ 1a.

2. เมื่อสร้าง Rogue CA Certificate และนำไปใช้กับ Rouge CA  Server แล้ว Attacker จะสามารถ Issue Digital Certificate ที่น่าเชื่อถือให้กับ Web อะไรก็ได้ตามที่ Attacker ต้องการ โดยที่การ Verify Certificate Chain จะไป Trust กันที่ระดับ CA ในข้อ 1a ซึ่ง Web Browser ทั่วๆไปจะมี Certificate ของ CA นั้นๆ install อยู่ใน Trusted List อยู่แล้ว

3. ขั้นตอนหลอกเหยื่อให้เชื่อถือโดยการสร้าง Web ปลอมๆขึ้นมาแล้วนำ Certificate ที่ Sign โดย Rogue CA Server ไปใช้งานเพื่อหลอกให้ User เข้ามาโดยส่วนใหญ่มักจะใช้พวกวิธี Phishing หรือการทำ DNS Spoofing ซึ่งคือวิธีการทำให้เครื่อง User resolve DNS แล้วได้เป็น IP address ของเครื่อง Attacker แทนที่จะเป็นเครื่องที่ถูกต้องจริงๆ

สำหรับในตอนต่อไปเราจะมาดูกันว่าในฐานะที่เราเป็น User ผู้ใช้งานทั่วไป หรือ Admin ผู้ดูแลระบบ ควรจะต้องทำอย่างไรบ้าง

Be Anonymous — ตอนที่ 1 Search Privately

ผมมั่นใจว่าทุกท่านน่าจะเคยใช้งาน Search Engine เพื่อค้นหาข้อมูลที่เราสนใจไม่ว่าจะเพื่อการทำงานหรือว่าความสนใจส่วนตัวและ Search Engine ที่นิยมกันก็เห็นจะไม่พ้นพวก Google หรือ Bing ถึงแม้ว่า Search Engine เหล่านี้จะให้ผู้ใช้งานได้ใช้งานกันแบบฟรีๆ แต่จริงๆแล้ว Search Engine พวกนี้มีการจับตาและติดตามการ Search ของผู้ใช้งานตลอดเวลาที่ทำการค้นหา และข้อมูลที่ได้จากการ Search ก็จะถูกเก็บรวบรวมเอาไปวิเคราะห์ ข้อมูลที่เกี่ยวกับตัวเรา,ความสนใจของเรา, Web Activity ของเราก็จะถูกเอาไปขาย พูดให้ดูหรูๆก็คือเอาไปใช้ในงานด้าน Marketing หรือ Advertisement เพื่อจะได้ Generate รายได้แม้จะเป็นบริการที่เปิดให้ใช้งานฟรี

ปัญหาของเราก็คือทุกครั้งที่เราทำการค้นหาข้อมูลพวก Keyword ที่เราใช้, IP Address, Application ที่เราใช้อยู่และข้อมูลที่ Cookie ที่ Search Engine ทิ้งไว้ที่เครื่องของเราเพื่อทำการ Track Activity ของเราก็จะถูกส่งไปหา Search Engine ด้วย ทีนี้เราจะแก้ไขหรือบังคับไม่ให้มีการส่งข้อมูลพวกนี้ได้หรือไม่ คำตอบคือไม่ได้ครับ เราต้องเลิกใช้จึงจะแก้ปัญหานี้ได้ แต่วิธีนี้เป็นคำตอบที่ยากที่จะเป็นไปได้ในปัจจุบัน

Incognito Lab ขอแนะนำให้ผู้ใช้งานได้ลองใช้ Search Engine ที่มีจุดแข็งเรื่อง Privacy โดยจะไม่มีการทำการเก็บข้อมูลการ Search จากฝั่งผู้ใช้งานเลย

1. ixquick มีผลการค้นหาที่ดี และ Privacy Policy ที่น่าใช้งานมาก
search1 หากสงสัยว่า Privacy Policy ของ ixquick เป็นอย่างไรให้ไปดูได้ที่นี่ ixquick Privacy Policy เลยครับ

2. DuckDuckGo
search2
นอกเหนือจากเรื่อง Privacy แล้ว DuckDuckGo ยังช่วยในการ Forward คำค้นหาไปยัง Target Web ได้อีกครับ รายละเอียดแนะนำให้ดูได้จาก About DuckDuckGo

การ Search อย่างปลอดภัยไม่ได้มีใช้งานเฉพาะผู้ใช้งานทั่วไปเท่านั้น แม้แต่ Security Professionals หรือพวก Hackers ก็คำนึงถึงเรื่อง Privacy จากการ Search เป็นอย่างยิ่ง

Instagram Insecurity (ความไม่ปลอดภัยของ Instagram)

Follow Facebook ของเราเพื่อรับข่าวสารและเป็นกำลังใจได้ที่
https://www.facebook.com/secure.thailandนะครับ พวกเราอยากเห็นคนไทยตื่นรู้เรื่อง Information Security กันให้มากขึ้น

หลังจากที่เราได้เคยแนะนำขั้นตอนการ setup ค่าความเป็นส่วนตัวบน Facebook อย่างไรให้ปลอดภัยไปแล้ว โอกาสนี้ Incognito Lab จึงอยากแจ้งเตือนและบอกกล่าวถึงภัยและการป้องกัน Social Network อีกเจ้าหนึ่งที่ได้รับความนิยมไม่แพ้กันนั่นก็คือ Instagram
instagram
Instagram เป็น Social Network ที่มีผู้ใช้ในประเทศไทยอยู่เป็นจำนวนมากถึงขนาดที่ว่า Top 15 ของสถานที่ที่ถูกถ่ายภาพลง Instagram มีอยู่ 3 ที่ที่อยู่ในประเทศไทยคือท่าอากาศสุวรรณภูมิ,Siam Paragon และ Terminal 21 ซึ่งทางเราเห็นว่าควรจะเผยแพร่บทความชิ้นนี้กับผู้ใช้งานคนไทยเป็นอย่างยิ่ง

ความไม่ปลอดภัยของ Instagram

1. Instagram เสี่ยงต่อการถูกขโมย Account หากใช้งานอยู่บนเครือข่ายที่ไม่มีความปลอดภัย
ขณะที่ทำการเขียนบทความชิ้นนี้ผมได้ทดสอบกับ Instagram version ล่าสุดคือ 3.4.2 บน non-jail-broken iPhone ที่ใช้ iOS 6.1 โดยทำการ connect เข้ากับ Wireless Network ผลที่ได้พบว่า Instagram บนเครื่อง iPhone ทำการแลกเปลี่ยนข้อมูลกับ Server ของทาง Instagram โดยไม่มีการเข้ารหัสเลย ยกเว้น Login Page ซึ่งเป็นอะไรที่แย่มากเนื่องจากวิธีการขโมย Account ไม่จำเป็นต้องรู้ Password
ig2
จากรูป ผมทำการดักจับข้อมูลของ Instagram และส่งข้อมูลไปบอก Server ว่าต้องการเปลี่ยน email ที่ผูกกับ Account อันนี้เป็น email อื่น (สังเกตตำแหน่งที่ทำการ Censor)ผลที่ได้ก็คือ Account ที่ใช้งานจะถูกเปลี่ยน email ที่ผูกไว้ หาก email ถูกเปลี่ยนเป็น email ของ Hacker เค้าก็ไม่จำเป็นต้องรู้ Password ของเราครับ เนื่องจากสามารถสั่ง Reset Password ได้ จากนั้น Instagram Account ก็จะถูกยึดโดยไม่ต้องใช้วิธีการอะไรที่ซับซ้อนช่องโหว่ดังกล่าวถูกรายงานตั้งแต่ปลายปีที่แล้วโดยบริษัทด้าน Security หมายเลยหนึ่งของ Denmark ชื่อ Secuniaแต่แม้จนกระทั่งตอนนี้ทาง Instagram ก็ยังไม่ได้แก้ไขอะไร

ป้องกัน:
อย่าใช้ Instagram ผ่าน Wireless Network ที่ไม่รู้จัก หรือไม่แน่ใจในความปลอดภัย และถ้าไม่จำเป็นอย่าเปิด Wi-Fi ทิ้งไว้

2. โดยปกติ Instagram จะทำการ Public รูปที่ Upload โดยอัตโนมัติ
ig1_1
ถ้าหากไม่มีการ Setting ที่เหมาะสม(Photos are Private เป็น OFF) คนที่ไม่ได้เป็น Follower ก็สามารถเข้ามาดูรูปได้ อยากจะแนะนำว่าถ้าไม่ได้เป็น Celeb หรือดารา ก็ควรจะไปปิดค่า Public นี้ครับ (แต่ทาง Incognito Lab ขอเชียร์นะครับ ถ้าผู้อ่านเป็น Celeb หรือดาราก็ควรจะ Set ค่านี้ด้วยจะได้บังคับ Follower และโชว์ความรู้เรื่อง IT Security Awareness) เรามาดูตัวอย่างกัน

จากรูป Instagram ของ Kimberley(ผมชอบเป็นการส่วนตัวครับ ^^) ไม่ได้ทำการ Set เป็น Private คนที่ไม่ได้ Login หรือไม่ได้เป็น Follower ก็เข้าไปดูรูปได้ ผมทำการ Access ผ่าน Web Browser ครับโดยผู้อ่านสามารถทดสอบได้โดยพิมพ์ http://instagram.com/USER_ID โดยไม่ต้องใช้โปรแกรม Instagram
ig1_2

แต่ถ้าเป็นกรณีนี้ Instagram ที่ set เป็น Private จำเป็นต้องเป็น Follower ก่อนจีงจะสามารถดูรูปได้
ig1_3
ป้องกัน:
ให้ Set ค่า Photos Are Private เป็น ON ข้อดีของการ Setting นี้ก็คือหากทำการ Search ก็จะไม่พบรูปของเราด้วยถ้าคน Search ไม่ยอมเป็น Follower

3. Page Register ของ Instagram ทำการแสดงค่า Password ที่พิมพ์เป็น Plaintext
ประเด็นนี้ผมไม่เข้าใจว่าทำไม Instagram ถึงพลาดไป ตอน Register ถ้าหากทำบน Mobile Phone ก็ระวังคนแอบดูกันหน่อยนะครับ
ig3
ป้องกัน:
ทำได้แค่หวังให้ Instragram แก้ไข

4. การ Share ภาพไปยัง Social Network อื่น ค่าความปลอดภัยจะแปรผันตาม Socail Network นั้น ยกตัวอย่างเช่นรูปใน Instagram ทำการ Set ค่า Private ไว้เรียบร้อยดี
ig4_1
แต่ถ้าผู้ใช้ทำการ Share ภาพใดภาพหนึ่งไปยัง Facebook ที่ทำการ Set ค่า Privacy ไม่ดีเลย ค่าความปลอดภัยของ Instragram ก็จะไม่ช่วยอะไร
ป้องกัน:
จากรูปก่อนทำการ Enable Instagram บน Facebook ให้ทำการ Set ค่าให้ดีว่าอนุญาตให้ใครที่สามารถดูได้บ้าง ไม่ควรเปิดแบบ Public
ig4_2
และทำการ Set ค่า Security หรือ Privacy ของ Social Network ปลายทางนั้นๆให้ดี เช่น Facebook ผู้อ่านสามารถอ่านเพิ่มเติมได้ที่บทความนี้ครับ Facebook Security Part1 : Privacy

5. ข้อมูล Backup สามารถทำให้ Access Instagram Account ได้
เนื่องจากมันเก็บค่าที่เรียกว่า Cookie ที่ Server จะใช้เป็น Identity ในการยืนยันตัวตน จากรูปด้านล่างค่า Cookie ถูกเก็บอยู่ใน Backup ของ iPhone ที่ไม่มีการเข้ารหัส แต่เก็บอยู่ในรูปของ Binary Format แสดงเป็นเลขฐานสอง ถ้าหากตกอยู่ในมือ Hacker รับรองได้ว่าถูกขโมย Account อย่างแน่นอน
ig5
ป้องกัน:
อย่าทำ iPhone หาย, อย่า jailbreak เครื่อง และทำการเข้ารหัสข้อมูลที่ Backup ไว้ด้วยตามรูปให้ืำทำการเลือก Encrypt iPhone Backup
ig5_2

น่าตกใจเป็นอย่างยิ่งที่ Social Network ระดับโลกอย่าง Instagram จะมีช่องโหว่ที่ผู้ใช้งานควรระมัดระวังอยู่หลายจุด คงต้องรอดูเวลาว่า Facebook ซึ่งทำการ Acquire Instagram ไปแล้วจะปรับปรุงให้ดีขึ้นมากน้อยอย่างไรครับ

Don’t get hooked with phishing fraud

จากเรื่อง Phishing ที่หลอกเรื่องการโหลด Sticker ของ Line ฟรี นำไปสู่การขโมย Apple ID [http://www.pantip.com/cafe/mbk/topic/T12997206/T12997206.html]

บทความนี้เราจะแสดงให้เห็นว่าจริงๆแล้วการสร้าง Phishing Website นั้นง่ายมาก ถึงขนาดที่ว่าผู้ร้ายไม่ต้องมีความสามารถในการเขียนโปรแกรมก็ทำได้นะครับ ซึ่งหาก User ไม่มี Awareness ที่มากพอก็อาจตกเป็นเหยื่อของผู้ร้ายได้ง่ายนะครับ

การทำ Phishing นั้นถือว่าเป็นการโจมตีในรูปแบบที่เรียกว่า Social Engineering ซึ่งเป็นวิธีการที่เน้นโจมตีไปที่คน [Human] เพื่อหลอกล่อให้เปิดเผยข้อมูลลับออกมา วิธีการของ Social Engineering รวมไปถึง Shoulder Surfing ซึ่งคือแอบมองด้านหลังนั่นเอง หรือแม้แต่ Dumpster Diving ซึ่งคือการค้นหาข้อมูลในถังขยะที่อาจจะมีคนนำกระดาษที่มีข้อมูลสำคัญมาทิ้งไว้

เริ่มวิธีการสร้าง Phishing Website โดย Tool ที่ชื่อว่า Social-Engineer Toolkit (SET)

1. หน้าแรกหลังจากเปิดโปรแกรม SET ขึ้นมา เป็นรายละเอียดทั่วๆไปเกี่ยวกับ SET โดยมีผู้พัฒนาคือ David Kennedy ซึ่งเป็น 1 ในผู้ก่อตั้ง DerbyCon และผูู้พัฒนา Fast-Track ด้วย รวมถึงร่วมก่อตั้ง www.social-engineer.org แต่ในภายหลังได้ก่อตั้งบริษัทของตัวเองชื่อ TrustedSec เเละได้เขียนหนังสือชื่อ Metasploit: The Penetration Tester’s Guide ซึ่งผมเชื่อว่าคนในวงการจะต้องเคยเห็นหนังสือเล่มนี้แน่นอน

set

 Metasploit: The Penetration Tester’s Guide: A Penetration Tester’s Guide

Metasploit: The Penetration Tester’s Guide

2. เลือก 1) Social-Engineering Attacks

menu1

3. จะมี menu ให้เลือกมากมาย ซึ่ง menu เหล่านี้ก็คือ option ต่างๆสำหรับไว้หลอกล่อเหยื่อนั่นเอง ซึ่ง Tool นี้จะ Support หลายๆวิธี ซึ่งในบทความนี้จะขอเลือก 2) Website Attack Vectors

menu2

4. การใช้ Website หลอกเหยื่อก็มีหลาย option เพื่อความสะดวก ไม่ว่าจะเป็น เอา Template ที่มีอยู่แล้วมาใช้ หรือ นำ URL Website ที่ต้องการมาใส่ แม้แต่กระทั่งใส่ code เองก็ทำได้ ซึ่งในที่นี้ขอเลือก 2) Site Cloner

menu4

5. เมื่อเลือกวิธีการ Clone Site มาแล้ว จะต้องใส่ข้อมูลเพิ่มเติมคือเครื่องที่จะใช้ในการรับข้อมูลตอนที่เหยื่อโดนหลอก ซึ่งในที่นี้ผมทำการทดลองบนเครื่องของผมเอง ดังนั้นใส่เป็น Localhost ครับ

destination

6. ถัดมาขั้นตอนสำคัญ คือจะให้ Clone จาก Site ไหนมาดี ตาม Case Study นี้แล้วคงเป็น Web ไหนไม่ได้นอกจากหน้า Web ของ Apple ที่มีให้ใส่ Apple ID

target

7. เมื่อใส่ข้อมูลเรียบร้อยทั้งหมดแล้ว Tool จะทำหน้าที่ Clone หน้า Web ขึ่้นมา รอให้เหยื่อเข้า Web และ Tool ก็จะคอยรอรับ input จากเหยื่อด้วย

waiting

8. หน้า Phishing Website ที่เพิ่งสร้างเรียบร้อย

fake

  • สังเกตที่ URL นะครับ ในที่นี้เป็น IP ของเครื่องผม แต่ถ้าเป็นกรณีที่จะโจมตีจริงๆก็จะมีการจด Domain ที่มีความน่าเชื่อถือมากขึ้นเพื่อหลอกให้เหยื่อหลงกลได้
  • ไม่มีการใช้ SSL Certificate โดย Default ของ Tool [หากใครไม่รู้จัก SSL ก็คงเคยได้ยินที่คนเข้าบอกกันว่ารูปแม่กุญแจหรือ HTTPS น่ะครับ] ซึ่งถ้าทำจริงๆแล้วก็สามารถใส่ SSL Certificate เข้าไปเพื่อเพิ่มความน่าเชื่อถืออีกขั้นหนึ่งได้ แต่การหา SSL Certificate นั้นถ้าทำแบบไม่ลงทุนมาก็จะใช้ Self-Signed Certificate ซึ่งเวลาเราเข้า Website แล้ว Browser จะเตือนว่าเป็น Invalid Certificate ซึ่งคนที่ขาด Awareness ก็มักจะกด Exception เพื่อเข้า Website น่ะครับ หรือหากผู้ร้ายคิดจะใช้ SSL ที่มีความน่าเชื่อถือก็อาจจะใช้วิธีการซื้อ SSL Certificate จาก Certificate Authority (CA) ที่ไม่ค่อยเคร่งในเรื่องการ Verify ผู้ซื้อมากนัก ซึ่งตรงนี้แหละที่ทำให้ Security Awareness ถือว่าสำคัญมาก
Invalid SSL Certificate

Invalid SSL Certificate

9. ลอง Login ผ่านหน้า Phishing Website

fake-2

10. เมื่อมีการใส่ข้อมูล Username และ Password เรียบร้อยและกด Sign in หน้า Web ก็จะถูก Redirect กลับมาสู่หน้าจริงๆของ Apple เพื่อหลอกให้เหยื่อคิดว่าอาจจะแค่เป็นการใส่ Password ผิดเท่านั้น

redirect

11. แต่สำหรับฝั่งผู้ร้ายนั้นก็จะได้ข้อมูล Username และ Password ของเหยื่อ ไปเรียบร้อยแล้วครับ

data capture

บทความนี้เขียนละเอียดไม่ใช่เพื่อให้คนเอาไปใช้ในทางที่ผิดนะครับ ผมอยากให้ทุกคนทราบว่ามันง่ายมากแค่ไหนสำหรับการทำ Phishing Website ขั้นตอนทั้งหมดนี้อาจจะใช้เวลาแค่ 1-2 นาทีก็เรียบร้อยแล้ว ซึ่งต่อให้ระบบมีการป้องกันที่สุดยอดแค่ไหน หาก User ยังไม่มี Security Awareness ที่มากพอ User ก็ยังมีโอกาสที่จะโดนหลอกได้อยู่ดี ดังคำที่บอกว่า “Human is the weakest link in security chain” นั่นเอง

Banking Trojan

ช่วง 1-2 ปีที่ผ่านมามี virus/trojan หรือเรียกโดยรวมว่า malware ประเภทหนึ่งที่ผู้เชี่ยวชาญให้คำจำกัดความว่า highly sophisticated ซึ่งหมายถึงมีความซับซ้อนสูง malware ที่กล่าวถึงในบทความนี้ถูกสร้างขึ้นมาเพื่อทำการโจรกรรมการทำธุรกรรมออนไลน์เป็นหลัก ทั้ง US และหลายประเทศใน EU ถ้าดูจากภาพด้านล่างซึ่งได้มาจาก รายงาน F-Secure Threat Report H1-2012
อย่างไรก็ตามผมรู้สึกว่าสถานการณ์มันเริ่มจะไม่ค่อยจะดีครับ เพราะมีการโจมตีบ่อยขึ้นในประเทศไทย ซึ่งธนาคารชั้นนำหลายแห่งในประเทศไทยเคยเผชิญกับ Zeus/SpyEye มาแล้วทั้งสิ้น บทความชิ้นนี้จึงถูกเขียนขึ้นเพื่อให้ความรู้และแจ้งเตือนกับผู้ใช้งานทุกท่านให้ระมัดระวังกันมากยิ่งขึ้น

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

ปกติแล้วการเข้าใช้งาน Internet Banking ผู้เข้าใช้งานก็จะทำการเปิด Web Browser เช่น IE,Firefox,Chrome หริอ Safari จากนั้นก็พิมพ์ URL ของระบบ Internet Banking ที่ผู้ใช้งานเปิดใช้บริการกับสถาบันการเงินนั้นๆที่ตนเองเป็นลูกค้า ทำการกรอก Username และ Password ก็จะทำการเข้าสู่ระบบได้ ทีนี้พอมาถึงช่วงที่ต้องทำการโอนเงินไปบัญชีอื่นๆ อาจจะเป็นบัญชีของผู้ใช้เองหรือบัญชีบุคคลที่สาม จะมีระบบป้องกันที่เรียกว่า Multifactor Authentication ซึ่งจะใช้การระบุตัวตนว่าผู้ใช้เป็นเจ้าของบัญชีนั้นจริงๆ หาก Username และ Password สูญหายหรือบุคคลอื่นทราบก็จะสามารถเข้าสู่บัญชีของลูกค้าคนนั้นได้ แต่ก็ทำธุรกรรมที่สำคัญไม่ได้ สิ่งที่ธนาคารทุกที่นิยมใช้กันก็คือ รหัสผ่านแบบครั้งเดียว Time-based OTP(One Time Password) ซึ่งจะส่งรหัส OTP มาทาง SMS ผ่านทางโทรศัพท์มือถือที่ผู้ใช้หรือเจ้าของบัญชีทำการลงทะเบียนกับธนาคาร การทำธุรกรรมที่สำคัญจึงจำเป็นต้องใช้ OTP ก่อนจึงจะทำธุรกรรมนั้นๆได้ หาก Username หรือ Password หายและ OTP ถูกดักจับได้ ก็ไม่สามารถใช้งานได้อีกเพราะ OTP จะใช้งานแค่ครั้งเดียว ภายใต้เวลาที่จำกัด วิธีการนี้ดูเหมือนจะปลอดภัยก็จริง แต่ Malware ที่กล่าวถึงมันสามารถเอาชนะและจัดการยึดบัญชีของผู้ใช้ได้อยู่ดี

รู้จักกับ Zeus/SpyEye
ทั้ง 2 ตัวจัดเป็น Banking Trojan ถูกสร้างและออกแบบมาเพื่อโจมตี Internet Banking มีความสลับซับซ้อน รูปแบบการโจมตีมีความยืดหยุ่น มีความสามารถในการพรางตัวสูง ทำงานเป็นอิสระ และสามารถทำงานผ่านการควบคุมจาก C&C (Command and Control Centre) สามารถเรียนรู้พฤติกรรมผู้ใช้งาน เลือกการโจมตีให้ใกล้เคียงกับการใช้งานปกติของผู้ใช้ สามารถอัพเดตตัวเองได้ สามารถปรับเปลี่ยนตัวเองไม่ให้โปรแกรม Antivirus ตรวจจับได้(Advanced Polymorphic Stealth Technique)

Ref:F-Secure Cyber Espionage


Zeus/SpyEye โจมตีเหยื่ออย่างไร ขอแบ่งเป็นช่วงการโจมตีย่อยๆดังนี้
1. Infection Phrase

Link หรือ file แนบใน spam mail ซึ่งมีหลายประเภทเช่น file ประเภท .exe,.pdf และ Microsoft Office, การเข้าไป web ที่ถูก hacker โจมตีและฝัง script ไว้, portable USB drive ที่ติดไวรัสหรือการถูกโจมตีผ่านเครือข่าย Internet เป็นช่องทางแรกที่ Zeus/SpyEye จะเข้ามาสู่เครื่องของเรา โดยจะทำการหาช่องโหว่ของเครื่องผู้ใช้เริ่มจาก Java Runtime, Adobe Flash, Adobe Reader และตัวระบบปฏิบัติการโดยเฉพาะ MS Window หลังจากที่พบช่องโหว่แล้ว Zeus/SpyEye จะทำการติดตั้งในเครื่องของผู้ใช้แบบเงียบๆ
2. Attack Phrase
Zeus/SpyEye จะรออย่างเงียบๆในเครื่องผู้ใช้งาน เมื่อผู้ใช้งานเข้าระบบ Internet Banking เจ้า Zeus/SpyEye จะทำการตรวจสอบการใช้งานว่า เป็นบัญชีประเภทไหน ธนาคารอะไร จำนวนเงินเท่าไร และถ้าค่าต่างๆเหล่านี้เป็นค่าที่ Zeus/SpyEye สามารถโจมตีได้มันจะทำการติดต่อกับ Command and Control Centre และใช้เทคนิคที่เรียกว่า HTML Injection เปลี่ยนแปลงสิ่งต่างๆ เพื่อหลอกลวงและซ่อนสิ่งที่ผู้ใช้เห็นผ่าน Browser ซึ่งแต่ละขั้นตอนสามารถอธิบายได้ดังนี้

2.1 เมื่อ User เข้าไปที่ URL ของ Internet Banking จากนั้นป้อน username และ password, Zeus/SpyEye จะเริ่มทำงาน

2.2 ขั้นตอนนี้มีความหลากหลายแล้วแต่ประเภทย่อย(Variance)ของ Zeus/SpyEye ที่เจอครับ โดยประสบการณ์ที่เคยพบส่วนใหญ่ Zeus/SpyEye จะปลอมหน้าจอ หรือบิดเบือนบางสิ่งบางอย่างบน Page ปกติเพื่อหลอก User โดยหน้าจอที่เห็นอาจจะเป็นหน้าจอที่แสดงข้อผิดพลาด หรือหน้าจอบอกให้รอสักครู่เพื่อทำการถ่วงเวลา User เอาไว้ User จะไม่สามารถรู้ได้ว่า ณ ขณะนี้กำลังถูก Zeus/SpyEye เล่นงานอยู่ เนื่องจาก URL ก็เป็น URL ของธนาคาร มีเพียงแต่หน้าเว็บเท่านั้นที่จะมีการเปลี่ยนแปลงไปจากเดิม

ในช่วงหลังจากที่ดักจับ Username และ Password ได้สำเร็จ Hacker ก็จะทำการ Login เข้าสู่ระบบและทำธุรกรรมเองหรือสามารถสั่งให้ process ฝั่ง User ทำการ Login ได้ หรือพูดให้ง่ายขึ้นก็คือ Web Browser ฝั่ง User ถูก Hacker ยึด ณ ขณะที่ทำการ Login อยู่ ทุกๆคำสั่งที่วิ่งไปยังธนาคารออกจากเครื่องของ User ทั้งสิ้น ซึ่ง Countermeasure ที่ธนาคารทุกที่มักจะใช้ก็คือถ้ามี Login จาก User คนเดียวกัน โดยที่ค่า Session ต่างกัน จะต้องมี Session ใด Session หนึ่งหลุดหรือทั้งสอง Session จะถูกเตะออกมาทันทีไม่มีใครใช้ได้ ซึ่งวิธีนี้ช่วยอะไรไม่ได้ครับเนื่องจาก Zeus/SpyEye ใช้ Session ของ User คนคนนั้นเอง หากการกระทำบางอย่างเช่นการเพิ่มบัญชีใหม่หรือการโอนเงิน จำเป็นต้องใช้การพิสูจน์ตัวตนเพิ่มเติมไม่ว่าจะเป็น OTP หรือ Smartcard หรือ PIN ตัว Hacker ก็จะส่งคำสั่งไปที่หน้าจอของเหยื่ออีกครั้ง

2.3 หน้าจอฝั่ง User อาจจะมีข้อความให้ User ใส่ OTP หรือเสียบ Smartcard หรือให้ใส่ PIN โดยข้อความที่ปรากฏบนหน้าจอจะพยายามโน้มน้าวให้ User กรอกข้อมูลดังกล่าวให้ได้ หาก User ไม่พิจารณาให้ดีว่ามีความผิดปกติเกิดขึ้น หรือ SMS แสดง OTP เพื่อทำกิจกรรมบางอย่างที่ตนเองไม่ได้ทำ หรือระบบไม่ได้บ่งบอกถึงจุดประสงค์ของรหัส OTP ว่าเอาไว้ใช้ทำอะไร User อาจจะกรอกข้อมูลนั้นๆ
เช่น กรอก OTP เพื่อโอนเงินไปบัญชีบุคคลที่ 3 แต่ช่องที่ User กรอกข้อมูล อาจจะขึ้นว่าให้กรอก OTP เพื่อยืนยันตัวตนแทน ถ้าไม่พิจารณาให้ดีย่อมตกเป็นเหยื่อแน่นอน

2.4 หน้าจอจะแสดงข้อความให้ User รอ หลังจากที่ hacker ขโมยโอนเงินได้สำเร็จ สำหรับใน Variance ที่มีความสามารถสูงๆ Zeus/SpyEye ก็จะเปลี่ยนแปลงข้อมูลบนหน้าจอ เพื่อซ่อนการขโมยเงินนี้โดยจะเปลี่ยนค่าต่างๆเช่นจำนวนเงินคงเหลือ ซ่อนธุรกรรมที่ถูก Zeus/SpyEye ควบคุม ซ่อนการ Login ที่น่าสงสัย หาก User สั่ง print Statement ก็จะทำการหลอกส่งค่าที่ถูกปลอมแปลงไปที่ printer อีกด้วย

ความหลากหลายที่เพิ่มขึ้น
Zeus/Spyeye ยังคงโจมตีอยู่เรื่อยๆ โดยล่าสุดพบว่าประเทศในยุโรปถูกการโจมตีที่เรียกว่า Campaign: EuroGrabber ซึ่งมูลค่าความเสียหายประมาณ 36 Million Euros จากเหยื่อประมาณ 30000 คน การโจมตีนั้นมีรูปแบบเดียวกับ Banking Trojan ที่กล่าวถึง(ตระกูลของ Trojan ประเภทนี้ชื่อ Citadel เป็น variant ของ Zeus/SpyEye นั่นแหละครับ : รายละเอียดทางเทคนิค) แต่การโจมตีนั้นครอบคลุมถึงการหลอกให้ผู้ใช้งาน Install Trojan ลงบน Smartphone ของผู้ใช้ด้วยเพื่อขโมยรหัส OTP เพื่อการโจมตีเต็มรูปแบบ ดังภาพ
eurograbber
หากถามว่า Trojan มันลามมาติดบนมือถือได้อย่างไร คำตอบก็คือผู้ใช้งานนั่นแหละครับถูกหลอกให้ติดตั้ง Trojan ลงไป โดยหลังจาก Login เข้า Internet Banking แล้วจะมีหน้าจอมาหลอกให้ Install โปรแกรมบางอย่าง
eurograbber2
หากผู้ใช้งานหลงเชื่อก็จะมี SMS มาที่โทรศัพท์มือถือ เพื่อให้ทำการติดตั้ง Software ช่วยด้าน Security แต่จริงๆแล้วเป็น Trojaneurograbber3
คราวนี้ก็ไม่มีอะไรป้องกันได้อีกแล้วครับ เนื่องจาก Hacker สามารถได้ข้อมูลทุกอย่างทั้ง Username,Password และรหัส OTP จาก SMS สำหรับข้อมูลเพิ่มเติมของ EuroGrabber สามารถอ่านได้จาก Eurograbber_White_Paper ซึ่งจัดทำโดย Check Point and Versafe

วิธีการหลีกเลี่ยงและป้องกัน
1. เครื่อง PC,Laptop หรือ Mobile ที่ทำธุรกรรมออนไลน์ต้องเป็นเครื่องที่เรามั่นใจว่าปลอดภัย เช่นมีโปรแกรม Antivirus ที่มี Licence มีการ Update สม่ำเสมอ ถ้าเป็นเครื่อง Mobile ก็ไม่ควรใช้ผ่านเครื่องที่ผ่านการ Jailbreak หรือ Jailroot
2. อย่า Click Link หรือเปิด File แนบที่ได้รับจากคนที่เราไม่รู้จัก หรือหากมาจาก email คนรู้จักควรพิจารณาให้ดีด้วยว่าเจ้าตัวเป็นคนส่งจริงหรือไม่ App ต่างๆบน Social Network ควรพิจารณาให้ดีก่อนใช้
3. หน้า Page ของธุรกรรมออนไลน์ไม่ควรแสดงผลผิดปกติอย่างที่เคยเป็น ถ้าหากพบเห็นสิ่งผิดปกติต้องรีบแจ้ง Call Centre ก่อน ไม่ควรกรอกข้อมูลอะไรทั้งสิ้น
4. ทุกๆกิจกรรมที่สำคัญจะมีการบังคับใส่ OTP ก่อน ให้อ่านข้อความ SMS หรือ Text ที่ได้รับจากธนาคารก่อนว่าได้รับ OTP สำหรับทำกิจกรรมอะไร และรหัสอ้างอิง(Reference Code)อะไร เป็นสิ่งที่เรากำลังตั้งใจทำอยู่ใช่หรือไม่ ถ้าผิดจากสิ่งที่ควรจะเป็นเช่น Login เสร็จแล้วมี OTP บอกว่ากำลังเพิ่มผูกบัญชีบุคคลที่ 3 นั่นแสดงว่าเรากำลังถูกโจมตีแล้ว
5. หากพบเห็นสิ่งผิดปกติ ให้ Capture หน้าจอ ส่งธนาคารต้นสังกัด หากสงสัยว่าเครื่องติด Zeus/SpyEye ทางเดียวที่ดีที่สุดคือ ให้รีบเปลี่ยน Password ของเราผ่านเครื่องที่ปลอดภัย และรีบตรวจสอบ Transaction ย้อนหลัง หากไม่สบายใจก็ระงับการใช้งานไปก่อน ส่วนเครื่องที่ติดโทรจันให้ทำการ Format และ Install เครื่องใหม่จะปลอดภัยที่สุดครับ
6. สำหรับธนาคาร หรือผู้ให้บริการทางการเงินควรมีการส่ง SMS OTP ที่ละเอียดพอ บ่งบอกว่า SMS สำหรับใช้ในการทำอะไร เช่น SMS OTP สำหรับการโอนเงิน โดยมี Reference Code:XXXX และ OTP คือ YYYY เป็นต้น

REF: We would like to give a credit to Kaspersky to create this inforgraphic which we referred in this article.