+3

Hướng dẫn toàn diện về Security Testing và kiểm thử xâm nhập cho Tester và Dev

Vào năm 1984, Skynet là một trí thông minh nhân tạo do con người tạo ra và đã điều khiển đội quân robot quay lại hủy diệt chính con người khi nó nhận thấy sự đe dọa từ những người sáng lập ra nó. Đó chính là bối cảnh của bộ phim Teminator với Skynet là tâm phúc đại họa của nhân loại.

Đây chỉ là một series phim khoa học viễn tưởng nhưng cũng đã cho ta thấy rằng sự nguy hiểm của việc hệ thống bị hack bởi tin tặc là một điều khủng khiếp đối với cá nhân, tổ chức.

Thời đại Internet ngày nay với sự phát triển không ngừng của CNTT, việc tấn công không gian mạng đã trở nên phổ biến và không thể lường trước được. Ví dụ Playstation Network, Conficker, Wannacry...Là nhà phát triển phần mềm, các developers và kỹ sư giải pháp sẽ phải lường trước để cover được những trường hợp tấn công của hacker có thể xảy ra với hệ thống của mình.

Là một Pentester, chúng ta phải nắm được các kỹ thuật tấn công cơ bản về triển khai Pentest, đóng vai Hắc cơ mũ trắng, nhằm sớm phát hiện ra lỗ hổng để được khắc phục nhanh nhất.

Trong bài viết này, tôi và các bạn sẽ cùng nhau tìm hiểu lại TẤT TẦN TẬT những gì tôi đã biết về các kỹ thuật tấn công trong cuộc sống hiện nay và các kỹ thuật tấn công hệ thống mà các tester cần nắm được trong lòng bàn tay về Security Testing. Nếu điều gì còn thiếu sót mong các bạn góp ý, Let Go!

Phần 1: Các kỹ thuật tấn công trong đời sống thường gặp:

1. Social Engineering (Tấn công xã hội):

Kỹ thuật này tập trung vào việc lừa đảo hoặc xâm nhập vào hệ thống thông qua việc tương tác xã hội và kỹ năng giao tiếp. Ví dụ: Lừa đảo qua điện thoại, email hoặc mạng xã hội để lấy thông tin cá nhân, thông tin đăng nhập hoặc tiết lộ thông tin bảo mật.

2. Phishing:

Kỹ thuật này liên quan đến việc gửi thông điệp giả mạo thông qua email, tin nhắn, hoặc trang web giả mạo để lừa đảo người dùng cung cấp thông tin cá nhân như tên người dùng, mật khẩu hoặc thông tin tài khoản ngân hàng.

3. Malware Attacks (Tấn công phần mềm độc hại):

Kỹ thuật này bao gồm việc lây nhiễm phần mềm độc hại vào hệ thống của người dùng thông qua các phương tiện như email đính kèm, tải xuống từ các trang web không đáng tin cậy hoặc sử dụng các thiết bị lưu trữ di động bị nhiễm virus.

4. Man-in-the-Middle (MITM) Attacks (Tấn công trung gian):

Kỹ thuật này liên quan đến việc thay đổi hoặc nghe lén thông tin truyền tải giữa hai bên mà không được phép. Kẻ tấn công có thể thu thập thông tin nhạy cảm như tên người dùng, mật khẩu, thông tin tài khoản ngân hàng trong quá trình truyền tải. Bản chất là xen vào cuộc trao đổi thông tin của Client và Server là lấy thông tin trái phép.

5. Wi-Fi Eavesdropping (Nghe trộm Wi-Fi):

Kỹ thuật này liên quan đến việc nghe lén thông tin truyền qua mạng Wi-Fi công cộng hoặc mạng không được bảo mật đúng cách. Kẻ tấn công có thể thu thập thông tin cá nhân hoặc truy cập trái phép vào hệ thống của người dùng. Đây giống như trường hợp các bạn đến khu vực gần khách sạn, phòng trọ và bắt được Free Wifi. Cho nên hãy bắt free wifi khi đã biết rõ nguồn gốc của wifi đó.

6. Password Attack (Tấn công mật khẩu):

Kỹ thuật này bao gồm việc thử nghiệm một loạt các mật khẩu phổ biến hoặc sử dụng công cụ tấn công từ điển để đoán mật khẩu của người dùng.

7. Phishing Calls(Cuộc gọi lừa đảo):

Kỹ thuật này liên quan đến việc gọi điện giả mạo.

8. Keylogging (Ghi lại phím):

Kỹ thuật này liên quan đến việc sử dụng phần mềm độc hại để ghi lại các phím được nhấn trên bàn phím của người dùng mà không được biết. Kẻ tấn công có thể thu thập thông tin đăng nhập, mật khẩu hoặc các thông tin nhạy cảm khác. Cho người khác lạ mượn máy có thể bị cài đặt ứng dụng ghi phím mà bạn không để ý. Một số ứng dụng dễ dàng cài đặt đó là Perfect Keylogger...

9. Denial of Service (DoS) Attacks (Tấn công từ chối dịch vụ):

Kỹ thuật này nhằm làm quá tải hệ thống hoặc dịch vụ mục tiêu bằng cách gửi lượng lớn yêu cầu không hợp lệ, làm cho hệ thống không thể đáp ứng cho người dùng hợp lệ.

10. Physical Attacks (Tấn công vật lý):

Kỹ thuật này liên quan đến việc tấn công vào thiết bị, cơ sở hạ tầng hoặc cả người dùng thông qua việc truy cập trái phép vào văn phòng, máy chủ hoặc các phương tiện lưu trữ dữ liệu.

Phần 2: Các kỹ thuật tấn công trong hệ thống thường gặp:

Security Injection (còn được gọi là Code Injection) là một kỹ thuật tấn công phổ biến mà các kẻ tấn công sử dụng để chèn mã độc hoặc dữ liệu độc hại vào ứng dụng hoặc hệ thống mục tiêu. Tester chịu trách nhiệm kiểm tra và tìm hiểu về các lỗ hổng Injection để đảm bảo tính bảo mật của ứng dụng.


Để kiểm tra tính bảo mật của ứng dụng đối với các lỗ hổng Injection, tester cần thực hiện việc xác định và nhập liệu đầu vào không an toàn, tìm hiểu cách ứng dụng xử lý dữ liệu đầu vào và thực hiện các kỹ thuật kiểm tra như fuzzing, nhập liệu bất thường, kiểm tra kiểu dữ liệu và giới hạn dữ liệu đầu vào, kiểm tra xác thực và rà soát mã nguồn.


1. SQL Injection:

Tấn công này xảy ra khi kẻ tấn công chèn các câu truy vấn SQL độc hại vào các biểu thức đầu vào của ứng dụng, từ đó thực hiện các hoạt động không được ủy quyền trên cơ sở dữ liệu.

  • Ví dụ: Chèn một câu lệnh SQL độc hại vào biểu thức đầu vào để truy cập, sửa đổi hoặc xóa dữ liệu trong cơ sở dữ liệu.

Để ngăn chặn SQL Injection trong PHP:

  • Sử dụng Prepared Statements hoặc Parameterized Queries: Thay vì tạo truy vấn SQL chuỗi bằng cách nối các giá trị vào truy vấn, hãy sử dụng prepared statements hoặc parameterized queries.
  • Sử dụng PDO hoặc MySQLi: Sử dụng các thư viện PDO (PHP Data Objects) hoặc MySQLi để tương tác với cơ sở dữ liệu.
  • Kiểm tra và xử lý dữ liệu đầu vào: Đảm bảo rằng dữ liệu đầu vào từ người dùng được kiểm tra và xử lý trước khi sử dụng trong truy vấn SQL. Bạn có thể sử dụng các hàm như htmlspecialchars hoặc mysqli_real_escape_string để làm sạch dữ liệu và ngăn chặn các ký tự đặc biệt gây ảnh hưởng đến truy vấn.
  • Kiểm thử: Tạo các payload chứa các câu lệnh SQL độc hại như UNION SELECT, DROP TABLE, SELECT * FROM users WHERE 1=1, v.v. để xem liệu ứng dụng có xử lý đúng cách không.

2. XSS (Cross-Site Scripting) Injection:

  • Ví dụ: Chèn mã JavaScript độc hại vào các biểu thức đầu vào để thực hiện các tấn công bên ngoài như đánh cắp thông tin người dùng, thay đổi nội dung trang web, v.v.

  • Kiểm thử: Chèn các đoạn mã JavaScript độc hại vào các trường đầu vào như các trường tìm kiếm, bình luận, v.v. để xem liệu ứng dụng có xử lý đúng cách không.

3. OS Command Injection:

  • Ví dụ: Chèn các lệnh hệ điều hành vào các biểu thức đầu vào để thực thi các lệnh hệ thống không được ủy quyền.
  • Kiểm thử: Thêm các ký tự đặc biệt hoặc các lệnh hệ điều hành như ls, cat, rm, v.v. vào các trường đầu vào để xem liệu ứng dụng có xử lý đúng cách không.

4. Server-side Template Injection:

  • Ví dụ: Chèn mã độc vào các template server-side như Jinja, Velocity, Freemarker, v.v. để kiểm tra xem liệu ứng dụng có xử lý đúng cách không.
  • Kiểm thử: Chèn các biểu thức, hàm hoặc các đoạn mã độc hại vào các trường đầu vào sử dụng template engine để xem liệu ứng dụng có xử lý đúng cách không.

5. LDAP Injection:

  • Ví dụ: Chèn các câu lệnh LDAP độc hại vào các biểu thức đầu vào để truy cập, sửa đổi hoặc xóa dữ liệu trong hệ thống LDAP.
  • Kiểm thử: Tạo các payload chứa các câu lệnh LDAP độc hại như (|(password=)) để xem liệu ứng dụng có xử lý đúng cách không.

6. XML Injection:

  • Ví dụ: Chèn các đoạn mã XML độc hại vào các biểu thức đầu vào XML để thực hiện các tấn công như đọc, sửa đổi, hoặc xóa dữ liệu trong tệp XML hoặc hệ thống.
  • Kiểm thử: Chèn các ký tự đặc biệt, thẻ XML hoặc đoạn mã XML độc hại vào các trường đầu vào XML để xem liệu ứng dụng có xử lý đúng cách không.

7. Code Injection:

  • Ví dụ: Chèn mã độc vào các ngôn ngữ lập trình như PHP, Python, Ruby, v.v. để thực thi mã độc hại hoặc tấn công khác.
  • Kiểm thử: Thêm các ký tự đặc biệt hoặc các đoạn mã độc hại vào các trường đầu vào mà ứng dụng sử dụng để thực thi mã, như hàm eval() hoặc exec() để xem liệu ứng dụng có xử lý đúng cách không.

8. Path Traversal:

  • Ví dụ: Sử dụng các ký tự đặc biệt để truy cập vào các tệp hoặc thư mục không được ủy quyền.
  • Kiểm thử: Sử dụng các chuỗi chứa các ký tự đặc biệt như ".." hoặc "../" để truy cập các tệp hoặc thư mục bên ngoài phạm vi được cho phép để xem liệu ứng dụng có xử lý đúng cách không.

9. Remote File Inclusion:

  • Ví dụ: Chèn các URL độc hại vào các trường đầu vào để nhúng các tệp từ xa vào ứng dụng và thực thi mã độc hại.
  • Kiểm thử: Thêm các URL chứa các tệp độc hại hoặc mã độc vào các trường đầu vào để xem liệu ứng dụng có xử lý đúng cách không.

10. Server-Side Template Injection:

  • Ví dụ: Chèn các chuỗi độc hại vào các mẫu (templates) trên phía máy chủ để thực thi mã độc.
  • Kiểm thử: Chèn các chuỗi độc hại vào các mẫu trên phía máy chủ để xem liệu ứng dụng có xử lý đúng cách không.

11. Password Attacks - Kỹ thuật thường gặp, đơn giản để tiến hành mà chúng ta thường hay bỏ quên**

1. Tấn công vét cạn:

Tấn công vét cạn là một kiểu tấn công mật khẩu trong đó kẻ tấn công cố gắng đoán mật khẩu bằng cách thử một cách có hệ thống mọi tổ hợp ký tự có thể có. Cuộc tấn công này có thể tốn thời gian nhưng hiệu quả vì nó không dựa vào kiến thức về mật khẩu của mục tiêu.

  • Để bảo vệ chống lại các cuộc tấn công vét cạn, phải đảm bảo dùng mật khẩu đủ mạnh hoặc cực kỳ mạnh nếu có thể. Kết hợp nhiều ký tự trên bàn phím với thứ tự khác nhau như akjhqeBHlka@#45k&!...,nếu may rủi, kẻ thủ ác sẽ mất nửa đời người để đoán ra được mật khẩu của bạn 😃.
2. Tấn công từ điển:

Tấn công từ điển là một kiểu tấn công mật khẩu trong đó kẻ tấn công sử dụng danh sách mật khẩu và cụm từ phổ biến được tạo trước để thử và giành quyền truy cập vào tài khoản. Kiểu tấn công này thường được kết hợp với tấn công vét cạn, vì danh sách các mật khẩu phổ biến có thể làm giảm đáng kể số lần đoán cần thiết để bẻ khóa mật khẩu. 😦

  • Để bảo vệ chống lại các cuộc tấn công từ điển, điều quan trọng là sử dụng mật khẩu không dựa trên các từ hoặc cụm từ phổ biến như admin, admin123,12345678,11111111...
3. Tấn công lừa đảo:

Tấn công lừa đảo là một kiểu tấn công mật khẩu trong đó kẻ tấn công cố lừa nạn nhân tiết lộ mật khẩu của họ bằng cách giả vờ là một thực thể hợp pháp, chẳng hạn như ngân hàng hoặc trang mạng xã hội. Điều này thường được thực hiện thông qua email hoặc tin nhắn mạng xã hội có chứa liên kết đến trang đăng nhập giả mạo. Ví dụ như giả vờ các trang của Bộ công an, Chi cục thuế, Ngân hàng Vietcombank, MB bank, facebook hay thậm chí Tinder.😃

Khi nạn nhân nhập mật khẩu của họ trên trang đăng nhập giả mạo, kẻ tấn công có thể lấy được mật khẩu đó và sử dụng nó để truy cập vào tài khoản của nạn nhân.

  • Để bảo vệ chống lại các cuộc tấn công lừa đảo, điều quan trọng là phải thận trọng với các email hoặc tin nhắn yêu cầu thông tin cá nhân và xác minh tính xác thực của bất kỳ liên kết nào trước khi nhấp vào chúng.
4. Tấn công bảng 7 sắc cầu vồng:

Tấn công bảng cầu vồng là một kiểu tấn công mật khẩu liên quan đến việc tính toán trước các giá trị băm của nhiều mật khẩu phổ biến và lưu trữ chúng trong một bảng. Khi kẻ tấn công giành được quyền truy cập vào mật khẩu đã băm, chúng có thể sử dụng bảng cầu vồng để nhanh chóng xác định mật khẩu ban đầu bằng cách so sánh hàm băm với các hàm băm được tính toán trước trong bảng.

Để bảo vệ chống lại các cuộc tấn công bảng cầu vồng, điều quan trọng là phải sử dụng mật khẩu mạnh và duy nhất cũng như thuật toán băm chống lại các cuộc tấn công.

  • Thêm Salt (ký tự bổ sung) vào mật khẩu trước khi băm làm cho chúng trở nên độc nhất, khiến các bảng cầu vồng có sẵn trở nên vô dụng.

  • Nên tránh triển khai các thuật toán băm đã lỗi thời như MD5, SHA1, v.v. Thay vào đó, SHA256 hoặc SHA512 hiện là những lựa chọn tốt hơn cho đến khi có giải pháp an toàn hơn.

  • Các hàm băm được lưu trữ có thể được tăng cường bằng cách băm lại hàm băm đầu tiên bằng Salt & mật khẩu ban đầu. Quá trình này có thể được lặp đi lặp lại nhiều lần, khiến việc hack trở nên khó khăn theo cấp số nhân do giới hạn của máy tính.

5. Ghi log phím:

Xảy ra khi hacker cài ứng dụng "Recording bàn phím", tức là hacker sẽ biết khi nào bạn click vào đâu, gõ những gì...ứng dụng đó có thể lưu tại máy của bạn hoặc có thể gửi qua cho hacker thông qua các loại mạng khác nhau như mạng LAN hoặc internet hoặc bluetooth... Có 2 loại Keylogger: Phần cứng (USB, các vi mạch...) và phần mềm (File exe, extension)...

Để bảo vệ chống lại các cuộc tấn công bằng việc ghi log phím trên:

  • Khi đến nơi xa lạ, luôn luôn lock máy khi ra khỏi vị trí (nhiều công ty quy định ra khỏi máy là phải lock screen)

  • Sử dụng trình quản lý mật khẩu: Keylogger không thể theo dõi những gì không được nhập nhưng dựa vào tính năng 'nhớ mật khẩu' được tích hợp trong trình duyệt của bạn có thể không phải là cách hành động tốt nhất để bảo vệ thông tin của bạn. Bạn có thể lưu mật khẩu chỗ khác rồi ốp vào, tuy nhiên cần áp dụng biện pháp bảo mật khác. 😃

  • Triển khai xác thực đa yếu tố:

Xác thực đa yếu tố tăng cường và cải thiện thông tin đăng nhập của người dùng bằng cách tăng tính bảo mật với nhiều bước trong quy trình đăng nhập. MFA yêu cầu hai trong số ba thông tin nhận dạng sau: 'thứ bạn biết' (tên người dùng và mật khẩu), 'thứ bạn có' (phần cứng, điện thoại, máy tính) hoặc 'thứ bạn là' (sinh trắc học). Tin tặc sử dụng keylogger không thể vượt qua biện pháp bảo mật này vì không có bàn phím để theo dõi.

  • Sử dụng phần mềm giúp bảo vệ chống lại các cuộc tấn công lừa đảo

Các nhà cung cấp bên thứ ba có thể giúp ngăn chặn các cuộc tấn công bằng phần mềm tích hợp cảnh báo cho người dùng và quản trị viên về các cuộc tấn công tiềm ẩn bằng sàng lọc an ninh mạng theo thời gian thực.

Nếu bạn nghĩ rằng bạn có thể đã bị hack bởi một keylogger, hãy ngừng nhập thông tin cá nhân và mật khẩu của bạn cho đến khi bạn xóa phần mềm khỏi máy tính của mình. Nếu bạn không thể xóa nó ngay lập tức, hãy thử sử dụng bàn phím ảo (có sẵn trong phần cài đặt máy tính của bạn dưới phần phụ kiện – khả năng truy cập). Khi bạn có thể xóa keylogger, hãy nghĩ đến việc thay đổi mật khẩu của mình!

Ngoài 5 kiểu tấn công trên sẽ còn lừa đảo xã hội, ăn trộm về mặt vật lý (lấy cắp ổ cứng, file lưu trữ mật khẩu) hoặc lỗ hổng dữ liệu (xảy ra khi hacker chặn bắt hoặc truy cập trái phép để lấy mật khẩu người dùng)...

Thực hiện một chiến lược bảo mật toàn diện là cách tốt nhất để ngăn chặn vi phạm dữ liệu. Điều này sẽ liên quan đến mật khẩu mạnh, xác thực đa yếu tố, mã hóa tất cả dữ liệu được lưu trữ và truyền đi, thường xuyên cập nhật phần mềm và ứng dụng, giám sát hoạt động và truy cập của người dùng cũng như đào tạo nhân viên về các phương pháp hay nhất.

Author: PoppinKhiem


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí