Phần mềm ollydbg


*
*


*
*

*

*
*
Sử dụng OllyDbg trong phân tích mã độc Phần 1
*

Trước Khi trnghỉ ngơi buộc phải trứ danh trong giới phân tích mã độc, OllyDbg được sử dụng đa số nhằm craông xã ứng dụng. OllyDbg từng là sàng lọc debugger bậc nhất đối với các chuyên gia so với mã độc và Chuyên Viên khai thác lỗ hổng ứng dụng cho tới Khi mã nguồn của OllyDbg 1.1 được thâu tóm về vị Immunity và thay tên thành ImmDbg. ImmDbg được cải cách và phát triển nhằm mục đích vá những lỗi trong OllyDbg, thêm vào trong 1 trình thông dịch Pydong dỏng với đào bới những chuyên gia khai quật lỗ hổng ứng dụng, không ít người dân ưa chuộng ImmDbg rộng OllyDbg. bởi vậy Tức là OllyDbg 1.1 ko hơn gì ImmDbg, các thao tác cơ phiên bản trên OllyDbg vào chương này cũng hoàn toàn có thể vận dụng tương tự bên trên ImmDbg, cơ mà một vài plug-in lên trên OllyDbg sẽ không còn thể sử dụng thuận lợi bên trên ImmDbg. ImmDbg tất cả điểm mạnh riêng của chính nó, ví dụ điển hình cung cấp xuất sắc các Pynhỏ bé API.

Bạn đang xem: Phần mềm ollydbg

Đừng ngại ngùng sử dụng OllyDbg phiên phiên bản mới nhất. Chuyên gia an toàn mạng Nguyễn Việt Anh của obatambeienwasirherbal.com đang triển khai một nội dung bài viết ngắn thêm lý giải chúng ta có tác dụng quen với áp dụng OllyDbg vào phân tích mã độc.

Nạp một mã độc vào OllyDbg

Có những cách để hấp thụ một mã độc vào OllyDbg. Ta có thể hấp thụ trực tiếp tệp tin triển khai hoặc DLL. Trong trường vừa lòng mã độc đang làm việc trên khối hệ thống, ta hoàn toàn có thể gán tiến trình của nó vào OllyDbg..

Mở một file thực thi

Cách rất tốt để debug một mã độc là tạo một tiến trình bắt đầu mang lại nó. Chọn File > Open với điền tmê say số đầu vào nếu cần thiết. Ta chỉ hoàn toàn có thể truyền tđam mê số loại lệnh tại bước này.

*

Sau đó, loader của OllyDbg sẽ hấp thụ tệp tin xúc tiến tương tự như nhỏng OS loader. Mặc định, OllyDbg vẫn ngừng trên entry point chỉ định và hướng dẫn vì lập trình sẵn viên, như WinMain ví dụ điển hình, giả dụ nó khẳng định được vị trí của entry point kia. Nếu không, OllyDbg đang giới hạn tại entry point có mang trong PE header. Ta hoàn toàn có thể tùy chỉnh một vài tùy lựa chọn khởi động trong bảng lựa chọn Debuggin Option (Options > Debugging Options). Chẳng hạn, để ngắt tức thì trước khi thực hiện bất kể mẫu code nào làm sao công tác, ta lựa chọn System Breakpoint…

*

Gán một quá trình đang chạy vào OllyDbg

File > Attach với chọn process để attach. Nếu có hơn một process gồm cùng một tên, cần rõ ràng qua PID. OllyDbg kế tiếp vẫn ngắt với ngừng công tác cùng phần đa thread của chính nó.

*

Code của thread đang rất được xúc tiến sẽ tiến hành hiển thị trên màn hình OllyDbg. Ta rất dễ ngừng thread đúng vào khi nó đã tiến hành code từ một DLL hệ thống. Tất nhiên, ta ko bao giờ ước ao so với một thư viện Windows làm những gì và biện pháp đơn giản dễ dàng để tránh sự cố này là đặt một breakpoint tại code section. Chương thơm trình sẽ được ngắt tại lần tới Lúc nó truy vấn code section.

Giao diện của OllyDbg

Sau lúc nạp một công tác, đồ họa chính của OllyDbg nhỏng hình bên dưới.

*

Cửa sổ dịch ngược – góc trái-bên trên – hiển thị con trỏ lệnh cùng vùng lệnh tiến hành của chương trình được debug xung quanh địa chỉ nhỏ trỏ. Để sửa đổi lệnh hoặc dữ liệu xuất xắc thêm lệnh bắt đầu, click vào dòng xoáy lệnh với dấn lốt spacebar.

*

Cửa sổ thanh khô ghi – góc phải-trên – hiển thị tâm lý ngày nay của những thanh ghi mà lại công tác được debug đã áp dụng. Các thanh ghi này sẽ thay đổi màu sắc từ black quý phái đỏ nếu lệnh vừa triển khai sửa thay đổi quý giá của tkhô hanh ghi.Ta rất có thể sửa thay đổi tài liệu vào hành lang cửa số tkhô cứng ghi bằng phương pháp double cliông chồng vào cực hiếm của tkhô cứng ghi khớp ứng.

*

Cửa sổ stack – góc phải-dưới – thể hiện trạng thái hiện thời của stachồng vào bộ lưu trữ. Cửa sổ này luôn hiển thị đỉnh staông xã của một thread nhất mực. Ta có thể làm chủ stachồng bằng phương pháp clichồng cần vào địa chỉ hoặc quý hiếm của vùng lưu giữ cùng chọn Modify. OllyDbg cũng tự động hóa thêm bình luận (cột mặt đề xuất quý hiếm vùng nhớ) mang lại một trong những cực hiếm stachồng để biểu thị các tmê man số trước khi chúng được truyền qua 1 lời Gọi hàm.

*

Cửa sổ memory dump – góc trái-bên dưới – thể hiện trạng thái bộ nhớ của process đang được debug. Để sửa đổi giá trị một ô ghi nhớ, clichồng phải vào giá trị ô ghi nhớ kia và lựa chọn Edit (Ctr+E). Cách này hữu ích Lúc bắt buộc sửa đổi giá trị một trở thành toàn bộ hoặc dữ liệu mà mã độc chỉ tàng trữ trên RAM.

Xem thêm: Fantastic Blog (Cms) In Php With Source Code, Rkishan516/Complete

*

Memory Map

View > Memory (Alt+M), hiển thị mọi memory bloông chồng cấp phát mang đến chương trình được debug.

*

Memory bản đồ hỗ trợ chúng ta quan liêu sát bí quyết chương trình được bố trí bên trên bộ nhớ. Trong hình, trình thực hiện được gán nhãn với những code section với data section. Mọi DLL với các section của chúng cũng rất được biểu lộ trong memory map. Ta chỉ việc double cliông xã tại bất kể mẫu nào nhằm vào memory maps để thấy memory dump của section kia. Ta cũng hoàn toàn có thể đưa hướng đến section đó bên trên hành lang cửa số dịch ngược bằng phương pháp cliông xã bắt buộc cùng chọn View in Disassembler.

*

Năm 2018 xu hướng tấn công thông qua ứng dụng ô nhiễm ko tập tin lên ngôi

Rebasing

Memory map rất có thể tạo điều kiện cho ta phát âm một PE tệp tin được rebase trong những khi thực thi ra sao. Rebasing là làm việc xảy ra lúc 1 module trong Windows ko được hấp thụ vào hệ trọng base address hướng dẫn và chỉ định của nó.

Base Address

Mọi tệp tin PE vào Windows đều phải sở hữu một base address chỉ định và hướng dẫn, được có mang là quý hiếm image base vào PE header.

Image base chưa phải là shop nhưng mã độc đáo thiết nên được hấp thụ vào đó, mã độc chỉ ưu tiên liên can đó. Đa số các trình thực hiện được thiết kế với nhằm nạp vào bộ nhớ lưu trữ tại khu vực 0x00400000, là cửa hàng khoác định được sử dụng mởi các trình biên dịch trên Windows. Developer hoàn toàn có thể lựa chọn một xúc tiến không giống làm cho base image.

ASLR (address space layout randomization – bố trí không gian nhớ ngẫu nhiên)

Cấp tái phát (relocation) vùng nhớ rằng cần thiết vì một áp dụng hoàn toàn có thể import nhiều DLL, mỗi DLL lại sử dụng một base address hướng dẫn và chỉ định nhưng mà nó mong mỏi được nạp vào bộ nhớ lưu trữ tại địa chỉ đó. Nếu 2 DLL được hấp thụ cùng bọn chúng đầy đủ hướng đẫn ưu tiên hấp thụ vào địa chỉ 0x10000000, chúng chẳng thể thuộc được nạp vào thúc đẩy kia. Windows đã nạp một DLL vào xúc tiến đó với kế tiếp cấp phép lại một vùng ghi nhớ không giống đến DLL còn lại.

Hầu không còn các DLL bao gồm sẵn vào Windows OS đều có base address chỉ định và hướng dẫn khác nhau cùng chúng đang không bị xung tự dưng. Tuy nhiên, những ứng dụng bên vật dụng cha thường hướng đẫn chung một base address.

Địa chỉ hoàn hảo và tuyệt vời nhất và Địa chỉ kha khá (Absolute-Relative)

Thủ tục cấp phát lại phức tạp rộng là chỉ Việc hấp thụ đoạn code vào trong 1 can dự không giống. Nhiều lệnh hướng dẫn và chỉ định tới đông đảo thúc đẩy lưu giữ kha khá tuy vậy một trong những lệnh lại làm việc với hầu như cửa hàng lưu giữ rõ ràng.

*

3 lệnh trên phần đông được tiến hành trơn tuột tru nhưng không quan tâm bọn chúng được nạp vào bộ nhớ lưu trữ ra sao bởi chúng cần sử dụng liên quan tương đối. Nhưng lệnh truy vấn dữ liệu trên 0x40120C sẽ không thể triển khai được bởi vì nó dùng can dự tuyệt vời và hoàn hảo nhất để truy vấn tới một vùng lưu giữ. Nếu file xúc tiến được nạp vào bộ nhớ lưu trữ tại một vùng nhớ không giống với base location chỉ định, lệnh 0x40120C vẫn chạy không đúng. Đa số DLL được đóng gói với cùng 1 list vùng ghi nhớ hiệu chỉnh vào .reloc section của PE header.

Các DLL được nạp sau .exe pháo cùng không đề xuất theo một trình từ như thế nào không giống. Bởi vậy ta bắt buộc dự đoán thù trước được DLL làm sao sẽ được rebase vào bộ nhớ ra sao. Nếu một DLL vừa bị thiếu thốn relocation section vừa được nạp không ổn với base address chỉ định của nó, DLL sẽ không còn được hấp thụ.

Thủ tục cấp phép lại bộ lưu trữ cho các DLL có năng suất thấp và làm kéo dãn thời hạn hấp thụ DLL. Trình biên dịch hay sử dụng bình thường một liên can có tác dụng base address mang định cho phần nhiều DLL khiến cho Việc cấp phép lại vùng lưu giữ gần như là điều thế tất. Một lập trình sẵn viên xuất sắc nên chú ý cho tới điều đó với hướng đẫn một base address riêng rẽ mang đến DLL của mình để hạn chế câu hỏi đề xuất cấp phép lại vùng lưu giữ mỗi khi DLL được hấp thụ.

Hình dưới minh họa hình thức cấp phát lại vùng lưu giữ, quan liêu ngay cạnh qua Memory bản đồ của OllyDbg đối với file QUnpaông xã.exe pháo. Ở phía trên ta gồm một tệp tin thực hiện với nhị DLL. QUnpack thực hiện cửa hàng nạp chỉ định và hướng dẫn là 0x00400000, nó được nạp vào bộ nhớ lưu trữ trước tiên. PEiDLL cũng rất được chỉ định liên quan nạp 0x00400000 trong khi vùng lưu giữ bắt đầu bằng can dự 0x00400000 đã làm được cấp phép đến QUnpachồng, phải DLL này sẽ tiến hành cấp phép lại vùng ghi nhớ bước đầu bởi cửa hàng 0x00630000. DLL PESniffe sử dụng địa chỉ hấp thụ hướng dẫn và chỉ định là 0x10000000 và tại thời điểm nó được hấp thụ, vùng nhớ ban đầu bởi can dự này không được cấp phát đến DLL nào không giống vì thế nó được hấp thụ vào vùng ghi nhớ đúng cùng với base address hướng dẫn và chỉ định (0x10000000). Trong ngôi trường đúng theo này, toàn bộ tác động tuyệt đối được áp dụng vào PEiDLL đề nghị được hiệu chỉnh lại nhằm những hàm trong nó chạy đúng.

Xem thêm: Cách Nấu Cá Diêu Hồng Nấu Ngót, Cách Làm 3 Món Ngon Từ Cá Điêu Hồng

*

Nếu quan ngay cạnh PEiDLL vào IDA trong lúc đã debug lịch trình QUnpaông chồng, các xúc tiến vào PEiDLL là ko thống tuyệt nhất giữa IDA và debugger vày IDA không có phương pháp so sánh hiện tượng kỳ lạ rebasing vào thời gian xúc tiến. Để tránh phải tiếp tục hiệu chỉnh lại các địa chỉ tuyệt vời và hoàn hảo nhất của PEiDLL trong IDA, ta cần thực hiện nạp bằng tay (manual load) trên bước nạp DLL này vào IDA.


Chuyên mục: Games/Phần Mềm