Bài viết này sẽ không hướng đến kiểu “Ồ cái này mũ trắng nên học” hoặc “Bạn nên học ngôn ngữ này nếu bạn bên team Mũ xanh” như các bài lá cải khác hay nói.

Vì vậy, bài này sẽ hướng đến các ngôn ngữ mà theo số đông sẽ cho rằng có ích, được đúc kết từ kinh nghiệm, hiểu biết và quá trình học hỏi của các chuyên gia lâu năm. Các ngôn ngữ liệt kê dưới sẽ không được xếp hạng vì tuỳ theo thời mà độ mạnh yếu của từng ngôn ngữ đó sẽ biến động không lường được.

Và thay vì tôn thờ bài viết này như một thứ gì đó cao siêu, thì hãy bình tĩnh đọc và hiểu rằng ngôn ngữ lập trình là công cụ trong hộp dụng cụ. Bạn có thể dùng búa để đóng ốc vít vào tường nhưng chắc chắn là không hiểu quả bằng một cây tua vít.

Như vậy, vấn đề về an ninh bao gồm học hỏi các nguyên lý thì ngôn ngữ lập trình là những công cụ không thể thiếu của những người nghiên cứu bảo mật, vì dù gì hệ thống hiện tại cũng được xây dựng từ phần cứng và phần mềm.

Ngôn ngữ lập trình C

Khá nhiều hệ điều hành đi kèm với C và gần như tất cả các thư viện và framework bạn sẽ phải làm quen khi xây dựng một phần mềm bằng C. Tại sao? Nó là một ngôn ngữ tinh gọn và hiệu quả (nếu được code đúng) về cơ bản có thể làm bất cứ điều gì từ việc ứng dụng mạng socket đến xử lý hình ảnh.

Từ góc độ Info / CyberSec, ngôn ngữ này rất tuyệt để học vì nó khiến bạn hiểu được cách mà một số hệ thống cơ bản hoạt động. Nó cũng giúp bạn dễ dàng hiểu cách khai thác cụ thể và cách công cụ hoạt động, cách bạn có thể điều chỉnh nó để làm nhiều thứ hơn cho bạn.

C được sử dụng trong rất nhiều phần mềm, nhưng tôi thường thấy nó được sử dụng trong phát triển hệ thống nhúng và các chương trình cấp thấp khác (nếu phần bạn làm việc gần với phần cứng bạn sẽ thấy đó là card mạng).

Hầu hết các thư viện mã hoá đều dựa trên C, vì vậy C là một sự đánh cược tuyệt vời nếu bạn muốn đi sâu vào mật mã học.

Ngôn ngữ lập trình C++

Có một câu nói hay của Bjarne Stroustrup, người sáng lập ngôn ngữ:

C giúp bạn dễ dàng tự bắn vào chân mình; C++ làm cho nó khó hơn, nhưng khi bạn làm thì bạn sẽ không còn chân để bắn nữa.

Về cơ bản, bạn có thể nghĩ về C++ như một người anh lớn của C và có tính gây nghiện không hề nhẹ. Nó là một ngôn ngữ hoàn toàn tuyệt vời mà tôi nghĩ rằng ít nhất mọi người nên học một chút để hiểu nó khó khăn như thế nào khi làm việc và đánh giá cao người làm việc với nó hàng ngày.

Như đã đề cập ở trên, nó được xây dựng trên cùng một mã nguồn với C, với một loạt các thư viện giúp C++ dễ dàng hoạt động hơn trong khi vẫn cung cấp cho bạn một số tính năng cấp thấp mà bạn mong muốn từ C.

Có một lượng khổng lồ các chương trình tốt được xây dựng dựa trên hoặc sử dụng C++ cho các phần của nó. Ví dụ nmap, một công cụ được sử dụng rộng rãi cho phép bạn quét và liệt kê máy chủ.

C++ được sử dụng trong nhiều trường hợp khi tài nguyên bị hạn chế và năng suất phải cao như trên các máy chủ thương mại điện tử và trong các ứng dụng chứng khoán, vì vậy mọi thứ cần phải đạt được tốc độ và an toàn.

Ngôn ngữ lập trình Python

Nếu bạn chưa quen với lập trình và muốn học như một kỹ năng, thì tôi sẽ đề nghị bắt đầu với ngôn ngữ này. Cú pháp không chỉ rất dễ hiểu mà còn có một số lượng thư viện liền mạch để làm bất cứ điều gì bạn muốn.

Bạn có thể làm bất cứ điều gì từ lập trình đa luồng để sử dụng các thư viện của nó để gửi các gói TCP đến các máy. Tiềm năng của ngôn ngữ được tăng thêm nhờ vào sự kết hợp với ngôn ngữ C, kết hợp tốc độ phát triển của Python với hiệu quả của C.

Python cũng được sử dụng rộng rãi khi thực hiện phân tích cryptocurrency và malware. Vì vậy, nếu bạn muốn tìm hiểu thêm thì bạn nên xem qua Python.

Ngôn ngữ lập trình Bash

Bash là một ngôn ngữ kịch bản tuyệt vời để chọn trong trường hợp bạn chủ yếu sử dụng hệ điều hành Linux (hoặc nếu bạn đang sử dụng Bash cho Windows).

Theo quan điểm cá nhân của riêng tôi, nó là một công cụ tuyệt vời để sử dụng khi kiểm tra thâm nhập vì nó thường đi kèm trên hầu hết các máy tôi đã tấn công, nghĩa là tôi có thể dễ dàng gửi một tập lệnh có thể tự động hóa các quy trình mà tôi cần thực hiện (như làm sạch logs).

Tôi đã đề nghị những người không quen thuộc với Linux nên học một số ngôn ngữ vì nó không chỉ giúp tự động hóa các task nhỏ nhặt, mà còn rất có thể sẽ mở mang cho bạn nhiều lệnh mới.

Ngôn ngữ lập trình JavaScript

Đơn giản là không thể đi đâu nào mà bạn không nhìn thấy thứ gì đó được tạo ra bằng JavaScript, nghĩa là chúng ta ít nhất cũng phải hiểu rằng sao ngôn ngữ này lại thông dụng đến thế - bất kể tôi muốn sử dụng nó để khai thác hay cần thắt chặt an ninh hệ thống.

Trước đây, JavaScript chủ yếu là ngôn ngữ client (nghĩa là nó thực thi code trên hệ thống client chứ không phải trên server), nhưng ngày nay chúng ta thấy nó ở cả server và client.

Điều này nghĩa là có gấp đôi lượng khai thác tiềm năng hoặc gấp đôi những thứ cần phải được hoàn thiện.

Vậy bạn thực sự có thể làm gì với JavaScript? Chúng ta chủ yếu thấy JavaScript được sử dụng trên trình duyệt hoặc trên máy chủ web. Một số framework phổ biến (kể từ 16/02/2017) như NodeJS, AngularJS, ReactJS, jQuery, v.v ... Đầu tiên (NodeJS) là framework máy chủ cho phép bạn tạo API để truyền dữ liệu từ máy chủ và ba cái khác chủ yếu là phía khách hàng với những điểm mạnh và điểm yếu riêng.

Lý do để học ngôn ngữ này rất đơn giản: Nó được sử dụng ở mọi nơi, vì vậy nó sẽ luôn có ích cho bạn - bất kể mục đích của bạn là gì. Ngoài việc nó được sử dụng ở mọi nơi, nó cũng rất dễ học, vì vậy ngay cả khi bạn là người mới bắt đầu, bạn sẽ dễ dàng học cách sử dụng ngôn ngữ cho những điều cơ bản như hiển thị văn bản trên trang web.

Các ngôn ngữ kịch bản độc quyền (của nhà sản xuất)

Điều này bao gồm tất cả các ngôn ngữ của các nhà cung cấp khác nhau như Cisco.

Những ngôn ngữ này chủ yếu có lợi cho bạn nếu bạn đang làm việc với phần cứng tương ứng của chúng. Giống như nếu bạn đang làm việc với Cisco IOS, bạn sẽ làm việc với TCL để tự động hóa mọi thứ.

Tôi có kinh nghiệm rất hạn chế với các loại ngôn ngữ này và tất cả những gì tôi thực sự có thể nói là việc biết các ngôn ngữ kịch bản này sẽ có lợi cho bạn nếu bạn làm việc với một loại phần cứng cụ thể hoặc một mạng và bảo mật của nó.

Tôi biết có một loạt các ngôn ngữ khác mà tôi đã bỏ lỡ (Ruby, Java, v.v.) và tôi nhận ra nhiều bạn có thể không đồng ý với tôi khi đặt JavaScript vào danh sách. Nhưng tôi tin rằng nó sẽ quan trọng đối với chúng ta ít nhất là có một sự hiểu biết cơ bản về cách ngôn ngữ đó hoạt động đơn giản vì nó ở khắp mọi nơi.

Tôi hy vọng điều này chứng tỏ là một danh sách hợp lý và giúp một số bạn trong quá trình tìm hiểu về ngôn ngữ lập trình, một phần của Info / CyberSec.