lOMoARcPSD| 58815430
1
Downloaded by Anh Ngoc
(anhngoc@gmail.com)
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA AN TOÀN THÔNG TIN
BÁO CÁO BÀI THỰC HÀNH SỐ 2
PTIT – Radare2
Giảng viên
:
Đỗ Xuân Chợ
Nhóm lớp
:
04
Họ và tên
MSV
Ngô Văn Nam
B21DCAT138
Hà Nội 11/2024
lOMoARcPSD| 58815430
Mục lục
1. Mục ích .......................................................................................................................................... 3
2. Tìm hiểu lý thuyết ........................................................................................................................ 3
2.1 Tổng quan về Radare2 .......................................................................................................... 3
2.2 Các tính năng nổi bật của Radare2 ...................................................................................... 3
3. Nội dung thực hành ..................................................................................................................... 3
4. Kết luận ......................................................................................................................................... 9
5. Tài liệu tham khảo ..................................................................................................................... 10
lOMoARcPSD| 58815430
1. Mục ích
Bài thực hành này giới thiệu công cụ Radare2. Sinh viên sẽ sử dụng Radare2 ể
phân tích một tập tin thực thi nhằm xác ịnh một số thuộc tính cơ bản.
2. Tìm hiểu lý thuyết
2.1 Tổng quan về Radare2
Radare2 (còn ược gọi r2) một khung hoàn chỉnh cho kỹ thuật ảo ngược và
phân tích nhị phân; bao gồm một tập hợp các tiện ích nhỏ có thể ược sử dụng cùng
nhau hoặc ộc lập với dòng lệnh. Được xây dựng xung quanh một trình tháo rời cho
phần mềm máy tính tạo mã nguồn ngôn ngữ hợp ngữ từ mã thực thi máy, nó hỗ tr
nhiều ịnh dạng thực thi cho các kiến trúc bộ xử lý và hệ iều hành khác nhau.
2.2 Các tính năng nổi bật của Radare2
Phân tích mã nhị phân: Radare2 cho phép người dùng tải và phân tích các
file nhị phân, cung cấp thông tin về các hàm, biến, chuỗi, và tài nguyên của file.
Nó hỗ trợ a dạng ịnh dạng file như ELF, PE, Mach-O, và nhiều ịnh dạng khác.
Disassembly: Radare2 cung cấp khả năng dịch ngược mã nhị phân
(disassemble) sang mã hợp ngữ, giúp người dùng có thể hiểu ược các lệnh CPU ở
cấp thấp. Công cụ này hỗ trợ rất nhiều kiến trúc và cung cấp các tính năng tùy
chỉnh cho các kiến trúc cụ thể.
Gỡ lỗi (Debugging): Radare2 tích hợp tính năng gỡ lỗi, hỗ trợ các lệnh ể iều
khiển luồng thực thi của chương trình, ặt breakpoint, xem và sửa ổi giá trị của
thanh ghi và bộ nhớ trong khi gỡ lỗi.
Phân tích tĩnh và ộng: Radare2 hỗ trợ phân tích tĩnh (static analysis) cho
phép người dùng nghiên cứu chương trình mà không cần thực thi nó. Ngoài ra,
phân tích ộng (dynamic analysis) cũng ược hỗ trợ giúp người dùng phân tích hành
vi của chương trình trong lúc chạy.
Hexadecimal Editing (Hex Editing): Radare2 có tính năng chỉnh sửa file
dưới dạng hex, cho phép người dùng chỉnh sửa dữ liệu nhị phân trực tiếp, hỗ trợ
tốt cho việc phân tích mã ộc và bẻ khóa phần mềm.
Scripting và Plugins: Radare2 hỗ trợ scripting bằng ngôn ngữ của chính nó
(r2pipe) hoặc các ngôn ngữ khác như Python, giúp tự ộng hóa các tác vụ phân tích
phức tạp. r2 cũng hỗ trợ viết plugin ể mở rộng tính năng của nó.
Hỗ trợ cộng ồng và tài liệu: Radare2 có một cộng ồng lớn và tài liệu chi
tiết, giúp người dùng dễ dàng tiếp cận và học cách sử dụng.
3. Nội dung thực hành
Khởi ộng bài lab:
Vào terminal, gõ: labtainer ptit-radare2
lOMoARcPSD| 58815430
Sau khi khởi ộng xong một terminal ảo sẽ xuất hiện, ại diện cho máy radare2
Trong bài lab này sẽ có sẵn file mã ộc sample.c, ược sử dụng ể lây nhiễm mã ộc
vào một số các file khác có uôi file là “.c, .cpp, .txt”.
Hình 3.1. Xem file sample.c
File mã ộc này bắt ầu ược thực thi bằng một payload ơn giản, ầu tiên nó sẽ in ra
"YOU HAVE BEEN INFECTED …!!!".
Sinh viên bắt ầu làm bài thực hành bằng cách chạy lệnh “./run.sh” ể biên dịch và
thực thi oạn code mã ộc trên.
Hình 3.2. Chạy biên dịch và thực thi code mã ộc
Sau khi biên dịch xong thì sẽ có file sample sinh ra.
lOMoARcPSD| 58815430
Chức năng chính của virus là chịu trách nhiệm thực thi payload và tự sao chép.
Nó bắt ầu bằng cách gọi hàm mã ộc và khởi tạo một số biến. Nó mở tệp hiện tại,
chính là chương trình vi-rút, bằng cách sử dụng chức năng fopen.
Sau ó, nó ọc từng dòng tệp hiện tại, tìm kiếm một chuỗi cụ thể "// VIRUS SAYS
HI!" ánh dấu sự bắt ầu của mã virus và "// VIRUS SAYS BYE!" ánh dấu sự kết
thúc của mã virus. Nó sao chép mã virus vào một mảng, vì vậy nó có thể ược sử
dụng ể lây nhiễm các tệp khác.
Nhiệm vụ 1: Xem tổng quan chương trình với radare2
Sử dụng câu lệnh “r2 ./sample” ể khởi chạy chương trình, radare2 sẽ mở tệp
“sample” và chờ nhập các lệnh khác ể phân tích.
Sau khi khởi chạy chương trình thì sử dụng “aaa” ể xem mô- un và các hàm
Hình 3.3. Xem các module
Chạy lệnh “afl”, radare2 sẽ hiển thị một danh sách các hàm, cùng với một số thông
tin về mỗi hàm.
Hình 3.4. Xem danh sách các hàm
lOMoARcPSD| 58815430
Nhiệm vụ 2: Xem các hàm code trong chương trình
“s ( ịa chỉ hàm) hoặc s (tên hàm)” ược sử dụng ể di chuyển con trỏ ến hàm trong
chương trình.
Hình 3.5. Di chuyển con trỏ hàm ến hàm main
Lệnh “pdf” trong Radare2 ược sử dụng ể phân tích cú pháp một hàm. Khi gọi lệnh
pdf mà không có tham số, nó sẽ phân tích cú pháp hàm hiện tại (nơi con trỏ ang trỏ
ến
Hình 3.6. Phân tích cú pháp hàm Main
Nếu muốn phân tích cú pháp một hàm cụ thể, có thể chỉ ịnh nó như một tham số: pdf
@ <tên hàm>
Xem thông tin của hàm “private_Function” mô tả chức năng chính của virus lây
nhiễm trong chương trình
lOMoARcPSD| 58815430
Hình 3.7. Phân tích cú pháp hàm private_Function
Xem thông tin của hàm “gene” ược sử dụng ể sinh các chữ số và kí tự ngẫu
nhiên.
Hình 3.8. Phân tích cú pháp hàm gene
Nhiệm vụ 3: Khởi chạy debug
Trong Radare2, db, dc” là các lệnh liên quan ến việc gỡ lỗi:
db: Lệnh y ược sử dụng ể thiết lập các iểm dừng (breakpoints). Có thể sử dụng
db kèm theo iểm vào của chương trìnhbắt ầu trình gỡ lỗi và tạm dừng thực thi tại hàm
ó. Ví dụ, db main sẽ bắt ầu trình gỡ lỗi và tạm dừng thực thi tại hàm main. dc: Lệnh này
lOMoARcPSD| 58815430
ược sử dụng tiếp tục thực thi chương trình sau khi ã tạm dừng tại một iểm dừng.
cho phép kiểm soát quá trình thực thi của chương trình dừng lại tại các iểm quan
trọng ể kiểm tra trạng thái của chương trình.
Sau quá trình nhập các lệnh db, dc một vài lần thì chương trình sẽ yêu cầu sinh viên
phải nhập thông tin, ở ây sinh viên sẽ nhập input là mã sinh viên của mình
Hình 3.9. Thực nghiệm lệnh dc, db
Tiếp tục sử dụng lệnh dc ể thực thi chương trình ến khi xuất hiện dòng chữ “YOU
HAVE BEEN INFECTED
Hình 3.10. Màn hình hiển thị dòng chữ :YOU HAVE BEEN INFECTED Nhiệm
vụ 4: Tìm kiếm các chuỗi:
Lệnh “iz” trong Radare2 ược sử dụng ể liệt kê tất cả các chuỗi trong chương trình.
lOMoARcPSD| 58815430
Hình 3.11. Liệt kê các chuỗi
Kết thúc bài lab:
Trên terminal ầu tiên sử dụng câu lệnh sau ể kết thúc bài lab: stoplab radare2
Khi bài lab kết thúc, một tệp zip lưu kết quả ược tạo và lưu vào một vị trí ược hiển thị
bên dưới stoplab.
4. Kết luận
Kiểm tra checkwork
Kết luận
Radare2 một công cụ phân tích nhị phân reverse engineering mạnh mẽ, với các
tính năng a dạng từ disassembly, gỡ lỗi ến phân tích tĩnh, ộng hex editing. yêu cầu
kiến thức chuyên sâu về hệ thống hợp ngữ, Radare2 mang lại hiệu quả cao khả
năng tùy biến, phù hợp cho chuyên gia bảo mật và những người am mê nghiên cứu mã nhị
phân. Trong thử nghiệm, công cụ ã chứng minh tin cậy và khả năng tự ộng hóa nhờ
lOMoARcPSD| 58815430
scripting, giúp tiết kiệm thời gian. Mặc giao diện ban ầu thể phức tạp, cộng ồng lớn
tài liệu phong phú của Radare2 giúp người dùng dễ dàng tiếp cận. Radare2 thực sự
công cụ không thể thiếu cho phân tích mã ộc, kiểm tra bảo mật và reverse engineering.
5. Tài liệu tham khảo
[1] Đinh Trường Duy, TÌM HIỂU BÀI THỰC HÀNH PTIT – RADARE2, Học
viện Công Nghệ Bưu Chính Viễn Thông, 2024
[2] Radare2 Book Documentation. Radare2 Project, Accessed 1 Nov. 2024

Preview text:

lOMoAR cPSD| 58815430
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA AN TOÀN THÔNG TIN Môn: Phân tích mã ộc
BÁO CÁO BÀI THỰC HÀNH SỐ 2 PTIT – Radare2 Giảng viên : Đỗ Xuân Chợ Nhóm lớp : 04 Họ và tên MSV Ngô Văn Nam B21DCAT138 Hà Nội 11/2024 1 Downloaded by Anh Ngoc (anhngoc@gmail.com) lOMoAR cPSD| 58815430 Mục lục
1. Mục ích .......................................................................................................................................... 3
2. Tìm hiểu lý thuyết ........................................................................................................................ 3
2.1 Tổng quan về Radare2 .......................................................................................................... 3
2.2 Các tính năng nổi bật của Radare2 ...................................................................................... 3
3. Nội dung thực hành ..................................................................................................................... 3
4. Kết luận ......................................................................................................................................... 9
5. Tài liệu tham khảo ..................................................................................................................... 10 lOMoAR cPSD| 58815430 1. Mục ích
Bài thực hành này giới thiệu công cụ Radare2. Sinh viên sẽ sử dụng Radare2 ể
phân tích một tập tin thực thi nhằm xác ịnh một số thuộc tính cơ bản.
2. Tìm hiểu lý thuyết
2.1 Tổng quan về Radare2
Radare2 (còn ược gọi là r2) là một khung hoàn chỉnh cho kỹ thuật ảo ngược và
phân tích nhị phân; bao gồm một tập hợp các tiện ích nhỏ có thể ược sử dụng cùng
nhau hoặc ộc lập với dòng lệnh. Được xây dựng xung quanh một trình tháo rời cho
phần mềm máy tính tạo mã nguồn ngôn ngữ hợp ngữ từ mã thực thi máy, nó hỗ trợ
nhiều ịnh dạng thực thi cho các kiến trúc bộ xử lý và hệ iều hành khác nhau.
2.2 Các tính năng nổi bật của Radare2
Phân tích mã nhị phân: Radare2 cho phép người dùng tải và phân tích các
file nhị phân, cung cấp thông tin về các hàm, biến, chuỗi, và tài nguyên của file.
Nó hỗ trợ a dạng ịnh dạng file như ELF, PE, Mach-O, và nhiều ịnh dạng khác.
Disassembly: Radare2 cung cấp khả năng dịch ngược mã nhị phân
(disassemble) sang mã hợp ngữ, giúp người dùng có thể hiểu ược các lệnh CPU ở
cấp thấp. Công cụ này hỗ trợ rất nhiều kiến trúc và cung cấp các tính năng tùy
chỉnh cho các kiến trúc cụ thể.
Gỡ lỗi (Debugging): Radare2 tích hợp tính năng gỡ lỗi, hỗ trợ các lệnh ể iều
khiển luồng thực thi của chương trình, ặt breakpoint, xem và sửa ổi giá trị của
thanh ghi và bộ nhớ trong khi gỡ lỗi.
Phân tích tĩnh và ộng: Radare2 hỗ trợ phân tích tĩnh (static analysis) cho
phép người dùng nghiên cứu chương trình mà không cần thực thi nó. Ngoài ra,
phân tích ộng (dynamic analysis) cũng ược hỗ trợ giúp người dùng phân tích hành
vi của chương trình trong lúc chạy.
Hexadecimal Editing (Hex Editing): Radare2 có tính năng chỉnh sửa file
dưới dạng hex, cho phép người dùng chỉnh sửa dữ liệu nhị phân trực tiếp, hỗ trợ
tốt cho việc phân tích mã ộc và bẻ khóa phần mềm.
Scripting và Plugins: Radare2 hỗ trợ scripting bằng ngôn ngữ của chính nó
(r2pipe) hoặc các ngôn ngữ khác như Python, giúp tự ộng hóa các tác vụ phân tích
phức tạp. r2 cũng hỗ trợ viết plugin ể mở rộng tính năng của nó.
Hỗ trợ cộng ồng và tài liệu: Radare2 có một cộng ồng lớn và tài liệu chi
tiết, giúp người dùng dễ dàng tiếp cận và học cách sử dụng.
3. Nội dung thực hành Khởi ộng bài lab:
Vào terminal, gõ: labtainer ptit-radare2 lOMoAR cPSD| 58815430
Sau khi khởi ộng xong một terminal ảo sẽ xuất hiện, ại diện cho máy radare2
Trong bài lab này sẽ có sẵn file mã ộc sample.c, ược sử dụng ể lây nhiễm mã ộc
vào một số các file khác có uôi file là “.c, .cpp, .txt”.
Hình 3.1. Xem file sample.c
• File mã ộc này bắt ầu ược thực thi bằng một payload ơn giản, ầu tiên nó sẽ in ra
"YOU HAVE BEEN INFECTED …!!!".
• Sinh viên bắt ầu làm bài thực hành bằng cách chạy lệnh “./run.sh” ể biên dịch và
thực thi oạn code mã ộc trên. Hình 3.2.
Chạy biên dịch và thực thi code mã ộc
• Sau khi biên dịch xong thì sẽ có file sample sinh ra. lOMoAR cPSD| 58815430
• Chức năng chính của virus là chịu trách nhiệm thực thi payload và tự sao chép.
Nó bắt ầu bằng cách gọi hàm mã ộc và khởi tạo một số biến. Nó mở tệp hiện tại,
chính là chương trình vi-rút, bằng cách sử dụng chức năng fopen.
• Sau ó, nó ọc từng dòng tệp hiện tại, tìm kiếm một chuỗi cụ thể "// VIRUS SAYS
HI!" ánh dấu sự bắt ầu của mã virus và "// VIRUS SAYS BYE!" ánh dấu sự kết
thúc của mã virus. Nó sao chép mã virus vào một mảng, vì vậy nó có thể ược sử
dụng ể lây nhiễm các tệp khác.
Nhiệm vụ 1: Xem tổng quan chương trình với radare2
Sử dụng câu lệnh “r2 ./sample” ể khởi chạy chương trình, radare2 sẽ mở tệp
“sample” và chờ nhập các lệnh khác ể phân tích.
Sau khi khởi chạy chương trình thì sử dụng “aaa” ể xem mô- un và các hàm
Hình 3.3. Xem các module
Chạy lệnh “afl”, radare2 sẽ hiển thị một danh sách các hàm, cùng với một số thông tin về mỗi hàm.
Hình 3.4. Xem danh sách các hàm lOMoAR cPSD| 58815430
Nhiệm vụ 2: Xem các hàm code trong chương trình
“s ( ịa chỉ hàm) hoặc s (tên hàm)” ược sử dụng ể di chuyển con trỏ ến hàm trong chương trình. Hình 3.5.
Di chuyển con trỏ hàm ến hàm main
Lệnh “pdf” trong Radare2 ược sử dụng ể phân tích cú pháp một hàm. Khi gọi lệnh
pdf mà không có tham số, nó sẽ phân tích cú pháp hàm hiện tại (nơi con trỏ ang trỏ ến
Hình 3.6. Phân tích cú pháp hàm Main
Nếu muốn phân tích cú pháp một hàm cụ thể, có thể chỉ ịnh nó như một tham số: pdf @
Xem thông tin của hàm “private_Function” mô tả chức năng chính của virus lây nhiễm trong chương trình lOMoAR cPSD| 58815430
Hình 3.7. Phân tích cú pháp hàm private_Function
▪ Xem thông tin của hàm “gene” ược sử dụng ể sinh các chữ số và kí tự ngẫu nhiên.
Hình 3.8. Phân tích cú pháp hàm gene
Nhiệm vụ 3: Khởi chạy debug
Trong Radare2, “db, dc” là các lệnh liên quan ến việc gỡ lỗi:
db: Lệnh này ược sử dụng ể thiết lập các iểm dừng (breakpoints). Có thể sử dụng
db kèm theo iểm vào của chương trình ể bắt ầu trình gỡ lỗi và tạm dừng thực thi tại hàm
ó. Ví dụ, db main sẽ bắt ầu trình gỡ lỗi và tạm dừng thực thi tại hàm main. dc: Lệnh này lOMoAR cPSD| 58815430
ược sử dụng ể tiếp tục thực thi chương trình sau khi ã tạm dừng tại một iểm dừng. Nó
cho phép kiểm soát quá trình thực thi của chương trình và dừng lại tại các iểm quan
trọng ể kiểm tra trạng thái của chương trình.
Sau quá trình nhập các lệnh db, dc một vài lần thì chương trình sẽ yêu cầu sinh viên
phải nhập thông tin, ở ây sinh viên sẽ nhập input là mã sinh viên của mình
Hình 3.9. Thực nghiệm lệnh dc, db
Tiếp tục sử dụng lệnh dc ể thực thi chương trình ến khi xuất hiện dòng chữ “YOU HAVE BEEN INFECTED
Hình 3.10. Màn hình hiển thị dòng chữ :YOU HAVE BEEN INFECTED Nhiệm
vụ 4: Tìm kiếm các chuỗi:
Lệnh “iz” trong Radare2 ược sử dụng ể liệt kê tất cả các chuỗi trong chương trình. lOMoAR cPSD| 58815430
Hình 3.11. Liệt kê các chuỗi • Kết thúc bài lab:
Trên terminal ầu tiên sử dụng câu lệnh sau ể kết thúc bài lab: stoplab radare2
Khi bài lab kết thúc, một tệp zip lưu kết quả ược tạo và lưu vào một vị trí ược hiển thị bên dưới stoplab. 4. Kết luận Kiểm tra checkwork Kết luận
Radare2 là một công cụ phân tích mã nhị phân và reverse engineering mạnh mẽ, với các
tính năng a dạng từ disassembly, gỡ lỗi ến phân tích tĩnh, ộng và hex editing. Dù yêu cầu
kiến thức chuyên sâu về hệ thống và mã hợp ngữ, Radare2 mang lại hiệu quả cao và khả
năng tùy biến, phù hợp cho chuyên gia bảo mật và những người am mê nghiên cứu mã nhị
phân. Trong thử nghiệm, công cụ ã chứng minh ộ tin cậy và khả năng tự ộng hóa nhờ lOMoAR cPSD| 58815430
scripting, giúp tiết kiệm thời gian. Mặc dù giao diện ban ầu có thể phức tạp, cộng ồng lớn
và tài liệu phong phú của Radare2 giúp người dùng dễ dàng tiếp cận. Radare2 thực sự là
công cụ không thể thiếu cho phân tích mã ộc, kiểm tra bảo mật và reverse engineering.
5. Tài liệu tham khảo [1]
Đinh Trường Duy, TÌM HIỂU BÀI THỰC HÀNH PTIT – RADARE2, Học
viện Công Nghệ Bưu Chính Viễn Thông, 2024 [2]
Radare2 Book Documentation. Radare2 Project, Accessed 1 Nov. 2024