RE3: HƯỚNG DẪN SỬ DỤNG IDA PRO LÀ GÌ, DÙNG IDA PRO PHÂN TÍCH PACKED_CRACKME

  -  
Lời tựa

Loạt nội dung bài viết này chưa hẳn tôi nghĩ ra, tôi vẫn xin phép viết lại từ bộ tuts của thầy Ricardo Narvaja — ông là linh hồn với là tín đồ sáng lập ra nhóm Crackslatinos, hiện nay ông đang thao tác tại Core Security dưới vai trò là Exploit Writer. Bộ OllyDbg tôi vẫn viết trước đó (vẫn còn đang dở :( ) cũng là dựa vào các bài viết mà ông phân chia sẻ. Tôi hâm mộ ông vì chưng trong thời hạn nhiều năm sinh hoạt sinh hoạt CLS, Ricardo vẫn viết và chia sẻ vô số các bài viết về Cracking với Reverse Engineering.

Bạn đang xem: Re3: hướng dẫn sử dụng ida pro là gì, dùng ida pro phân tích packed_crackme



Ricardo NarvajaÝ tưởng thành lập và hoạt động của loạt nội dung bài viết này rất 1-1 giản, kia là update bộ tài liệu về Cracking cùng Reversing với OllyDbg nhưng thay vào này sẽ sử dụng công cụ danh tiếng là IDA. Các bạn sẽ làm quen thuộc với IDA trên môi trường thiên nhiên hệ quản lý điều hành Windows, từ hầu như phần cơ bạn dạng nhất cho tới những loài kiến thức cải thiện hơn.

Bộ này tôi suy nghĩ dành cho những người mới ban đầu tìm gọi về IDA, các bạn nào đang “expert” rồi thì có thể đọc cho vui và góp ý nhằm tôi chỉnh lại phần nhiều chỗ còn thiếu sót. Chúng ta nào cảm xúc mất thời gian khi đọc gần như gì tôi viết, hãy chuyển sang làm cho những câu hỏi khác khiến cho bạn thấy hứng thú hơn.

Tại sao lại là IDA Pro?

Vậy nguyên nhân gì nhưng mà tôi với các bạn cần phải học thực hiện IDA? Đó là vì, trong những lúc OllyDbg bó bé chúng ta bởi nó chỉ là một trình gỡ lỗi 32-bit, hoạt động ở chế độ user mode của Windows thì IDA Pro là một trong công vậy reversing hoàn chỉnh, áp dụng được bên trên cả hai nền tảng gốc rễ 32-bit và 64-bit, vừa là 1 trình disassembler mặt khác cũng cung ứng debug như 1 trình debugger.

Mặc dù, bây giờ các chuyên viên đang chuyển dần sang áp dụng x64dbg (https://github.com/x64dbg) để sửa chữa thay thế cho OllyDbg, nhưng hình như để vượt qua được mẫu bóng của OllyDbg thì sẽ vẫn còn cần một thời gian nữa. Minh chứng là các chuyên viên phân tích của China hiện giờ vẫn dùng OllyDbg mặt hàng ngày: https://ti.360.net/blog/articles/suspected-molerats-new-attack-in-the-middle-east-en/ hay chuyên viên Vitali Kremez vẫn cần sử dụng OllyDbg để phân tích song song cùng với IDA: https://www.vkremez.com/2018/12/lets-learn-dissecting-apt28-zebrocy.html. Tác giả Kao tại Blog https://lifeinhex.com đã đưa ra số đông nhận xét cá thể vì sao ông chưa thực hiện x64dbg trong công việc. Chúng ta có thể tham khảo thêm tại đây: https://lifeinhex.com/why-im-not-using-x64dbg/ cùng https://lifeinhex.com/x64dbg-2-years-later/

Lý do nữa để cần biết sử dụng IDA là bởi pháp luật này cung cấp khả năng so với tĩnh (static analysis) giỏi hơn những so cùng với việc tiến hành bằng OllyDbg. Mặc dù nhiên, đối với những người ban đầu mới làm cho quen IDA sẽ thấy việc thực hiện nó hơi phức tạp. Bù lại, khác với OllyDbg/x64dbg, IDA có thể hoạt động được bên trên các môi trường xung quanh hệ điều hành khác nhau như Windows, Linux hoặc Mac OS X và thậm chí còn là remote (từ xa):




Qua đó, chúng ta thấy câu hỏi học cách sử dụng IDA sẽ cho phép họ mở rộng phạm vi các bước của mình, mặc dù trong loạt nội dung bài viết này tôi sẽ chỉ triệu tập vào hai môi trường Windows 32 và 64 bit, ở cơ chế user mode và thỉnh thoảng là kernel mode. Thực tiễn cho thấy, khi làm quen với cách thức này sẽ cho phép bọn họ dễ dàng ưng ý ứng với bất kỳ môi trường nào.

Như đã nói ngơi nghỉ trên, loạt nội dung bài viết này sẽ bắt đầu từ những kỹ năng cơ bạn dạng nhất, thế nên sẽ có không ít nội dung tái diễn mà có thể chúng ta đã đọc trong loạt nội dung bài viết về OllyDbg. Những kiến thức này sẽ được trình bày lại tại chỗ này một đợt nữa nhưng là với IDA cùng tôi sẽ nỗ lực đi thêm nhiều vấn đề hơn. Trường hợp ai đó thấy rất nhiều gì độc giả trong loạt nội dung bài viết này là rất tinh vi hoặc nhàm chán, có lẽ rằng bạn nên dành thời gian thời gian để đọc các nội dung bài viết về OllyDbg trước để cảm thấy thuận lợi hơn hoặc làm các bước khác mà khiến cho bạn cảm thấy tất cả hứng thú. Loạt bài viết này sẽ bao gồm tất cả các kĩ thuật như phân tích tĩnh (static) và đụng (dynamic), cracking, exploit với unpacking. Tôi sẽ nỗ lực để đề cung cấp tới càng nhiều kỹ năng càng tốt. Hy vọng thế!!



Nhiệm vụ đầu tiênViệc trước tiên để hoàn toàn có thể tìm hiểu về IDA là ta cần được có biện pháp này trước đã. Tuy nhiên, vấn đề ở chỗ, IDA là một chương trình mất phí. Để đạt được quyền áp dụng IDA Pro thì bọn họ phải bỏ tiền ra download và loại giá của nó không hề rẻ. Hơn nữa, không đề nghị cứ tất cả tiền là thiết lập được

Vì vì sao trên, tôi ko thể cung ứng IDA thẳng cho các bạn được. Tuy nhiên, với kĩ năng Google vào thời đại CMCN 4.0, tôi nghĩ các bạn hoàn toàn hoàn toàn có thể tìm kiếm được các phiên phiên bản đã leaked bên trên mạng là IDA Pro 6.8 hoặc 7.0 + Hexrays. Đây là hình ảnh minh họa phiên phiên bản IDA 6.8 cơ mà tôi có:



Trong hình trên, chúng ta thấy có các tệp nén zip cùng rất trình cài đặt của IDA là idapronw_hexarmw_hexx64w_hexx86w_150413_cb5d8b3937caf856aaae750455d2b4ae. Mật khẩu để cài đặt nằm trong file install_pass.txt. Không tính ra, khi thiết lập IDA, nó cũng sẽ tự động hóa cài đặt thêm phiên bạn dạng Python 2.7.6. Khuyến nghị các bạn nên sử dụng bản Python đi kèm với IDA. Bởi đó, trước khi cài đặt IDA, chúng ta nên gỡ bỏ bản Python khác đã có cài đặt lên máy nhằm tránh xung đột.


Bên lề: trên thực tiễn ta vẫn có thể thiết lập riêng phiên phiên bản Python khác nhưng mà không đề nghị sử dụng bạn dạng đi cố nhiên bộ thiết lập IDA. Ví dụ, tôi đã sử dụng bản 2.7.10:


Sau khi setup xong ta đã mở IDA lên để triển khai quen, và tương tự như trong loạt nội dung bài viết về OllyDbg, bọn họ sẽ sử dụng crackme là Cruehead để thực hành (crackme này các bạn nào đọc bộ OllyDbg chắc sẽ sở hữu hoặc rất có thể download trên đây: https://mega.nz/#!KbAWzK7D!LOnvJeYpXpxkMIH_jLGzx7VKVTQg1LifsFQMnOj_WeM). Vì crackme là file triển khai 32-bit nên ta đang mở nó bởi phiên bản IDA 32-bit.

Bên lề: Để kiểm soát xem một tệp tin exe là 32 hay 64 bit sẽ có nhiều cách, tại chỗ này tôi sử dụng một chương trình Hex Editor, chẳng hạn như là HxD (https://mh-nexus.de/en/downloads.php?product=HxD). Nhờ vào dấu hiệu sau để hiểu file là 32-bit giỏi 64-bit:


Như bên trên hình, lúc tôi mở chính sách SnippingTool (có trên các phiên bản Windows mới) trong HxD, phụ thuộc vào vào dấu hiệu sau chữ PE: PE..d† thì ta khẳng định đây là một file 64-bit. Trong khi, đối với crackme Cruehead của bọn chúng ta, sau PE có: PE..L, vậy đấy là một file 32-bit:


Từ tin tức đó, họ biết sẽ đề nghị mở Crackme bằng phiên phiên bản 32-bit của IDA. Khi hình ảnh của IDA xuất hiện, chọn New để mở một tệp tin mới, tìm băng thông tới Crackme để load nó vào IDA:


Khi bạn nạp một file vào IDA, IDA sẽ có được gắng thừa nhận diện định hình của file đó (ví dụ: IDA đã nhận biết đúng mực crackme là một trong những PE file) với kiểu phong cách xây dựng vi xử lý. Quy trình này mang lại ta thấy IDA hành xử giống như với Windows loader. Mặc định, IDA sẽ không load kèm PE header tuyệt resource section trong quá trình phân tung code của nó. Nếu như bạn tích lựa chọn Manual load, IDA vẫn hỏi chúng ta khi bạn có nhu cầu nạp từng section, kèm theo PE header.

Giữ nguyên các tùy chỉnh thiết lập mặc định và nhấn OK để IDA thực hiện phân tích file. Nếu họ đồng ý hiển thị cơ chế Proximity View (có trường đoản cú phiên bản IDA v6.2), một màn hình hiển thị graph sẽ xuất hiện đưa tin về những hàm nhưng mà IDA dìm diện được trong Crackme theo quy mô cây như bên dưới. Cầm lại, ở chính sách proximity view này, showroom hiện tại, hàm gọi (caller) với hàm được hotline (callee) được trình diễn dưới dạng tập hợp các node có liên kết với nhau:


Để chuyển hẳn sang lại giữa chính sách đồ hoạ (Graph) hoặc các lệnh ở cơ chế Text bình thường, ta sử dụng phím tắt là spacebar. Trên Options — General, tích chọn Line prefixes nhằm hiện thị thêm thông tin về địa chỉ cửa hàng bộ lưu giữ ở sát bên các lệnh trong chế độ đồ hoạ của IDA với tại Number of opcode bytes, nếu bọn chúng ta chuyển đổi giá trị tại kia (mặc định là bởi 0), chúng ta sẽ thấy những opcodes hoặc các bytes lộ diện tại mỗi lệnh.


Khi so sánh một tệp tin thực thi, đầu tiên IDA mở ở cơ chế Disassembler (hay rất có thể được hotline là Loader) và sẽ không còn thực thi chương trình. IDA hôm nay chỉ so với tĩnh để ship hàng cho mục tiêu reversing và chế tạo ra tệp tin .idb (cơ sở dữ liệu) nhằm lưu tổng thể quá trình phân tích của chúng ta.

Để rất có thể debug được, chúng ta phải lựa chọn những tùy lựa chọn debuggers không giống nhau được cung cấp bởi IDA và thực hiện trong chế độ Debugger mà bọn họ sẽ khám phá ở các nội dung bài viết sau này.

Xem thêm: Top 3 Chiến Thuật Giả Lập Xếp Hạng 4-3-3, Top 5 Chiến Thuật Giả Lập Xếp Hạng 4

IDA cung cấp rất nhiều cửa sổ được xem như là các tab và khi truy cập View-Open Subview, bạn cũng có thể mở các tab này theo mục tiêu sử dụng riêng rẽ của từng người.


Mới đầu, khi sử dụng IDA các các bạn sẽ thấy chưa quen với có xúc cảm hơi ngợp vày có rất nhiều tính năng. Thậm chí tại màn hình graph của IDA các bạn sẽ thấy xuất hiện thêm nhiều chỗ tất cả cùng một địa chỉ. Ví dụ như tại điểm bước đầu của một hàm, các showroom được tái diễn nhiều lần, điều này xảy ra là bình thường vì có tương đối nhiều thông tin từ địa chỉ cửa hàng đó và nó không đủ để trình diễn / hiển thị trên và một dòng.


Mẹo bé dại là search điểm chấm dứt của cùng một địa chỉ được lặp lại, trên đó họ sẽ thấy nơi ban đầu của lệnh được disassembly. Vào trường hòa hợp này, lệnh tương ứng với add 401000 push 0.

Trong IDA, ta rất có thể độc lập tùy chỉnh thiết lập giao diện mang định cho Loader và Debugger. Tại screen Loader, khi đã tùy chỉnh thiết lập các cửa sổ và những tab mà họ sử dụng những nhất theo ý muốn của mình, ta có thể lưu lại bằng phương pháp vào Windows-Save Desktop với tích lựa chọn Default nhằm lưu vào cấu hình mặc định. Tương tự, trong chế độ Debugger, ta cũng đều có thể thiết lập cấu hình theo ý ý muốn và giữ giàng thành thông số kỹ thuật mặc định.


Chúng ta rất có thể tìm kiếm tại những cửa sổ này bằng cách nhấn CTRL + F, khung tìm kiếm nhỏ tuổi sẽ xuất hiện bên dưới, có thể chấp nhận được lọc theo số đông gì bọn họ nhập vào. Vào View-Open Subview-Strings như sống ví dụ mặt dưới, IDA sẽ hiển thị đến ta những chuỗi tất cả chứa “try”:


Ngoài ra, ví như tôi chọn View-Open Subview-Disassembly, tôi hoàn toàn có thể mở một cửa sổ disassembly đồ vật hai, qua đó hoàn toàn có thể truy xuất tới các hàm khác với cửa sổ thứ nhất và do vậy ta hoàn toàn có thể phân tích được rất nhiều hàm tại cùng 1 thời điểm. Đây là chính là một lợi thế của IDA so với OllyDbg/x64dbg:


IDA cũng cung cấp một cửa sổ hiển thị dạng hexadecimal giống như như cửa sổ Dump của OllyDBG/x64dbg. Vào IDA, hành lang cửa số này mang tên là Hex View. Nếu bạn không thấy cửa sổ này, rất có thể hiển thị nó trải qua View — open Subview- Hex dump:


Cũng tự Open Subview, ta có thể truy xuất tin tức về những hàm được lịch trình import trải qua Imports tab như hình dưới đây:


Cũng tại screen Loader của IDA, chúng ta cũng đã thấy một màn hình nhỏ khác mang tên là Graph overview (Nếu ko thấy, vào View — Graph Overview để mở nó), nằm ở vị trí góc bên dưới trái. Hành lang cửa số này rất hữu ích, nó hiển thị những code block của hàm mà lại ta đã phân tích, thông qua đó ta có thể di chuyển sang lại giữa các code block một cách gấp rút và dễ dàng.


IDA cũng có các tab dành riêng riêng khác ví như Structures, Exports, Names, Segments v..v… chúng sẽ được giải thích khi chúng ta tìm phát âm và sử dụng tới các Tab này. Thanh điều hướng (navigator) phía bên trên hiển thị các phần khác nhau của một file đang phân tích bằng những màu không giống nhau.


Ngay dưới là những thông tin biểu đạt cho họ biết mỗi màu có chân thành và ý nghĩa gì, lấy ví dụ màu xám là .data section và nếu bạn nhấp vào phần màu xám đó, IDA sẽ gửi tới section có showroom màu xám. Vào hình trên, bọn họ thấy tất cả màu hồng khớp ứng với external symbol tốt .idata section và màu xanh tương ứng với những hàm được phát lúc này code section.

Phần thứ nhất đến đấy là hết, trong phần này tôi đã cung cấp cho chúng ta một tầm nhìn tổng quan về IDA. Trong các phần tiếp theo, bọn họ sẽ tìm kiếm hiểu cụ thể hơn.

Xem thêm: Hướng Dẫn Khắc Phục Lỗi Usb Không Mở Được Usb? Sửa Usb Bị Lỗi Không Mở Được File

Bên lề: trong loạt bài viết này hoàn toàn có thể tôi sẽ áp dụng lẫn lộn giữa IDA 6.8 với IDA 7. Biệt lập giữa hai phiên bản này tôi xin đưa ra một hình minh họa sau (phân tích và một binary) để chúng ta thấy vày sao “giang hồ mạng” thường hóng đợi bản leak tiên tiến nhất của IDA :D


IDA 7.0 (nhận diện được hàm main cũng những hàm thư viện)Phần 1 mang đến đây kết thúc. Hẹn chúng ta trong phần 2.

m4n0w4r

Xin gởi lời cảm ơn thực tình tới thầy Ricardo Narvaja!

Ủng hộ tác giả