CEHv9 viet module 17 buffer overflow 9

9 790 0
CEHv9 viet module 17   buffer overflow  9

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

Thông tin tài liệu

Bản trình bày bằng tiếng Việt của chương trình đào tạo CEH v9 – Module 17 Module 17 của CEHv9 trình bày các vấn đề liên quan đến kỹ thuật Buffer overflow (kỹ thuật đánh tràn bộ nhớ đệm). Kỹ thuật này tấn công vào các điểm yếu của ứng dụng, hệ điều hành, dịch vụ… làm tràn bộ nhớ đệm của hệ thống máy tính nhằm mục đích tấn công DoS hoặc tấn công xâm nhập máy tính từ xa.

Module 17 Buffer Overflow Các Chủ Đề Chính Trong Chương Này Tổng Quan Về Buffer Overflow Shell Code khai thác buffer overflow Tìm Kiếm Lỗi Tràn Bộ Đệm Minh Họa Khai Thác Lỗi Tràn Bộ Đệm Tổng Quan Về Buffer Overflow Buffer Overflow hay BoF lỗi tràn đệm, có nguyên nhân gần giống với tình huốn công SQL injection người dùng hay hacker cung cấp biến đầu vào hay liệu vượt khả xử lý chương trình làm cho hệ thống bị treo dẫn đến từ chố dịch vụ (DoS) hay có khả bị hacker lợi dụng chèn thị trái phép nhằm thực thi đoạn mã nguy hiểm từ xa Có hai dạng lỗi tràn đệm stack-based heapbased Cả hai thành phần stack heap sử dụng để lưu trữ biến người dùng chạy chương trình Khi chương trình nạp vào nhớ chia thành giai đoạn tương ứng với sơ đồ phân đoạn nhớ hình minh họa bên : Hình 17.1 - Sơ đồ phân đoạn nhớ Đầu tiên, thị lệnh hay mã máy (phần tập tin thực thi nhị phân) nạp qua phân đoạn text để thực thi tác vụ ứng dụng, vùng gán giá trị đọc có kích thước cố định tùy thuộc vào giá trị khởi tạo chương trình nạp Tiếp theo phân doạn data chưa biến toàn cục có giá trị khởi tạo ban đầu Sau vùng bss (below stack session) dùng để lưu biến toàn cục giá trị khởi tạo, kích thươc vùng data cố định chương trình nạp Và cuối vùng ENV, dùng để nạp biến môi trường đối số, giai đoạn sau ứng dụng nạp thực thi Trong phân đoạn phân doạn heap stack nơi mà hacker tiến hành khai thác lỗi tràn đệm, vùng heap dùng để cấp phát biến động thực thi bở lời gọi hàm malloc() Heap phát triển từ vùng nhớ có địa từ thấp đến cao theo nguyên tắt FIFO (Firt in first out, biến nạp trước lấy sử dụng trước) Như hình minh họa nội dung Heap : Hình 17.2 – Một nội dung heap Khi ứng dụng chép liệu mà không kiểm tra kích thước có phù hợp với khả lưu trữ hay không thi hacker tận dụng để cung cấp liệu có kích thươc lớn làm tràn heap ghi đè lên biến động khác dẫn đến tình trạng heap-based overflow Còn vùng stack ngược lại dùng để lưu trữ lời gọi hàm theo nguyên tắt LIFO (Last in first out, lời gọi nạp vào sau sử dụng trước) Những biến lưu trữ vùng chờ nhận lời gọi hàm để thực thi, mội biến bị ghi đè chương trình nguy hiểm chương trình thực thị hacker thông qua lời gọi hàm mình, tình bị khai thác lỗi gọi stack-based buffer overflow Shell Code Shellcode hay paypload thuật ngữ dùng để chương trình thường có kích thước nhỏ mà hacker chèn vào vị trí thực thi lệnh trỏ bị tràn đệm Với mục tiêu tiến hành hành động mà hacker mong muốn phần video minh họa dạng công lỗi tràn đệm Windows XP chọn shell code nạp giao diện dòng lệnh máy tính bị công, shellcode có tên reserver_shell, có nhiều loại shell code khác viết sẳn chèn dll lên máy tính bị công, hay tạo tài khoản người dùng … Các shellcode thường viết hợp ngữ chèn trực tiếp vào đoạn mã khai thác Ví dụ vào ngày 26.3.2012 có mã khai thác lỗi buffer overflow UltraVNC 1.0.2 Client công bố địa http://www.exploit-db.com/exploits/18666/ với shellcode : Hoặc shellcode khác có dạng : Hình 17.3 – Một đoạn shellcode Các bước tiến hành khai thác buffer overflow Tìm vị trí hay điểm gấy lỗi tràn đệm ứng dụng Ghi liệu có kích thước lớn để vượt khả kiểm soát chương trình Ghi đè lên địa trả hàm Thay đổi chương trình thực thi đoạn mã hacker Như đoạn code bên mô tả tình bị lỗi bof hàm bof (), kích thước buffer chi chứa tối đa kí tự hàm strcpy chép đến 20 kí tự vào nhớ vượt khả lưu trữ khai báo nhớ đệm Hình 17.4 – Một đoạn mã bị lỗi hàm bof() Các bạn tham khảo thêm ví dụ tràn đệm viết ngôn ngữ C overrun.c Hình 17.5 – Một ví dụ khác tràn đệm Trong phần đầu đoạn mã khai báo hai biến kiểu chuỗi gán nhớ cho chúng Tiếp theo biến name cấp phát 10 byte nhớ (có thể lưu tối đa 10 kí tự) biến dangerous_system_command cấp phát đến 128 byte, hacker chạy đè (overrun) lên vùng nhớ biến name thông qua giá trị nhập vào qua biến dangerous_system_command để thực thi shellcode (chúng ta thảo luận chủ đề shell code phần tiếp theo) Khi bạn biên dịch đoạn mã overrun.c linux cho kết sau : Hình 17.6 – Kết biên dịch overrun.c Như vậy, hacker nhập vào biến có độ dài 16 kí tự bị tràn kí tự cho phép thực thị ý muốn cat /etc/passwd hình 17.7 : Hình 17.7 – Cung cấp biến gây lỗi tràn đệm Tìm Kiếm Lỗi Tràn Bộ Đệm Của Ứng Dụng Để tìm kiếm lỗi tràn đệm hacker dùng công cụ BOU (Buffer Overfolw Utility) kiểm tra xem web site có bị lỗi buffer overflow hay không Hay kiểm tra công cụ OllyDbg hình minh họa xác định địa bị ghi đè Hình 17.8 - OllyDbg Một quy trình kiểm tra ứng dụng mẫu sample.exe với OllDbg Debuger nhằm tìm xem có bị lỗi BoF : – Kiểm tra ứng dụng sample.exe (mở chương trình với OllDbg) – Khởi động chương trình OllDbg – Nạp vào số lượng lớn kí tự ví dụ AAAAAAAAAAA vào ứng dụng – Chạy chương trình với liệu đầu vào nạp để kiếm tra báo cáo OllDBG – EIP chưa giá trị 41414141 tượng trưng cho chuỗi AAAA hexa giá trị bị tràn Hình 17.8 – Kiểm tra ứng dụng sample.exe để tìm lỗi tràn đệm Ngoài ra, dùng IDA Pro để xác định ứng dụng bị lỗi tràn đệm, sau danh sách chương trình dùng để kiểm tra lỗi BoF : Hình 17.9 – Các công cu6 kiểm lỗi Buffer Overflow Minh Họa Khai Thác Lỗi Tràn Bộ Đệm Khi hệ thống bị BoF hacker xác định vị trí giá trị gây lỗi để chèn shellcode vào chương trình, thông qua chiếm quyền điều khiển từ xa Những công cụ khai thác phổ biên mà hacker thường sử dụng Metasploit Framework hay Core Impact, Backtrack Trong video minh họa sau sử dụng công cụ khai thác để chiếm quyền điều khiển hệ thống dùng hệ điều hành Windows XP (http://www.youtube.com/watch?v=AKwyY2bfgv8) Hình 17.10 – Khai Thác Thành Công Sau khai thác lỗi tràn đệm dịch vụ netapi Windows XP, hacker chạylệnh máy nạn nhân qua payload reserve shell Tổng Kết Trong chương tìm hiểu quy trình nạp ứng dụng vào nhớ nguyên nhân dẫn đến tình trạng tràn đệm, cần phân biệt trình tự xử lý heap va stack Các bạn lưu ý công cụ mà hacker dùng để phát lỗi chương trình khai thác thông dụng Để không bị công BoF chương trình viết cần tuân theo quy tắt an toàn từ lúc bắt đầu, kiểm tra lỗi cẩn thận với chương trình debug IDA Pro, OllDbg, đặc biệt quan tâm đến hàm hay bị BoF gets, strcpy …Bên cạnh biên dịch nên sử dụng chương trình biên dịch an toàn StackGuard nhằm ngăn chặn địa trả bị ghi đè Kiểm tra biến đầu vào hạn chế thực thi chương trình với quyền root (trên linux) hay quyền quản trị cao Windows Đặt thông báo từ Google với từ khóa liên quan đến chủ đề hay lỗi bảo mật cần quan tâm địa http://www.google.com/alerts minh họa Hình 17.11 – Đặt thông báo với Google Alert Đối với hệ điều hành ứng dụng hoạt động máy chủ cần thường xuyên kiểm tra chương trình NESSUS, Retina, GFI nhằm phát kịp thời ứng dụng hay tiến trình gây lỗi Trongvai trò quản trị hay CEH nên định kì cập nhập vá, hotfix, theo dõi thông tin lỗi bảo mật liên quan đến ứng dụng hay hệ thống mà quan, tổ chức dùng

Ngày đăng: 07/07/2016, 11:56

Tài liệu cùng người dùng

Tài liệu liên quan