“อยากแฮกต้องศึกษาอะไร ?” หลายๆ คนคงเคยเห็นคำถามนี้แต่คำตอบที่ผมเห็นส่วนมากคือ แนะนำให้ไปศึกษาพื้นฐานระบบ network หัดเขียนโปรแกรม อะไรทำนองนี้ซะส่วนมากจึงทำให้มองไม่เห็นปลายทางว่าจะได้แฮกเมื่อไหร่ ซึ่งตอนที่ผมทำงานปีแรก(ทำ security test ภายในองค์กร) ผมเองก็เจอหัวหน้า ถามคำถามประมาณว่าตอนที่ผมจะทดสอบระบบผมจะทดสอบอะไรบ้าง ซึ่งมันก็ไม่มีคำตอบตายตัว แต่ให้อธิบายทั้งหมดมันคงจะยาวมากๆ ผมเลยเขียนบทความนี้ไว้อธิบายเกี่ยวกับการศึกษาด้าน offensive security หรือเรียกสั้นๆ ว่าการแฮกนั้น ต้องศึกษาอะไร และแต่ละอย่างทำอะไรได้บ้าง แบบสั้นๆ เพื่อไม่ให้ยาวเกินไป และเพื่อให้มี keyword เริ่มต้นสำหรับคนอยากรู้รายละเอียดแต่ละเรื่อง แล้วเอา keyword ไปค้นหาใน search engine เอง โดยเริ่มจากแผนภาพก่อนเพื่อให้เห็นภาพรวมทั้งหมดก่อน
Basic Linux/Windows Administration
พื้นฐานของการดูแลระบบระบบปฏิบัติการ Linux/Windows เพื่อให้รู้ว่าระดับการใช้งานของผู้ดูแลระบบกับผู้ใช้ทั่วไปเป็นอย่างไร เพราะในมุมมองการทดสอบแฮกระบบนั้นผู้โจมตีจะต้องเข้าใจถึงการทำงานต่าง ๆ ก่อนโดยเฉพาะในระดับผู้ดูแลระบบ ว่าการตั้งค่าอย่างปลอดภัยเป็นอย่างไร จึงจะสามารถแนะนำวิธีการให้ระบบมีความมั่นคงปลอดภัยมากขึ้นหรือทดสอบหาจุดบกพร่องในระบบได้และเมื่อทำการทดสอบเจาะเข้าไปในระบบได้ เราจะสามารถทำอะไรได้บ้าง
Manage services
คือการรู้จักและเข้าใจการ service ต่างๆ ภายในระบบคอมพิวเตอร์ ยกตัวอย่างระบบที่เป็น web service (Apache, IIS, Tomcat) หรือ database service (MySQL, MS-SQL) จะต้องมีการตั้งค่าและบริหารจัดการอย่างถูกต้องปลอดภัย
LAMP stack
LAMP เป็นรูปแบบสถาปัตยกรรมสำหรับการให้บริการเว็บไซด์ยอดนิยม ที่ประกอบไปด้วยส่วนประกอบหลัก 4 อย่างดังตัวย่อต่อไปนี้ L = ระบบปฏิบัติการ Linux , A = Apache เป็น software ให้บริการ web service, M = MySQL เป็น software จัดการฐานข้อมูล, P = PHP เป็น software สำหรับประมวลผลคำสั่งเว็บที่เขียนในภาษา PHP นอกจาก LAMP ยังมี stack อื่นๆ อีกมากมาย โดยมีส่วนหลักๆ 4 ส่วน [ระบบปฏิบัติการ, software ให้บริการ web service, software จัดการฐานข้อมูล, software สำหรับประมวลผลภาษาโปรแกรม] เช่น MEAN stack
IIS
IIS ย่อมาจาก Internet Information Services เป็น software ให้บริการ web service บนระบบปฏิบัติการ Windows โดยส่วนมากนิยมใช้กับการพัฒนาเว็บแอปพลิเคชันที่เขียนด้วยภาษา ASP หรือ C#
MS-SQL
ย่อมาจาก Microsoft SQL Server เป็น software จัดการฐานข้อมูลที่พัฒนาโดยบริษัท Microsoft
Bash/Powershell Scripting
การใช้คำสั่งสคริปเพื่อใช้งานระบบปฏิบัติการผ่าน command line
Bash shell จะอยู่บน Linux และ Powershell จะอยู่บน Windows
Windows Domain (AD DS) [Active Directory Domain Services]
คือ บริการจัดการทรัพยากรต่างๆ ในระบบเน็ตเวิร์คที่ประกอบไปด้วยเครื่องคอมพิวเตอร์ที่ใช้ระบบปฏิบัติการ Windows รวมไปถึงจัดการผู้ใช้งาน เนื่องจากการใช้งานในระดับองค์กร จำเป็นต้องบริหารจัดการเครื่องผู้ใช้งานในจำนวนมากเช่นหลักร้อยหรือหลักหมื่นเครื่อง ดังนั้นเราจึงไม่สามารถให้ผู้ดูแลระบบไปตั้งค่าคอมพิวเตอร์ครั้งละมาก ๆ ได้ จึงต้องใช้ AD DS ในการบริหารจัดการเครื่องทั้งหมดจากศูนย์กลาง ตัวอย่างความสามารถของ AD DS เช่นการกำหนดสิทธิ์ของผู้ใช้งานในระบบ การตั้งค่าไฟวอร์ และการบังคับให้ผู้ใช้งานตั้งรหัสผ่านอย่างปลอดภัย
File/user management
การจัดการไฟล์และผู้ใช้ในระบบ เช่นการ เพิ่มผู้ใช้ในระบบ, จัดการไฟล์ว่าให้ใครมีสิทธิเข้าถึงได้บ้าง
OS Permission
ระดับสิทธิการใช้งานต่างๆ ในแต่ละระบบปฏิบัติการ โดยแต่ละระบบปฏิบัติการจะออกแบบสิทธิของผู้ใช้ออกมาไม่เหมือนกัน
==================================================
Basic web/mobile programming
พื้นฐานการเขียนโปรแกรมบนเว็บไซต์ / แอปพลิเคชันบนสมาร์ทโฟน ซึ่งเป็นพื้นฐานหลักสำคัญในการศึกษาว่า เว็บไซต์หรือแอปพลิเคชัน ทำงานอย่างไร
Web Application Attack
การโจมตีระบบผ่านแอปพลิเคชันบนเว็บไซต์ ซึ่งเป็นช่องทางที่คนทั่วไปเข้าถึงได้ง่ายที่สุดในปัจจุบัน ไม่ว่าจะเข้าผ่านคอมพิวเตอร์ แล็ปท็อป หรืออุปกรณ์พกพา อย่างเช่น สมาร์ทโฟน หรือ แท็บเล็ต ก็มีการเข้าใช้งานเว็บไซต์กันทั้งนั้น จึงเป็นช่องทางที่เป็นเป้าหมายหลักๆจากผู้ไม่หวังดี
OWASP Top 10 (2017)
รายชื่อความเสี่ยงของช่องโหว่ที่มีผลกระทบรุนแรง และ พบเจอบ่อยที่สุด 10 อันดับ ที่สำรวจโดย OWASP (Open Web Application Security Project) ซึ่งคือ open community ที่มีจุดประสงค์เพื่อช่วยเพิ่มระดับความน่าเชื่อถือในการพัฒนา, จัดซื้อ, และบำรุงรักษาแอปพลิเคชัน โดยมีเอกสาร, เครื่องมือ, สื่อการสอนต่างๆ, และมาตรฐานในการเสริมสร้างความมั่นคงปลอดภัยให้กับแอปพลิเคชัน
อื่นๆ นอกเหนือจาก OWASP Top 10
นอกจากช่องโหว่จาก OWASP Top 10 ยังมีช่องโหว่อื่นๆ อีกมากมายที่ไม่ได้ถูกจัดอันดับไว้==================================================
Kali Linux
ระบบปฏิบัติการ linux ที่ออกแบบมาเพื่อใช้งานในการพิสูจน์หลักฐานทางดิจิทัลและการทดสอบเจาะระบบ
Password Attacks
Windows
การโจมตีรหัสผ่านบนระบบปฏิบัติการ Windows
- Pass-the-hash
เป็นเทคนิคการใช้รหัสผ่านที่ถูกแฮชไว้นำไปใช้ยืนยันตัวตนโดยไม่ต้องแกะรหัสแฮชไปเป็นรหัสผ่านก่อนที่ทำการแฮชเพื่อเข้าสู่ระบบ
- Golden Ticket Attack
เทคนิคการโจมตีที่ใช้ฝังตัวอยู่ในระบบเน็ตเวิร์คของ Windows ที่เกิดขึ้นหลังจากผู้โจมตีสามารถยึดระบบ Windows Active Directory Domain Controller (AD DC) แล้วยกระดับสิทธิ์สูงสุดในระบบได้ จากนั้นนำกุญแจลับมาสร้างช่องทางการเข้าสู่ระบบ เรียกว่า Golden Ticket เพื่อใช้ในการเข้าสู่ระบบอย่างลับ ๆ ต่อไปแม้ว่าช่องโหว่ที่โจมตีเข้ามาจะถูกแก้ไขแล้ว
- Mimikatz
โปรแกรมยอดนิยมที่ใช้สำหรับการอ่านรหัสผ่านของผู้ใช้งาน จากในหน่วยความจำของระบบปฏิบัติการ Windows เนื่องจากรหัสผ่านอาจถูกเก็บไว้ชั่วคราว (cache) ในหน่วยความจำได้
- WCE
WCE ย่อมาจาก Windows Credentials Editor เป็นเครื่องมือในการแสดง session ของการเข้าสู่ระบบ บนระบบปฏิบัติการ Windows โดยสามารถ เพิ่ม, เปลี่ยน การเชื่อมโยงข้อมูลลับได้
Type
ประเภทของการโจมตีรหัสผ่านด้วยวิธีการและเทคนิคต่างๆ สามารถแบ่งได้ดังนี้
- Dictionary Attack
เป็นการนำคำที่เราเก็บไว้ในไฟล์หลาย ๆ คำมาทดลองใส่ค่าเป็นรหัสผ่านทีละคำ เช่นการนำไฟล์จากรหัสผ่านยอดนิยม 10000 รหัสผ่าน มาทดสอบล็อคอินเข้าไปในระบบกับชื่อผู้ใช้งานที่ต้องการจะทดสอบเดารหัสผ่าน
- Brute-force Attack
เป็นการเดารหัสผ่านทุกค่าที่สามารถเป็นไปได้เช่น ถ้ารหัสผ่านถูกกำหนดเป็นตัวเลข 4 ตัว ก็จะเดาตั้งแต่ 0000 เพิ่มขึ้นทีละ 1 ไปถึง 9999 จนกระทั่งบนตัวเลขที่เป็นรหัสผ่านที่ถูกต้อง
Offline password hash attacks
การนำรหัสผ่านที่ถูกทำการ hash มาแกะรหัสบนเครื่องแบบออฟไลน์ เหตุผลหลักที่นำมาแกะในเครื่องเราเองก็เพราะว่าใช้ทรัพยากรณ์ค่อนข้างสูง
- Tools(Offline password hash attacks)
เครื่องมือในการทดสอบโจมตีรหัสผ่าน โดยไม่จำเป็นต้องส่งรหัสผ่านไปทดสอบกับ service ที่กำลังทำงานอยู่ ตัวอย่างเช่น ถ้าแฮกเกอร์สามารถนำค่า MD5 แฮชของรหัสผ่านออกมาได้ เขาสามารถนำมาทดลองเดารหัสผ่านบนเครื่องตัวเองได้ โดยไม่ต้องส่งรหัสผ่านไปที่ service ตรง ๆ ข้อดีคือการทำแบบนี้จะมีประสิทธิภาพสูงมาก เพราะไม่ต้องห่วงเรื่องความหน่วงในระบบเน็ตเวิร์ค (network latency) ในขณะทำการส่งรหัสผ่านออกไปและรอผลที่ตอบกลับมา
- Rainbow table
เทคนิคการนำค่าแฮชเก็บไว้คู่กับรหัสผ่าน เพื่อใช้ตรวจสอบว่าค่าแฮชที่ต้องการจะแกะนั้นตรงกับรหัสผ่านใด ข้อดีของการทำ rainbow table คือตัวโปรแกรมที่ใช้แกะรหัสผ่าน ไม่จำเป็นต้องคำนวณค่าแฮชของรหัสผ่านใหม่ทุกครั้ง จึงทำการทดสอบแกะรหัสผ่านได้เร็วมาก ๆ แต่ข้อเสียคือ จำเป็นต้องเสียพื้นที่เก็บค่าแฮชคู่กับรหัสผ่าน ซึ่งโดยส่วนมากจะเพิ่มขนาดของ wordlist อย่างน้อย 2 เท่าและไม่รองรับการแฮชที่มีความซับซ้อนเช่นมีการใช้ค่า salt ที่ทำให้ค่าแฮชของรหัสผ่านเดิมไม่เหมือนกันเพราะใส่ค่าสุ่มเข้าไปด้วยได้
Wordlist
เป็นรายการของคำที่เอาไว้ใช้โจมตีแบบ Brute-force attack โดยส่วนมากมักจะเก็บไว้เป็นไฟล์ เช่น ไฟล์จากรหัสผ่านยอดนิยม 10000 รหัสผ่าน
- rockyou.txt(kali linux)
Wordlist มาตรฐานที่ได้มาใน Kali linux ตั้งแต่ติดตั้งระบบปฏิบัติการ โดยเก็บอยู่ที่ /usr/share/wordlists/rockyou.txt.gz
Online password attacks
การโจมตีรหัสผ่าน ที่ใช้ผ่านบริการที่ทำงานอยู่บนระบบเครือข่าย เช่น การเข้าสู่ระบบเว็บไซต์ การเข้าสู่ระบบการจัดการฐานข้อมูล การโจมตีรหัสผ่านประเภทนี้ผู้โจมตีจะต้องทดลองส่งรหัสผ่านเข้าไปล็อคอินกับบริการนั้น ๆ และตรวจสอบผลว่าสามารถเข้าสู่ระบบได้หรือเปล่า
- Tools (Online password attacks)
เครื่องมือในการโจมตีรหัสผ่าน ผ่านบริการบนระบบเครือข่าย ที่เปิดใช้งานอยู่ โดยการทดลองส่งรหัสผ่านเข้าไปเพื่อล็อคอินว่าสามารถเข้าได้หรือเปล่า
---------------------------------------------------
Exploitation
Exploitation หรือเรียกย่อ ๆ ว่า exploit คือการโจมตีระบบโดยใช้โค้ดหรือเทคนิคต่าง ๆ
Exploit-DB
เว็บไซด์ ที่ถูกใช้เป็นฐานข้อมูลที่เก็บรวบรวมเครื่องมือหรือโค้ดที่ใช้ในการโจมตีระบบผ่านช่องโหว่ https://www.exploit-db.com
Metasploit
Metasploit เป็นซอฟต์แวร์ framework ยอดนิยมที่ใช้พัฒนาและรวบรวมโค้ดสำหรับการโจมตีระบบผ่านช่องโหว่ต่าง ๆ https://www.metasploit.com
---------------------------------------------------
Vulnerability Scan
การสแกนหาช่องโหว่เพื่อค้นหาจุดอ่อนของระบบที่กำหนด
OpenVAS
Open Vulnerability Assessment System (OpenVAS) เป็น open source framework ที่มีบริการและเครื่องมือมากมายในการสแกนหาช่องโหว่ http://openvas.org
Nessus
เครื่องมือในการสแกนหาช่องโหว่ สามารถระบุข้อบกพร่อง มัลแวร์ การพลาดการอัพเดท และ การตั้งค่าที่ไม่ปลอดภัย ของซอฟต์แวร์
---------------------------------------------------
Tools (Network Security)
เครื่องมือที่ใช้เกี่ยวกับระบบเครือข่าย
Netcat
เป็นเครื่องมือที่ใช้ส่งและรับข้อมูลบนระบบเครื่อข่าย ผ่าน command line
Wireshark
เครื่องมือวิเคราะห์โปรโตคอลในระบบเครือข่าย สามารถใช้ดักจับข้อมูลที่วิ่งผ่านระบบเครือข่ายได้ผ่าน user interface https://www.wireshark.org
TCPdump
เครื่องมือดักจับข้อมูลในเครือข่าย ผ่าน command line
---------------------------------------------------
Information Gathering
เป็นขั้นตอนการรวบรวมข้อมูลขอระบบที่เราจะทดสอบหรือโจมตี ซึ่งเป็นขั้นตอนแรกของการทดสอบเจาะระบบ
Passive (Information Gathering)
การเก็บรวบรวมข้อมูลเป้าหมายจากแหล่งข้อมูลที่เป็นสาธารณะ
- Google hacking
คือการค้นหาข้อมูลผ่าน search engine โดยมีใช้ตัวกรองเพื่อเลือกเอาผลลัพธ์ที่เฉพาะเจาะจงจากการค้นหา
- Shodan
เป็น search engine ที่เป็นที่นิยมสำหรับ Penetration Tester ไว้ใช้ค้นหาข้อมูลของอุปกรณ์ที่มีการเชื่อมต่อกับอินเทอร์เน็ต สามารถเจาะจงประเภทของอุปกรณ์ได้ https://www.shodan.io
- E-mail harvesting
คือการรวบรวม email ในระบบที่เป็นเป้าหมายเราด้วยวิธีการต่างๆ
- Who is
การสืบค้นข้อมูลของผู้ใช้ลงทะเบียนเว็บไซต์และทรัพยากรผ่านเครือข่ายอินเทอร์เน็ต
- Maltego
เครื่องมือในการรวบรวมข้อมูลของระบบและนำมาวิเคราะห์
- Recon-ng
เป็น framework ในการสืบค้นข้อมูลของเว็บไซต์
Active (Information Gathering)
การเก็บรวบรวมข้อมูลเป้าหมายแบบที่มีปฏิกิริยาตอบโต้
- SNMP Enum
การสืบค้นข้อมูลจาก Protocol SNMP
- SMTP Enum
การสืบค้นข้อมูลจาก Protocol SMTP
ที่ได้จากการเชื่อต่อไปยัง service เป้าหมาย
- DNS Enum
เป็นเทคนิคที่ใช้ในการดึงข้อมูลออกมาจาก DNS Server