*
*


*
*

*

*
*
Sử dụng OllyDbg vào so với mã độc Phần 1
*

Trước Lúc trngơi nghỉ nên trứ danh trong giới so với mã độc, OllyDbg được dùng đa số nhằm craông xã ứng dụng. OllyDbg từng là chọn lọc debugger bậc nhất đối với những chuyên gia phân tích mã độc cùng chuyên gia khai quật lỗ hổng phần mềm cho tới khi mã nguồn của OllyDbg 1.1 được mua lại bởi vì Immunity với đổi tên thành ImmDbg. ImmDbg được cải tiến và phát triển nhằm mục tiêu vá những lỗi vào OllyDbg, thêm vào một trong những trình thông ngôn Pythanh mảnh với đào bới các Chuyên Viên khai quật lỗ hổng ứng dụng, không ít người dân yêu chuộng ImmDbg rộng OllyDbg. vì vậy Tức là OllyDbg 1.1 không rộng gì ImmDbg, những thao tác làm việc cơ phiên bản bên trên OllyDbg trong chương thơm này cũng rất có thể áp dụng tương tự trên ImmDbg, mà lại một số trong những plug-in lên trên OllyDbg sẽ không còn thể sử dụng dễ ợt trên ImmDbg. ImmDbg có điểm mạnh riêng rẽ của nó, ví dụ điển hình cung cấp giỏi các Pynhỏ bé API.

Bạn đang xem: Ollydbg là gì

Đừng hổ thẹn thực hiện OllyDbg phiên bản mới nhất. Chuyên gia bình an mạng Nguyễn Việt Anh của hoiquanzen.com sẽ thực hiện một bài viết ngắn thêm trả lời các bạn có tác dụng thân quen và thực hiện OllyDbg trong so sánh mã độc.

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

Có những phương pháp để nạp một mã độc vào OllyDbg. Ta rất có thể nạp thẳng tệp tin triển khai hoặc DLL. Trong trường phù hợp mã độc đang chạy trên khối hệ thống, ta có thể gán các bước của nó vào OllyDbg..

Mtại một tệp tin thực thi

Cách tốt nhất nhằm debug một mã độc là tạo một các bước new cho nó. Chọn File > mở cửa cùng điền tyêu thích số nguồn vào nếu như quan trọng. Ta chỉ có thể truyền tsi số cái lệnh trên công đoạn này.

*

Sau kia, loader của OllyDbg vẫn nạp file xúc tiến giống như nlỗi OS loader. Mặc định, OllyDbg đã dừng trên entry point chỉ định bởi vì lập trình viên, nhỏng WinMain ví dụ điển hình, nếu như nó xác minh được địa chỉ của entry point đó. Nếu ko, OllyDbg đang giới hạn trên entry point định nghĩa vào PE header. Ta hoàn toàn có thể thiết lập cấu hình một trong những tùy lựa chọn khởi động vào 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 thi bất kì mẫu code như thế nào nào chương trình, ta lựa chọn System Breakpoint…

*

Gán một các bước đang hoạt động vào OllyDbg

File > Attach cùng chọn process nhằm attach. Nếu có rộng một process bao gồm cùng một tên, cần biệt lập qua PID. OllyDbg sau đó sẽ ngắt và giới hạn lịch trình thuộc phần nhiều thread của chính nó.

*

Code của thread đang rất được tiến hành sẽ tiến hành hiện trên screen OllyDbg. Ta rất giản đơn giới hạn thread đúng lúc nó đang thực thi code xuất phát từ 1 DLL khối hệ thống. Tất nhiên, ta ko bao giờ ước ao phân tích một thỏng viện Windows làm những gì cùng phương pháp đơn giản nhằm tránh trường hợp này là đặt một breakpoint trên code section. Chương thơm trình sẽ được ngắt tại lần tới lúc nó truy cập code section.

Giao diện của OllyDbg

Sau Lúc nạp một lịch trình, bối cảnh chính của OllyDbg nhỏng hình dưới.

*

Cửa sổ dịch ngược – góc trái-trên – hiển thị bé trỏ lệnh với vùng lệnh thực hiện của chương trình được debug bao bọc địa điểm bé trỏ. Để sửa thay đổi lệnh hoặc dữ liệu giỏi thêm lệnh mới, cliông xã vào trong dòng lệnh với dìm dấu spacebar.

*

Cửa sổ thanh ghi – góc phải-trên – hiển thị tâm trạng hiện giờ của các tkhô giòn ghi mà công tác được debug đang sử dụng. Các tkhô hanh ghi này vẫn chuyển màu tự black thanh lịch đỏ ví như lệnh vừa tiến hành sửa thay đổi quý giá của thanh ghi.Ta có thể sửa thay đổi dữ liệu vào cửa sổ tkhô hanh ghi bằng cách double cliông chồng vào cực hiếm của tkhô cứng ghi tương ứng.

*

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

*

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

*

Memory Map

View > Memory (Alt+M), hiển thị phần nhiều memory block cấp phát đến công tác được debug.

*

Memory maps giúp ta quan lại giáp bí quyết chương trình được sắp xếp trên bộ lưu trữ. Trong hình, trình thực thi được gán nhãn với các code section với data section. Mọi DLL và các section của bọn chúng cũng khá được biểu lộ trong memory maps. Ta chỉ cần double cliông chồng trên bất kể dòng như thế nào nhằm vào memory bản đồ để xem memory dump của section đó. Ta cũng có thể gửi tìm hiểu section kia bên trên cửa sổ dịch ngược bằng phương pháp click phải cùng lựa chọn View in Disassembler.

*

Năm 2018 xu hướng tiến công trải qua phần mềm độc hại ko tập tin lên ngôi

Rebasing

Memory bản đồ có thể giúp chúng ta đọc một PE file được rebase trong lúc xúc tiến thế nào. Rebasing là thao tác xẩy ra lúc một module trong Windows ko được nạp vào can hệ base address hướng dẫn và chỉ định của chính nó.

Base Address

Mọi tệp tin PE vào Windows đều có một base address chỉ định, được định nghĩa là quý hiếm image base trong PE header.

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

ASLR (address space layout randomization – sắp xếp không khí lưu giữ ngẫu nhiên)

Cấp phát lại (relocation) vùng hãy nhớ là quan trọng vị một ứng dụng 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 nó muốn được nạp vào bộ lưu trữ tại khu vực kia. Nếu 2 DLL được hấp thụ và chúng rất nhiều chỉ định và hướng dẫn ưu tiên nạp vào can dự 0x10000000, bọn chúng quan trọng thuộc được nạp vào cửa hàng kia. Windows vẫn nạp một DLL vào liên tưởng kia và sau đó cấp phát lại một vùng nhớ khác cho DLL sót lại.

Hầu không còn các DLL có sẵn trong Windows OS đều phải sở hữu base address chỉ định không giống nhau cùng bọn chúng vẫn không bị xung hốt nhiên. Tuy nhiên, các áp dụng bên thứ bố thường hướng đẫn phổ biến một base address.

Địa chỉ tuyệt đối hoàn hảo và Địa chỉ tương đối (Absolute-Relative)

Thủ tục cấp phát lại tinh vi hơn là chỉ bài toán hấp thụ đoạn code vào một liên hệ khác. Nhiều lệnh hướng đẫn cho tới phần đông liên hệ lưu giữ tương đối nhưng lại một số lệnh lại thao tác cùng với hầu hết hệ trọng lưu giữ cụ thể.

*

3 lệnh bên trên những được xúc tiến suôn sẻ tru mà lại ko quan tâm chúng được hấp thụ vào bộ nhớ lưu trữ ra làm sao vì chưng bọn chúng cần sử dụng liên quan kha khá. Nhưng lệnh truy vấn tài liệu tại 0x40120C sẽ không còn thể thực hiện được vì chưng nó dùng can hệ tuyệt đối hoàn hảo nhằm truy cập tới một vùng nhớ. Nếu tệp tin thực hiện được nạp vào bộ nhớ lưu trữ trên một vùng lưu giữ không giống cùng với base location chỉ định, lệnh 0x40120C đang chạy không đúng. Đa số DLL được gói gọn với một danh sách vùng lưu giữ hiệu chỉnh vào .reloc section của PE header.

Các DLL được hấp thụ sau .exe cộ với không buộc phải theo một trình từ nào khác. vì thế ta bắt buộc dự đân oán trước được DLL như thế nào sẽ tiến hành rebase vào bộ lưu trữ thế nào. Nếu một DLL vừa bị thiếu hụt relocation section vừa được hấp thụ sai trái với base address hướng dẫn và chỉ định của chính nó, DLL sẽ không được nạp.

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

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

Xem thêm: Giết Người Chung Cư Hà Đô

*

Nếu quan tiền liền kề PEiDLL vào IDA trong những lúc đang debug chương trình QUnpachồng, các hệ trọng trong PEiDLL là ko thống nhất thân IDA với debugger bởi IDA không tồn tại chính sách so sánh hiện tượng kỳ lạ rebasing vào thời hạn xúc tiến. Để tách cần tiếp tục hiệu chỉnh lại những thúc đẩy hoàn hảo nhất của PEiDLL trong IDA, ta đề xuất tiến hành nạp thủ công (manual load) tại bước nạp DLL này vào IDA.