Malware

Frida 101: Nhập môn

category
Malware
date
May 10, 2021
slug
frida-101-nhap-mon
author
status
Public
tags
frida
instrumentation
summary
Giới thiệu và cài đặt Frida framework.
type
Post
thumbnail
updatedAt
Mar 1, 2023 08:52 AM

1. Phương pháp Instrumentation

Instrumentation: Là phương pháp thêm một số đoạn mã trung gian (gọi là Instrumentation Code - IC) vào chương trình để lấy các thông tin hay sửa đổi hành vi chương trình trong quá trình nó thực thi. Để thực hiện Instrumentation, có 2 phương pháp chính đang được sử dụng hiện nay:
  1. Source Code Instrumentation (SCI): Tức là thêm IC vào chương trình trước khi biên dịch. Quá trình này chỉ thực hiện được nếu có source code của chương trình. Đây là phương pháp instrumentation mà American Fuzzy Lop (AFL Fuzzer) của lcamtuf đang sử dụng.
  1. Binary Instrumentation (BI): Là phương pháp thêm IC vào chính file thực thi của chương trình. BI cũng có 2 phương pháp có thể thực hiện:
      • Static Instrumentation: Sử dụng một chương trình disassembler hay emulator để ghi các đoạn mã IC vào trong binary nhưng không làm thay đổi hoạt động của chương trình ban đầu.
      • Dynamic Instrumentation: Chèn IC vào chương trình trong quá trình thực thi, không làm ảnh hưởng tới file binary ban đầu. Đây là cách tiếp cận của Pin, Frida, DynamoRIO,.v.v..
Ứng dụng của Instrumentation: Flow Analysis, Taint Analysis, Fuzzing, Code Coverage, Test Case Generation, Reverse Engineering, Debugging, Vulnerability Detection, Patching, Exploit Development,.v.v..

2. Giới thiệu và cài đặt Frida Framework

2.1. Giới thiệu
Frida được ví như là Greasemonkey dành cho Native Application. Nói một cách kỹ thuật hơn thì Frida là một Dynamic Code Instrumentation Toolkit, như đã trình bày ở phần trước Frida sử dụng phương pháp DBI. Frida cho phép chúng ta đưa mã JavaScript ta viết vào các ứng dụng chạy trên Windows, macOS, Linux, iOS, Android,.v.v..
Phần core của Frida được viết bằng ngôn ngữ lập trình C và để thực thi được mã JavaScript bên trong một tiến trình thì Frida đã sử dụng một Javascript Engine đó là: QuickJS. Đây là thành phần sẽ thực thi mã JavaScript của chúng ta viết.
Frida có thể được sử dụng với nhiều ngôn ngữ lập trình khác nhau thông qua các API mà Frida cung cấp. Các ngôn ngữ lập trình hiện tại đang được hỗ trợ: C, NodeJS, Python, Swift, .NET, Qml,.v.v..
 
Một vài Ưu điểm của Frida:
  • Scriptable: Đưa các mã JavaScript của bạn vào bên trong một tiến trình. Hook vào bất kỳ hàm nào, theo dõi đầu vào và đầu ra của các hàm này. Thậm chí là sửa đổi hành vi thực thi của chương trình. Mọi thứ thực hiện không cần mã nguồn của ứng dụng, trong quá trình thực thi mọi thứ chúng ta viết không cần biên dịch, không cần phải khởi động lại mỗi lần sửa đổi mã JavaScript,.v.v..
  • Portable: Hoạt động đa nền tảng: Windows, Linux, macOS, iOS, Android,.v.v.. Hỗ trợ nhiều ngôn ngữ lập trình: Python, .NET, C, Swift,.v.v..
  • Free: Luôn miễn phí và nguồn mở
  • Battle-tested: Rất nhiều nhà cung cấp dịch vụ bảo mật, hãng bảo mật làm các sản phẩm lớn đã và đang sử dụng Frida trong dự án của họ. Và Frida đã trải qua nhiều năm thử nghiệm với nhiều case sử dụng.
 
2.2. Cài đặt
Frida có sẵn một bộ các công cụ được viết bằng Python. Có thể cài đặt Frida thông qua Pip:
$ pip install frida-tools
Thao tác này sẽ cài đặt bộ các công cụ của Frida được viết bằng Python như: frida-create, frida-discover, frida-kill, frida-ls-devices, frida-ps, frida-trace, frida
Để sử dụng Frida thông qua Python API. Có thể cài đặt Frida Package thông qua Pip:
$ pip install frida

3. Tài liệu tham khảo