RE6: AntiDebug

Thảo luận trong 'Exploitation' bắt đầu bởi zDiv, 19/11/14, 02:11 PM.

  1. zDiv

    zDiv Super Moderator

    Tham gia: 12/02/14, 08:02 AM
    Bài viết: 13
    Đã được thích: 20
    Điểm thành tích:
    18
    I. Giới thiệu về AntiDebug

    1. AntiDebug là gì?

    AntiDebug là các kỹ thuật được sử dụng để vô hiệu hóa các Debugger, nhằm mục đích gây khó khăn cho công việc Reverse, làm tiêu tốn nhiều thời gian hơn khi thực hiện phân tích một mẫu.
    Các AntiDebug có thể tác động đến một số Debugger như OllyDBG, SoftICE hay các công cụ phân tích tĩnh như IDA.
    2. Một số AntiDebug

    a. Làm rối code

    Một biện pháp đơn giản nhất được sử dụng để AntiDebug đó là làm rối code. Cách này được sử dụng để chống lại cả các Debugger và các Disassembler.
    Có thể thay đổi tên các hàm, các biến thành những cái tên tối nghĩa hoặc tên được sinh ra ngẫu nhiên. Sử dụng nhiều lệnh jump tạo thành những vòng luẩn quẩn. Mã hóa các chuỗi được sử dụng.
    Tất cả những biện pháp trên khiến công việc đọc đoạn code sau khi disassembly trở nên khó khăn hơn rất nhiều.
    b. Mã hóa code

    Biện pháp biển đổi code ở mức độ cao hơn đó là mã hóa code và sau đó giải mã rồi thực thi trong quá trình chạy chương trình. Ta chỉ có thể đọc được đoạn code thực sự thực thi công việc cụ thể khi sử dụng các debugger và đọc trong quá trình chương trình thực thi.
    Kỹ thuật này thường được sử dụng bởi virus và malware.

    c. Nhận diện Debugger

    Một kỹ thuật AntiDebug khác đó là sử dụng các biện pháp mà hệ điều hành kiểm soát quá trình debug. Bao gồm việc sử dụng các API cung cấp thông tin về một chương trình có bị debug hay không, kiểm tra các breakpoint được đặt trong đoạn code thực thi, loại bỏ các hardware breakpoint và sử dụng các lỗi đã biết của debugger để gây crash.

    Sau đây bài viết sẽ đề cập đến 1 AntiDebug cụ thể, đó là kỹ thuật Anti-Debug sử dụng IsDebuggerPresent.



    II. IsDebuggerPresent – AntiDebug


    Ở đây ta cùng tìm hiểu mẫu Crackme1 của Ty123
    Link

    Đầu tiên ta thử mở file .exe với Olly và run.
    Kết quả thu được như sau:
    [​IMG]


    Tiến trình đã bị terminated.

    Như đã giới thiệu ở trên ta sẽ tìm hiểu về AntiDebug IsDebuggerPresent, vậy ta cùng tìm hàm IsDebuggerPresent được gọi đến trong chương trình Crackme1.exe

    Ta Search all Name (label) in current module
    [​IMG]


    Tiếp đó tìm kiếm IsDebuggerPresent. Và kết quả như sau:

    [​IMG]

    Lựa chọn IsDebuggerPresent và ấn Enter, kết quả ta có được vị trí lời gọi hàm API IsDebuggerPresent.

    [​IMG]

    Đặt breakpoint tại vị trí trên.
    [​IMG]


    Chạy lại chương trình, và nhảy qua lệnh gọi hàm.

    [​IMG]

    Chú ý giá trị của EAX.

    Và bây giờ cùng tìm hiểu xem hàm IsDebuggerPresent trả về các giá trị mang ý nghĩa như thế nào.
    Sau khi tham khảo tại đây thì ta biết được, hàm IsDebuggerPresent sẽ trả về giá trị 0 nếu như chương trình đang không bị debug, và ngược lại, trả về giá trị khác 0 nếu chương trình đang bị debug.

    Như vậy ta cần sửa giá trị EAX = 0 để chương trình hiểu rằng nó đang không bị debug.

    Sau khi sửa và F9, ta có kết quả như sau:
    [​IMG]

    Chương trình đã chạy bình thường.

    Như vậy, ta đã biết 1 cách để vượt qua IsDebuggerPresent AntiDebug.

    Tìm hiểu sâu hơn vào hàm IsDebuggerPresent, ta thấy nó sẽ kiểm tra byte BeingDebugged trong PEB. link

    Từ đó ta có thể có một cách khác để vượt qua AntiDebug này mà không cần phải chỉnh sửa giá trị trả về của hàm IsDebuggerPresent tại mỗi lần gọi hàm. Đó là sửa byte offset+2 trong PEB structure.

    Ta có thể sử dụng Plugin của Olly để thực hiện tự động công việc này. Có thể tham khảo việc sử dụng Hide Debugger hoặc IsDebuggerPresent.
     
    Last edited by a moderator: 08/01/15, 01:01 PM
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    Cord thích bài này.
  2. luffy

    luffy W-------

    Tham gia: 26/02/14, 08:02 AM
    Bài viết: 164
    Đã được thích: 32
    Điểm thành tích:
    48
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. maianh

    maianh W-------

    Tham gia: 24/09/13, 05:09 AM
    Bài viết: 26
    Đã được thích: 2
    Điểm thành tích:
    18
    Re: RE6: AntiDebug

    An example: Flare-On challenge level 7.
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  4. zDiv

    zDiv Super Moderator

    Tham gia: 12/02/14, 08:02 AM
    Bài viết: 13
    Đã được thích: 20
    Điểm thành tích:
    18
    Re: RE6: AntiDebug

    Có thể tham kháo thêm một số Anti-Debug khác ở đây.
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  5. meonha02

    meonha02 W-------

    Tham gia: 04/01/15, 06:01 PM
    Bài viết: 4
    Đã được thích: 0
    Điểm thành tích:
    6
    Re: RE6: AntiDebug

    Không có link crackme à mod, click vào không thấy gì -_-
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  6. DiepNV88

    DiepNV88 Super Moderator Thành viên BQT

    Tham gia: 24/09/13, 03:09 AM
    Bài viết: 1,337
    Đã được thích: 237
    Điểm thành tích:
    63
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  7. meonha02

    meonha02 W-------

    Tham gia: 04/01/15, 06:01 PM
    Bài viết: 4
    Đã được thích: 0
    Điểm thành tích:
    6
    Re: RE6: AntiDebug

    Có lẽ nhầm crackme rồi mod. nó có bi antiDebug đâu!!!
    chạy oke mà
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  8. DiepNV88

    DiepNV88 Super Moderator Thành viên BQT

    Tham gia: 24/09/13, 03:09 AM
    Bài viết: 1,337
    Đã được thích: 237
    Điểm thành tích:
    63
    Re: RE6: AntiDebug

    Muốn down được file trên bài viết em phải đăng ký thành viên link đó.
    dưới là link từ MF em down nhé anh vừa up lại.
    https://www.mediafire.com/?ids7x5d2165r2cq
     
    Last edited by a moderator: 08/01/15, 01:01 PM
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  9. meonha02

    meonha02 W-------

    Tham gia: 04/01/15, 06:01 PM
    Bài viết: 4
    Đã được thích: 0
    Điểm thành tích:
    6
    Re: RE6: AntiDebug

    Cảm ơn anh về loạt tut =)
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  10. phamdactai

    phamdactai New Member

    Tham gia: 05/05/18, 10:05 AM
    Bài viết: 1
    Đã được thích: 0
    Điểm thành tích:
    1
    cho mình xin code crackme đc k?
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan