Saturday, May 25, 2019

Tìm hiểu pyvex

Đang ý tưởng tìm hiểu cách phát hiện mã độc đa nền tảng, tức học các mẫu mã độc trên x86 mà có thể phát hiện mã độc trên mips, arm...
Một trong các hương đó là chuyển về mã trung gian chung
Một trong các phương pháp tốt dựa trên Valgrind và angr là Vex Il trên cơ sở PyVex https://github.com/angr/pyvex

Để giải quyết vấn đề đa kiến trúc, ngôn ngữ trung gian là cần thiết. Những điều khác biệt ở các kiến trúc chip khác nhau là:
1. Register names: tên và số lượng các thanh ghi của các kiến trúc chip khác nhau là khác nhau rất nhiều, tất nhiên có những nhóm phổ biến như thanh ghi chung, thành ghi stack, thanh ghi cờ điều kiện...
2. Memory access: có nhiều chế độ truy cập khách nhau như big/little-endian.
3. Memory segmentation
4. Instruction side-effects: nhiều lệnh có ảnh hưởng ngầm đến các lệnh khác.

Để giải quyết bài toán khác biệt này, IR hướng tới giải pháp trừu tượng hoá và tường minh hoá các hành động và trạng thái để có thể giải quyết đa số các trường hợp.

Các thành phần cơ bản của Vex:
  • Expressions. IR Expressions represent a calculated or constant value. This includes memory loads, register reads, and results of arithmetic operations.
  • Operations. IR Operations describe a modification of IR Expressions. This includes integer arithmetic, floating-point arithmetic, bit operations, and so forth. An IR Operation applied to IR Expressions yields an IR Expression as a result.
  • Temporary variables. VEX uses temporary variables as internal registers: IR Expressions are stored in temporary variables between use. The content of a temporary variable can be retrieved using an IR Expression. These temporaries are numbered, starting at t0. These temporaries are strongly typed (i.e., "64-bit integer" or "32-bit float").
  • Statements. IR Statements model changes in the state of the target machine, such as the effect of memory stores and register writes. IR Statements use IR Expressions for values they may need. For example, a memory store IR Statement uses an IR Expression for the target address of the write, and another IR Expression for the content.
  • Blocks. An IR Block is a collection of IR Statements, representing an extended basic block (termed "IR Super Block" or "IRSB") in the target architecture. A block can have several exits. For conditional exits from the middle of a basic block, a special Exit IR Statement is used. An IR Expression is used to represent the target of the unconditional exit at the end of the block.
t0 = GET:I32(16)           1
t1 = 0x8:I32                  2
t3 = Sub32(t0,t1)          3
PUT(16) = t3                 4
PUT(68) = 0x59FC8:I32        5

Vex có mấy loại biểu thức phổ biến:
1. hằng số như lệnh 2, đặt tên là "con"
2. đọc lấy giá trị lưu trong thanh ghi như lệnh 1, đặt tên là "get"

3. đặt giá trị cho thanh ghi, đặt tên là "put"
4. đọc giá trị từ thanh ghi tạm, ví dụ RdTmp(t10), đặt tên là "RdT"
5. ghi giá trị vào thanh ghi tạm, ví dụ t2= 0x12, đặt tên là "WdT"
6. đọc giá trị từ bộ nhớ, đặt tên là "LDle"
7. ghi gía trị vào bộ nhớ, đặt tên "STle"
8. lệnh điều kiện if, đặt tên là ite
9. các toán tử như lệnh 3, đặt tên theo toán tử, 
đang tìm danh sách các toán tử mà vex hỗ trợ

Trong 1 câu lệnh của vex có thể có thể gồm nhiều biểu thức, toán tử và toán hang. Việc trích chọn đặc trưng n-gram sẽ chọn 1 câu là 1 biểu thức đặc trưng có thứ tự ưu tiên, như vậy có 1 số biểu thức sẽ không xuất hiêện là "gram", ví dụ như: con, vì hằng số bao giờ cũng sẽ gắn vào thanh ghi nào đó nên lấy "gram" là gán thanh ghi. 











Related Posts:

  • Thực hiện unpack một file mã độc bằng OllyDbg Điều quan trọng nhất trong việc phân tích mã độc đó là thực hiện việc unpack thành công. Bởi nếu chúng ta không unpack được thì kết quả phân tích sẽ không được chính xác. Với công cụ PeiD sẽ giúp ta xác định được trình pack… Read More
  • Phân tích gói tin với WIRESHARKGiới thiệu qua một chút về Wireshark - WireShark có một bề dầy lịch sử. Gerald Combs là người đầu tiên phát triển phần mềm này. Phiên bản đầu tiên được gọi là Ethereal được phát hành năm 1998. Tám năm sau kể từ khi phiên bả… Read More
  • Xây dựng lab phục vụ cho phân tích động malwareMalware labs có thể cực kì đơn giản hoặc rất phức tạp. Tất cả phụ thuộc vào resources hiện có của bạn (ví dụ như hardware, networking equipment, Windows licences, và những thứ khác), phụ thuộc vào bao nhiêu công việc phân tíc… Read More
  • DebuggingDebugger là một phần mềm hoặc phần cứng được sử dụng để kiểm tra và việc thực thi của một chương trình khác. Debuggers giúp sức trong quá trình phát triển phần mềm, bời vì các chương trình thường xuyên có những lỗi khi chúng … Read More
  • Basic Dynamic Analysis: SandboxDynamic analysis là bất cứ quá trình phân tích nào được thực hiện sau khi thực thi malware. Dynamic analysis techniques là bước thứ hai trong quá trình phân tích malware. Dynamic analysis thường được thực hiện sau basic … Read More

0 comments:

Post a Comment