DDos
VIP Members
-
22/10/2013
-
524
-
2.191 bài viết
Chèn Spyware vào một file EXE bất kỳ (Code Injection)
Trong bài viết này mình sẽ hướng dẫn các bạn cách để đưa ra inject một đoạn code (đối với hacker, đoạn code nàythường là phần mềm độc hai) và một file thực thi bất kỳ sử dụng OllyDbg và IDA Pro. Mục đích là để kích hoạt đoạn code độc hại cùng với file thực thi mà không cần người sử dụng phải chấp nhận để thực hiện.
Có nghĩa là khi inject đoạn code này vào một file cài đặt của một chương trình bất kỳ thì khi người sử dụng cài đặt file này cũng là đồng thời đoạn code độc hại kia được thực hiện. Mình sẽ lấy ví dụ là một spyware trong bài viết này...
Các quá trình bao gồm:
The Target Binary
Chúng ta sẽ dùng spyware trong một file thực thi giả định ở đây là Game Registration để hiển thị chỉ số của cơ chế code injection. Game Registration thông thường sẽ yêu cầu serial keys để xác thực bản quyền của sản phầm và sử dụng đầy đủ tính năng của phần mềm như hình dưới đây:
File EXE này được chọn là một đối tượng đã bị lây nhiễm với một spyware. Điểm húng ta cần chú ý cho quá trình dịch ngược ở đây là một hội thoại báo lỗi khi chúng ta nhập một serial key không hợp lệ.
Tin nhắn lỗi này sẽ là điểm để chèn code độc hại. Khi người sử dụng nhìn thấy tin nhắn lỗi này đồng nghĩa với việc spyware đã được thực thi.
Spyware Code
Chương trình spyware dưới đây sẽ chỉ ra tên và địa chỉ IP của máy tính khi file Game Registration này được chạy và gửi lại thông tin này tới server của hacker. Chúng ta không cần đi vào chi tiết của đoạn spyware code này. Bởi vì sypyware code có thể là bất kỳ một chương trình EXE nào mà muốn được tiêm vào binary. Sau khi biên dịch đoạn code này, nó sẽ trông như hình dưới. Nó sẽ chỉ ra tên của máy tính và địa chỉ IP.
Victim Binary Analysis
Chúng ta có thể dễ dàng xác định được hộp tin nhắn xuất hiện (khi serial keys không khả dụng) sau 0040115E offsec. May mắn rằng, code này điều khiển một cặp của hộp tin nhắn khác. Nhưng chúng ta phải nhận ra được hộp tin nhắn đầu tiên.
Tiếp tục, chúng ta tìm tại 0040115E offsec trong OllyDbg để tim hộp tin nhắn ở dạng assembly code để thay đổi nó cho phù hợp với mục đích chúng ta cần. Chúng ta có thể khẳng định rằng hộp hội thoại xuất hiện bằng cách thay thế bột breakpoint tại 004115E trong IDA Pro và bắt đầu debugging. Nếu chúng ta nhập một tên ngắn, sau đó nhìn vào biểu đồ assembly code sẽ chỉ thị chu trình thực hiện của hộp hội thoại như hình dưới:
Spyware Injection
Tiếp đến, khi mở victim.exe binary trong OllyDbg để chèn spyware code. Ở đây, ký hiệu $ tại offsec 004015EV chỉ thị điểm đầu vào của việc thực thi như hình dưới:
Mỗi thực thi có một khoảng trống như Code Caves, đây là nơi chúng ta có thể đặt hoặc chèn bất kỳ binary code mở rộng vào. Khi kéo xuống một chút, bạn sẽ dễ dàng xác định khoảng trống với tên là DB 00 hoặc NOP.
Khi nhìn thấy hình trên, DB 00 bắt đầu từ 00405188 offset. Do đó, chúng ta có thể đặt spyware code tại code caves này. Lựa chọn một cặp code caves và click phải, chọn Binary sau đó edit như hình dưới:
Bây giờ, nhãn chương trình spyware sẽ là spyware.exe trong hộp ASCII, bởi vì chúng ta đã chọn code caves từ 0040518A, nó có nghĩa rằng bắt đầu chỉnh sửa từ điểm này. Hex code tương ứng của nó sẽ được đưa ra một cách tự động và được đặt trong 0040518A offset.
Sau khi bấm nút OK, một vài code khó hiểu được đưa ra tại offset 0040518A (màu đỏ) như hình dưới:
Để loại bỏ chúng, chỉ cần bấm CTRL+A, chúng ta sẽ nhận được code ban đầu đã nhập và có thể nhìn thấy được tên spyware victim.exe như hình dưới:
Bây giờ, chúng ta phải viết giá trị địa chỉ offset cho spyware vào bộ nhớ. Tại offset 00405195, bấn nút space bar. Chúng ta tìm thấy hộp assemble code. Chỉ nhập PUSH 1 và click vào nút Assemble.
Tiếp tục tới 00405197 offset và bấm space bar, sau đó nhập PUSH 40518A mà đưa spyware EXE vào bộ nhớ.
Chú ý rằng, chúng ta sẽ tham chiếu vị trí của spyware.exe được xác định tại 0040518A tới 00405198:
Chương trình spyware của chúng ta có định dạng .exe. Do đó, chúng ta phải gọi CALL WinExec để chắc chắn có phần mở rộng là .exe.
Sau khi kết thúc quá trình này, assembly đã được thay đổi trông sẽ như hình dưới đây:
Bây giờ, chúng ta phải kết nối phần spyware này với hộp hội thoại trong trương trình ban đầu. Tại hình (***), bấm CTRL+G và nhập 0040115E offset.
Tại đây, chúng ta phải thực hiện một vài thay đổi cần thiết
Bây giờ, chọn 0040115E offset và bấm space bar, sau đó copy JNB 00401189 và bộ nhớ đệm:
Tiếp đến, quay trở lại inject code bằng cách bâm "-" button, và luwacj chọn 004051A1 offset để gắn code mới và bấm nút khoảng trắng và past JNB 00401189.
Copy địa chỉ 00405196 offset từ Firrst PUSH 1 trong code mới đã được tiêm.
Một lần nữa, đi tới 0040115E offset nơi mà code hộp hội thoại được xác định, lựa chọn instruction set tại 0040115E và bấm space bar. Cuối cùng, thay thế code đang tồn tại bằng Assembly mới JNB 00405196:
Chúng ta cần làm gì tại đây? Đầu tiên, chúng ta đưa tham chiếu của PUSH 1 instruction offset (0045196) tới jump instruction được xác định tại 0040115E Offset. Thứ hai, past JNB 00401189 instruction tới 004051A1 offset như hình dưới:
Tới đây, chúng ta đã kết thúc quá trình chèn code. Bây giờ, chúng ta thay đổi bất định và ghi bytes đã được thay đổi vào bộ nhớ bằng cách click phải vào ASM code và chọn Copy Executable, chọn tiếp All modijications
Bây giờ, chọn tùy chọn Copy all trong hội hội thoại sau đó, nó gây ra một vài hộp hội thoại riêng biệt như hình dưới:
Cuối cùng, đóng hộp hội thoại này, một lát sau đó hộp hội thoại Save as xuất hiện và nó hỏi để đặt tên mới tới file patched EXE.
Bây giờ, chạy victim_Patched.exe và nhập bất kỳ một giá trị của Name và serial keys. Hiển nhiên rằng một tin nhắn lỗi sẽ xuất hiện.
Khi tin nhắn này xuất hiện, chúng ta bấm nút OK, chương trình sypware sẽ tự động được khởi chạy, và hiện thị tên máy tính và địa chỉ IP sau đó tự động gửi về server của hacker.
Kết luận:
Bài viết này là một minh chứng rằng phần mềm độc hại có ở bất cứ đâu, không chỉ trong file exe mà còn có thể là cả file jpg, mp3... Điều quan trọng là chúng ta cần trang bị cho mình những kỹ năng cần thiết để giảm bớt sự tác động của các phần mềm độc hại này.
Có nghĩa là khi inject đoạn code này vào một file cài đặt của một chương trình bất kỳ thì khi người sử dụng cài đặt file này cũng là đồng thời đoạn code độc hại kia được thực hiện. Mình sẽ lấy ví dụ là một spyware trong bài viết này...
Các quá trình bao gồm:
- The Target Binary (Victim)
- Spyware Executable
- OllDbg
- IDA Pro Interactive Dissembler
The Target Binary
Chúng ta sẽ dùng spyware trong một file thực thi giả định ở đây là Game Registration để hiển thị chỉ số của cơ chế code injection. Game Registration thông thường sẽ yêu cầu serial keys để xác thực bản quyền của sản phầm và sử dụng đầy đủ tính năng của phần mềm như hình dưới đây:
File EXE này được chọn là một đối tượng đã bị lây nhiễm với một spyware. Điểm húng ta cần chú ý cho quá trình dịch ngược ở đây là một hội thoại báo lỗi khi chúng ta nhập một serial key không hợp lệ.
Tin nhắn lỗi này sẽ là điểm để chèn code độc hại. Khi người sử dụng nhìn thấy tin nhắn lỗi này đồng nghĩa với việc spyware đã được thực thi.
Spyware Code
Chương trình spyware dưới đây sẽ chỉ ra tên và địa chỉ IP của máy tính khi file Game Registration này được chạy và gửi lại thông tin này tới server của hacker. Chúng ta không cần đi vào chi tiết của đoạn spyware code này. Bởi vì sypyware code có thể là bất kỳ một chương trình EXE nào mà muốn được tiêm vào binary. Sau khi biên dịch đoạn code này, nó sẽ trông như hình dưới. Nó sẽ chỉ ra tên của máy tính và địa chỉ IP.
Victim Binary Analysis
Chúng ta có thể dễ dàng xác định được hộp tin nhắn xuất hiện (khi serial keys không khả dụng) sau 0040115E offsec. May mắn rằng, code này điều khiển một cặp của hộp tin nhắn khác. Nhưng chúng ta phải nhận ra được hộp tin nhắn đầu tiên.
Tiếp tục, chúng ta tìm tại 0040115E offsec trong OllyDbg để tim hộp tin nhắn ở dạng assembly code để thay đổi nó cho phù hợp với mục đích chúng ta cần. Chúng ta có thể khẳng định rằng hộp hội thoại xuất hiện bằng cách thay thế bột breakpoint tại 004115E trong IDA Pro và bắt đầu debugging. Nếu chúng ta nhập một tên ngắn, sau đó nhìn vào biểu đồ assembly code sẽ chỉ thị chu trình thực hiện của hộp hội thoại như hình dưới:
Spyware Injection
Tiếp đến, khi mở victim.exe binary trong OllyDbg để chèn spyware code. Ở đây, ký hiệu $ tại offsec 004015EV chỉ thị điểm đầu vào của việc thực thi như hình dưới:
Mỗi thực thi có một khoảng trống như Code Caves, đây là nơi chúng ta có thể đặt hoặc chèn bất kỳ binary code mở rộng vào. Khi kéo xuống một chút, bạn sẽ dễ dàng xác định khoảng trống với tên là DB 00 hoặc NOP.
Khi nhìn thấy hình trên, DB 00 bắt đầu từ 00405188 offset. Do đó, chúng ta có thể đặt spyware code tại code caves này. Lựa chọn một cặp code caves và click phải, chọn Binary sau đó edit như hình dưới:
Sau khi bấm nút OK, một vài code khó hiểu được đưa ra tại offset 0040518A (màu đỏ) như hình dưới:
Để loại bỏ chúng, chỉ cần bấm CTRL+A, chúng ta sẽ nhận được code ban đầu đã nhập và có thể nhìn thấy được tên spyware victim.exe như hình dưới:
Bây giờ, chúng ta phải viết giá trị địa chỉ offset cho spyware vào bộ nhớ. Tại offset 00405195, bấn nút space bar. Chúng ta tìm thấy hộp assemble code. Chỉ nhập PUSH 1 và click vào nút Assemble.
Tiếp tục tới 00405197 offset và bấm space bar, sau đó nhập PUSH 40518A mà đưa spyware EXE vào bộ nhớ.
Chú ý rằng, chúng ta sẽ tham chiếu vị trí của spyware.exe được xác định tại 0040518A tới 00405198:
Chương trình spyware của chúng ta có định dạng .exe. Do đó, chúng ta phải gọi CALL WinExec để chắc chắn có phần mở rộng là .exe.
Sau khi kết thúc quá trình này, assembly đã được thay đổi trông sẽ như hình dưới đây:
Bây giờ, chúng ta phải kết nối phần spyware này với hộp hội thoại trong trương trình ban đầu. Tại hình (***), bấm CTRL+G và nhập 0040115E offset.
Tại đây, chúng ta phải thực hiện một vài thay đổi cần thiết
Bây giờ, chọn 0040115E offset và bấm space bar, sau đó copy JNB 00401189 và bộ nhớ đệm:
Tiếp đến, quay trở lại inject code bằng cách bâm "-" button, và luwacj chọn 004051A1 offset để gắn code mới và bấm nút khoảng trắng và past JNB 00401189.
Copy địa chỉ 00405196 offset từ Firrst PUSH 1 trong code mới đã được tiêm.
Một lần nữa, đi tới 0040115E offset nơi mà code hộp hội thoại được xác định, lựa chọn instruction set tại 0040115E và bấm space bar. Cuối cùng, thay thế code đang tồn tại bằng Assembly mới JNB 00405196:
Chúng ta cần làm gì tại đây? Đầu tiên, chúng ta đưa tham chiếu của PUSH 1 instruction offset (0045196) tới jump instruction được xác định tại 0040115E Offset. Thứ hai, past JNB 00401189 instruction tới 004051A1 offset như hình dưới:
Tới đây, chúng ta đã kết thúc quá trình chèn code. Bây giờ, chúng ta thay đổi bất định và ghi bytes đã được thay đổi vào bộ nhớ bằng cách click phải vào ASM code và chọn Copy Executable, chọn tiếp All modijications
Bây giờ, chọn tùy chọn Copy all trong hội hội thoại sau đó, nó gây ra một vài hộp hội thoại riêng biệt như hình dưới:
Cuối cùng, đóng hộp hội thoại này, một lát sau đó hộp hội thoại Save as xuất hiện và nó hỏi để đặt tên mới tới file patched EXE.
Bây giờ, chạy victim_Patched.exe và nhập bất kỳ một giá trị của Name và serial keys. Hiển nhiên rằng một tin nhắn lỗi sẽ xuất hiện.
Khi tin nhắn này xuất hiện, chúng ta bấm nút OK, chương trình sypware sẽ tự động được khởi chạy, và hiện thị tên máy tính và địa chỉ IP sau đó tự động gửi về server của hacker.
Kết luận:
Bài viết này là một minh chứng rằng phần mềm độc hại có ở bất cứ đâu, không chỉ trong file exe mà còn có thể là cả file jpg, mp3... Điều quan trọng là chúng ta cần trang bị cho mình những kỹ năng cần thiết để giảm bớt sự tác động của các phần mềm độc hại này.
Chỉnh sửa lần cuối bởi người điều hành: