-
06/04/2022
-
24
-
41 bài viết
Ransomware: Khi máy tính của bạn chính là con tin
Bắt cóc tống tiền đã là đề tài quá quen thuộc trong các bộ phim nổi tiếng. Kẻ tống tiền sẽ bắt cóc một người hay ăn trộm một vật quan trọng của bạn, rồi sau đó gửi yêu cầu bắt bạn phải chuộc lại. Vậy nhưng, đã bao giờ bạn tưởng tượng, mình là nạn nhân của một vụ tống tiền và con tin không gì khác, chính là những dữ liệu quan trọng trong máy tính của bạn?
Điều này hoàn toàn có thể xảy ra khi bạn là nạn nhân của một vụ tấn công mạng đòi tiền chuộc (Ransomware Attack).
Cụ thể thì Ransomware hoạt động như thế nào? Chúng ta có thể theo dõi các bước cơ bản của một cuộc tấn công Ransomware Attack như sau:
Ransomware Attack thường được phát tán thông qua email lừa đảo, các trang web bị lây nhiễm hoặc các ứng dụng độc hại được cài đặt trên máy tính của người dùng mà họ không hề biết.
“Phật cao một thước, Ma cao một trượng”, một số Ransomware hiện nay còn có khả năng lây nhiễm vào các mạng lưới doanh nghiệp cũng như hệ thống quốc gia, gây ra những hậu quả rất rất nghiêm trọng. Thậm chí còn có những mã độc được tích hợp kỹ thuật AntiDebug và có khả năng lẩn tránh khỏi phần mềm diệt virus, gây ra rất nhiều khó khăn trong việc phát hiện và ngăn chặn tấn công.
Tuy nhiên không phải ai cũng sẵn sàng trả tiền chuộc, đó là lý do tại sao mà các công ty và cá nhân cần có các biện pháp bảo vệ thông tin để phòng ngừa, đối phó với Ransomware Attack. Hãy cùng tìm hiểu các biện pháp này trong phần tiếp theo của bài viết nhé.
Được rồi, chúng ta sẽ làm đúng như những gì mà một Hacker mũ trắng thực thụ làm. Đầu tiên hãy thử tìm xem nguyên nhân nào dẫn đến các cuộc tấn công Ransomware Attack nhé:
Khuyến cáo: Trước khi vào phần này thì mình xin khẳng định lại rằng những nội dung mà mình viết dưới đây chỉ được sử dụng với mục đích nghiên cứu và học tập. WhiteHat sẽ không chịu trách nhiệm trước bất kỳ hậu quả hay thiệt hại nào mà các bạn gây ra khi sử dụng chính những nội dung mà mình đã viết.
Hãy đọc kỹ dòng khuyến cáo to đùng và được in đậm phía trên trước khi lướt xuống nhé! Nếu đồng ý với những khuyến cáo này thì mới được đọc tiếp nha, nếu không thì ae hãy “xin giơ tay rút lui thôi”.
Vậy phần này có những nội dung gì mà nghe có vẻ nguy hiểm thế nhỉ? Okay, mình sẽ code một mã độc Ransomware ở mức “cơ bản nhất có thể”! Vâng, các bạn không nghe nhầm đâu Tommy tui sẽ code một mã độc Ransomware đó, nhưng mình xin nhấn mạnh lại rằng những nội dung này chỉ nhằm phục vụ mục đích học tập và nghiên cứu thôi nha!
Để dễ thực hiện thì mình sẽ thực hiện những điều này trong Ubuntu nhé (nếu làm trong Windows thì hãy tắt Windows Defender đi là được).
Đầu tiên thì các bạn cần có kiến thức về mã hóa cái đã, hãy tham khảo bài viết "Mã hóa và Ký số khác nhau như thế nào, chúng có ăn được không" của mình nha.
Sau khi đã hiểu tường tận về bài viết trên thì làm vài dòng code luôn cho nóng nào! Đầu tiên là hàm mã hóa và giải mã, ở đây mình sẽ sử dụng mode CBC (khác với mode CTR trong bài viết trên) nên cần có thêm một hàm pad (để thêm các ký tự “\0” vào cuối mỗi file cho đủ độ dài khối):
Hàm trên cần phải nhập key của thuật toán AES vào thì mới có thể thực hiện được. Hàm tạo key thì các bạn tham khảo trong bài viết trước nhé, tốn có 1-2 dòng code thôi.
Hàm giải mã:
Sau khi có hàm mã hóa rồi thì chúng ta sẽ code hàm chính của Malware. Những con Ransomware sẽ không bao giờ chỉ mã hóa một vài file mà hầu như lúc nào cũng sẽ cố gắng để mã hóa nhiều file nhất có thể, vậy nên chúng ta cần một cơ chế để quét tất cả các file có trong thư mục. Cơ chế này cần phải quét cả các file có trong các thư mục con (cháu, chắt, chút, chít…) nữa, nên mình sẽ sử dụng kỹ thuật đệ quy. Vì chỉ thiết lập với mục đích nghiên cứu nên mình sẽ chỉ mã hóa các file có đuôi là “.txt”, các bạn có thể thay các đuôi file mà mình muốn ở trong biến LIST_FILE_SUFFIX. Một biến “path” trong hàm “scan_file” sẽ cung cấp cho mã độc biết chúng cần mã hóa các file trong thư mục nào (thông thường thì mã độc sẽ mã hóa thẳng từ các thư mục gốc của hệ điều hành).
Malware của mình sẽ cho ra các file mã hóa có đuôi là “.whocare”. Có mã hóa thì cũng phải có giải mã chứ nhỉ, hàm này mình sẽ code trong một file khác nên cứ đặt cùng tên hàm cho dễ theo dõi:
Để chạy Ransomware như một Service trong Ubuntu (để chúng có thể chạy ngầm) thì chúng ta sẽ sử dụng cơ chế Double fork trong Python (các bạn Google để tham khảo thêm nhé):
Nếu các bạn thực hiện điều này bên Windows thì hãy tham khảo thêm thư viện pywin32 để chạy Malware như một Service nhé.
Lệnh giải mã thì đơn giản chỉ là chạy hàm giải mã đã code phía trên thôi.
Vậy kẻ tấn công sẽ sử dụng mã nguồn trên như thế nào?
Điều này hoàn toàn có thể xảy ra khi bạn là nạn nhân của một vụ tấn công mạng đòi tiền chuộc (Ransomware Attack).
1. Ransomware là gì?
Ransomware – hay mã độc tống tiền – Một loại phần mềm độc hại được thiết kế để tấn công vào các dữ liệu quan trọng của người dùng và yêu cầu tiền chuộc để giải mã chúng. Không chỉ các doanh nghiệp, mà ngay cả những cá nhân dùng máy tính cũng có thể rơi vào tầm ngắm của hacker.Cụ thể thì Ransomware hoạt động như thế nào? Chúng ta có thể theo dõi các bước cơ bản của một cuộc tấn công Ransomware Attack như sau:
- Đầu tiên, kẻ tấn công sẽ tiêm nhiễm Ransomware vào một tệp, một phần mềm hoặc một email trông rất đỗi là bình thường. Thậm chí ngay cả các phần mềm nổi tiếng như Microsoft Word cũng đã từng bị cài cắm.
- Tiếp theo, kẻ tấn công sẽ nghĩ cách để phát tán và đánh lừa người dùng thực thi tệp đã được chỉnh sửa đó.
- Sau khi thực thi, mã độc sẽ xâm nhập vào hệ thống máy tính của người dùng và mã hóa toàn bộ (hoặc một phần) dữ liệu quan trọng của họ.
- Cuối cùng, kẻ tấn công sẽ đòi tiền chuộc để cung cấp cho người dùng phần mềm cũng như chìa khóa để giải mã dữ liệu.
Ransomware Attack thường được phát tán thông qua email lừa đảo, các trang web bị lây nhiễm hoặc các ứng dụng độc hại được cài đặt trên máy tính của người dùng mà họ không hề biết.
“Phật cao một thước, Ma cao một trượng”, một số Ransomware hiện nay còn có khả năng lây nhiễm vào các mạng lưới doanh nghiệp cũng như hệ thống quốc gia, gây ra những hậu quả rất rất nghiêm trọng. Thậm chí còn có những mã độc được tích hợp kỹ thuật AntiDebug và có khả năng lẩn tránh khỏi phần mềm diệt virus, gây ra rất nhiều khó khăn trong việc phát hiện và ngăn chặn tấn công.
Tuy nhiên không phải ai cũng sẵn sàng trả tiền chuộc, đó là lý do tại sao mà các công ty và cá nhân cần có các biện pháp bảo vệ thông tin để phòng ngừa, đối phó với Ransomware Attack. Hãy cùng tìm hiểu các biện pháp này trong phần tiếp theo của bài viết nhé.
2. Các biện pháp phòng tránh
Để hiểu cách phòng tránh Ransomware, chúng ta phải học cách tư duy như những Hacker. Dò tìm lỗ hổng và tìm hiểu xem các Hacker có thể khai thác hệ thống thông qua những con đường nào, từ đó chúng ta sẽ sửa lỗi và củng cố các lỗ hổng đó. Nghe có quen quen không đó chính là công việc của những Hacker mũ trắng (White hat hacker) đó!Được rồi, chúng ta sẽ làm đúng như những gì mà một Hacker mũ trắng thực thụ làm. Đầu tiên hãy thử tìm xem nguyên nhân nào dẫn đến các cuộc tấn công Ransomware Attack nhé:
- Sự thiếu hiểu biết về các mối đe dọa: Nhiều người thường nghĩ rằng việc tìm hiểu về các mối đe dọa là không quá quan trọng, cho tới khi trở thành nạn nhân của các cuộc tấn công rồi thì “mất bò mới lo làm chuồng”.
- Sự ỷ lại vào các phần mềm phòng chống tấn công/diệt Virus: Không ít người thực sự tin tưởng rằng việc cài đặt một hay nhiều phần mềm diệt virus sẽ giúp bảo vệ hoàn toàn máy tính của họ khỏi các cuộc tấn công. Tuy nhiên, thực tế là các hacker luôn tìm cách vượt qua các phần mềm bảo mật này như một tên cướp muốn vượt qua hàng rào an ninh để cướp nhà băng vậy!
- Sự lỏng lẻo trong việc bảo vệ hệ thống mạng: Cái này thì quá dễ thấy rồi Các hacker chỉ cần tìm thấy một lỗ hổng trong hệ thống của người dùng, tuồn mã độc vào và đánh lừa những người thiếu hiểu biết thực thi các tệp mã độc đó. BOOM! Dữ liệu của bạn đã bị mất y hệt như cách mà những “kẻ trộm bò” dắt những “con bò” của bạn đi vậy!
- Tình trạng phát triển nhanh chóng của mã độc: Các bạn có biết rằng mã độc WannaCry đã lỗi thời từ tận 6 năm trước rồi không? (Dành cho những bạn chưa biết thì WannaCry là một mã độc tống tiền hoạt động dựa trên cơ chế khai thác lỗ hổng EternalBlue, đã làm mưa làm gió trên không gian mạng vào tháng 5 năm 2017). Cho tới thời điểm hiện tại thì một mã độc Ransomware có thể đã tiên tiến hơn WannaCry gấp trăm lần rồi, và tất nhiên đi kèm với đó là người dùng sẽ khó phát hiện hơn và dễ mắc bẫy hơn!
- Giáo dục người dùng: Đầu tiên, hãy giáo dục người dùng về “cách làm chuồng” trước khi họ bắt đầu “nuôi bò”, bởi người ta thường nói “phòng bệnh hơn chữa bệnh” mà! Cụ thể thì người dùng nên biết cách phân biệt các email lừa đảo, tránh truy cập vào các trang web bị lây nhiễm và đừng tải xuống các tệp tin không rõ nguồn gốc... Nếu tất cả mọi người đều có nhận thức về các mối đe dọa này và thực hiện các biện pháp phòng chống thì khả năng kẻ tấn công có thể đạt được mục đích là cực kỳ thấp.
- Sử dụng phần mềm bảo mật: Sau khi dạy người dùng cách “xây chuồng” rồi thì phải áp dụng luôn chứ, phải không nào! Sử dụng các phần mềm bảo mật như phần mềm chống virus, tường lửa, phần mềm chống spam sẽ giúp bảo vệ máy tính của bạn một cách hiệu quả trước những cuộc tấn công Ransomware Attack.
- Sao lưu dữ liệu thường xuyên: Kể cả khi người dùng đã “xây chuồng” một cách cực kỳ chắc chắn thì thi thoảng cái chuồng đó cũng sẽ có một vài lỗ hổng, và biện pháp để phòng tránh điều này đó là hãy tạo ra các phiên bản backup cho “đàn bò” của mình Bằng cách làm này, kể cả khi dữ liệu đã bị mã hóa thì người dùng vẫn có thể khôi phục lại dữ liệu của mình mà không cần phải trả tiền chuộc. Nên chọn một phương pháp sao lưu dữ liệu an toàn và bản sao này nên được lưu ở một vị trí khác với cơ sở dữ liệu hiện hành.
- Cập nhật phần mềm thường xuyên: Một trong những cách chủ yếu mà kẻ tấn công thực hiện để tuồn mã độc vào máy tính người dùng là khai thác các lỗ hổng phần mềm hoặc hệ điều hành, đặc biệt là lợi dụng các lỗ hổng Zero day. Vì vậy, việc cập nhật phần mềm cũng như hệ điều hành thường xuyên sẽ giúp bảo vệ máy tính của bạn trước nguy cơ của những lỗ hổng này.
- Cuối cùng, để đối mặt với sự phát triển nhanh chóng của mã độc thì người dùng cũng phải liên tục cập nhật vốn hiểu biết của mình, điều này giống như việc “gia cố chuồng bò” trước những “kẻ trộm bò” ngày càng thủ đoạn và tinh vi đó!
3. Ransomware được tạo ra như thế nào?
Được rồi, đây là một phần độc quyền của riêng Tommy nhé! Tui chắc chắn rằng không có một bài viết hay một series free nào có đề cập tới phần này đâu!Khuyến cáo: Trước khi vào phần này thì mình xin khẳng định lại rằng những nội dung mà mình viết dưới đây chỉ được sử dụng với mục đích nghiên cứu và học tập. WhiteHat sẽ không chịu trách nhiệm trước bất kỳ hậu quả hay thiệt hại nào mà các bạn gây ra khi sử dụng chính những nội dung mà mình đã viết.
Hãy đọc kỹ dòng khuyến cáo to đùng và được in đậm phía trên trước khi lướt xuống nhé! Nếu đồng ý với những khuyến cáo này thì mới được đọc tiếp nha, nếu không thì ae hãy “xin giơ tay rút lui thôi”.
Vậy phần này có những nội dung gì mà nghe có vẻ nguy hiểm thế nhỉ? Okay, mình sẽ code một mã độc Ransomware ở mức “cơ bản nhất có thể”! Vâng, các bạn không nghe nhầm đâu Tommy tui sẽ code một mã độc Ransomware đó, nhưng mình xin nhấn mạnh lại rằng những nội dung này chỉ nhằm phục vụ mục đích học tập và nghiên cứu thôi nha!
Để dễ thực hiện thì mình sẽ thực hiện những điều này trong Ubuntu nhé (nếu làm trong Windows thì hãy tắt Windows Defender đi là được).
Đầu tiên thì các bạn cần có kiến thức về mã hóa cái đã, hãy tham khảo bài viết "Mã hóa và Ký số khác nhau như thế nào, chúng có ăn được không" của mình nha.
Sau khi đã hiểu tường tận về bài viết trên thì làm vài dòng code luôn cho nóng nào! Đầu tiên là hàm mã hóa và giải mã, ở đây mình sẽ sử dụng mode CBC (khác với mode CTR trong bài viết trên) nên cần có thêm một hàm pad (để thêm các ký tự “\0” vào cuối mỗi file cho đủ độ dài khối):
Hàm trên cần phải nhập key của thuật toán AES vào thì mới có thể thực hiện được. Hàm tạo key thì các bạn tham khảo trong bài viết trước nhé, tốn có 1-2 dòng code thôi.
Hàm giải mã:
Sau khi có hàm mã hóa rồi thì chúng ta sẽ code hàm chính của Malware. Những con Ransomware sẽ không bao giờ chỉ mã hóa một vài file mà hầu như lúc nào cũng sẽ cố gắng để mã hóa nhiều file nhất có thể, vậy nên chúng ta cần một cơ chế để quét tất cả các file có trong thư mục. Cơ chế này cần phải quét cả các file có trong các thư mục con (cháu, chắt, chút, chít…) nữa, nên mình sẽ sử dụng kỹ thuật đệ quy. Vì chỉ thiết lập với mục đích nghiên cứu nên mình sẽ chỉ mã hóa các file có đuôi là “.txt”, các bạn có thể thay các đuôi file mà mình muốn ở trong biến LIST_FILE_SUFFIX. Một biến “path” trong hàm “scan_file” sẽ cung cấp cho mã độc biết chúng cần mã hóa các file trong thư mục nào (thông thường thì mã độc sẽ mã hóa thẳng từ các thư mục gốc của hệ điều hành).
Malware của mình sẽ cho ra các file mã hóa có đuôi là “.whocare”. Có mã hóa thì cũng phải có giải mã chứ nhỉ, hàm này mình sẽ code trong một file khác nên cứ đặt cùng tên hàm cho dễ theo dõi:
Để chạy Ransomware như một Service trong Ubuntu (để chúng có thể chạy ngầm) thì chúng ta sẽ sử dụng cơ chế Double fork trong Python (các bạn Google để tham khảo thêm nhé):
Nếu các bạn thực hiện điều này bên Windows thì hãy tham khảo thêm thư viện pywin32 để chạy Malware như một Service nhé.
Lệnh giải mã thì đơn giản chỉ là chạy hàm giải mã đã code phía trên thôi.
Vậy kẻ tấn công sẽ sử dụng mã nguồn trên như thế nào?
- Đầu tiên chúng sẽ tiêm nhiễm mã độc vào một trò chơi hay một phần mềm nào đó để đánh lừa nạn nhân, kèm với đó là lời nhắn (đòi thanh toán tiền chuộc).
- Tiếp đến, chúng sẽ phát tán mã độc và tìm cách để nạn nhân thực thi phần mềm mà chúng đã tạo.
- Khi nạn nhân thực thi, hàm tạo khóa sẽ được chạy trước, sau đó hàm mã hóa sẽ sử dụng chính khóa đã tạo để mã hóa dữ liệu của nạn nhân.
- Sau khi mã hóa xong, khóa mã hóa sẽ được lưu trên cơ sở dữ liệu của kẻ tấn công, còn tất cả các thông tin về khóa hoặc bộ nhớ đệm trên máy nạn nhân đều sẽ bị xóa.
- Một đoạn tin nhắn sẽ được hiện lên để đòi thanh toán tiền chuộc. Nếu nạn nhân “ngoan ngoãn” trả tiền thì kẻ tấn công sẽ gửi lại phần mềm giải mã cũng như khóa mã hóa đã lưu.
4. Lời kết
Đọc xong bài này thì về mà lo cho “đàn bò” của mình đi nhé các ae Thế nha!Tommy
Chỉnh sửa lần cuối bởi người điều hành: