HTTPS Insecurity Part 3

ถึงตอนนี้แล้วทุกคนอาจมีคำถามว่า HTTPS ปลอดภัยหรือไม่?

HTTPS นั้นปลอดภัยกว่า HTTP แน่นอน แต่ปัญหาส่วนใหญ่ของ HTTPS นั้นอยู่ที่ Implementer และ User

Part 3 เป็นตอนสุดท้ายสำหรับเรื่องนี้แล้วนะครับ ในตอนนี้จะเน้นการป้องกันที่ฝั่ง User และ Admin

เริ่มที่ User (ผู้ใช้งานทั่วไป) จะต้องทำอะไรบ้าง

  • Update Patch เป็นประจำ เพราะว่าใน Patch นั้นจะมีเรื่องการ update Trusted Certificate List อยู่ด้วย วิธีการดู Certificate List ของ Internet Explorer และ Firefox 
Firefox Certificate List

Firefox Certificate List

  • Update Antivirus Signature เป็นประจำ เพื่อช่วยป้องกัน Malware ทั้งหลายที่อาจใช้เทคนิคในการแก้ host file ที่เครื่องของเหยื่อเพื่อ redirect ไปหน้า Web ของผู้ร้าย
  • ลอง Scan จาก https://browserscan.rapid7.com/scanme เพื่อดูว่า Browser ที่เราใช้งานมี Plugin ที่มีช่องโหว่หรือไม่ ถ้ามีก็ควรจะ update
  • Update Web Browser เป็นประจำ เพราะถ้าไม่ใช้ Internet Explorer การ Update Patch ก็ไม่ได้ช่วยอะไร เนื่องจาก List ของ Trusted Certificate นั้นแยกกัน
  • ตรวจสอบให้แน่ใจว่ามีการ Enable การเปิดใช้งาน Protocol OCSP หรือมีการ Check CRL อยู่ ซึ่งโดยส่วนใหญ่จะมีการ Enable โดย Default อยู่แล้ว
    • สำหรับ Internet Explorer ตรวจสอบได้จาก Tools > Internet Options > Advanced โดยจะต้องมีเครื่องหมายถูก หน้า Check for publisher’s certificate revocation และ Check for server certificate revocation

IE setting

    • สำหรับ Firefox ตรวจสอบได้จาก Preferences > Advanced > Encryption > Validation

Firefox OCSP setting

  • ตรวจสอบเป็นประจำที่ Web Browser ว่ามี Certificate อะไรแปลกปลอมเข้ามา Install ในเครื่องเราหรือไม่ หากมี Certificate ที่น่าสงสัยอยู่ใน Trusted List ก็สามารถ Remove ได้เลย
  • นอกจากเครื่อง PC/Laptop แล้วพวก Mobile Device จะต้องตรวจสอบเหมือนกันว่ามี Certificate อะไรแอบมาอยู่ในเครื่องเราบ้าง ถ้าเป็นอุปกรณ์ IOS มักจะมาอยู่ในรูปแบบของ Profile ที่ Install ที่เครื่อง

สำหรับ Admin ทั้งหลาย ไม่ว่าจะเป็น Web Server Admin หรือ Admin ที่ทำหน้าที่ Client Management ใน Enterprise ใหญ่ๆ นะครับ

Web Server Admin

  • การทำ Key Management ควรจะมีการใช้ Complex Password เพื่อป้องกันการเข้าถึง Key โดยเฉพาะเมื่อมีการ Export Key ออกมา เพื่อที่จะนำไปลงที่เครื่อง Redundant หรือ Backup
  • Removable Media ทั้งหลายที่มีการใช้ระหว่างการ Transfer Key เมื่อใช้งานเสร็จเรียบร้อยแล้วควรจะใช้พวก Secured Delete Tool ลบข้อมูล เพื่อป้องกันการ Recover Key ขึ้นมาได้
  • อย่าใช้ Certificate ที่มีอายุนานเกินไป เพราะถ้าถูก Compromised แล้วไม่รู้ตัว จะไม่มีอะไรช่วย Limit ความเสี่ยง
  • ในระดับ Web Server นั้นสามารถเลือกตั้งให้ Cipher Suite ที่มีความปลอดภัยสูงได้ เพื่อป้องกันการ Decrypt SSL channel ซึ่งการตรวจสอบว่าปัจจุบัน Web Server เรานั้นตั้ง Cipher Suite ไว้ดีหรือไม่ดี ถ้า Web Server สามารถเข้าจาก Internet ได้แนะนำให้ใช้ Service จาก Qualys ได้ที่ https://www.ssllabs.com/ssltest/ หรือหากเป็นเครื่องที่อยู่ใน Internal network สามารถใช้ SSLScan เพื่อตรวจสอบได้
SSL Labs

SSL Labs

Client Management Admin

  • Patch Management มักจะมีการแบ่งรอบการทำเป็น Monthly หรือ Quarterly ซึ่งสาเหตุหลักมักเกิดจาก การรอทำ Test ต่างๆว่า Patch จะไม่มีผลอะไรกับ Application ในองค์กร ซึ่งสำหรับ Patch ที่ทำหน้าที่ Update Certificate นั้น ผลกระทบ (Impact) ต่อการใช้งานค่อนข้างต่ำมาก แต่มีผลต่อเรื่องความปลอดภัยสูงมาก อาจจะพิจารณารอบการลง Patch เป็นพิเศษ หากมี Patch ที่เกี่ยวกับ Certificate
  • หากมีการสร้าง Internal Certificate Authority Server เพื่อใช้ภายในองค์กรนั้น ต้องตรวจสอบให้แน่ใจว่า Client สามารถ access URL ของ OCSP หรือ CRL ได้ โดยที่ URL เหล่านี้มักจะชี้ไปที่ CA Server ขององค์กร แต่เนื่องจากองค์กรส่วนใหญ่มักใช้ Firewall Block User ทั่วไปไม่ให้ access CA Server ส่งผลให้ Client ไม่สามารถใช้งาน OCSP หรือ CRL ได้วิธีการตรวจสอบสามารถทำได้โดยเข้า URL ของ OCSP หรือ CRL จาก Web Browser ของเครื่อง Client ครับ โดย URL ของ OCSP และ CRL นั้นจะเป็น Attributes ที่อยู่ใน Certificate ครับ
VeriSign OCSP

OCSP URL

  • กรณีมี Active Directory (AD) อย่าลืม Enforce Group Policy เกี่ยวกับเรื่อง Certificate Revocation ให้กับเครื่อง Client ทั้งหลาย โดยสามารถดูรายละเอียดได้ที่ Microsoft Technet

เป็นการจบ Series ของเรื่องนี้นะครับ หวังว่าจะช่วยให้ทุกคนลดโอกาสการตกเป็นเหยื่อของผู้ร้ายได้นะครับ

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 ผู้ดูแลระบบ ควรจะต้องทำอย่างไรบ้าง

HTTPS Insecurity Part 1

เรื่องน่าเบื่อที่ผู้ใช้งาน Internet คงได้ยินกันบ่อยๆคือ การเข้า Web ให้ปลอดภัยนั้นจะต้องดูว่าเป็น HTTPS หรือไม่

ถ้าเป็น HTTPS แล้วจะปลอดภัยแน่เหรอ

การตรวจสอบ HTTPS นั้นทำได้โดยการดูที่ Address Bar และ ตรวจสอบรูปแม่กุญแจ (Padlock) หรือ Web Browser รุ่นใหม่ๆจะสามารถดูสีในช่อง Address Bar ได้เลย โดยสีเขียวจะสื่อถึง Web ที่ปลอดภัย และสีแดงจะสื่อถึง Web ที่ไม่ปลอดภัย

HTTPS

ตัวอย่าง HTTPS

เพิ่มเติม บทความนี้จะใช้ KBank เป็นตัวอย่างนะครับ ซึ่งในช่วงนี้ Bank สีเขียวนี้โดนโจมตีอย่างหนักตามเวป Pantip แต่สำหรับทีมงานเราแล้ว เราเห็นว่าทางธนาคารมีการป้องกันที่ดี แต่ส่วนใหญ่ที่เป็นปัญหาคือ User ขาด Awareness มากกว่า

สำหรับในบทความนี้จะอธิบายถึง HTTPS ในรายละเอียด คำว่า “ปลอดภัย” สำหรับ HTTPS แล้วจริงๆมีการตรวจสอบอะไรบ้าง และปลอดภัยจริงหรือไม่ โดยบทความนี้จะแบ่งออกเป็น 3 ตอน

  • ตอนที่ 1 – เรื่องพื้นฐาน PKI, Digital Certificate, HTTPS
  • ตอนที่ 2 – ความเสี่ยงของ HTTPS
  • ตอนที่ 3 – User และ Admin ควรจะต้องทำอะไร

เริ่มจาก PKI (Public Key Infrastructure) คืออะไร

PKI เป็น Model ที่ใช้งานกันบน Internet เพื่อให้สามารถสร้างความไว้ใจซึ่งกันและกันได้

ในโลกแห่งความเป็นจริง ถ้า Alice ไม่รู้จักกับ Bob จะทำอย่างไรให้ 2 คนนี้ไว้ใจและเชื่อใจกันได้ ขอยกตัวอย่าง Scenario ซัก 2 รูปแบบนะครับ

  1. Alice เริ่มเข้าไปคุยกับ Bob โดยตรงได้เลย หลังจากคุยกันสักพักก็ทำให้เกิดความเชื่อใจกัน
  2. มี Trent* (Trusted 3rd Party) เป็นคนกลางคอยแนะนำให้ Alice รู้จักกับ Bob

ใน PKI มี 2 entities หลักคือ User และ CA (Certificate Authority) โดย CA หมายถึงผู้ที่น่าเชื่อถือมีสิทธิ์ที่จะออก Digital Certificate ให้กับผู้อื่นได้ การออก Certificate ให้กับผู้อื่นนั้นจะใช้วิธีการที่เรียก Digital Signature เพื่อใช้ในการยืนยันว่าใครเป็นผู้ issue Digital Certificate

เราสามารถเปรียบ User ได้กับ Alice, Bob และ CA เปรียบได้กับ Trent นั่นเอง โดยถ้า Alice จะไว้ใจ Bob นั้นจะต้องมีองค์ประกอบง่ายๆ ดังนี้

  1. Alice ไว้ใจ Trent
  2. Bob มี Digital Certificate ที่ issue โดย Trent
PKI model

PKI Model

เพิ่มเติมในความเป็นจริงแล้ว CA บนโลกนั้นมีอยู่หลายเจ้า ทำให้เกิดความซับซ้อนมากขึ้น เช่น มีการ Cross Trust กันในระดับ CA

Digital Certificate คืออะไร

ทุกวันนี้โลกเรานั้นอยู่ยากมากขึ้นทุกวัน ใครบอกอะไรมาจะเชื่อถือทันทีไม่ได้ จะต้องมีเอกสารยืนยันก่อน เช่น บัตรประชาชน หรือ ใบขับขี่ เพื่อยืนยันตัวตน (Authentication)

เช่นเดียวกัน บนโลก Internet เอง จะใช้ Digital Certificate ในการยืนยันตัวตน โดยมาตรฐานที่นิยมใช้กันสำหรับ Digital Certificate คือ X.509

รายละเอียดของ X.509 Certificate

เราจะเน้นเฉพาะ Attribute หลักๆของ Digital Certificate นะครับ

  • Subject = ชื่อของเครื่อง หรือ Web site ที่เป็นเจ้าของ Certificate
  • Issuer = CA ที่เป็นผู้ issue Certificate นี้ โดยทั่วๆไปที่รู้จักกัน ได้แก่ VeriSign, Thawte
  • Public Key = เรื่อง PKI นั้นจะเกี่ยวกับการ Asymmetric Key Algorithm ที่มีการใช้ Private Key และ Pubic Key ในการทำ Encryption-Decryption ด้วย
  • Validity Period = ช่วงเวลาที่ Certificate นี้ Valid โดยเหตุผลหลักที่ต้องมีช่วงเวลาคือ ใช้จำกัดความเสี่ยงหาก Private Key ถูก Compromised ไป  โดยทั่วๆไป Certificate จะมีอายุประมาณ 1-3 ปี แต่ก็มีบางที่ Admin ขี้เกียจทำเกี่ยวกับ Certificate ก็จะใส่ Validity Period ยาวๆ เช่น 10-20 ปี ซึ่งหาก Private Key โดน Compromised หมายถึงว่าผู้ร้ายสามารถทำการ Decrypt Traffic ที่เป็น HTTPS ได้นั่นเอง ข้อมูลต่างๆที่มีการเข้ารหัสอย่างดี ก็โดนแกะได้ง่ายเลย
  • CRL = Certificate Revocation List เป็น List ของ Digital Certificate ที่ถูกยกเลิก โดยส่วนใหญ่มักจะเป็นสาเหตุจาก Private Key ถูก Compromised ซึ่งการตรวจสอบ CRL นี้จะอยู่ที่ Setting ของเครื่อง Client เอง ซึ่งถือเป็นความเสี่ยงอย่างหนึ่งหากเครื่อง Client ไม่มีการ Set ให้ไปตรวจสอบ CRL นอกจาก CRL แล้วจะมี OCSP (Online Certificate Status Protocol) ที่มีหน้าที่ตรวจสอบ Validity ของ Certificate เหมือนกัน
  • Certificate Authority’s Digital Signature = ข้อมูลสำคัญที่ใช้ในการตรวจสอบว่า Digital Certificate นี้ถูก Issue โดย Issuer จริงๆ

ตัวอย่าง Digital Certificateตัวอย่าง Certificate

หมายเหตุ ค่า Common Name และ Subject คือค่าเดียวกันนะครับ

สำหรับ Certificate นี้ใช้สำหรับ Server ที่มี URL เป็น online.kasikornbankgroup.com ถูก issue โดย VeriSign และมีอายุประมาณ 1 ปี ซึ่งถือว่าเป็นระยะเวลาที่โอเค เพราะถ้าน้อยกว่านี้ Admin คงจะเหนื่อยแย่

สรุป หลักๆแล้ว Digital Certificate จะใช้ประโยชน์ 2 อย่างคือ 1.Authentication 2.Encryption

HTTPS คืออะไร

HTTPS คือ Protocol ที่ใช้ในการคุยกันระหว่าง Web Server และ Web Browser ซึ่งใน HTTPS จะมีขั้นตอนการ Verify ว่า Web Server นั้นเป็น Web Server ตัวจริงหรือไม่โดยดูจาก Digital Certificate จากนั้นจะมีการแลกเปลี่ยน Session Key (Symmetric Key) ผ่านค่า Public Key ใน Digital Certificate

โดยการตรวจสอบ Digital Certificate นั้นสามารถดูได้จาก Diagram ด้านล่างครับ

ซึ่งหลักๆแล้วจะการดู Web Server Digital Certificate จะดูที่

  • URL นั้นจะต้องตรงกับ Subject
  • เวลาปัจจุบันอยู่ในช่วง Validity Period
  • Root หรือ Chain ของ CA จะต้องมีการ Install บนเครื่อง Client

สำหรับในบทความนี้เขียนอธิบายให้ดูง่ายๆเท่านั้นนะครับ ในความเป็นจริง จะซับซ้อนมากกว่านี้

เช่น

  • Alice เชื่อใจ Bob แต่ Bob อาจไม่เชื่อใจ Alice ก็ได้ ซึ่งใน PKI จะแบ่งได้อีกว่าเป็น Unilateral Trust หรือ Mutual Trust (เชื่อใจซึ่งกันและกัน)
  • เอกสารที่ใช้ในการยืนยันตัวตนมีได้หลายชนิด ซึ่งแต่ละชนิดให้ความน่าเชื่อถือไม่เท่ากัน เช่น บัตรประชาชน, บัตรประจำตัวนักเรียน, ใบขับขี่ ซึ่งเปรียบได้กับ CA แต่ละที่ ให้ความน่าเชื่อถือไม่เท่ากัน

สำหรับในตอนแรกนี้เป็นการปูพื้นฐานก่อนนะครับ เดี๋ยวมาดูกันในตอนถัดไปว่ามีอะไรที่เป็นจุดเสี่ยงบ้าง

Note

* สำหรับคนที่ผ่าน Network Class มาคงจะคุ้นเคยกับ Alice และ Bob เป็นอย่างดี ซึ่งก็ใช้สำหรับการยกตัวอย่างเปรียบเทียบเป็น นาง A กับ นาย B นั่นเอง แต่พอเรียน Security Class แล้วเรื่องราวจะซับซ้อนมากขึ้นมีตัวละครต่างๆเพิ่มขึ้นมาเช่น นาย C จะถูกเรียกว่า Charlie, นาย D จะถูกเรียกว่า Dave, Trusted 3rd Party จะถูกตั้งชื่อว่า Trent, Attacker ที่เป็นประเภท Eavedropper (ดักจับข้อมูล) จะถูกตั้งชื่อว่า Eve หรือ Malicious Attacker จะถูกตั้งชื่อว่า Mallory เป็นต้น

IT Security Certificate ตอนที่ 4 certificate ในวงการของนักเจาะระบบ

คราวนี้เราก็จะมากล่าวถึง certificate ในวงการของนักเจาะระบบกันบ้าง หลายคนอาจสงสัยว่า “เฮ้ย พวกแฮคเกอร์ไม่เห็นต้องมี cert เลย ทำไมเป็น pentester ต้องมี cert ด้วยล่ะ” คำตอบง่ายๆเลยก็คือ ถ้าคุณ well-known และคุณเป็น World Class Professional คุณไม่ต้องเสียเวลาสอบหรอกครับ แต่ถ้าไม่ คุณจะทำยังไงให้คนอื่น องค์กร หรือ HR รู้จักเรา เชื่อเรา และมั่นใจว่าคนที่รับเข้ามาทำงานอย่างน้อยน่าจะมีทักษะเพียงพอที่จะทำงานที่จ้างได้ คำตอบนั้นก็คือการมี Cert นั่นเอง

ถ้าถามต่อว่าสอบ cert อย่างเดียวไม่ต้องเรียนจบปริญญาได้มั้ย ในต่างประเทศอาจจะเป็นไปได้ แต่ผมก็ไม่ค่อยได้เห็นตัวอย่างสักเท่าไรนะ ถ้าในประเทศไทยผมว่าไปเรียนให้จบสักใบดีกว่า เพราะการเรียนในระดับอุดมศึกษามันต้องใช้ความพยายามและความทุ่มเทมาก อีกอย่างก็คือวิชาที่เราเรียนก็จะหลากหลายสร้างพื้นฐานให้กับเราได้เป็นอย่างดี เรียนจบแล้วค่อยหา cert ทีหลังดีกว่า แต่อย่าลืมว่า cert ไม่ใช่คำตอบของทุกอย่าง เป็นแค่ตัวช่วยเราในการหางาน และทำให้คนอื่น trust เราเท่านั้น เกริ่นมาสักพักแล้ว ผมขอเล่าเรื่อง certificate ที่มีอยู่ในวงการนักเจาะระบบเลยละกันครับ

C|EH โดย EC-Council C|EH น่าจะเป็น cert ที่เป็นที่รู้จักที่สุดในวงการ infosec บ้านเรา ครอบคลุมเนื้อหาเยอะ แต่ว่าไม่ได้ลงลึกมากเท่าไร สำหรับผมแล้วถือว่าเป็น cert ที่เป็นจุดเริ่มต้นที่ดีในวงการครับ ถ้าไม่รู้จะเอา cert ตัวไหนก่อนก็ C|EH ก็ได้ครับ แต่อยากจะบอกว่า cert นี้ไม่ได้บ่งบอกว่าคนที่ได้จะเก่งอะไรมากมาย เนื้อหาที่สอบคุณจำไปสอบให้ได้ก็พอ ส่วนใหญ่เป็นความรู้ทางทฤษฎีซะมาก ซึ่ง C|EH จะมีตัวต่อคือ ECSA และ LPT ครับ

Cert ของสถาบัน GIAC พูดว่า GIAC อาจจะงง แต่ว่าถ้าพูดว่า SANS น่าจะรู้จักกันดี ความแตกต่างของ 2 องค์กรคือ SANS สอนแต่ GIAC รับผิดชอบเรื่อง cert ครับ คนที่สอบผ่านจะได้รับการรับรองว่าเป็น SANS Certified Engineer ซึ่งมีเนื้อหาหลายด้านมากๆครับทั้ง redteam(ทีมเจาะระบบ-เน้นเกมรุก),blueteam(ทีมป้องกันระบบ-เน้นเกมรับ),forensics,software development, และ audit คนที่สอบก็เลือกเอาว่าอยากจะสอบวิชาอะไร เนื้อหาจัดว่าทันสมัย practical และลงลึกในรายละเอียด เน้นด้าน technical มากๆ ค่าสอบจัดว่าแพง แต่ค่าเรียนแพงยิ่งกว่า ถ้าใครเก๋าก็ไปสอบเลยก็ได้ครับไม่ต้องเรียน(แอบ โชว์นิดนึงครับว่า Incognito Lab engineer ก็เคยไปสอบมาแล้วโดยไม่เคยผ่านการเรียนมาก่อน จริงๆก็อยากเรียนมากนะครับ เพราะ course ดีมากๆแต่แพงเกินไปสำหรับค่าครองชีพในประเทศเรา) สำหรับผมแล้วความรู้จาก SANS ถืิอว่าเป็นความรู้ที่เป็น professional จริงๆ วิทยากรของ SANS ก็จัดเป็น World Class อีกทั้งพวก US Navy และหน่วยงานด้าน Cyber Security ของ US มักจะให้คนของเค้าไปอบรมที่ SANS ครับ ความน่าเชื่อถือคงไม่ต้องพูดถึง ส่วนเรื่องการสอบนั้นจัดว่ายากครับ (แน่นอนอย่าหวังเลยว่าจะมี braindump) และการสอบเป็นแบบ openbook ด้วย ทาง GIAC เค้าต่อให้

OSCP โดย Offensive Security สำหรับพวก hardcore และอยากโชว์ป๋าว่ากังฟูของตัวเองใช้งานได้จริงๆ มีความอึด และมีเวลาเรียนทุกๆวันสัก 3 เดือนผมว่า OSCP นี่น่าจะเป็น Cert ที่เหมาะสมเป็นอย่างยิ่งครับ เนื่องจากเป็น Cert ที่ฝึกฝน practical skills มี virtual labs ให้เข้าถึงได้ตลอด เจ้าของคือ Mati Aharoni หรือ “MUTS” จัดเป็นสุดยอดในวงการคนนึงเลยทีเดียว ส่วนการสอบก็เข้มข้นมากคือโจทย์จะให้คุณต้องพยายาม compromise หรือยึดเครื่องทั้งหมดให้ได้ภายในระยะเวลา 24 hrs และต้องส่ง report ให้กับทาง Offensive Security อีกภายใน 24 hrs ถัดมาครับ ดังนั้นถ้าคุณได้ cert ตัวนี้จงภูมิใจได้เลยว่ากังฟูแน่นและยังอึดอีกด้วย ตอนสอบหา internet ที่ไว้ใจได้มาใช้งานนะครับ ตัวต่อของ Cert OSCP คือ OSCE ครับ ผมเคยอ่านเรื่องคนที่สอบผ่านมาเล่าให้ฟังเค้าบอกว่าเป็นประสบการณ์ที่เจ็บปวดมาก(painful) คำคมของ cert ค่ายนี้ก็คือ “Try harder” ซึ่งถูกใช้กับทุกๆปัญหาที่คุณทำไม่ได้แล้วส่งเมลไปถาม staffs ซึ่งเค้าจะตอบคำพูดนี้กลับมาเสมอโดยปราศจากการช่วยเหลือใดๆ ส่วนข้อเสียของ cert ก็คือ ผมยังไม่เคยเห็น HR คนไหนรู้จักมัน(คนทำงานด้าน Security ในประเทศไทยยังนับคนรู้จักได้ไม่มากเลยครับถ้าเทียบกับ SANS หรือ C|EH)

eCPPT โดย eLearnSecurity cert นี้ผูกกับการเรียน Professional Penetration Tester ที่ครอบคลุมเนื้อหาทั้ง system,network และ web โดยที่เนื้อหาของ Web ผมจัดว่าเป็นเนื้อหาที่ดีที่สุดของ online course ที่มีอยู่ในปัจจุบันเลยครับ การสอบคุณต้องทำการเจาะระบบและทำการเขียน penetration test report ส่งให้กับทางสถาบัน ถ้าช่องโหว่ที่คุณหาเจอครอบคลุมกับที่มีอยู่และเนื้อหาใน report สมบูรณ์คุณก็จะได้ cert ตัวนี้ไปครอบครองครับ เจ้าของ Course คือ Mr Armando Romeo เป็น instructor ที่ดีมาก เอาใจใส่นักเรียน และมีระบบสำหรับให้ทำการฝึกฝนอยู่เยอะพอสมควร ผมว่าคุณภาพของ course ดีเกินราคาครับ

ในส่วนถัดไปผมจะกล่าวถึง course ที่ผูกกับ cert ตัวอื่นๆที่มีอยู่ในโลกกัน ซึ่งจัดว่ายังรู้จักกันในวงการเท่านั้น

CAST by EC-Councilเป็น advanced training ของ EC-Council ที่จะทำ roadshow ไปยังประเทศต่างๆ ส่วนใหญ่เนื้อหาของ course จะเป็นเนื้อหาที่เหมาะสำหรับ professional มากกว่า หาก beginner ไปเรียนคงจะไม่สนุกเท่าไร เนื้อหาก็มีหลายหลายครอบคลุม pentest,network defense,mobile,cryptography และ application ราคาจัดว่าสูงครับ ทาง Incognito Lab เราก็เคยผ่านการอบรมมาแล้ว ถือว่าเป็นประสบการณ์ที่ดี สนุกและได้ความรู้ แต่โดยส่วนตัวคิดว่า EC-Council ยังต้องทำงานอีกมากหากต้องการให้ CAST ทัดเทียมกับ SANS ขอบอกว่า CAST ไม่มีการสอบ cert นะครับ train อย่างเดียว

Cert โดย Securitytube เจ้าของคือ Vivek Ramachandran แห่ง SecurityTube ที่นำเสนอเนื้อหาด้าน security ด้วย video training ซึ่งน่าชื่นชมมากกับสิ่งที่เค้าทำ Cert+course ที่มีตอนนี้จะมีเรื่อง Wireless,Metasploit และ Python scripting โดยส่วนตัวผมไม่เคยสอบ เคยแต่ดู เนื้อหาของ course ซึ่ง Vivek เค้าปล่อยให้ดูฟรี ใจดีมากๆครับ

Ninja-Sec
เนื้อหา hacking ของ course ชื่อว่า CODENAME: Samurai Skills Course ผมเคยดูเนื้อหาแล้วครับค่อนข้างน่าสนใจ

Hacking dojo เป็น course ที่มีเนื้อหาหลายด้านและหลายระดับ การเรียนจะเน้นกลุ่มเล็กแบบ online จัดว่าเป็น course ที่ดีเช่นกันครับ

Hacker Academy ไม่ค่อยมีคนพูดถึงเท่าไร แต่ดูเนื้อหาแล้วน่าลองเหมือนกัน ติดอย่างเดียวราคาสูงไป

cert ของ mile2 ตัวนี้สมัยก่อนอาจจะฮิต เดี๋ยวนี้ผมเห็นว่าเงียบไปจากวงการแล้ว

สุดท้ายนี้ผมก็ขอให้เลือก cert ที่อยากจะสอบสักตัวหนึ่งตัวไหนก็ได้ครับ ทำความเข้าใจกับเนื้อหาและฝึกฝนให้ใช้งานได้จริงๆ แล้วก็สอบให้ผ่านซะ เชื่อเถอะว่าจะเป็นประโยชน์กับการทำงานอย่างแน่นอน ขอให้โชคดีกับหนทางการเป็นนักเจาะระบบ และโอกาสหน้าจะมากล่าวถึงคุณสมบัติการเป็นนักเจาะระบบที่ดีให้ทราบกันนะครับ

We break computers, making them do stuff that their designers,implementers, deployers, and system administrators didn’t plan on them doing.

Noted penetration tester

IT Security Certificate ตอนที่ 2

สอบ Cert อะไรดี คำถามที่ไม่เคยล้าสมัย

ขอแบ่ง Certificate ของ Security ออกเป็น 2 กลุ่มใหญ่ๆแล้วกันนะครับ

กลุ่มที่ 1 Certificate ที่อิงตาม Vendor (Vendor Specific Certificate)

Certificate กลุ่มนี้มักจะเน้นให้ความรู้ใน Product นั้นๆ ของแต่ละ Vendor โดยจะมีการสอดแทรกความรู้พื้นฐานของ Security เข้าไปด้วย ซึ่ง Certificate เหล่านี้จะมีมากมายตาม Product ของแต่ละ Vendor เช่น

  • CISCO - CCNA Security, CCNP Security, CCIE Security, CISCO ASA Specialist, CISCO Firewall Specialist, CISCO IPS Specialist
  • Juniper - JNCIS-SEC, JNCIP-SEC, JNCIE-SEC
  • Microsoft – MCSA, MCSE

กลุ่มที่ 2 Certificate ทั่วไป ที่ไม่ได้อิงตาม Product (Vendor Neutral Certificate)

Certificate กลุ่มนี้เน้นให้ความรู้เกี่ยวกับเรื่อง Security เป็นหลักมีทั้งแบบที่ให้ความรู้ในเชิงกว้างครอบคลุมทุกด้านของ Security และแบบที่ให้ความรู้เฉพาะทาง โดย Certificate ที่อยู่ในกลุ่มนี้มักจะแยกตามสถาบันที่ได้รับการยอมรับจากทั่วโลกทางด้าน Security เช่น

  • ISC2 – CISSP, CSSLP
  • ISACA – CISA, CISM, CRISC, CGEIT
  • SANS – GPEN, GSEC, GWAPT
  • EC-Council – CEH, CHFI, ECSA, LPT

สำหรับคนที่สนใจจะพัฒนาตัวเอง ขอแนะนำว่าควรจะมีการวางแผนที่ดีสำหรับการสอบ Certificate ต่างๆ และคำนวณถึงประโยชน์ที่จะได้รับจาก Certificate เหล่านี้ด้วย เพราะว่า Certificate บางตัวอาจจะต้องเสียเงินทุกปีเพื่อ Maintain รวมถึงต้องมีการเข้าคอร์สอบรมต่างๆเพื่อให้เป็นไปตาม Continuing Professional Education Programme ของแต่ละ Certificate หรือหากเลือก Certificate บางตัวที่มีวันหมดอายุ เมื่อถึงวันหมดอายุก็จะต้องไปสอบใหม่นะครับ

การเลือก Certificate ที่เราจะสอบนั้นควรจะเลือกให้สัมพันธ์กับงานที่เราทำด้วย เช่นหากทำงานเป็น Consultant หรือเป็นระดับ Management แนะนำว่าควรจะต้องมี Certificate ในกลุ่มที่ 2 ส่วนคนที่ทำงานเป็น System Administrator หรือ Network Administrator น่าจะเริ่มจากกลุ่มที่ 1 ก่อนนะครับ เนื่องจากมีความคุ้นเคยในอุปกรณ์ที่ดูแลอยู่แล้ว

สำหรับในตอนต่อไปเราจะขอแชร์ประสบการณ์ของ Certificate ที่ทางทีมงานของเราได้รับมานะครับ