Posts Tagged ‘ReverseEngineering’


Phần 31 này sẽ đề cập tới việc cài đặt Windbg để làm việc với IDA. Như các bạn đã biết (hoặc có thể chưa biết), Windbg là một trình debugger mạnh, hàng chính hãng của M$. Trình debugger nổi tiếng này có thể được quản lý từ giao diện của IDA và nó là công cụ không thể thiếu đối với những ai đang tìm hiểu hoặc làm việc trong lĩnh vực tìm kiếm và khai thác lỗ hổng phần mềm (nhưng thú thật tôi cũng ít khi dùng tới nó 😦 ). Điểm bất tiện có lẽ nằm ở giao diện sử dụng của trình debugger này, gần như tất cả các thao tác làm việc với nó đều thông qua các lệnh dạng console và khá phức tạp để nắm được cũng như sử dụng thành thạo các câu lệnh này. Với những ai đã quen dùng OllyDbg/x64dbg, khi chuyển qua dùng thử Windbg chắc đều có chung cảm giác là khó dùng.

Tuy nhiên, chúng ta có thể sử dụng giao diện debug của IDA, kết hợp với sự hỗ trợ nền bên dưới là engine của Windbg. Sự kết hợp này vô cùng hữu ích khi bạn muốn thực hiện debug kernel, hoặc sử dụng để lấy thông tin về trạng thái của heap trong trường hợp muốn khai thác các lỗi như heap overflowhoặc after free mà tôi và các bạn sẽ cùng nhau tìm hiểu ở các bài viết tiếp theo.

(more…)

Sample hash:

SHA256: 76cd290b236b11bd18d81e75e41682208e4c0a5701ce7834a9e289ea9e06eb7e

Tools:

1. Static Analysis

Thow the sample to PortEx Analyzer, tool will analyse file with a special focus on malformation. We get the results:

(more…)

Challenge requirements:


1. Static Analysis

Throw the sample to PortEx Analyzer, this tool analyses file and focus on malformation characteristics. I get the results:

(more…)

Trước khi đi vào nội dung chính của bài viết, tôi xin cảm ơn bạn sinh viên nào đó “cuối tháng” vẫn donate vào tài khoản của tôi! Trân trọng!! Số tiền donate mà tôi nhận được, tôi sẽ dành để làm những công việc thiện nguyện hoặc những việc mà tôi thấy có ích và có giá trị. Đơn cử như góp một phần nhỏ bé (https://www.facebook.com/permalink.php?story_fbid=10158548818576598&id=554051597) để mong cháu sẽ khoẻ mạnh bình thường, được đi học, được trưởng thành và đóng góp cho xã hội!

…. Để gió cuốn đi…..

Để giải quyết bài tập ở phần trước, tôi sẽ giải thích thêm về một số điểm có thể các bạn còn chưa rõ và sau đó chúng ta sẽ tìm cách để xây dựng một PoC. Một trong những điểm chưa rõ ràng là nhiều lúc chúng ta thường chấp nhận độ dài của mảng do IDA gợi ý cho chúng ta và đôi khi chúng ta phải tự đặt nghi vấn và tự phân tích, phán đoán như trong phần trước rồi từ đó khẳng định được mảng sẽ có giá trị lớn hơn so với giá trị mà IDA đã gợi ý.

Như vậy, rõ ràng là để làm được thì sẽ phải phụ thuộc rất nhiều vào kinh nghiệm của từng người. Ở phần này tôi sẽ cố gắng giải thích thêm thông qua một vài ví dụ cụ thể.

Hãy xem ví dụ đơn giản sau đây:

Chương trình yêu cầu nhập một số từ bàn phím và lưu vào biến size. Thực hiện kiểm tra và thoát khỏi chương trình nếu size >= 0x200. Sau đó, sử dụng một vòng lặp để đọc kí tự từ bàn phím và gán vào buffer, với số lần lặp phải thỏa mãn điều kiện (i <= size) && ((ch = getchar()) != EOF) && (ch != ‘\n’). Như vậy, có thể thấy nếu bạn nhập giá trị cho size10 nhưng bạn chỉ nhập vào một kí tự và nhấn enter thì buffer cũng chỉ được gán một kí tự đó mà thôi.

(more…)

As part of my work at Vincss, I wrote an article about ““Heaven’s Gate” An old technique but still effective “.

“Heaven’s Gate” is the common name of a technique that allows 32-bit binary to execute 64-bit instructions without following the standard processing flow on the environment (Windows 32-bit on Windows 64-bit) WoW64. You can read here.