1. Trang chủ
  2. » Giáo Dục - Đào Tạo

THỰC tập cơ sở CHUYÊN NGÀNH AN TOÀN PHẦN mềm (SOFTWARE SECURITY)

26 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 0,94 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Có thể định nghĩa một cách dễ hiểu như sau: An toàn phần mềm bảo là một ý tưởng được thực hiện để bảo vệ phần mềm chống lại sự tồn tại của một lỗ hống trong phần mềm, khả năng mà tin tặ

Trang 1

An toàn phần mềm 1

THỰC TẬP

CƠ SỞ CHUYÊN NGÀNH

AN TOÀN PHẦN MỀM (SOFTWARE SECURITY)

GVHD: PGS.TS Lương Thế Dũng

Trang 2

An toàn phần mềm 2

Sinh viên thực hiện: Võ Minh Sang

Trần Quốc Hoàng Phạm Nguyễn Tiến Anh

Huỳnh Hải Băng

Lớp: AT15H Khóa: 15

Trang 3

An toàn phần mềm 3

Trang 4

Chương I: Mở đầu

1.1 Lý do chọn đề tài

Ngày nay, với xu hướng chuyển đổi số mạnh mẽ của các doanh nghiệp, công ty, tổ chức dân đên việc tạo ra những phần mêm quản lý, điêu hành và làm việc cũng hêt sức thiêt yêu Bên cạnh đó, ảnh hưởng của đại dịch COVID-19 cũng đã thúc đây nhanh việc chuyển đổi số Để đảm bảo an toàn cho phần mêm khi tạo ra và vận hành tránh bị kẻ xấu tấn công gây thiệt hại nghiêm trọng Đó cũng là lý do để chúng em chọn chuyên đê Software Security.

1.2 Mục đích chọn đề tài:

Tìm hiểu những kiên thức tổng quan vê an toàn phần mêm, tìm hiểu vê các cách tấn công, cũng như khám phá môi trường Unix giúp ích cho việc học hỏi, tiêp thu thêm nhiêu bài học kinh nghiệm thực tê hơn Thực hiện các bài lab theo trang web

https://seedsecuritylabs.org/Labs 16.04/Software /

Trang 5

Chương II: Tổng quan về an toàn phần mềm

2.1 Khái niệm cơ bản

Trang 6

Chương II: Tổng quan về an toàn phần mềm

2.1 Khái niệm cơ bản

2.1.2 An toàn phần mềm là gì?

Có thể định nghĩa một cách dễ hiểu như sau: An toàn phần mềm bảo là

một ý tưởng được thực hiện để bảo vệ phần mềm chống lại sự tồn tại của một lỗ hống trong phần mềm, khả năng mà tin tặc truy cập vào một lỗ hổng bảo mật và nguy cơ từ việc tin tặc tấn công lỗ hống, để giúp phần mềm có thể tiếp tục chức năng một cách chính xác dưới rủi ro tiềm tàng như vậy An ninh là cần thiết để cung cấp tính toàn vẹn, xác thực và tính sẵn sàng.

Trang 7

X-N r 1 A • 1 ■ A -»Ấ r A 1 1 • A. r

2.2 Các bài lab được đề cập đên trong quá trình nghiên cứu

> Các bài lab này bao gồm một số

l(

sinh viên thây các cuộc tân công h

Buffer-Overflow Vulnerability Lab

g phần mềm nói chung, cho phép

g việc khai thác các lô hông này Enviroment Variable and Set-UID

Lab Race Condition Vulnerability Lab Dirty Cow Attack Lab

Format String Vulnerability Lab Shellshock Attack

Lab

Trang 8

An toàn phần mềm 8

r • r Àr 1 A • 1 1

2.3 Khái quát về các bài lab

2.3.1 Buffer-Overflow Vulnerability Lab

*r<K* Ll

PHY TECHNI

Trang 9

2.3.1 Buffer-Overflow Vulnerability Lab

Giới thiệu

• Tràn bộ đệm là một lỗi lập trình có thể gây ra một ngoại lệ truy nhập

bộ nhớ máy tính và chương trình bị kết thúc Tràn bộ đệm được

định

nghĩa là điều kiện trong đó chương trình cố gắng ghi dữ liệu vượt ra

ngoài ranh giới của bộ đệm có độ dài cố định được cấp phát trước

• Lỗ hổng này lợi dụng để thay đổi kiểm soát luồng của chương trình,

thậm chí thực thi các đoạn mã tùy ý Lỗ hổng này phát sinh do sự

trộn lẫn giữa bộ lưu trữ cho dữ liệu (ví dụ bộ đệm) và bộ lưu trữ cho

các điều khiển (ví dụ: địa chỉ trả về): phần dữ liệu bị tràn có thể ảnh

hưởng đến luồng điều khiển của chương trình, vì tràn có thể thayđổi

địa chỉ trả về Cung cấp một chương trình có lỗ hổng tràn bộ đệm; nhiệm vụ củachúng ta là phát triển một kế hoạch để khai thác lỗ hổng và cuốicùng là giành được đặc quyền root Ngoài các cuộc tấn công, sinhviên sẽ được hướng dẫn thực hiện một số phương án bảo vệ đã đượctriển khai trong hệ điều hành để chống lại các cuộc tấn công tràn bộđệm

An toàn phần mềm

Mục tiêu

Trang 10

r • r Àr 1 A • 1 1

2.3 Khái quát về các bài lab

2.3.2 Return-to-libc Attack Lab

*r<K* Ll

PHY TECHNI

Trang 11

2.3.2 Return-to-libc Attack Lab

Là một phương pháp khai thác lỗi có ngăn xếp không thực thi được,

nó rất giống với tràn bộ đệm tiêu chuẩn, trong đó địa chỉ trả về được

thay đổi để trỏ đến một vị trí mới mà chúng ta có thể kiểm soát Tuy

nhiên, vì không có mã thực thi nào được phép trên ngăn xếp, ta

không thể chỉ gắn thẻ trong shellcode

Vì vậy ta sử dụng thủ thuật return-to-libc và sử dụng một hàm được

cung cấp bởi thư viện Ta vẫn ghi đè địa chỉ trả về bằng một trong

các hảm của libc, chuyển cho nó các đối số chính xác và thực thi nó

cho ta Vì các hàm này không nằm trên ngăn xếp, ta có thể bỏ qua

ngăn xếp và thực thi code

Được trải nghiệm trực tiếp về một biến thể thú vị của tấn công tràn

bộ đệm; cuộc tấn công này có thể bỏ qua một sơ đồ bảo vệ hiện cóhiện được triển khai trong các hệ điều hành Linux chính Một cáchphổ biến để khai thác lỗ hổng tràn bộ đệm là làm tràn bộ đệm bằngmột mã shellcode độc hại, và sau đo khiến chương trình dễ bị tấncông nhảy đến shellcode được lưu trữ trong ngăn xếp

Để ngăn chặn các kiểu tấn công này, một số hệ điều hành cho phépquản trị viên hệ thống tạo các ngăn xếp không thể thực thi được; do

đo, việc nhảy đến shellcode sẽ khiến chương trình bị lỗi

Trang 12

An toàn phần mềm

Trang 13

r • r Àr 1 A • 1 1

2.3 Khái quát về các bài lab

Trang 14

2.3.3 Enviroment Variable and Set-UID

Lab

Biến môi trường (Enviroment Variable) là những giá trị được cung

cấp và phụ thuộc vào Hệ điều hành, vậy nên sự thay đổi của các

biến môi trường (khi thay đổi môi trường chạy) sẽ ảnh hưởng đến

quá trình thực thi của một ứng dụng, nếu như ứng dụng sử dụng các

biến môi trường đó

Set-UID (SET User ID upon execution), là một loại đặc quyền file

(file permission) đặc biệt, có thể cho phép user tạm có quyền thực

thi file băng chính quyền của người sở hữu (owner) để thay đổi

hành vi của file thực thi đó

Giúp tìm hiểu cách các biến môi trường ảnh hưởng đến chương trình

và hành vi của hệ thống Mặc dù các biến môi trường ảnh hưởng đếncác hành vi của chương trình, nhưng cách chúng hoạt động thìkhông được nhiều lập trình viên hiểu rõ Kết quả là, nếu một chươngtrình sử dụng các biến môi trường, các chương trình co thể có lỗhổng Qua bài lab này, sẽ hiểu rõ cách vận hành của các biến môitrường, cách chúng được đề xuất từ quy trình mẹ sang quy trình con,

và cách chúng ảnh hưởng đến các chương trình/ hệ thống

Đặc biệt quan tâm đến cách các biến môi trường ảnh hưởng đến hoạtđộng của các chương trình Set-UID, thường là các chương trình đặcquyền

Trang 15

An toàn phần mềm

Trang 16

An toàn phần mềm 16

*r<K* Ll

PHY TECHNI

r • r Àr 1 A • 1 1

2.3 Khái quát về các bài lab

2.3.4 Race Condition Vulnerability Lab

^^Attack

Trang 17

2.3.4 Race Condition Vulnerability Lab

Giới thiệu

Race-Condition là một tình huống xảy ra khi nhiều threads

cùng truy cập và cùng lúc muốn thay đổi dữ liệu (có thể là một

biến, một row trong database, một vùng shared data, memory ,

etc )

Một race-condition xảy ra khi nhiều quy trình truy cập và thao

tác đồng thời cùng một dữ liệu và kết quả của việc thực thi phụ

thuộc vào thứ tự cụ thể mà việc truy cập diễn ra Nếu một

chương trình đặc quyền có lỗ hổng race-condition, những kẻ

tấn công có thể chạy một quy trình song song để "chạy đua"

với chương trình đặc quyền, với ý định thay đổi các hành vi

của chương trình

Trong lab này, chúng ta được cấp một chương trình có lỗ hổng

race-condition, sinh viên triển khai một kế hoạch để khai thác

lỗ hổng khai thác lỗ hổng để có được đặc quyền root

Ngoài ra, chúng ta sẽ được hướng dẫn thực hiện một sốphương án bảo vệ có thể được sử dụng để chống lại các cuộctấn công theo Race-Condition

Mục tiêu

Trang 18

r • r Àr 1 A • 1 1

2.3 Khái quát về các bài lab

2.3.5 Dirty-Cow Attack Lab

^^Attack

DIRTY cow

*r<K* Ll

PHY TECHNI

Trang 19

2.3.5 Dirty-Cow Attack Lab

• Dirty-COW là một trường hợp đặc biệt của lỗ hổng race

condition Nó tồn tại trong nhân Linux từ tháng 9 năm 2007,

được phát hiện và khai thác vào tháng 10 năm 2016 Lỗ hổng

ảnh hưởng đến tất cả các hệ điều hành dựa trên Linux, bao

• Hiểu hơn về dạng lỗ hổng Race-Condition bị khai thác bởicuộc tấn công này và hiểu sâu hơn về các vấn đề bảo mậtRace-Condition nói chung Trong lab này, sinh viên khai thác

lỗ hổng Dirty-COW để có được đặc quyền root

Trang 20

r • r Àr 1 A • 1 1

2.3 Khái quát về các bài lab

2.3.6 Format-String Attack Lab

*r<K* Ll

PHY TECHNI

Trang 21

2.3.6 Format-String Attack Lab

• Hàm printf () trong C được sử dụng để in ra một chuỗi theo

một định dạng Đối số đầu tiên của nó được gọi là chuỗi địnhdạng, xác định cách định dạng chuỗi Định dạng chuỗi sử dụngtrình giữ chỗ được đánh dấu bởi ký tự % cho hàm printf () đểđiền dữ liệu trong quá trình in Việc sử dụng các chuỗi địnhdạng không chỉ giới hạn trong hàm printf (); nhiều hàm khác,chẳng hạn như sprintf (), fprintf (), và scanf (), cũng sử dụngchuỗi định dạng Một số chương trình cho phép người dùngcung cấp toàn bộ hoặc một phần nội dung trong một chuỗiđịnh

dạng Nếu những nội dung đó không được làm sạch, ngườidùng độc hại có thể sử dụng cơ hội này để lấy chương trình đểchạy mã tùy ý

• Khai thác lỗ hổng bằng các bước sau: (1) làm hỏng chươngtrình, (2) đọc bộ nhớ trong của chương trình, (3) sửa đổi bộnhớ trong của chương trình và nghiêm trọng nhất là (4) đưa vàthực thi mã độc hại bằng cách sử dụng đặc quyền truy cậpchương trình của nạn nhân

• Hậu quả cuối cùng là rất nguy hiểm nếu chương trình dễ bị tấncông là chương trình đặc quyền, chẳng hạn như một rootdeamon, vì điều đó có thể cung cấp cho những kẻ tấn côngquyền truy cập root của hệ thống

Trang 22

2.3 Khái quát về các bài lab

2.3.7 Shellshock Attack Lab

Attack

# ỉ/bin/bash

Trang 23

2.3.7 Shellshock Attack Lab

• Shellshock là một lỗ hổng bảo mật trong Bash, được công bố

rộng rãi vào ngày 25 tháng 9 năm 2014 Lỗ hổng này có thể

khai thác nhiều hệ thống và được khởi chạy từ xa hoặc từ

một máy cục bộ và giúp kẻ tấn công chiếm quyền điểu khiển

máy nạn nhân mà không cần phải qua bước xác thực

• Lỗ hổng shellhock trong bash liên quan đến các hàm shell các

-hàm được xác định bên trong shell Bằng cách khai thác sailầm do bash mắc phải khi chuyển đổi các biến môi trườngthành các định nghĩa hàm

• Lỗ hổng bảo mật này giúp kẻ tấn công chiếm quyền điểu khiểnmáy nạn nhân mà không cần phải qua bước xác thực

Trang 24

Chương III : Thực nghiệm

Demo

Trang 25

Chương IV : TỔNG KẾT

4.1 Hạn chế:

Trong suốt thời gian nghiên cứu đề tài, chúng em đã cố gắng hết sức để tìm hiểu và

thực hiện đề tài Tuy nhiên với kiến thức, kinh nghiệm và thời gian hạn chế nên không thể không tránh khỏi những thiếu sót Cụ thể:

- Chưa thực hiện được một số task nâng cao.

- Chưa nghiên cứu sâu được

4.2 Kết luận và hướng phát triển:

- Có kiến thức tổng quan về một số khái niệm , định nghĩa thuộc về an toàn phần mềm thông qua việc nghiên cứu.

- Tìm hiểu chi tiết về cách cài đặt môi trường ảo thực hiện lab (VMware, Virtual Box).

- Thực hiện thành công nhiều task của từng bài lab.

> Tiếp tục tìm hiểu nâng cao, nghiên cứu sâu và áp dụng vào thực tiễn.

Trang 26

CAM ƠN THÀY (CÔ) ĐẢ

LẢNG NGHE

fhawk$ for watchiwg

Ngày đăng: 23/03/2022, 20:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w