Professional Documents
Culture Documents
Mau LVTN 1
Mau LVTN 1
Mau LVTN 1
NIÊN LUÂN CƠ SỞ
NGÀNH TRUYỀN THÔNG VÀ MẠNG MÁY TÍNH
Đề tài
TẤN CÔNG TRÀN BỘ ĐỆM
(Buffer Overflow Attack)
1
TRƯỜNG ĐẠI HỌC CẦN THƠ
MỤC LỤC
LỜ I CẢ M ƠN................................................................................................................................................................................................ 5
TÓ M TẮ T...................................................................................................................................................................................................... 6
CHƯƠNG 1: GIỚ I THIỆ U........................................................................................................................................................................ 1
1.1. Lý do chọ n đề tà i.............................................................................................................................................................................. 1
1.2. Mụ c tiêu củ a đề tà i...........................................................................................................................................................................1
1.3.Đố i tượ ng nghiên cứ u..................................................................................................................................................................... 1
1.4.Phạ m vi nghiên cứ u..........................................................................................................................................................................2
1.5.Phương phá p nghiên cứ u.............................................................................................................................................................. 2
1.6.Ý nghĩa khoa họ c và thự c tiễn củ a đề tà i.................................................................................................................................2
1.6.1.Ý Nghĩa Khoa Họ c:......................................................................................................................................................................... 2
1.6.2.Ý Nghĩa Thự c Tiễn:....................................................................................................................................................................... 3
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾ T........................................................................................................................................................ 5
2.1. Buffer overflow attack là gì......................................................................................................................................................... 5
2.2 Cơ sở lý thuyết liên quan đến buffer overflow attacks:...................................................................................................6
2.2.1.Buffer:................................................................................................................................................................................................. 6
2.2.2.Overflow:.......................................................................................................................................................................................... 7
2.2.3.Stack Overflow và Heap Overflow:........................................................................................................................................7
2.2.4.Return Address (Địa chỉ Quay Về):........................................................................................................................................7
2.2.5.Shellcode:.......................................................................................................................................................................................... 7
2.2.6.ASLR (Address Space Layout Randomization):...............................................................................................................7
2.2.7.DEP (Data Execution Prevention):.........................................................................................................................................8
CHƯƠNG 3: PHƯƠNG PHÁ P THỰ C HIỆ N......................................................................................................................................8
3.1.Xá c định Lỗ Hổ ng:............................................................................................................................................................................. 8
3.2.Xâ y Dự ng Payload:............................................................................................................................................................................ 8
3.3.Xá c Định Điểm Tiếp Xú c:................................................................................................................................................................8
3.4.Chuẩ n Bị Dữ Liệu Tấ n Cô ng:.........................................................................................................................................................8
3.5.Chèn Payload và o Dữ Liệu Đầ u Và o:.........................................................................................................................................9
3.6.Thự c Hiện Tấ n Cô ng:....................................................................................................................................................................... 9
3.7.Kiểm Tra Hiệu Quả và Thu Thậ p Kết Quả :.............................................................................................................................9
CHƯƠNG 4: KẾ T QUẢ THỰ C NGHIỆ M..........................................................................................................................................10
4.1.Ret2win.............................................................................................................................................................................................. 10
4.1.1.Bướ c 1............................................................................................................................................................................................. 10
4.1.2.Bướ c 2............................................................................................................................................................................................. 10
4.1.3.Bướ c 3............................................................................................................................................................................................. 12
4.1.4.Bướ c 4............................................................................................................................................................................................. 14
4.1.5.Bướ c 5............................................................................................................................................................................................. 14
4.1.6.Bướ c 6............................................................................................................................................................................................. 15
4.2.Callme.................................................................................................................................................................................................. 16
4.2.1.Bướ c 1............................................................................................................................................................................................. 16
4.2.2.Bướ c 2............................................................................................................................................................................................. 16
4.2.3.Bướ c 3............................................................................................................................................................................................. 17
4.2.4.Bướ c 4............................................................................................................................................................................................. 18
4.2.5.Bướ c 5............................................................................................................................................................................................. 19
4.2.6.Bướ c 6............................................................................................................................................................................................. 21
4.2.7.Bướ c 7............................................................................................................................................................................................. 22
4.2.8.Bướ c 8............................................................................................................................................................................................. 22
4.3.Write4................................................................................................................................................................................................. 23
4.3.1.Bướ c 1............................................................................................................................................................................................. 23
4.3.2.Bướ c 2............................................................................................................................................................................................. 23
4.3.3.Bướ c 3............................................................................................................................................................................................. 23
4.3.4.Bướ c 4............................................................................................................................................................................................. 25
4.3.5.Bướ c 5............................................................................................................................................................................................. 28
4.3.6.Bướ c 6............................................................................................................................................................................................. 29
4.3.7.Bướ c 7............................................................................................................................................................................................. 30
GVHD: TS.GVC Nguyễn Vă n A SVTH: Võ Thanh B
1
CHƯƠNG 5: KẾ T LUẬ N VÀ HƯỚ NG PHÁ T TRIỂ N...................................................................................................................32
5.1.Kết Luậ n............................................................................................................................................................................................. 32
5.2.Hướ ng Phá t Triển :........................................................................................................................................................................ 33
TÀ I LIỆ U THAM KHẢ O.........................................................................................................................................................................34
MỤ C LỤ C HÌNH Ả NH
HÌnh 1 : Sơ đồ bộ nhớ chương trình...................................................................................................5
HÌnh 2 : Thu thập thông tin tệp nhị phân và chạy chương trình ........................................10
HÌnh 3 : Kích hoạt radare2..................................................................................................................11
HÌnh 4 : Main.............................................................................................................................................11
HÌnh 5 : Sym.ret2win.............................................................................................................................11
HÌnh 6 : Sym.pwnme...............................................................................................................................11
HÌnh 7 : Sym.pwnme...............................................................................................................................11
HÌnh 8 : Truy cập gdb.............................................................................................................................12
HÌnh 9 : Mẫu 50 byte..............................................................................................................................12
HÌnh 10 : chạy chương trình ret2win.............................................................................................13
HÌnh 11 : Nội dung thanh ghi RSP....................................................................................................13
HÌnh 12 : Phần bù....................................................................................................................................14
HÌnh 13 : Sử dụng công cụ ROPgadget...........................................................................................14
HÌnh 14 : Địa chỉ ret..............................................................................................................................14
HÌnh 15 : tạo tập lệnh exploit.py và nội dung tập lệnh............................................................15
HÌnh 16 : chạy tập lệnh và kết quả..................................................................................................15
HÌnh 17 : Thông tin tệp nhị phân callme........................................................................................16
HÌnh 18 : Truy cập radare2 ...............................................................................................................17
HÌnh 19 : chương trình callme..........................................................................................................17
HÌnh 20 : Truy cập radare2................................................................................................................18
HÌnh 21 : Hàm pwnme..........................................................................................................................19
HÌnh 22 : chạy chương trình callme................................................................................................20
HÌnh 23 : Lỗi gây tràn............................................................................................................................20
HÌnh 24 : phần bù ...................................................................................................................................21
HÌnh 25 : ROPgadgets..........................................................................................................................21
HÌnh 26 : tạo tập lệnh exploit.py và nội dung tập lệnh.............................................................22
HÌnh 27 : kết quả.....................................................................................................................................22
HÌnh 28 : Thu thập thông tin tệp nhị phân write4....................................................................23
HÌnh 29 : chương trình write4...........................................................................................................23
HÌnh 30 : radare2 write4......................................................................................................................24
HÌnh 31 : Sym.usefulFunction............................................................................................................24
HÌnh 32 : Sym.imp.print_file...............................................................................................................25
HÌnh 33 : ROPgadget.............................................................................................................................25
HÌnh 34 : readelf write4........................................................................................................................26
HÌnh 35 : Đầu ra của lệnh....................................................................................................................26
HÌnh 36 : Đầu ra của lệnh...................................................................................................................27
HÌnh 37 : data write4.............................................................................................................................27
HÌnh 38 : Gdb write4..............................................................................................................................28
GVHD: TS.GVC Nguyễn Vă n A SVTH: Võ Thanh B
1
HÌnh 39 : chạy chương trình write4................................................................................................28
HÌnh 40 : RSP............................................................................................................................................29
HÌnh 41 : Phần bù...................................................................................................................................29
HÌnh 42 : tạo tập lệnh exploit.py và nội dung tập lệnh............................................................30
HÌnh 43 : tạo tập lệnh exploit.py và nội dung tập lệnh.............................................................30
HÌnh 44 : Kết quả....................................................................................................................................31
LỜI CẢM ƠN
Trong quá trình thự c hiện bà i niên luậ n nà y, do hiểu biết cò n nhiều hạ n chế
nên bà i là m khó trá nh khỏ i nhữ ng thiếu só t. Em rấ t mong nhậ n đượ c nhữ ng lờ i
gó p ý củ a quý thầ y cô để bà i tiểu luậ n ngà y cà ng hoà n thiện hơn.
1
TÓM TẮT
Xá c định lỗ hổ ng tấ n cô ng buffer overflow bắ t đầ u bằ ng việc xá c định mộ t
lỗ hổ ng trong phầ n mềm hoặ c hệ thố ng, thườ ng liên quan đến việc khô ng kiểm
soá t đượ c dữ liệu đầ u và o.
Xâ y dự ng Payload ngườ i tấ n cô ng phả i xâ y dự ng mộ t payload chứ a mã độ c
hạ i hoặ c cá c hà nh độ ng khô ng mong muố n mà ngườ i tấ n cô ng muố n chú ng thự c
hiện trên hệ thố ng mụ c tiêu.
Chuẩ n bị dữ liệu tấ n cô ng tạ o ra dữ liệu đầ u và o mà sẽ đượ c sử dụ ng để tậ n
dụ ng lỗ hổ ng buffer overflow. Điều nà y thườ ng liên quan đến việc tạ o ra mộ t
lượ ng dữ liệu lớ n hơn kích thướ c củ a buffer.
Chèn Payload và o dữ liệu đầ u và o chèn payload và o dữ liệu đầ u và o đã
đượ c chuẩ n bị. Payload nà y thườ ng chứ a mã má y (shellcode) để thự c hiện cá c
hà nh độ ng độ c hạ i.
Thự c hiện tấ n cô ng gử i dữ liệu đầ u và o đã đượ c tấ n cô ng đến ứ ng dụ ng
hoặ c hệ thố ng mụ c tiêu và chờ xem liệu buffer overflow attack có thà nh cô ng hay
khô ng.
Kiểm tra hiệu quả và thu thậ p kết quả kiểm tra xem payload củ a bạ n có
thự c sự đượ c thự c hiện khô ng và thu thậ p thô ng tin về việc tấ n cô ng, chẳ ng hạ n
như thô ng tin về hệ thố ng hoặ c quyền truy cậ p mớ i có đượ c.
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
1
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
2
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
3
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
4
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT
-Data segment (Phâ n đoạ n dữ liệu) : lưu trữ cá c biến tĩnh/toà n cụ c đượ c
ngườ i lậ p trình khở i tạ o.
5
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
-BSS segment (Phâ n đoạ n BSS) :lưu trữ cá c biến tĩnh/toà n cụ c chưa đượ c
khở i tạ o. Phâ n đoạ n nà y sẽ đượ c hệ điều hà nh lấ p đầ y bằ ng cá c số 0, vì vậ y tấ t cả
cá c biến chưa đượ c khở i tạ o đều đượ c khở i tạ o bằ ng số 0.
Cơ chế hoạ t độ ng củ a buffer overflow attack thườ ng liên quan đến việc gử i
mộ t lượ ng dữ liệu lớ n hơn kích thướ c đượ c dự kiến củ a buffer đến chương trình.
Khi dữ liệu nà y đượ c ghi và o buffer, nó có thể trà n ra cá c vù ng bộ nhớ khá c, có
thể là cá c địa chỉ quay về (return addresses) hoặ c cá c biến khá c trong bộ nhớ . Kẻ
tấ n cô ng có thể kiểm soá t đượ c chương trình bằ ng cá ch chèn mã độ c hạ i và thay
đổ i quá trình thự c thi củ a nó .
Buffer overflow attacks có thể dẫ n đến nhiều hậ u quả nghiêm trọ ng, bao
gồ m việc thự c hiện mã độ c hạ i, kiểm soá t hệ thố ng, thự c hiện tấ n cô ng từ chố i
dịch vụ (DoS), hoặ c thậ m chí là kiểm soá t toà n bộ má y chủ . Để ngă n chặ n buffer
overflow attacks, cá c biện phá p như kiểm tra giớ i hạ n dữ liệu đầ u và o, sử dụ ng
ngô n ngữ lậ p trình an toà n, và triển khai cá c cơ chế bả o vệ như Data Execution
Prevention (DEP) và Address Space Layout Randomization (ASLR) thườ ng đượ c
á p dụ ng.
2.2.1.Buffer:
6
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
2.2.2.Overflow:
Khi lượ ng dữ liệu đượ c ghi và o buffer vượ t quá dung lượ ng mà nó đượ c
cấ p phá t, xả y ra hiện tượ ng overflow, và dữ liệu có thể trà n ra cá c vù ng bộ nhớ
lâ n cậ n.
Là mộ t giá trị trỏ đến vị trí trong bộ nhớ mà chương trình sẽ quay về sau
khi kết thú c mộ t hà m. Khi bị thay đổ i bở i buffer overflow, nó có thể dẫ n đến thay
đổ i luồ ng thự c thi củ a chương trình.
2.2.5.Shellcode:
7
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
8
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
Kiểm tra xem payload củ a bạ n có thự c sự đượ c thự c hiện khô ng, và thu
thậ p thô ng tin về việc tấ n cô ng, chẳ ng hạ n như thô ng tin về hệ thố ng hoặ c quyền
truy cậ p mớ i có đượ c.
9
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
4.1.Ret2win
4.1.1.Bước 1
- Thu thậ p thêm thô ng tin về tệp nhị phâ n.
HÌnh 2: Thu thập thông tin tệp nhị phân và chạy chương trình .
4.1.2.Bước 2
10
Đề tà i : Tấ n cô ng trà n bộ đệm
——————————————————————————————————
HÌnh 4: Main
11
Đề tà i : Tấ n cô ng trà n bộ đệm
HÌnh 5: Sym.ret2win
HÌnh 6: Sym.pwnme.
HÌnh 7: Sym.pwnme.
11
Đề tà i : Tấ n cô ng trà n bộ đệm
4.1.3.Bước 3
- Truy cậ p gdb.
- Tạ o mộ t mẫ u có 50 byte.
12
Đề tà i : Tấ n cô ng trà n bộ đệm
13
Đề tà i : Tấ n cô ng trà n bộ đệm
- Xá c định phầ n bù .
- Phầ n bù là 40 byte.
4.1.4.Bước 4
4.1.5.Bước 5
14
Đề tà i : Tấ n cô ng trà n bộ đệm
4.1.6.Bước 6
15
Đề tà i : Tấ n cô ng trà n bộ đệm
4.2.Callme
4.2.1.Bước 1
4.2.2.Bước 2
16
Đề tà i : Tấ n cô ng trà n bộ đệm
4.2.3.Bước 3
17
Đề tà i : Tấ n cô ng trà n bộ đệm
4.2.4.Bước 4
- Sau khi phâ n tích callme trên radare2, phá t hiện ra rằ ng bộ đệm đượ c
khở i tạ o trong hà m pwnme. Ngoà i ra, đầ u và o đượ c yêu cầ u cho ngườ i dù ng
trong chứ c nă ng nà y và đượ c thêm và o bộ đệm
18
Đề tà i : Tấ n cô ng trà n bộ đệm
- Hà m pwnme.
4.2.5.Bước 5
- Truy cậ p gdb
- Tạ o mộ t mẫ u có 50 byte
19
Đề tà i : Tấ n cô ng trà n bộ đệm
20
Đề tà i : Tấ n cô ng trà n bộ đệm
4.2.6.Bước 6
- chú ng ta phả i lưu ý để có thể chọ n tiện ích ROP chính xá c là ESP phả i
đượ c di chuyển cá c thá p có địa chỉ cao hơn trong tiện ích ROP, vì vậ y bằ ng cá ch
nhìn và o ngă n xếp
HÌnh 25 : ROPgadgets
21
Đề tà i : Tấ n cô ng trà n bộ đệm
- Có thể thấ y ở kết quả ở trên, chú ng ta có pop rdi ; pop rsi ; pop rdx ; ret
tiện ích ROP trong địa chỉ: “ 0x000000000040093c “
4.2.7.Bước 7
HÌnh 26: tạo tập lệnh exploit.py và nội dung tập lệnh
4.2.8.Bước 8
22
Đề tà i : Tấ n cô ng trà n bộ đệm
4.3.Write4
4.3.1.Bước 1
4.3.2.Bước 2
4.3.3.Bước 3
23
Đề tà i : Tấ n cô ng trà n bộ đệm
- Chú ng tô i có mộ t số thô ng tin quan trọ ng. Cụ thể hiện nay chú ng ta đã
biết địa chỉ cá c chứ c nă ng củ a chương trình usefulFunction ,imp.pwnme,main.
- Sym. usefulFunction.
HÌnh 31 : Sym.usefulFunction
24
Đề tà i : Tấ n cô ng trà n bộ đệm
xá c, tìm hiểu sâ u hơn mộ t chú t. Có thể thấ y, địa chỉ chính xá c trên thự c tế là :
0x00400510 .
HÌnh 32 : Sym.imp.print_file
4.3.4.Bước 4
- Sử dụ ng cô ng cụ ROPgadget
HÌnh 33 : ROPgadget
- Bâ y giờ chú ng ta có tiện ích ROP cho phép chú ng tô i lưu trữ chuỗ i trong
sổ đă ng ký. Bâ y giờ chú ng ta cầ n mộ t nơi (mộ t địa chỉ) để lưu trữ chuỗ i.Để là m
như vậ y sử dụ ng lệnh sau:
25
Đề tà i : Tấ n cô ng trà n bộ đệm
26
Đề tà i : Tấ n cô ng trà n bộ đệm
- Cô ng cụ readelf hiển thị thô ng tin liên quan đến tệp nhị phâ n , nó có thể
giú p chú ng ta tìm mộ t nơi để lưu trữ chuỗ i. Trong tiêu đề Phầ n, chú ng ta có danh
sá ch cá c phầ n đượ c trình bà y trong tệp nhị phâ n.Để chọ n mộ t cá i mà chú ng ta có
thể sử dụ ng, chú ng ta cầ n mộ t cá i cho phép chú ng ta viết và chú ng ta cầ n đả m bả o
rằ ng là m như vậ y sẽ khô ng là m hỏ ng bấ t cứ thứ gì có liên quan.
27
Đề tà i : Tấ n cô ng trà n bộ đệm
- Chú ng ta có pop rdi ; ret tiện ích ROP trong địa chỉ
0x0000000000400693 .
4.3.5.Bước 5
- Truy cậ p gdb
- Tạ o mộ t mẫ u có 50 byte
- Biết đượ c điều nà y, bâ y giờ chú ng ta phả i tìm phầ n bù cho lỗ i trà n.
28
Đề tà i : Tấ n cô ng trà n bộ đệm
HÌnh 40 : RSP
HÌnh 41 : Phần bù
- Phầ n bù là 40 byte.
4.3.6.Bước 6
29
Đề tà i : Tấ n cô ng trà n bộ đệm
HÌnh 43: tạo tập lệnh exploit.py và nội dung tập lệnh
4.3.7.Bước 7
30
Đề tà i : Tấ n cô ng trà n bộ đệm
31
Đề tà i : Tấ n cô ng trà n bộ đệm
5.1.Kết Luận
- Phương thức tấn công: Khi dữ liệu vượ t quá giớ i hạ n củ a bộ đệm, nó
có thể ghi đè lên vù ng nhớ lâ n cậ n.
2. Shellcode Injection
3. Return-to-Libc Attack
32
Đề tà i : Tấ n cô ng trà n bộ đệm
- Phương thức tấn công: Thay đổ i địa chỉ trở về (return address) để
thự c hiện cá c chứ c nă ng trong thư viện C chuẩ n.
4. Heap Overflow
6. Integer Overflow
- Phương thức tấn công: Ghi giá trị vượ t quá phạ m vi cho kiểu dữ liệu
số nguyên.
33
Đề tà i : Tấ n cô ng trà n bộ đệm
Nghiên cứ u chi tiết hơn về việc tích hợ p cô ng nghệ mớ i như machine learning
để phá t hiện và ngă n chặ n buffer overflow attack.
https://web.ecs.syr.edu/~wedu/seed/Book/book_sample_buffer.pdf
https://pwn.college/software-exploitation/return-oriented-programming
https://ropemporium.com/
https://www.kali.org/tools/
34