Xin chào,
Hôm nay chúng ta lại đến với chuyên mục Hỏi Đáp Tự Học Cybersecurity. Hôm nay, chúng ta sẽ trả lời thắc mắc của 5 bạn bên dưới nhé
1 – Sự khác biệt giữ Cybersecurity và Information Security & bối rối khi các trường đặt tên chuyên ngành khác nhau
Bạn Cò có một câu hỏi như sau:
Dạ, chào admin Hướng Dẫn Tự Học Network Security!
Admin có thể giải đáp giúp em sự khác nhau về Cybersecurity và Infomation Security và hướng đi được không ạ? Chúng song hành, hay một cái bao trùm cái còn lại ạ? Em lên mạng tìm hiểu và họ nói hai thuật ngữ này gần như nhau.
Một số trường đào tạo ngành An Toàn Thông Tin với tên Information Assurance, ở một số trường lại là Information Security, còn trường em lại là Truyền Thông và Mạng Máy Tính. Điều này làm em hơi rối khi muốn theo lĩnh vực này… Em tình cờ biết đến Page trên facebook với nhiều bài viết vì cộng đồng rất hay và tâm huyết.
Hiện tại em vẫn là noob chưa có kinh nghiệm gì, nếu câu hỏi của em quá “dở” hay gây khó chịu thì admin thông cảm. ^^ Mong được anh giải đáp ạ. Em xin cảm ơn!
Trả lời:
Phần trả lời của mình sẽ bao gồm 2 phần như sau:
Phần 1: Cybersecurity và Information Security
Cám ơn câu hỏi của bạn. Câu hỏi của bạn rất thú vị vì nó chỉ ra đúng cái mà nhiều người học Information Security hiện nay đang hiểu nhầm. Cụ thể, rất nhiều người cứ nghĩ Cybersecurity và Information Security là một, nhưng thật ra lại không phải. Rất nhiều người cũng nhầm tưởng làm an ninh hệ thống là chỉ cần làm sao cho hệ thống an toàn, khó bị tấn công kỹ thuật là hoàn thành nhiệm vụ, tư duy này cũng hoàn toàn sai vì họ chỉ mới bảo vệ được một khía cạnh trong Information Security mà thôi, và hệ thống của họ hoàn toàn có thể bị tấn công ở những khía cạnh khác.
Hãy bàn về mặt khái niệm một tí nhé, khi nói đến Cybersecurity, chúng ta có chữ “cyber” ở đây ý chí là không gian mạng hoặc các hình thức liên quan đến điện tử hoặc kỹ thuật số. Khi chữ “cyber” đi chung với “security”, chúng ta có thể hiểu Cybersecurity sẽ mang ý nghĩa bảo vệ sự an toàn của thông tin và hệ thống dưới gốc độ kỹ thuật. Nghĩa là bạn cần tường lửa để bảo vệ toàn hệ thống, bạn cần các hệ thống như SIEM, NDR, IDS/IPS để giám sát đường truyền mạng, các dữ liệu được lưu trữ trong database hoặc được truyền vào môi trường Internet phải được mã hóa, v.v. Nói tóm lại, Cybersecurity, mang ý nghĩa bảo vệ an toàn hệ thống và thông tin dưới góc độ kỹ thuật.
Tuy nhiên, nếu bạn nào đã từng đọc qua giáo trình CISSP hoặc biết về các yêu cầu của PCI-DSS đối với các công ty sử dụng thẻ tín dụng cho các phương thức thanh toán khi mua bán hàng sẽ biết, bên cạnh việc bảo vệ hệ thống, việc bảo vệ cả nơi đặt hệ thống cũng như có các chính sách quy định những điều nhân viên được và không được phép làm cũng được cân nhắc như những biện pháp hạn chế rủi ro bị tấn công.
Cụ thể, CISSP có hẳn một domain hướng dẫn bạn các giải pháp bảo vệ nơi làm việc và nơi chứa dữ liệu quan trọng như:
- Cách đặt các camera giám sát và độ sáng của đèn ở những được giám sát
- Các loại cảm biến (cảm biến báo cháy, cảm biến chống xâm nhập, v.v.) nên được lắp đặt và lắp đặt ra sao?
- Các cửa ra vào nhất là nơi ra vào chứa hệ thống máy tính chủ chốt nên được bảo vệ bởi các hệ thống xác nhận danh tính có lưu lại lịch sử truy cập
- v.v.
Hay PCI-DSS cũng có các quy định như:
- Chỉ cho phép việc truy cập thông tin thẻ tín dụng với những bên cần được biết
- Hạn chế các quyền truy cập vật lý vào thông tin thẻ tín dụng
- Duy trì một chính sách (policy) về vấn đề bảo mật thông tin dành cho tất cả nhân viên
Phía trên là những ví dụ cụ thể nhất của Information Security, nghĩa là bạn bảo vệ hệ thống và thông tin được lưu trữ không chỉ ở khía cạnh kỹ thuật mà còn cả các khía cạnh phi kỹ thuật nữa. Hay nói một cách dễ hiểu hơn, nhiệm vụ của bạn khi làm Information Security đó là bảo vệ hệ thống chống lại các đợt tấn công dưới bất kỳ hình thức nào.
Thực tế các hình thức tấn công phi kỹ thuật hoàn toàn có thể gây ra các tác hại tương tự như tấn công kỹ thuật. Ví dụ:
- Bạn bảo vệ nơi đặt cơ sở dữ liệu bằng một ổ khóa vật lý, loại chỉ cần ra chợ bỏ tiền mua là có và giao chìa khóa cho một số ít cá nhân cần làm việc với các hệ thống được bảo vệ. Tuy nhiên, bạn có nghĩ đến trường hợp, một ổ khóa rẻ tiền mua ngoài chợ hoàn toàn có thể bị bẻ khóa trong vài phút không? Hoặc bạn có nghĩ đến việc một nhân viên nào đó, trước khi bị sa thải đã cố tình đánh thêm một chìa khóa và bán nó cho công ty đối thủ để trả thù công ty cũ?
- Một ví dụ khác đó là các công ty không có quy trình xử lý hồ sơ, giấy tờ hoặc hợp đồng cũ sau khi sử dụng xong. Thay vì phải tiêu hủy để đảm bảo thông tin không lọt ra ngoài, họ cứ thản nhiên cho nguyên bộ hồ sơ vào thùng rác mà không hề nghĩ đến việc rủi một ai đó vô tình lấy được bộ hồ sơ đó và dùng chính thông tin trong đó để tấn công ngược lại khách hàng hoặc chính công ty đó thì sao?
- Một ví dụ khác mà mình nghĩ rất phổ biến ở Việt Nam đó là vấn đề sử dụng USB, nếu một công ty có tư duy tốt về bảo mật, họ sẽ có chính sách chỉ cho phép sử dụng những USB đã được công ty kiểm tra và cung cấp để cắm vào các hệ thống trong nội bộ công ty mà thôi. Ngoài ra các USB mà nhân viên tự mua ngoài đều phải bị cấm vì tiềm tàng khả năng chứa mã độc ẩn bên trong mà nhân viên đó không hề hay biết.
Nói tóm lại, Cybersecurity dùng để chỉ việc bảo vệ hệ thống và thông tin dưới khía cạnh kỹ thuật; và Information Security dùng để chỉ việc bảo vệ hệ thống và thông tin cả khía cạnh kỹ thuật và phi kỹ thuật.
Ngoài lề một tí: Cá nhân mình đã từng thấy rất nhiều nhà tuyển dụng nhầm lẫn giữa hai khái niệm này. Lí do là vì những người viết thông cáo tuyển dụng là nhân viên phòng Nhân Sự (HR) và thường các bạn này khá kém về các thuật ngữ kỹ thuật. Nên thay vì chỉ nhìn vào tên công việc, các bạn nên đọc cả phần mô tả công việc để có cái nhìn chính xác nhất nhé.
Phần 2: Về việc các trường dùng tên khác nhau
Mình đã học được một bài học thế này khi đi học đó là tên chuyên ngành đào tạo ngoài mục đích marketing nó chẳng mang ý nghĩa gì khác cả. Nên để chắc chắn, bạn nên nhìn vào các môn mà bạn sẽ được học xem họ dạy gì và sau khi tốt nghiệp bạn sẽ làm được gì.
Còn nếu muốn chắc chắn cứ hỏi thử bên đào tạo hoặc tìm các sinh viên đã tốt nghiệp hoặc đang học chuyên ngành bạn muốn để hỏi thăm. Đó là những cách chuẩn xác nhất để xác định xem ngành bạn dự định học có như bạn mong muốn hay không.
2 – Thắc mắc về sách học OSINT
Bạn EA có một câu hỏi như sau:
Em có tìm hiểu về OSINT, em thấy anh có recommend quyển Open Source Intelligence Techniques: Resources for Searching and Analyzing Online Information nhưng hiện tại em đang học cuốn Open Source Intelligence Methods and Tools: A Practical Guide to Online Intelligence không biết có được k ạ, nếu k ổn thì em sẽ chuyển qua quyển của anh để nghiên cứu ạ.
Trả lời:
Cá nhân mình chưa đọc qua quyển Open Source Intelligence Methods and Tools: A Practical Guide to Online Intelligence nên mình không thể cho bạn biết là nó có tốt hay không được.
Mình cũng chia sẻ lí do mà mình chọn cuốn Open Source Intelligence Techniques: Resources for Searching and Analyzing Online Information 7th Edition đó là vì các lí do sau:
- Sách mới chỉ xuất bản vào tháng 10 năm 2019
- Review trên Amazon khá tích cực với 87% là 5 sao và chỉ có 1% cho 1 sao và 2 sao
- Sách dày khoản 575 trang (thường mình khá thích các quyển sách dày vì nó chi tiết và có nhiều điều để học hơn)
Nhưng mình nghĩ việc chọn sách không quan trọng bằng việc bạn thật sự học được gì từ quyển sách đó. Apres, nhà xuất bản của quyển Open Source Intelligence Methods and Tools: A Practical Guide to Online Intelligence, là một nhà xuất bản khá uy tín và tên tuổi. Nhưng trên hết, nếu bạn thấy mình hợp (đọc dễ hiểu, dễ áp dụng) với quyển sách này thì cứ tiếp tục đọc nó, không có lí do gì để phải thay đổi theo người khác cả.
3 – Học an ninh mạng, bảo mật hay chơi CTF thì lập trình có quan trọng không?
Bạn tên không giả trân có câu hỏi sau:
Dạ cho em hỏi là trong quá trình học an ninh mạng, bảo mật, hay chơi CTF thì lập trình có quan trọng không ạ nếu có thì những phần nào của lập trình nói chung cho các ngôn ngữ mà mình cần phải nắm ạ.
Trả lời:
Kiến thức lập trình rất quan trọng trong quá trình học an ninh mạng, bảo mật hay chơi CTF. Mình cho bạn ví dụ nhé:
Trong bài xâm nhập, tấn công và kiểm soát server Pickle Rick, nếu bạn không đọc hiểu được HTML, quá trình xâm nhập của bạn sẽ khó hơn rất nhiều.
Thật vậy, để có thể gọi là đủ mức tối thiểu để đi thực tập trong lĩnh vực Information Security, bạn nhất định phải đọc và hiểu được cách code hoạt động ở mức độ căn bản. Cụ thể bạn tối thiểu phải đọc và hiểu được:
- Bash Linux, Power Shell, Command Prompt
- HTML, CSS, JavaScript, PHP, Python
- SQL
Lên cao lên tí nữa, có thể bạn phải biết cả C/C++, Java, C#, NoSQL, Node JS, v.v. Lí do rất đơn giản, bạn sẽ không thể tấn công và kiểm soát được bất cứ thứ gì nếu không hiểu gì về nó cả.
Ví dụ, khi pentest web, bạn sẽ cần hiểu HTML, CSS, JavaScript và PHP để biết được cách Web hoạt động và từ đó tìm ra lỗ hổng để khai thác. Hiển nhiên vì web không chỉ được viết bằng PHP, nên bạn sẽ còn phải biết cả C#, Java, Node JS, v.v nếu bạn muốn làm web pentester.
Hay để xâm nhập lỗ hổng SQL injection, bạn cũng tối thiểu phải hiểu được cách thức câu lệnh SQL hoạt động. Sau khi xâm nhập thành công, tùy vào OS mà bạn xâm nhập, bạn phải dùng các dòng lệnh để tương tác với hệ thống và tiến hành tấn công sâu hơn.
Phía trên là vài ví dụ tóm tắt ngắn gọn về ứng dụng của lập trình trong việc học Information Security hoặc chơi CTF.
Nếu bạn hỏi về ngôn ngữ cần học thì mình thật sự không trả lời được. Vì để pentest được, bạn cần phải hiểu đối tượng bạn đang pentest và không có một pentester nào dám khẳng định mình biết tất cả ngôn ngữ lập trình trên đời. Ví dụ:
- Để pentest được web chạy Django bạn cần phải biết Python
- Để pentest được web chạy Ruby on rail bạn cần phải biết Ruby
- Để pentest được Android apps, bạn cần biết Java và Kotlin
- Để pentest được IOS apps, bạn cần biết Ojective-C và Swift
- v.v
Thông thường, một pentester sẽ chỉ tập trung vào 1 hoặc 2 nền tảng để đào sâu nghiên cứu và thuần thục kiến thức và kỹ năng về nền tảng đó hơn là học cái gì cũng biết để rồi chẳng cái nào chuyên sâu.
Nếu bạn cần các trang để học lập trình, bạn có thể tham khảo phần trả lời câu hỏi số 2 của bài viết sau nhé.
4 – Quan điểm về scrip kiddie
Bạn j4f có câu hỏi như sau:
Em có đọc mấy bài về phân biệt hacker trong đó có script kiddie .Họ nói skid là những đứa trẻ trâu dùng tool của người khác để xâm nhập vậy nếu chúng ta cũng sử dụng tool của người khác trong cả quá trình pentest ( ví dụ như metasploit, nmap, sqlmap….) thì có gọi là skid không ạ? Nếu hack vào 1 mạng nào đó mà không cần viết tool chỉ cần dùng tool của ngừoi khác thì gọi là skid hay là hacker ạ ??
Trả lời:
Mình xin phân tích câu hỏi của bạn theo 2 hướng tích cực và tiêu cực nhé.
Theo hướng tiêu cực
Mình muốn thú nhận với bạn việc này, đó là mình là một đứa khá thực dụng. Và vì là một đứa thực dụng, mình quan tâm tới việc mình có khả năng làm được gì hơn là việc người khác xem mình là script kiddie hay hacker.
Cái suy nghĩ thực dụng này đến với mình khi mình đọc qua hàng loạt các thông cáo tuyển dụng và thấy chẳng ai quan tâm bạn là script kiddie hay hacker cả, mà cái họ quan tâm là bạn có biết dùng Kali Linux, Burp, Nmap, Nessus, Metasploit, Wireshark không? Nếu bạn không biết dùng, thì dù bạn nói với họ rằng tôi không dùng các tools này vì tôi tự tạo ra các công cụ tương tự cho riêng mình, thì khả năng bạn bị loại là khá cao.
Trong tiếng Anh nó có một câu khá hay như thế này “Don’t Reinvent The Wheel”, nghĩa là đừng tốn thời gian nghiên cứu tìm tòi để phát minh lại cái bánh xe; ý chỉ việc đừng lãng phí thời gian để làm một việc gì đó đã có sẵn.
Thật vậy, thay vì sử dụng những những tools đã được nghiên cứu và phát triển trong một thời gian dài như Nmap và Metasploit, việc tự viết ra các công cụ có thể giúp bạn hiểu thêm về cách chúng hoạt động, thế nhưng liệu công cụ của bạn có hoạt động hiệu quả như các công cụ đã có sẵn hay không? Và nếu câu trả lời là có, bạn cũng đã lãng phí một khoản thời gian nhất định để tạo lại một thứ đã có sẵn thay vì dành thời gian đó cho những việc có ích hơn.
Thật vậy, khi đi làm pentest, việc sử dụng các tools sẽ giúp pentesters tiết kiệm được rất nhiều thời gian vì họ chỉ cần cho các tools chạy tự động để quét các lỗi đã được tìm thấy rồi, trong khi bản thân pentesters có thể dành thời gian để tìm cách lỗ hổng trong chính sách hoạt động của công ty hoặc tìm các lỗ hổng zero day.
Chưa kể tất cả các hackers dù lừng danh thế nào, cũng đều bắt đầu ở vị trí là script kiddie. Và xin thú nhận rằng bản thân mình cũng là một script kiddie vì mình chưa viết ra được bất cứ một tool nào cả và chỉ toàn đi xài tools người khác thôi. Tuy nhiên, dù có là script kiddie, cũng hãy đừng là một người chỉ biết download tools và phần mềm khai thác lỗi về chạy và không cần quan tâm đến cách lỗ hổng hoặc tools hoặc động nhé.
Theo hướng tích cực
Việc có thể tự viết được công cụ hoặc phần mềm khai thác lỗ hổng chính là mục tiêu lâu dài của những pentesters muốn đi theo hướng chuyên nghiệp và trở thành những người giỏi nhất ở lĩnh vực này.
Thật vậy, các chứng chỉ danh giá như OSCE, OSWE và OSEE đều đòi hỏi ứng viên phải có khả năng viết được phần mềm khai thác lỗ hổng đã tìm được trên máy labs và trên máy thi. Mục đích là để trang bị cho các thí sinh các kỹ năng cần thiết nhằm săn lỗi zero day và viết được các phần mềm khai thác lỗi.
Tổng kết lại, với cá nhân mình, việc sử dụng lại các tools cũng như các phần mềm khai thác lỗ hổng bảo mật đã được viết bởi người khác không có gì là xấu cả miễn là mình cố gắng đọc tài liệu và hiểu được cách những tools và phần mềm đó hoạt động như thế nào. Sâu xa hơn, mình nghĩ đây là bước khởi đầu quan trọng mà tất cả những ai học Information Security đều sẽ phải trải qua. Tuy nhiên, mình cũng nhận thức được rằng nếu mình muốn là một chuyên gia về pentest thì việc có khả năng viết được tool hoặc phần mềm khai thác lỗi là kỹ năng cần phải có.
5 – Nên học CCNA, LPI hay nên chơi CTF?
Bạn AH!H! có câu hỏi như sau:
Em là SV ATTT năm 3, Cho em hỏi là bây giờ nên học lấy các chứng chỉ CCNA, LPI,… hay bắt đầu tham gia CTF để ra trường có việc làm trong ngành này vậy anh 😦
Trả lời:
Ý của câu hỏi này mình đã trả lời một lần trong phần trả lời câu hỏi số 2 của bài sau.
Mình chỉ thêm vài ý thế này thôi, nếu kinh tế eo hẹp, bạn chỉ cần học kiến thức chứ không cần thi lấy chứng chỉ. Vì nếu bạn muốn theo hướng pentest, hãy để dành tiền để học và luyện lab cho chứng chỉ OSCP thì hơn. Chi phí để học OSCP hiện nay là hơn $1000 bao gồm 30 ngày lab và một lần dự thi. Đó là chi phí tối thiểu để bạn đủ điều kiện thi OSCP, thực tế chi phí ôn luyện thêm còn tốn kém nhiều nữa. Thế nên bạn hãy cân nhắc nhé.
Cuối cùng, thú thật với bạn, trừ khi bạn đứng top 10 trong bảng xếp hạng của những trang CTF hàng đầu thế giới như HackTheBox, nếu không, sẽ chẳng ai thuê bạn chỉ vì bạn có tham gia CTF đâu. Mà để có thể đứng trong top 10 trong bảng xếp hạng của HackTheBox, kiến thức căn bản như CCNA và LPI là hoàn toàn không đủ.
Xin cám ơn câu hỏi của các bạn, hy phần trả lời của mình có thể phần nào làm hài lòng các bạn.
Chúc các bạn nhiều sức khỏe,
Vincent Nguyễn