Chèn Spyware vào một file EXE bất kỳ (Code Injection)

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.

1699524130542.png

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:

1699521075556.png

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ệ.

1699521088628.png

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.

1699521103109.png

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.

1699521127824.png

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:

1699521141968.png

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:

1699521154294.png

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.

1699521259414.png

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:

1699521271898.png
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.

1699521286964.png

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:

1699521870597.png

Để 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:

1699521885334.png

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.

1699521901463.png

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ớ.

1699521913567.png

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:

1699521923627.png

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.

1699521936449.png

Sau khi kết thúc quá trình này, assembly đã được thay đổi trông sẽ như hình dưới đây:

1699521947703.png

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.

1699521960094.png

Tại đây, chúng ta phải thực hiện một vài thay đổi cần thiết

1699521971637.png

Bây giờ, chọn 0040115E offset và bấm space bar, sau đó copy JNB 00401189 và bộ nhớ đệm:

1699521990521.png

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.

1699522003104.png

Copy địa chỉ 00405196 offset từ Firrst PUSH 1 trong code mới đã được tiêm.

1699522020844.png

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:

1699522036501.png

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:

1699522063794.png

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

1699522088550.png

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:

1699522111177.png

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.

1699522152447.png

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.

1699522181261.png

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.

1699522196202.png

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:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngà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
Re: Chèn Spyware vào một file EXE bất kỳ (Code Injection)

đã đọc nhưng chưa hiểu :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngà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
Comment
Re: Chèn Spyware vào một file EXE bất kỳ (Code Injection)

zin3k;18232 đã viết:
đã đọc nhưng chưa hiểu :D
Bạn chưa hiểu chỗ nào vậy?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngà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
Comment
Re: Chèn Spyware vào một file EXE bất kỳ (Code Injection)

Bạn nào dịch/viết bài này thì cũng nên đưa người khác xem đọc có trôi không rỗi hẵng post. Cứ post lấy số thế này thì mất hết khách.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngà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
Comment
Re: Chèn Spyware vào một file EXE bất kỳ (Code Injection)

hay :) .
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngà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
Comment
Re: Chèn Spyware vào một file EXE bất kỳ (Code Injection)

Cái này là inject function code vào section, chứ đâu phải chèn cả spyware vào PE file, vẫn cần file spyware.exe bên ngoài mà. Bài này của bạn inject function Winexec() vào code cave và đổi hướng của chương trình mà. Hơn thế nữa không phải file EXE nào cũng có thể chèn và chạy được.
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngà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
Comment
Re: Chèn Spyware vào một file EXE bất kỳ (Code Injection)

thím gửi file victim vs spyware xem phát :)
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngà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
Comment
Bên trên