REVERSING WITH IDA FROM SCRATCH (P32)

Posted: October 23, 2020 in IDA Tutorials, REVERSING WITH IDA FROM SCRATCH (P32)
Tags: ,

Trong phần 32 này, chúng ta sẽ cài đặt một số plugin cho Windbg để bổ trợ trong các công việc tiếp theo. Thật không may, các plugin này chỉ hoạt động khi chạy độc lập với Windbg, còn nếu chạy chúng trong Windbg tích hợp với IDA thì có thể bị crash bởi vì nó xung đột với Python đi kèm theo IDA. Tuy nhiên, chúng ta sẽ sử dụng chúng riêng biệt với Windbg khi cần.

Ta sẽ cài đặt Pykd – python extension for WinDBG: https://githomelab.ru/pykd/pykd/wikis/home

Các bạn có thể tải Pykd-Ext tại https://githomelab.ru/pykd/pykd-ext (tại thời điểm tôi viết bài là pykd_ext_2.0.0.17.zip) và copy lần lượt vào thư mục “winext” của Windbg. Ví dụ, trên máy tôi là: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\winextC:\Program Files (x86)\Windows Kits\10\Debuggers\x64\winext. Pykd-Ext mới chỉ là extension cho phép chạy pykd bên trong Windbg mà thôi, do đó bước tiếp theo là phải cài đặt thêm pykd.

Để cài đặt pykd, một là các bạn tải toàn bộ project (https://githomelab.ru/pykd/pykd) về và tự build lần lượt cho Win32 và Win64 , hai là các bạn tải bản build sẵn tại https://githomelab.ru/pykd/pykd/wikis/Last%20Release. Ở đây, chúng ta sẽ lựa chọn các bản build cho Python 2.7 để cài đặt:

Sau khi cài xong sẽ có được các file pykd.pyd như hình dưới đây:

Chép các file này vào thư mục winext đã nói ở trên. Tuy nhiên, khi sử dụng phiên bản này để chạy với script mona.py bên dưới thì sẽ nhận được thông báo như sau:

Do đó, tốt nhất là bạn hãy dùng phiên bản pykd.pyd v0.2.0.29 tại đường link này. Tiếp theo, các bạn tải xuống phiên bản mới nhất của windbglib.pymona.py (là một Exploit Development được viết bởi Corelan Team) tại các đường link sau:

windbglib.py: https://github.com/corelan/windbglib/raw/master/windbglib.py

mona.py: https://github.com/corelan/mona/raw/master/mona.py

Chép các file này vào cùng thư mục cài đặt của windbg.exe:

Toàn bộ quá trình cài đặt đã hoàn tất. Chạy thử Windbg (không phải chạy IDA), nếu bị lỗi thì khả năng các bạn bị thiếu runtime của Visual C++, các bạn cần phải cài đặt thêm (bộ runtime cũng được tôi gửi kèm theo link trên).

Khi giao diện của Windbg xuất hiện, các bạn nhấn phím tắt là Ctrl+E để mở một file thực thi bất kì. Khi Windbg load xong file và dừng lại, chúng ta gõ thử câu lệnh sau:

!load pykd.pyd

Nếu không có thông báo gì khác thì tức là ta đã load được thành công pykd. Tiếp theo ta có thể sử dụng !py để thực thi python script, còn nếu ta gõ lệnh !pycmd thì nó sẽ mở một Python console tương tự như hình dưới đây:

Lúc này, ta hoàn toàn có thể thực hiện các câu lệnh Python một cách bình thường. Ví dụ:

Tiếp theo, thử chay mona.py. Gõ exit() để thoát khỏi chế độ lệnh của Python và gõ các lệnh sau:

!load pykd.pyd

!py mona

Nếu thành công các bạn sẽ nhận được kết quả như hình:

Hãy thử một số lệnh khác:

!py mona modules

Như các bạn thấy trên hình, lệnh này liệt kê danh sách các modules được nạp và kèm theo thuộc tính của từng modules. Chúng ta sẽ nghiên cứu thêm ở các bài viết sau, bây giờ chỉ là các bước chuẩn bị để có thể có được một môi trường làm việc sẵn sàng. Thử thêm lệnh:

!py mona rop

Câu lệnh trên khi thực hiện sẽ mất một thời gian dài, bởi nó sẽ cố gắng để kiểm tra module mà qua đó nó có thể tạo ra một ROP (sẽ tìm hiểu sau) và nếu tìm thấy, sẽ cố gắng để tạo các rop gadgets.

Nếu thành công, bạn sẽ nhận được kết quả tương tự như hình dưới đây:

Khi hoàn tất, nó sẽ tạo ra các files log tương tự như hình:

Ngoài ra, ta cũng có thể cập nhật mona bằng câu lệnh sau:

Để xem trạng thái của Heap sử dụng lệnh:

Bản thân Windbg cũng có lệnh liên quan đến heap và ta có thể sử dụng cùng với IDA mà không cần dùng tới mona.

Thêm ví dụ về một số lệnh khác:

!py mona assemble -s "jmp esp"

!py mona getiat

!py mona info -a address

OK, phần 32 đến đây là kết thúc tại đây. Trong phần này, chúng ta đã cài đặt các công cụ cần thiết để phục vụ cho các phần tiếp theo.

Hẹn gặp lại các bạn ở phần 33!

Xin gửi lời cảm ơn chân thành tới thầy Ricardo Narvaja!

m4n0w4r

Ủng hộ tác giả

Nếu bạn cảm thấy những gì tôi chia sẻ trong bài viết là hữu ích, bạn có thể ủng hộ bằng “bỉm sữa” hoặc “quân huy” qua địa chỉ:

Tên tài khoản: TRAN TRUNG KIEN
Số tài khoản: 0021001560963
Ngân hàng: Vietcombank

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.