Dưới đây là tổng quan về những gì bạn cần để học penetration tesing (kiểm thử thâm nhập) và tập hợp các công cụ hack, tài nguyên và tài liệu tham khảo để thực hành ethical hacking (hack đạo đức).
Trước khi bắt đầu
- Nếu bạn chưa quen với bảo mật thông tin, hãy quên mọi thứ bạn biết về “hack”.
- Đừng bắt đầu sử dụng các công cụ mà không đọc về cách nó hoạt động
- Không tải xuống hoặc sử dụng các công cụ nếu bạn chưa kiểm tra mã của nó.
- Đừng sử dụng những công cụ này để làm những việc ngu ngốc như điều tra/hack mà không có sự đồng ý của bạn bè hoặc tệ nhất là nhà tuyển dụng của bạn.
- Đọc sách, hướng dẫn, tài liệu, biết tò mò và đừng là script kiddie.
- Tôi ước bạn không sử dụng những công cụ này cho mục đích bất hợp pháp, nhưng nếu bạn làm vậy, hy vọng bạn biết mình đang làm gì.
- Thực hành các thử thách, không phải mục tiêu thực!
Penetration testing là gì?
Kiểm thử thâm nhập là một loại kiểm thử bảo mật được sử dụng để kiểm tra tính bảo mật của một ứng dụng. Nó được tiến hành để tìm ra một rủi ro bảo mật có thể có trong một hệ thống.
Nếu một hệ thống không an toàn, thì kẻ tấn công có thể phá vỡ hoặc kiểm soát trái phép hệ thống đó. Rủi ro bảo mật thường là một lỗi ngẫu nhiên xảy ra trong khi phát triển và triển khai phần mềm. Ví dụ: lỗi cấu hình, lỗi thiết kế và lỗi phần mềm, v.v.
Lộ trình học
Có nhiều lộ trình để bạn thành Hacker, đây chỉ là 1 trong những con đường giúp bạn trở thành Hacker thực thụ. Bạn có thể tham khảo roadmap này, nó cũng tương tự với lộ trình học đại học:
- Lập trình và khoa học máy tính
- Nguyên tắc cơ bản về mạng và hệ điều hành
- Bảo mật ứng dụng
- Chọn chuyên ngành yêu thích của bạn, chẳng hạn như: bảo mật nhị phân, bảo mật ứng dụng web (sau này làm bug hunter – sợ săn kiếm tiền thưởng)
- Mobile forensics, pentesting, bảo mật ứng dụng
- An ninh mạng – Network Security – Học mô hình mạng – Triển khai hệ thống mạng
- Đội đỏ – Red Team
- Đội xanh – Blue Team
Một số khái niệm
Infosec: Bảo mật thông tin, là hoạt động ngăn chặn việc truy cập trái phép, sử dụng, tiết lộ, làm gián đoạn, sửa đổi, kiểm tra, ghi lại hoặc phá hủy thông tin. Thông tin hoặc dữ liệu có thể ở bất kỳ dạng nào, điện tử hoặc vật lý. Infosec cũng có thể là một người thực hành ethical hacking. (Wikipedia)
Opsec: Bảo mật hoạt động, là một quá trình xác định xem liệu tình báo đối phương có thể quan sát được các hành động của mình hay không, xác định xem thông tin mà kẻ thù thu được có hữu ích cho họ hay không, sau đó thực hiện các biện pháp đã chọn để loại bỏ hoặc giảm bớt kẻ thù khai thác thông tin quan trọng. (Wikipedia)
Black/Grey/White hat hacker: Người mà sử dụng lổ hổng hoặc khai thác để xâm nhập vào hệ thống hoặc ứng dụng. Mục tiêu và phương pháp khác nhau tùy thuộc vào việc họ là hacker mũ đen, xám hay trắng. Mũ đen là người có ý đồ xấu không cần sự cho phép để đột nhập vào hệ thống hoặc ứng dụng. Mũ trắng thường là một nhà nghiên cứu bảo mật, người thực hành hack có đạo đức. Mũ xám ở giữa hai loại này, họ có thể trở nên xấu nếu nó có lợi (vi phạm dữ liệu, tiền, tố cáo …).
Red Team: Đội đỏ là một nhóm độc lập thách thức một tổ chức cải thiện hiệu quả của mình bằng cách giả định vai trò hoặc quan điểm đối địch. Nó đặc biệt hiệu quả trong các tổ chức có nền văn hóa mạnh và cách tiếp cận vấn đề cố định. Cộng đồng tình báo Hoa Kỳ (quân sự và dân sự) có các đội đỏ khám phá các tương lai thay thế và viết các bài báo như thể họ là những nhà lãnh đạo thế giới nước ngoài. Rất ít học thuyết hoặc ấn phẩm chính thức về Đội Đỏ trong quân đội tồn tại. Trong các bài tập trên infosec, đội Đỏ đóng vai trò là những kẻ tấn công. (Wikipedia)
Blue team: Đội xanh là nhóm các cá nhân thực hiện phân tích hệ thống thông tin để đảm bảo an ninh, xác định các lỗi bảo mật, xác minh tính hiệu quả của từng biện pháp bảo mật và để đảm bảo rằng tất cả các biện pháp bảo mật sẽ tiếp tục có hiệu lực sau khi thực hiện. Do đó, các đội xanh được phát triển để thiết kế các biện pháp phòng thủ chống lại các hoạt động của đội đỏ. Trong các bài tập trên infosec, đội Xanh đóng vai trò người phòng thủ. (Wikipedia)
Penetration tester: Một hacker có đạo đức thực hành bảo mật, kiểm tra các ứng dụng và hệ thống để ngăn chặn sự xâm nhập hoặc tìm ra lỗ hổng.
Security researcher: Người thực hành pentest và duyệt web để tìm các trang web lừa đảo/giả mạo, máy chủ bị nhiễm, lỗi hoặc lỗ hổng. Họ có thể làm việc cho một công ty với tư cách là nhà tư vấn bảo mật và rất có thể là một người thuộc Blue Team.
Reverse engineering: Kỹ thuật đảo ngược, còn được gọi là kỹ thuật quay lại, là quá trình mà một đối tượng được giải cấu trúc để tiết lộ thiết kế, kiến trúc của nó hoặc để rút ra kiến thức từ đối tượng đó. Tương tự như nghiên cứu khoa học, điểm khác biệt duy nhất của nghiên cứu khoa học là về một hiện tượng tự nhiên. (Wikipedia)
Social engineering: Trong ngữ cảnh an toàn thông tin, nó đề cập đến việc thao túng tâm lý con người để thực hiện các hành động hoặc tiết lộ thông tin bí mật. Một loại thủ thuật nhằm mục đích thu thập thông tin, gian lận hoặc truy cập hệ thống, nó khác với một “trò lừa” truyền thống ở chỗ nó thường là một trong nhiều bước của một kế hoạch tấn công phức tạp hơn. (Wikipedia)
Threat analyst: Hay còn gọi là threat hunter, có thể là nhà phân tích mối đe dọa an ninh mạng, là một chuyên gia bảo mật hoặc nhà cung cấp dịch vụ được quản lý (MSP) sử dụng các kỹ thuật thủ công hoặc công cụ để phát hiện các sự cố bảo mật có thể làm mất khả năng nắm bắt của các hệ thống tự động. Những threat hunter này có mục đích phát hiện ra các sự cố mà nếu không doanh nghiệp sẽ không phát hiện ra, cung cấp cho các giám đốc an ninh thông tin (CISO) và giám đốc thông tin (CIO) một tuyến phòng thủ bổ sung chống lại các mối đe dọa dai dẳng nâng cao (APT). (SearchCIO)
Ngôn ngữ lập trình
Học lập trình là cách đầu tiên để bắt đầu học về bảo mật. Có rất nhiều ngôn ngữ, hầu hết mọi người đều bắt đầu với Python, đó là ngôn ngữ đơn giản và phổ biến nhất. PHP và Go ít phổ biến hơn để viết những thứ liên quan đến bảo mật, nhưng bất kỳ thứ gì trong số này vẫn có thể được sử dụng trong ngữ cảnh như vậy. Bash và Powershell chủ yếu là về scripting và viết các ứng dụng CLI đơn giản.
Vì không phải tất cả các ngôn ngữ đều hoạt động theo cùng một cách, bạn cần phải xem cách chúng hoạt động và những gì bạn muốn học. Ví dụ, trình biên dịch C ++ và Java, PHP và Python thì không, chúng là ngôn ngữ thông dịch. Điều này chắc chắn thay đổi những gì bạn nên sử dụng chúng. Mỗi ngôn ngữ cũng có các mẫu thiết kế riêng.
Scripting
- Bash
- Powershell
Hack Web
- HTML (form, nhập dữ liệu)
- Javascript (cookie,…)
- SQL (dữ liệu)
- PHP (data flow)
Software & mobile apps
- Java/C# (phần mềm)
- Swift (di động)
- C/C++ (lập trình khác, tool, khai thác)
Mục đích chung
- Python
- Ruby
- Perl
- Go
Content Management Systems
- WordPress
- Joomla
- Drupal
- SPIP
Các bước kiểm thử cơ bản
Đây là các bước trong quy trình mà một pentester sẽ thực hiện. (Tutorialspoint)
Các khái kiến thức khác
An ninh mạng
Bạn cũng cần phải tìm hiểu sâu hơn về lĩnh vực này vì mọi hệ thống đều phải hoạt động với internet để giao tiếp với nhau. Tìm hiểu về mô hình OSI, lỗ hổng bảo mật, v.v.. sau phần này, bạn sẽ học được nhiều điều về hack WIFI và Hack Server hoặc PC trong mạng nội bộ.
Bảo mật ứng dụng di động
Trong lĩnh vực này, bạn sẽ tìm hiểu mọi thứ về bảo mật, phần cứng, phần mềm của điện thoại nhằm phục vụ điều tra số.
Trong lĩnh vực này, bạn sẽ tìm hiểu về IOS, Android, v.v., bạn nên tập trung tìm hiểu về các tính năng bảo mật của hệ điều hành di động hiện đại.
Tuy nhiên ở Việt Nam chỉ có một số ít đơn vị đào tạo mảng này và thị trường việc làm chủ yếu là các công ty nước ngoài hoặc cơ quan có chức năng điều tra số.
Hiểu về mật mã – mã hóa
Phần này đặc biệt quan trọng vì hầu hết thông tin bảo mật đều được mã hóa nên nó đề cập và xuất phát từ các khái niệm toán học và nó là loại tính toán dựa trên quy tắc được gọi là thuật toán để chuyển đổi nội dung theo cách khó giải mã.
Bạn sẽ học qua các cách mã hóa và giải mã dữ liệu.
Bảo mật ứng dụng web
Trong phần này, bạn nên tập trung vào các lỗ hổng bảo mật tiềm ẩn thường ảnh hưởng đến ứng dụng web và là kỹ sư bảo mật web, bạn sẽ có thể hiểu CVE, cơ chế hoạt động web, v.v.
Để thành một người Pentester giỏi, bạn nên thực hành nhiều có rất nhiều trang web kiểm tra web miễn phí như: OWASP, DVWA, JUICE, v.v. và để hiểu cơ chế bảo mật web, bạn nên tìm hiểu và hiểu về 10 lỗ hổng hàng đầu của OWASP.
Kỹ năng giao tiếp – Kỹ năng mềm – Kỹ năng viết Report
Trong lộ trình trở thành Hacker thực thụ, bạn cần phải thường xuyên trao đổi kinh nghiệm và đặt câu hỏi thắc mắc với nhóm (Team), đối tác của mình, điều cực kỳ quan trọng để có lĩnh vực này vì là một Hacker, bạn phải viết báo cáo về các lỗ hổng mà bạn đã tìm thấy và phải chia sẻ kiến thức kỹ thuật của mình cho khách hàng có thể hiểu được mức nghiêm trọng của lỗ hổng ở hệ thống.
Nội dung bài viết Report về lỗ hổng bảo mật phải rõ ràng, dễ hiểu và ngắn gọn nhất có thể.
Học cách sử dụng Tool
Tất nhiên là dùng Tool sẽ nhanh hơn dùng tay, bạn cũng nên tìm hiểu một số Tool Recon, Tool Check lỗ hổng phổ biến để tiết kiệm trong quá trình lấy dấu vết hệ thống hoặc kiểm thử hệ thống.
Tool chỉ giúp ta tiết kiệm thời gian, chứ không giúp bạn nhanh chóng trở thành Hacker. Một Hacker thực thụ là phải biết hệ thống đó bị lỗi ở chỗ nào? Tại sao nó bị lỗi và cách khai thác như thế nào? Và cách sửa lỗi như thế nào?
Tài nguyên bổ sung
- Devbreak on Twitter
- The Life of a Security Researcher
- Find an awesome hacking spots in your country
- Awesome-Hacking Lists
- Crack Station
- Exploit Database
- Hackavision
- Hackmethod
- Packet Storm Security
- SecLists
- SecTools
- Smash the Stack
- Don’t use VPN services
- How to Avoid Becoming a Script Kiddie
- 2017 Top 10 Application Security Risks
- Starting in cybersecurity ?
Các trang về các lỗ hổng công khai
Ngoài ra, bạn có thể xem thêm về các Challenges và các Tools mình tổng hợp ở 2 bài viết khác trong series này nhé.