DDos
VIP Members
-
22/10/2013
-
524
-
2.191 bài viết
Học Network Pentesting và WebApp Pentesting thì cần chuẩn bị những kiến thức gì?
Trong bài viết trước mình đã giới thiệu khái quát các chuyên ngành hẹp trong lĩnh vực bảo mật mạng máy tính. Mình đã, đang và sẽ đi theo hướng Security chuyên về mạng và ứng dụng web. Bởi đây là một mảnh đất màu mỡ cho tất cả chúng ta, khi mà con người càng lệ thuộc vào máy tính thì chúng ta càng có nhiều thứ để làm.
Trong quá trình mình mình mod của diễn đàn Whitehat mình đã nhận được rất nhiều câu hỏi kiểu dạng như: muốn học chuyên về mạng thì cần những kiến thức gì, học ngôn ngữ lập trình nào là phù hợp nhất, hay bắt đầu học từ đâu.... Bài viết này sẽ giải đáp những thắc mắc đó giúp các bạn.
Một trong những nguyên tắc quan trọng cần nhớ là học theo phương châm của hacker: tấn công rồi sẽ phòng thủ. Khi chúng ta hiểu được nguyên tắc của các cuộc tấn công thì chúng ta mới có thể tìm ra cách để chống nó. Điều đó làm nên một sự thật rằng: hầu hết các biện pháp phòng chống như các phần mềm diệt virus đều đi sau các mẫu virus mới ra mắt.
Hiện nay, do hai lĩnh vực Network và Webapp là rất rộng nó gần như bao gần hết lĩnh vực của bảo mật thông tin. Cho nên mình khuyên các bạn nên học từng lĩnh vực một, tránh việc học đồng thời bởi nó có quá nhiều kiến thức bạn cần tiếp thu. Và bạn sẽ cảm thấy chán nản khi không thể tiếp thu hết những kiến thức ấy.
Network Penetration Testing
Để học tốt lĩnh vực này, chúng ta cần phải có hiểu biết cơ bản về cách thức làm việc của mạng, cách thức đóng gói tin, các giao thức mạng, và kỹ năng phân tích gói tin với các phần mềm như WireShark, tcpmdum,... Qua thời gian tìm hiểu cũng như sưu tầm, mình có thể gợi ý tới các bạn hai cuốn tài liệu về mạng.
Và cuốn sách của EC-coucil: Network 5
Hai cuốn sách này đều viết về những điều cơ bản nhất và cũng cần thiết nhất về mạng, trang bị cho bạn nền tảng để hiểu mạng để nghiên cứu về bảo mật mạng.
Về các ngôn ngữ lập trình bạn cần nắm vững kiến thức về C/C++ , Java, Assembly,... Nếu bạn học và nắm vững tốt một ngôn ngữ lập trình nào đó thì việc học các ngôn ngữ khác cũng rất dễ, bởi hầu hết các ngôn ngữ có kiến trúc học giống nhau chỉ khác đôi chút về cú pháp.
Web Application Penetration Testing
Với WebApp, điều đầu tiên bạn cần nắm vững đó là giao thức HTTP/HTTPS, bạn cần hiểu thật sâu về hai giao thức này, nắm vững về HTTP Requests/Response/Methods, các khái niệm cookies, status codes...và một vài cơ chế mã hóa như URL Encoding, Unicode Encoding, HTML Encoding, Base64 Encoding, Hex Encoding.
Trong phần WebApp bạn cần nắm vững các kiến thức về HTML, JavaScript, SQL và PHP. Tất nhiên bạn học chuyên sâu là không thừa, nhưng với các ngôn ngữ này chúng ta chỉ học ở mức nhìn vào source trang web chúng ta có thể biết hàm này có chức năng gì. Sở dĩ cần học các ngôn ngữ này bởi, khi các công cụ scan tự động không thể phát hiện ra lỗi thì chúng ta cần bắt đầu tìm lỗi trên trang web "bằng tay". Mình khuyên các bạn lên trang http://www.s3school.com để học các ngôn ngữ này. Trang này diễn giải rất ngắn gọn, không thừa thãi và rất dễ hiểu. Nếu bạn không có Internet, bạn có thể tải về cuốn sách này để đọc.
Với cả Network Pentest và WebApp Pentest, trong quá trình học tập bạn sẽ từng bước được làm quen với các ngôn ngữ để viết các công cụ cho riêng mình như Python, Ruby, Perl... Nếu bạn muốn tự mình viết ra những công cụ riêng thì bạn có thể bắt đầu học các ngôn ngữ này. Phần viết khai thác là một quá trình khó nhất trong lĩnh vực bảo mật, do đó các bạn không nên bắt đầu nó ngay từ đầu khi bạn chưa có bất kỳ kiến thức gì.
Chú ý: Một số bạn nói rằng việc chỉ biết sử dụng các công cụ mà không biết viết ra các tool thì chỉ là Skiddie, nhưng mình có thể khẳng định rằng quan điểm đó là hoàn toàn sai lầm. Mình đã từng biết và nói chuyện với khá nhiều những bug hunter nổi tiếng, họ nói rằng chỉ cần nắm vững kiến thức và sử dụng thành thạo các công cụ thì bạn hoàn toàn trở thành một nhà nghiên cứu bảo mật giỏi.
Và điều cuối cùng mình muốn nói trong bài viết này là bạn nên học tìm cho mình một nhóm để cùng nhau học, không nên học một mình. Học nhóm sẽ giúp bạn có tính cạnh tranh hơn, dễ dàng trao đổi hơn, và sẽ nhận được sự giúp đỡ dễ dàng hơn.
Cảm ơn các bạn đã đọc bài!
Trong quá trình mình mình mod của diễn đàn Whitehat mình đã nhận được rất nhiều câu hỏi kiểu dạng như: muốn học chuyên về mạng thì cần những kiến thức gì, học ngôn ngữ lập trình nào là phù hợp nhất, hay bắt đầu học từ đâu.... Bài viết này sẽ giải đáp những thắc mắc đó giúp các bạn.
Một trong những nguyên tắc quan trọng cần nhớ là học theo phương châm của hacker: tấn công rồi sẽ phòng thủ. Khi chúng ta hiểu được nguyên tắc của các cuộc tấn công thì chúng ta mới có thể tìm ra cách để chống nó. Điều đó làm nên một sự thật rằng: hầu hết các biện pháp phòng chống như các phần mềm diệt virus đều đi sau các mẫu virus mới ra mắt.
Hiện nay, do hai lĩnh vực Network và Webapp là rất rộng nó gần như bao gần hết lĩnh vực của bảo mật thông tin. Cho nên mình khuyên các bạn nên học từng lĩnh vực một, tránh việc học đồng thời bởi nó có quá nhiều kiến thức bạn cần tiếp thu. Và bạn sẽ cảm thấy chán nản khi không thể tiếp thu hết những kiến thức ấy.
Network Penetration Testing
Để học tốt lĩnh vực này, chúng ta cần phải có hiểu biết cơ bản về cách thức làm việc của mạng, cách thức đóng gói tin, các giao thức mạng, và kỹ năng phân tích gói tin với các phần mềm như WireShark, tcpmdum,... Qua thời gian tìm hiểu cũng như sưu tầm, mình có thể gợi ý tới các bạn hai cuốn tài liệu về mạng.
Hai cuốn sách này đều viết về những điều cơ bản nhất và cũng cần thiết nhất về mạng, trang bị cho bạn nền tảng để hiểu mạng để nghiên cứu về bảo mật mạng.
Về các ngôn ngữ lập trình bạn cần nắm vững kiến thức về C/C++ , Java, Assembly,... Nếu bạn học và nắm vững tốt một ngôn ngữ lập trình nào đó thì việc học các ngôn ngữ khác cũng rất dễ, bởi hầu hết các ngôn ngữ có kiến trúc học giống nhau chỉ khác đôi chút về cú pháp.
Web Application Penetration Testing
Với WebApp, điều đầu tiên bạn cần nắm vững đó là giao thức HTTP/HTTPS, bạn cần hiểu thật sâu về hai giao thức này, nắm vững về HTTP Requests/Response/Methods, các khái niệm cookies, status codes...và một vài cơ chế mã hóa như URL Encoding, Unicode Encoding, HTML Encoding, Base64 Encoding, Hex Encoding.
Trong phần WebApp bạn cần nắm vững các kiến thức về HTML, JavaScript, SQL và PHP. Tất nhiên bạn học chuyên sâu là không thừa, nhưng với các ngôn ngữ này chúng ta chỉ học ở mức nhìn vào source trang web chúng ta có thể biết hàm này có chức năng gì. Sở dĩ cần học các ngôn ngữ này bởi, khi các công cụ scan tự động không thể phát hiện ra lỗi thì chúng ta cần bắt đầu tìm lỗi trên trang web "bằng tay". Mình khuyên các bạn lên trang http://www.s3school.com để học các ngôn ngữ này. Trang này diễn giải rất ngắn gọn, không thừa thãi và rất dễ hiểu. Nếu bạn không có Internet, bạn có thể tải về cuốn sách này để đọc.
Với cả Network Pentest và WebApp Pentest, trong quá trình học tập bạn sẽ từng bước được làm quen với các ngôn ngữ để viết các công cụ cho riêng mình như Python, Ruby, Perl... Nếu bạn muốn tự mình viết ra những công cụ riêng thì bạn có thể bắt đầu học các ngôn ngữ này. Phần viết khai thác là một quá trình khó nhất trong lĩnh vực bảo mật, do đó các bạn không nên bắt đầu nó ngay từ đầu khi bạn chưa có bất kỳ kiến thức gì.
Chú ý: Một số bạn nói rằng việc chỉ biết sử dụng các công cụ mà không biết viết ra các tool thì chỉ là Skiddie, nhưng mình có thể khẳng định rằng quan điểm đó là hoàn toàn sai lầm. Mình đã từng biết và nói chuyện với khá nhiều những bug hunter nổi tiếng, họ nói rằng chỉ cần nắm vững kiến thức và sử dụng thành thạo các công cụ thì bạn hoàn toàn trở thành một nhà nghiên cứu bảo mật giỏi.
Và điều cuối cùng mình muốn nói trong bài viết này là bạn nên học tìm cho mình một nhóm để cùng nhau học, không nên học một mình. Học nhóm sẽ giúp bạn có tính cạnh tranh hơn, dễ dàng trao đổi hơn, và sẽ nhận được sự giúp đỡ dễ dàng hơn.
Cảm ơn các bạn đã đọc bài!
Chỉnh sửa lần cuối bởi người điều hành: