Malware Analyst Roadmap

By admin, May 22, 2020

Chào các bạn đến với môn Phòng chống nghệ thuật hắc ám – Phòng chống mã độc

Nếu các bạn đã quyết định tìm hiểu nghề này, thì cũng xin giới thiệu đó là một trong 4 nhóm nghề mà anh ThaiDN có nhắc tới [1]. Công việc chính của chúng ta làm trong một doanh nghiệp đó là tìm kiếm, phân tích, và tiêu diệt mã độc bao gồm các cuộc tấn công có chủ đích. Mã độc có thể là virus máy tính, trojan hay các loại malware nói chung và các mã khai thác 0-day chưa được biết đến.

Đương nhiên, trong thực tế công việc mà tôi đã trải nghiệm ở một vài công ty tại Việt Nam thì còn cần nâng cấp các hệ thống hiện tại để chống lại các kỹ thuật của mã độc, tối ưu hệ thống để phát hiện các loại mã độc chưa được biết đến, xây dựng hệ thống phân tích mã độc tự động, xây dựng quy trình xử lý sự cổ – phản ứng khi có tấn công mã độc,… Công việc này có vẻ sẽ rất khó khăn và cần đến các kiến thức cơ bản nhất của ngành Công nghệ thông tin như: Lập trình ngôn ngữ bậc thấp, lập trình ngôn ngữ bậc cao, hay nói chung là cần phải biết và có thể làm việc được với hầu hết các ngôn ngữ lập trình. Vì mã độc có thể tồn tại ở bất kỳ dạng ngôn ngữ lập trình nào. Có am hiểu về kiến trúc Hệ điều hành, kiến trúc vi xử lý trên nhiều nền tảng khác nhau. Tuy nhiên, cũng cần lưu ý rằng không yêu cầu bạn phải ghi nhớ và biết hết mọi kiến thức. Ví dụ có thể tra cứu các câu lệnh của Intel x64 khi bạn chưa nhớ hết được toàn bộ các câu lệnh, nhưng yêu cầu cần phải biết được các lệnh cơ bản.
Nói là phải biết nhiều như thế, nhưng chăm chỉ luyện tập và thực hành nhiều sẽ quen dần với công việc, và đến một lúc nào đó bạn có thể hiểu mã độc như những người lập trình ra nó.

I. Kiến thức nền tảng

Đổi với các kiến thức nền tảng của bộ môn này, yêu cầu cơ bản là cần có kiến thức về lập trình đặc biệt là lập trình hợp ngữ và lập trình C. Hai môn này đối với các bạn trong môi trường Đại học đã được đào tạo rồi, nên không cần phải giới thiệu thêm.


Cuốn sách đầu tiên cần tham khảo là cuốn “Secret of Reversing – EldadEilam” [2].

Cuốn sách này sẽ cung cấp lại cho bạn kiến thức về dịch ngược phần mềm, từ ngôn ngữ lập trình bậc thấp, trình biên dịch,… hiểu được cách mà máy tính thực thi câu lệnh khi chúng ta biên dịch từ mã nguồn phần mềm. Và “dịch ngược” là quá trình mà ta hiểu được cách phần mềm hoạt động từ các ngôn ngữ bậc thấp mà trình disassembler hiển thị. Cuốn sách này cũng sẽ giới thiệu về kiến trúc các thành phần trên Hệ điều hành Windows, cách hiển thị lời gọi hàm, tiếp đó là cách sử dụng một số công cụ cho công việc dịch ngược như IDA Pro, Ollydbg. Cách thức mà mã độc sử dụng để mã hóa, lẩn tránh các phần mềm Antivirus.

Đối với Chương 7, nếu các bạn chỉ cần tìm hiểu về mã độc mà không quan tâm tới khai thác lỗi phần mềm thì không cần tham khảo. Nhưng nếu đọc thì các bạn sẽ có kiến thức cơ bản về viết mã khai thác phần mềm, cuốn sách tập trung vào các phần mềm chủ yếu trên Windows.

Trong Chương 8 là chương nhập môn về phân tích mã độc, giới thiệu các loại mã độc và cách thức hoạt động của nó. Sang chương 9 thì có thể tìm hiểu để bẻ khóa phần mềm hoặc thiết kế một module để bảo vệ bản quyền phần mềm. Các phần còn lại cung cấp cho các bạn kiến thức về các kỹ thuật để mã chống lại những người dịch ngược phần mềm, các kỹ thuật để phát hiện đang bị dịch ngược hay kỹ thuật phát hiện môi trường ảo hóa mà mã độc thường dùng. Một chút kiến thức về dịch ngược các phần mềm được thiết kế trên nền tảng .NET trong chương 12.

  • Tóm lại, cuốn sách này nếu kiên trì đọc và thực hành theo thì các bạn đã nắm được kiến thức cơ bản về các mã độc, và có thể lao vào thực hành phân tích các loại mã độc thường gặp. Thậm chí các loại mã độc được sử dụng trong các cuộc tấn công APT.

Để bồi dưỡng kiến thức về nền tảng Hệ điều hành Windows, các bạn cũng có thể tham khảo cuốn sách “Windows Internal”[3] bao gồm 2 phần, phần 1 giới thiệu về User-mode, phần 2 giới thiệu về Kernel-mode của Hệ điều hành Windows. Các kiến thức này là hết sức cần thiết khi phân tích mã độc. Nản thân tôi cũng vẫn coi cuốn sách này là cuốn sách “gối đầu” khi tìm hiểu về cách mà mã độc hoạt động, và thường xuyên đọc lại để tham khảo khi mà MSDN không tiện để sử dụng. Cuốn này thì sẽ sử dụng xuyên suốt từ trình độ Beginner đến Expert hay Master đều sẽ dùng nó.

“Practical Malware Analysis” [4] đây là cuốn sách mà một trong cuốn sách tiếp theo KHÔNG THỂ KHÔNG ĐỌC của bộ môn phòng chống nghệ thuật hắc ám.

Cuốn sách sẽ đi xuyên suốt và cung cấp các khái niệm cơ bản nhất về mã độc, các kỹ thuật hắc ám được sử dụng trong mã độc, và phương pháp điều trị – khống chế các loại kỹ thuật hắc ám này. Nếu cuốn sách “Secret of Reversing” cung cấp kiến thức về kiến thức nền tảng về dịch ngược phần mềm, thì cuốn sách này cung cấp kiến thức nền tảng về phân tích mã độc. Các bạn nên nhớ, Chuyên gia là những người am hiểu nền tảng. Cứ theo nguyên tắc 10.000 giờ luyện tập, thì chắc chắn sẽ trở thành người có kinh nghiệm.

II. Môi trường thực hành

Cuốn sách mang tính thực hành hơn, kiểu “trên tay” – học và làm luôn thì đó là “Malware Analyst’s Cookbook and DVD: Tools and Techniques for Fighting Malicious Code” [5] bộ sách này có cung cấp cho các bạn từ công cụ, mẫu mã độc, hướng dẫn thực hành từng bước 1. Nếu như các bạn đọc tốt Tiếng Anh, thì có thể tự học – làm và hiểu toàn bộ nội dung và các bài LAB trong đó. Cuốn sách này nên đọc sau khi các bạn đã có nền tảng về dịch ngược phần mềm, hay nói cách khác là đã đọc cuốn sách “Secret of Reversing – EldadEilam” như đã giới thiệu ở trên, tránh tình trạng học vẹt và làm theo hướng dẫn trong sách mà không hiểu bản chất và tuy duy trong các tình huống được nhắc đến trong sách.

Tham gia các cuộc thi phân tích mã độc, đương nhiên rồi các cuộc thi luôn mang lại cảm giác chiến thẳng (hoặc thất bại), và khiến bạn phấn khích khi làm được gì đó. Đặc biệt trong những lúc tưởng chừng như cuộc đời quá nhàn chán với mấy nút F7, F8, F9, F2.


Hàng năm bắt đầu từ 2014, FireEye tổ chức cuộc thi tập trung vào kỹ thuật phân tích mã độc trên mọi nền tảng [6], cấp độ từ khó đến dễ cho các nhà nghiên cứu mã độc trên khắp thế giới. Những người thường xuyên ghi danh trong top các nhà nghiên cứu với tốc độc kinh hoàng tại Việt Nam như yeuchimse, trichimtrich, chuymich,… Các bạn hoàn toàn có thể tải các thử thách này từ các năm 2014 đến nay để tự phân tích, và nếu không ra có thể tham khảo các write-up từ các nhà chiến thắng của cuộc thi.

Thực hành từ các nguồn chia sẻ mã độc công khai. Các nguồn chia sẻ mã độc công khai được ưa thích hiện tại tôi thường sử dụng như: App.any, Hybird-Analysis, https://malshare.com/, https://www.malware-traffic-analysis.net/, https://x.threatbook.cn/ ,… Các nguồn này chia sẻ thông tin và cho phép tải mẫu mã độc miễn phí. Các nguồn thông tin cập nhật trên mạng xã hội như twitter, medium,… có rất nhiều bài phân tích mã độc có thể tham khảo. Ngoài ra, có các bài phân tích công khai của các hãng bảo mật chuyên chia sẻ các bài viết phân tích mã độc uy tín như: FireEye, Fotinet, Avast, BitDeffender, BlackCarbon (BlackBerry),… có người đã tập hợp nó và sưu tập các mẫu mã độc trên Github [7].

Tại Việt Nam, các bạn cũng có thể tham khảo các bài viết chuyên về phân tích mã độc của các công ty như Viettel [8], VinCSS[9], hoặc một số nhà nghiên cứu ẩn danh uy tín. Các bài viết này đều phản ánh một phần nào tình hình tấn công mạng tại Việt Nam, cũng như công việc thực tế mà các bạn tham gia tại công ty của mình. Hoặc các bạn cũng có thể lập trình mã độc, bí mật gửi tới các công ty này, biết đâu đây là một CV hoàn hảo giúp bạn vượt qua vòng phỏng vấn dễ dàng. (troll)

Đối với các công cụ sử dụng để phân tích mã độc. Chúng ta có Ollydbg Tutorial của anh Kienmanowar [10]. Công cụ IDA Pro [11], hay hướng dẫn sử dụng với công cụ Ghidra được biết đến như công cụ của NSA [12] – tuy tôi chưa từng sử dụng công cụ này.

Nhìn chung, các công cụ để sử dụng trong quá trình phân tích không quá quan trọng, công cụ chỉ giúp chúng ta hoàn thành nhanh hơn công việc, không làm báo cáo và phân tích của chúng ta tốt hơn nếu như bản thân người phân tích không làm chủ được công cụ của mình. Tuy nhiên, tôi cũng khuyến cáo nên đọc và học cách sử dụng một công cụ nào đó thuần thục, để tăng tốc độ phân tích của chúng ta nhanh hơn. Đặc biệt trong danh nghiệp luôn luôn sẽ có những sự cố yêu cầu chúng ta phân tích mã độc trong vài tiếng để có thể cơ bản sử lý được sự cố.

Đến đây, nếu các bạn đã có nền tảng, kinh nghiệm từ 2-3 năm chuyên về phân tích mã độc là đã có thể tự mình phân tích mã độc trên Windows một cách thuần thục, không phải bối rối quá nhiều khi gặp những mẫu mã độc lạ chưa từng gặp bao giờ. Tuy nhiên, sẽ khá lúng túng và mất bình tĩnh, kiên nhẫn khi gặp những loại mã độc phức tạp, quá nhiều chức năng, hay được nằm trong một bỏ vỏ bọc chắc chắn mà bạn khó có thể vượt qua dễ dàng. Đã đến lúc chúng ta bước vào giai đoạn tìm hiểu và nghiên cứu chuyên sâu. Đương nhiên, tại giai đoạn này bạn đã có thể tự tin phỏng vấn với bất kỳ nhà tuyển dụng nào tại Việt Nam và có được mức đại ngộ hợp lý.

III. Các kỹ năng nâng cao

Thực tế phần đông chúng ta phát hiện mã độc trên nền tảng Windows. Tuy nhiên, phạm vi công việc của chúng ta sẽ lớn hơn nhiều không chỉ có vậy. Các môi trường như *Nix, Android, OSX, iOS cũng là nơi mà mã độc trú ngụ. Vì thế, song song với việc nghiên cứu và phân tích các mã độc trên nền tảng Windows, các bạn cũng sẽ làm quen với các mã độc trên *Nix, trên điện thoại Android, iPhone cũng như các máy tính Macbook. Và mới nổi gần đây nhất là các mã độc trên thiết bị IoT hoặc PLC (Trình điều khiển thiết bị công nghiệp).

Đối với các mã độc phức tạp, các trình bảo vệ luôn làm khó những nhà phân tích phần mềm độc hại. Bởi vì mã độc đôi khi được thiết kế như những vũ khí trong thời đại ngày nay. Nên để bảo vệ được vũ khí ấy được bí mật, thì những người phát triển mã độc sẽ dùng mọi cách để bảo vệ, làm khó các nhà phân tích, vượt qua (bypass) các hệ thống phân tích mã độc tự động, chống lại môi trường ảo hóa, công cụ dissambler hay công gỡ lỗi,… Ngược lại, các nhà phân tích mã độc sẽ cố gắng làm sáng tỏ được mã độc, dù bao nhiêu lớp bảo vệ đi chăng nữa, dù bao nhiêu thủ đoạn để chống lại đi nữa thì người phân tích mã độc cũng sẽ có phương pháp để mổ xẻ và làm rõ mã độc. Đây là lúc mà công lý luôn giành chiến thắng, chẳng kẻ thù ác nào ở trong bóng tối mãi mãi =)) .

Nếu đã quá nhàn chán với các loại malware thường gặp, bạn sẽ viết các trình giải mã và phân tích tự động. Giống như malwareconfig [13]. Các loại Unpacker tự động, và có thể giải quyết hầu hết các loại crypter, virtualization[14]. Xây dựng các giải pháp phân tích mã độc tự động, và giải quyết bài toán khó về tốc độ phân tích, độ chính xác của hệ thống, chống lại các kỹ thuật phát hiện ảo hóa của mã độc.

Khi đã quá nhàn chán với các loại mã độc tại User-mode, chúng ta sẽ nhấn chìm bản thân sâu hơn nữa vào môn phòng chống nghệ thuật hắc ám khi từ Ring 3 và Ring 0 của Hệ điều hành. Lúc này, bản thân sẽ cảm thấy cô độc bởi vì quanh ta những gì là sâu sắc nhất, căn bản nhất của hệ thống máy tính, nơi mà mã độc cũng có thể ẩn giấu bản thân kín kẽ nhất có thể. Các cuốn sách đã giới thiệu như Windows Internal phần 2, hay Practical Malware Analysis đều đã nhắc tới các loại Bootkit, Rootkit. Thế nhưng để thực sự nhấn chìm và hụp lặn xuống, chúng ta cần kiên nhẫn và kỷ luật hơn với bản thân với Cuốn sách “The Rootkit Arsenal”[15], và cuốn “Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats”[16] giúp ta làm được điều đó. Do các loại mã độc này không xuất hiện phổ biến, vì phát triển các mã độc này không phải đơn giản, thế nên việc phân tích được các loại mã độc này cũng sẽ ít nhiều gặp khó khăn.

Các kỹ năng về phân tích gói tin, kỹ năng forensic, và các kỹ năng về mật mã luôn cần được củng cố và hỗ trợ trong quá trình phân tích mã độc. Vì thế, đừng bỏ quên các kiến thức về những kỹ năng này.
Sách về Memory Forensic: The Art of Memory Forensics: Detecting Malware and Threats in Windows, Linux, and Mac Memory [17]
Sách về mật mã – mã hóa: Serious Cryptography: A Practical Introduction to Modern Encryption [18], Understanding Cryptography: A Textbook for Students and Practitioners [19]. Kiến thức cần thiết khi phân tích các loại mã độc sử dụng mật mã để truyền tin, mã hóa dữ liệu, mã hóa shellcode, hay các trình crypter, obfuscater… Đọc để hiểu và có khả năng giải quyết các sơ đồ mã hóa cơ bản.
Bổ sung thêm các kiến thức về phân tích mã độc: “Mastering Malware Analysis”[20].

Có thể các chuyên gia đầu ngành khác sẽ gợi ý cho các bạn biết các hướng làm và học tiếp theo, tuy nhiên đối với tôi hiện tại đang dừng tại đây, hy vọng sẽ giúp ích được cho các bạn con đường trở thành những nhà phòng chống nghệ thuật hắc ám. Việt Nam ta sẽ càng có nhiều người phòng chống mã độc, chống lại những cuộc tấn công mạng từ Phương Bắc bằng những chiêu trò hắc ám.

IV. Các hướng nghiên cứu học thuật

Ngoài làm một kỹ sư mài đít 8 tiếng ở công ty, tôi cũng có một số hướng nghiên cứu về học thuật nếu các bạn nào yêu thích tìm hiểu và nghiên cứu.

  • Xây dựng hệ thống phân tích mã độc tự động: Hướng nghiên cứu này không phải mới, tuy nhiên các bộ mã nguồn mở hiện nay chưa đáp ứng được về độ chính xác, hiệu năng, khả năng thích ứng với môi trường doanh nghiệp. Chính vì thế mà đề tài nghiên cứu thì nhiều, từ cấp Đại học tới Cao học rồi cao hơn nữa. Nhưng đến nay, Chúng ta vẫn chưa có một sản phẩm công khai nào có khả năng thương mại hóa và bán ra được nước ngoài. Các sản phẩm như App.Any, ThreatBook.cn hay Hybird-Analysis tuy miễn phí (có bản trả phí) nhưng cũng rất hữu dụng và giúp ích rất nhiều.
  • Hướng nghiên cứu về AI phát hiện mã độc, BigData để phát hiện mã độc, Deeplearning để phát hiện mã độc, mã hóa trong mã độc,…. Hướng nghiên cứu này bạn có thể bắt gặp trong bất kỳ trường Đại Học nào đào tạo về An toàn thông tin.
  • Xây dựng các framework sử dụng để phân tích mã độc. Ví dụ như các nghiên cứu và sản phẩm của anh Nguyễn Anh Quỳnh: Capstone (capstone-engine.org), Unicorn (unicorn-engine.org) & Keystone (keystone-engine.org) ứng dụng rất nhiều trong các công việc về phân tích mã độc.

Trên đây là một số gợi ý cho các bạn chuẩn bị bước sang năm cuối, có đủ thời gian để tìm hiểu và xây dựng đề tài. Vì ngoài công việc hàng ngày ra, nếu chúng ta có những đóng góp về mặt khoa học, học thuật cũng sẽ giúp ích rất nhiều cho các bạn sau này.

-*-

Có nhiều con đường để bạn đi theo, không nhất thiết phải theo gợi ý của tôi. Bản thân tôi cũng chỉ là một kỹ sư quèn chuyên F7, F8, F9, F2 chứ cũng không phải là một người cao siêu, nhưng luôn cố gắng chăm chỉ để mong muốn phát triển bản thân tốt hơn, và cứ theo quy tắc 10.000 giờ để đạt được một cái gì đó. Rất mong được sự đóng góp của các chuyên gia khác, vì một mục tiêu chung là truyền bá kỹ thuật phòng chống nghệ thuật hắc ám tới các nhiều người càng tốt, để có khả năng bảo vệ cho gia đình, tổ chức và vì một không gian mạng Việt Nam an toàn.

—–


[1] https://vnhacker.blogspot.com/2012/05/lam-toan-thong-tin-thi-hoc-gi.html
[2] https://www.foo.be/cours/dess-20122013/b/Eldad_Eilam-Reversing__Secrets_of_Reverse_Engineering-Wiley(2005).pdf
[3] https://www.amazon.com/Windows-Internals-Part-Developer-Reference/dp/0735648735
[4] https://nostarch.com/malware
[5] https://www.oreilly.com/library/view/malware-analysts-cookbook/9780470613030/
[6] http://flare-on.com/
[7] https://github.com/CyberMonitor/APT_CyberCriminal_Campagin_Collections
[8] https://blog.viettelcybersecurity.com/
[9] http://blog.vincss.net/
[10] https://kienmanowar.wordpress.com/category/ollydbg-tutorials/
[11] https://nostarch.com/idapro2.htm
[12] https://nostarch.com/GhidraBook
[13] https://malwareconfig.com
[14] https://www.blackhat.com/presentations/bh-usa-07/Yason/Whitepaper/bh-usa-07-yason-WP.pdf
[15] https://www.amazon.com/Rootkit-Arsenal-Escape-Evasion-Corners/dp/1598220616
[16] https://www.amazon.com/Rootkits-Bootkits-Reversing-Malware-Generation-ebook/dp/B07P8J5HZJ/
[17] https://www.amazon.com/Art-Memory-Forensics-Detecting-Malware-ebook/dp/B00JUUZSQC/
[18] https://www.amazon.com/Serious-Cryptography-Practical-Introduction-Encryption-ebook/dp/B0722MTGQV/
[19] https://www.amazon.com/Understanding-Cryptography-Textbook-Students-Practitioners-ebook/dp/B014P9I39Q
[20] https://www.packtpub.com/networking-and-servers/mastering-malware-analysis

What do you think?

Leave a Reply

Your email address will not be published. Required fields are marked *

-->