Trở thành hacker mà không biết lập trình, có thể hay không thể?

DDos

VIP Members
22/10/2013
524
2.191 bài viết
Trở thành hacker mà không biết lập trình, có thể hay không thể?
Trong gần 10 năm học tập và nghiên cứu lĩnh vực an ninh mạng, mình có nhận được rất nhiều câu hỏi thắc mắc của các bạn trong và ngoài nước về mối liên hệ giữa lập trình và hacker. Đại loại sẽ có câu hỏi kiểu như:
  • Học an ninh mạng cần biết lập trình hay không?
  • Ngôn ngữ lập trình nào để trở thành hacker?
  • Học ngôn ngữ lập trình A có giúp ích gì trong việc học kiểm thử mảng web ứng dụng hay không?
  • ...
Trong bài viết này mình muốn chia sẻ kinh nghiệm cũng như những hoạt động mình đã làm để trả lời cho câu hỏi "Trở thành hacker mà không biết lập trình, có thể hay không thể?"
Mình xin lưu ý, đây là bài viết mang tính cá nhân, từ một người tự học, tự mày mò và không đi qua bất kì một trường lớp đào tạo nào về an ninh mạng.

hacker_1.jpg

Hacker là gì? Với mình, hacker là một người bằng một cách nào đó có thể thay đổi cách hoạt động của một phần mềm hoặc một hệ thống mà không giống mong muốn của người viết nên phần mềm hoặc hệ thống. Vậy "cách nào đó" ở đây là gì?
Đa số các phần mềm và hệ thống, đều cho người dùng tương tác với nó, và cái cốt yếu dẫn đến lỗ hổng trong một hệ thống hoặc một phần mềm là người dùng có thể thay đổi giá trị đầu vào để làm ảnh hưởng đến giá trị đầu ra của một tính năng nào đó. Khi giá trị đầu vào nằm ngoài khả năng xử lý của phần mềm dẫn đến khả năng xử lý của phần mềm hoặc hệ thống có vấn đề và một lỗ hổng sẽ xảy ra.

Vậy, vấn đề mấu chốt ở đây là làm cách nào để một người dùng bình thường có thể tìm ra giá trị đầu vào "bất bình thường" này?

  • Tìm ra một cách ngẫu nhiên. Có rất nhiều người dùng, trong quá trình sử dụng phần mềm, bằng một cách nào đó vô tình bấm sai phím hoặc kết hợp ngẫu nhiên các tổ hợp phím khiến hệ thống lỗi. Ví dụ như trong năm 2016, nhà nghiên cứu phát hiện ra lỗi trong quá trình update của Windows 10, người dùng chỉ cần bấm Shift + F10 để kích hoạt Command Prompt trong quá trình cập nhật, với tương tác trong Command Prompt, chúng ta có thể truy cập vào ổ đĩa cứng trong quá trình update và vô hiệu hóa BitLocker.
  • Tìm ra một cách có hệ thống. Đây là một quá trình đòi hỏi rất nhiều kỹ năng. Trong phương pháp này sẽ được chia ra làm hai dạng. Tìm lỗ hổng đã biết trên một phần mềm hoặc một hệ thống và tìm lỗ hổng mới mà chưa được phát hiện. Trong quá trình tìm lỗ hổng này, liệu chúng ta có cần phải biết lập trình hay không? Câu trả lời là có thể hoặc không. Tại sao có và tại sao không? Trong những năm đầu, khi mình tìm hiểu về an ninh mạng khoảng những năm 2012, trong tay mình là một cái gì đó rất mơ hồ, không có kiến thức lập trình, không có kiến thức cơ bản về hệ thống mạng. Nhưng mình có thể sử dụng và hiểu cách hoạt động của các công cụ thử nghiệm thâm nhập, biết được cách hoạt động của hàm trong một vài ngôn ngữ lập trình. Tuy với kiến thức và kinh nghiệm khá là non, và không biết chút gì về lập trình cả, nhưng mình đã tìm ra rất nhiều lỗ hổng trong các trang web khác nhau và nhận về tiền thưởng. Ở đây mình lưu ý rằng, hiện nay, có rất nhiều các công cụ tự động cho phép bạn dò quét và tìm kiếm lỗ hổng mà không yêu cầu bạn biết bất cứ một khái niệm nào về lập trình. Tuy nhiên, đó là câu chuyện của 4 và 5 năm trước. Hiện nay, với sự đầu tư bài bản, các hệ thống web cũng như phần mềm có sự đầu tư về bảo mật, nên việc sử dụng các công cụ tự động để tìm kiếm lỗ hổng sẽ trở nên khó khăn hơn. Việc tìm kiếm lỗ hổng không chỉ dừng lại ở việc quét nữa, mà bạn cần phải phân tích kĩ lưỡng, hiểu logic của từng hàm, phải dịch ngược, phải debug... Đây chính là khi kỹ năng lập trình được dùng tới.
Nếu bạn không có kiến thức lập trình, bạn sẽ không thể hiểu logic của phần mềm, không hiểu cách thức của phần mềm hoạt động nên khả năng tìm ra lỗ hổng mới là gần như không thể. Một hacker nên biết nhiều ngôn ngữ lập trình và kỹ năng khác nhau. Các ứng dụng và trang web khác nhau mà bạn sử dụng được lập trình bằng ngôn ngữ máy tính cụ thể. Trước khi trở thành một hacker, bạn cần là một lập trình viên tuyệt vời. Bạn phải hiểu rằng bạn cần học ngôn ngữ lập trình để làm hỏng trang web, ngôn ngữ lập trình nào để làm hỏng ứng dụng hoặc phần mềm.

Web Hacking

Hack web là một trong những lĩnh vực phổ biến nhất trong thế giới hack. Để thực hiện tấn công một trang web, bạn cần hiểu các ngôn ngữ được sử dụng để mã hóa một trang web như JavaScript, HTML, PHP & MySQL, vì phần lớn các trang web được xây dựng bằng cách sử dụng các ngôn ngữ này. Vì vậy, đối với lĩnh vực web hacking, bạn cần danh sách này:
  • HTML.
  • JavaSCRIPT
  • PHP
  • SQL
Operating Systems & Software Hacking & Exploits Writing
  • C.
  • C++
  • Python
  • Perl
  • Ruby
Reverse Engineering
Kỹ thuật đảo ngược là quá trình tìm ra các nguyên lý kỹ thuật của một phần mềm ứng dụng hay thiết bị cơ khí qua việc phân tích cấu trúc, chức năng và hoạt động của nó. Trong quá trình này, người ta thường phải tháo dỡ đối tượng (ví dụ một thiết bị cơ khí, một thành phần điện tử, một phần mềm) thành từng phần và phân tích chi tiết hoạt động của nó, thường là với mục đích xây dựng một thiết bị hoặc phần mềm mới hoạt động giống hệt nhưng không sao chép bất cứ thứ gì từ đối tượng nguyên bản.
  • C.
  • C++.
  • C#.
  • VB.
  • Python.
  • Perl.
  • Ruby.
  • JavaScript.
  • PHP.
  • Java.
  • Delphi.
  • ObjectiveC.
  • ErLang.
  • Go Lang.
  • SQL...
Bạn có thể thấy, mỗi lĩnh vực yêu cầu rất nhiều kiến thức về lập trình.
Vậy kết lại, "Trở thành hacker mà không biết lập trình, có thể hay không thể?"
Câu trả lời cho câu hỏi này sẽ không có câu trả lời thỏa đáng. Nhưng ở góc độ cá nhân, mình nghĩ là tốt để biết nhiều ngôn ngữ lập trình.
 
Anh cho em hỏi :
Em muốn học để tham dự ctf mảng Web Security, hiện em đnag học C với python nhưng trên mạng lại khá ít tài liệu về quá trình học . Anh có thể cho em tiếp theo nên học cái gì không ạ
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bạn có thể tham khảo project này. Đây là chia sẻ của một bug bounty hunter hàng đầu trên hackerone.
Anh cho em hỏi :
Em muốn học để tham dự ctf mảng Web Security, hiện em đnag học C với python nhưng trên mạng lại khá ít tài liệu về quá trình học . Anh có thể cho em tiếp theo nên học cái gì không ạ

.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên