• Slide1
  • Slide2
1 2
TIN TỨC CHI TIẾT
  • zoom in
  • zoom out
  • text align left
  • text align center
  • text align right
  • Chỉnh màu chữ
  • Làm đậm

Hướng dẫn “Reverse Engineering (RE)” cho người chơi CTF

Giới thiệu về dịch ngược (Reverse Engineering)

  • Bài viết này mình sẽ giới thiệu một cách ngắn gọn nhất có thể về mảng RE cho các bạn mới bắt đầu chơi CTF tham khảo
  • Dịch ngược là gì? Lấy ví dụ 1 chiếc xe đạp mà bạn thường thấy nhé. Theo chúng ta biết thì xe đạp gồm phần đầu, thân và đuôi đúng không nhỉ? Nào là tay cầm, chân đạp, bánh xe….. Nhiều bộ phận cấu tạo thành chiếc xe đạp, và mỗi bộ phận có 1 vai trò nhất định.
  • Vậy nếu bạn muốn tìm hiểu chiếc xe đạp hoạt động như thế nào, từng bộ phận vận hành ra sao thì cách hiệu quả nhất đó là tháo rời chiếc xe đạp ra thành nhiều bộ phận. Dịch ngược về bản chất cũng như thế.
  • Dịch ngược phần mềm là quá trình chúng ta lấy một phần mềm và cố gắng tái tạo lại cách nó hoạt động như thế nào, có thể là khôi phục được một phần nào đó mã nguồn để chúng ta có một cái nhìn tổng quát về phần mềm này.

 

Tại sao cần phải biết về ngôn ngữ bậc thấp Assembly

- Hầu hết các bạn đều được tiếp xúc với các ngôn ngữ bậc cao như Python, Java, C++ …. Đây là các ngôn ngữ có cú pháp gần gũi nhất với con người. Khi các bạn code bằng ngôn ngữ bậc cao, thì đoạn code của bạn sẽ được chuyển đổi sang ngôn ngữ bậc thấp, từ đó được chuyển thành mã máy chỉ bao gồm số 0 và 1, ví dụ câu lệnh print("Hello”) trong python (Interpreted Language - ngôn ngữ biên dịch) khi được chạy thì sẽ được biên dịch thành ngôn ngữ bậc cao C/C++, được biên dịch thành ngôn ngữ bậc thấp (Assembly), chuyển đổi thành mã máy dạng hex và cuối cùng là mã nhị phân như hình dưới đây:



- Trong dịch ngược hầu hết chúng ta sẽ tiếp xúc với Assembly, vốn là 1 ngôn ngữ bậc thấp nên nó gần gũi với máy tính nhất, vì vậy chúng ta cần phải hiểu sơ về Assembly trước khi tiến xa hơn, mà trước khi đắm chìm vào Assembly thì bạn cần hiểu về kiến trúc máy tính & CPU đúng không nào?

- Ngôn ngữ Assembly làm việc với CPU và bộ nhớ. Đây là lí do tại sao chúng ta phải hiểu khái quát về kiến trúc máy tính, để khi xài các chỉ dẫn (instruction) trong assembly để thao tác xử lí dữ liệu thì mới biết được cần thao tác như nào và mỗi instruction xử lí nhanh hay chậm.

- Để tìm hiểu chi tiết hơn về Kiến trúc máy tính, các bạn chọn@Kiến trúc máy tínhnhé!


Một số công cụ mà các chương trình RE (Reverse Engineering) sẽ hay sử dụng

- Trong RE có 2 kiểu phân tích là Static Analysis và Dynamic Analysis. Static có thể được xem là "nhìn” chương trình khi nó tồn tại trên ổ đĩa, trong static analysis thì chương trình sẽ không bao giờ được chạy. Dynamic bao gồm việc phân tích process khi chương trình đang chạy. Dynamic thường được dùng để phân tích hành vi của mã độc.

- Dynamic cho phép theo dõi dữ liệu trong bộ nhớ và cách dữ liệu được xử lí như thế nào, static đòi hỏi người dịch phải suy đoán hoặc dịch ngược sâu hơn mới biết được chính xác.

- Có 3 công cụ mà các chương trình RE (Reverse Engineering) sẽ hay sử dụng, đó là:

  1. Disassembler:tool này sẽ dịch chương trình từ các byte trên ổ đĩa hoặc trong bộ nhớ thành code assembly
  2. Decompiler: tương tự Disassember nhưng tool này thay vì show code assembly, nó sẽ cố gắng khởi tạo code gốc dưới dạng code C/C++. Nhược điểm của tool này đó là code khởi tạo sẽ không chính xác với code gốc, cho nên có thể coi như là pesudo code. Vì lí do này nên trong suốt quá trình dịch ngược bạn nên để cửa sổ của Decompiler kế bên Disassembler cho tiện việc phân tích.
  3. Debugger:là tool cho phép người dịch đặt breakpoint khi chương trình chạy, cho phép người dịch phân tích register, memory, trạng thái tại BẤT CỨ THỜI ĐIỂM nào. Tool cũng cho phép thay đổi dữ liệu nằm trên memory trong quá trình chạy của chương trình.

-GNU Debugger (GDB)là một debugger được cài sẵn trên nhiều Linux distro, tuy là một debugger khá mạnh mẽ nhưng có phần khó sử dụng, cho nên chúng ta phải cài thêm 1 plugin cho gdb. Hiện nay có khá nhiều plugin phổ biến như peda, gef và pwndbg nhưng mình sẽ giới thiệu cho các bạn plugin pwndbg nhé!

- Các bạn truy cập đường dẫn sau, sẽ có huớng dẫn cài luôn nhé:https://github.com/pwndbg/pwndbg

- Sau khi cài xong thì bạn gõ gdb và enter thì sẽ ra giao diện như này:



--> Vậy là đã cài thành công rồi...!!!Các bạn có thể tham khảo chi tiết về Debugging@tại đây

---------------------------------------------------------

Chương trình tập huấn CTF @TẬP HUẤN CAPTURE THE FLAG

 

Các bài viết khác

•  Giải Bóng Đá Champion Các Công Ty ICT Mừng Ngày 02/09/2024

•  NĂM XU HƯỚNG AN NINH MẠNG HÀNG ĐẦU TRONG NĂM 2020

•  GOWIN SEMINAR

•  INTERNET OF THINGS WORKSHOP

•  CCNA SECURITY WORKSHOP

•  IT HELPDESK PROFESSIONAL WORKSHOP

Liên hệ

David Dang
David Dang:
090.999.4327

My status Bao Bì Việt Phát
admin@itstar.vn

          

CÔNG TY ITSTAR


Địa chỉ: 22/14 Phan Văn Hớn, Phường Tân Thới Nhất, Quận 12, Tp. HCM
Điện thoại: 09 09 99 43 27
Tài khoản Vietcombank:
Email: admin@itstar.vn
Website: https://itstar.vn