1. Trang chủ
  2. » Công Nghệ Thông Tin

Kiểm thử xâm nhập mạng

20 891 6

Đ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

Mục lục Kiểm thử xâm nhập gì? Tại cần kiểm thử xâm nhập? Kiểm thử xâm nhập ( Penetration Testing ) mô phương pháp mà kẻ xâm nhập sử dụng để truy cập trái phép vào hệ thống mạng tổ chức sau thỏa hiệp với chúng  Kiểm thử xâm nhập: - Đánh giá mơ hình bảo mật tổ chức cách tổng thể - Cho thấy hậu tiềm tàng kẻ công thực vi phạm vào mạng Một kiểm thử xâm nhập phân biệt người cơng có mục đích đáng khơng ác ý - Kiểm thử xâm nhập không hồn thành cách chun nghiệp dẫn đến mát dịch vụ gián đoạn ổn định kinh doanh  Tại cần kiểm thử xâm nhập - Xác định mối đe dọa tài sản thông tin tổ chức • Giảm chi phí bảo mật tổ chức đầu tư công nghệ bảo mật cách tốt cách xác định giải lỗ hổng điểm yếu • Cung cấp tổ chức với đảm bảo – đánh giá kỹ lưỡng toàn diện tổ chức an ninh bao gồm sách, thủ tục, thiết kế thực • Đạt trì chứng nhận quy định ngành (BS7799, HIPAA, …) • Thơng qua thực tốt cách xác nhận quy định pháp luật ngành - Đối với thử nghiệm xác nhận hiệu việc bảo vệ an ninh kiểm sốt • Nó tập trung vào lỗ hổng có mức độ cao nhấn mạnh vấn đề bảo mật cấp độ ứng dụng cho nhóm phát triển quản lý • Cung cấp phương pháp tiếp cận tồn diện bước chuẩn bị thực để ngăn chặn khai thác trái phép tới • Đánh giá hiệu thiết bị an ninh mạng firewalls, routers, web servers • Để thay đỏi, nâng cấp sở hạ tầng có phần mềm, phần cứng, thiết kế hệ thống mạng Nêu số mục tiêu cần kiểm thử cho hoạt động kiểm thử xâm nhập Cần ý lập kế hoạch kiểm thử xâm nhập?  số mục tiêu cần kiểm thử: - Truyền tải thất bại, thất bại giao dịch mạng, thơng tin bí mật - Hệ thống phải đối mặt với cộng đồng, trang web, cổng email, tảng truy cập từ xa - Mail, DNS, firewalls, passwords, FTP, IIS, web servers  Chú ý lập kế hoạch kiểm thử: - Kiểm tra phải thực tất thành phần phần cứng phần mềm hệ thống an ninh mạng - Thiết lập tham số cho penetration test mục tiêu, hạn chế, đắn quy trình - Thuê chuyên gia lành nghề giàu kinh nghiệm để thực kiểm tra - Chọn phần kiểm tra phù hợp để cân chi phí lợi ích - Một phương pháp luận với lập kế hoạch tài liệu - Ghi chép kết cách cẩn thận làm cho dễ hiểu cho khách hàng - Nêu rõ rủi ro tiềm ẩn việc tìm kiếm cách rõ ràng báo cáo cuối - Mô tả số loại kiểm thử xâm nhập  External Testing: kiểm tra bên bao gồm phân tích thơng tin cơng khai sẵn có, giai đoạn liệt kê mạng lưới hoạt động thiết bị phân tích an ninh (VD: Web servers, Mail servers, Firewalls, Routers) - Là phương pháp truyền thống để kiểm thử xâm nhập Tập trung vào sở hạ tầng máy chủ phần mềm gồm mục tiêu Có thể thực mà khơng cần biết thơng tin trước trang web (hộp đen) Công bố cấu trúc liên kết môi trường (hộp trắng)  Internal Testing - kiểm tra nội Việc kiểm tra thực từ số điểm truy cập mạng, đại diện cho phân đoạn logic vật lý VD: điều bao gồm lớp DMZs môi trường mạng nội công ty kết nối công ty đối tác Đánh giá an ninh nội theo phương pháp tương tự để kiểm tra bên ngoài, cung cấp nhìn đầy đủ an ninh trang web Mô tả giai đoạn hoạt động kiểm thử xâm nhập  Pre-Attack Phase: giai đoạn trước công - Đề cập đến chế độ công mục tiêu cần phải đạt - Do thám coi giai đoạn giai đoạn trước công để xác định vị trí, thu thập, xác định ghi thơng tin mục tiêu - Hacker tìm kiếm để tìm hiểu nhiều thơng tin nạn nhân tốt - Hacker thu thập thông tin theo nhiều cách khác cho phép chúng xây dựng kế hoạch cơng - Có loại: trinh sát thụ động trinh sát chủ động - Thông tin lấy giai đoạn này: thông tin cạnh tranh, thông tin đăng ký mạng, thông tin DNS mail server, thông tin hoạt động hệ thống, thông tin người dùng, thông tin Chứng nhận xác thực, kết nối tương tự, thông tin liên lạc, thông tin website, địa vật lý logic tổ chức, phạm vi sản phẩm dịch vụ cung cấp công ty mục tiêu có mạng, thơng tin khác có giá trị khai thác  Attack Phase: giai đoạn cơng - Xâm nhập vùng ngồi • Đánh giá báo cáo lỗi quản lý lỗi với thăm dò ICMP • Kiểm tra danh sách kiểm sốt truy cập cách giả mạo câu trả lời với gói liệu thủ cơng • Xác định ngưỡng từ chối dịch vụ cách cố gắng kết nối liên tục đến TCP, đánh giá kết nối chuyển tiếp TCP cố gắng kết nối đến dòng UDP • Đánh giá quy tắc lọc giao thức cách cố gắng kết nối sử dụng giao thức khác SSH, FTP, Telnet9… • Đánh giá khả IDS cách gửi mã độc hại (chẳng hạn URL bị thay đổi) quét mục tiêu khác để đáp ứng lưu lượng truy cập bất thường • Kiểm tra phản ứng hệ thống an ninh vòng ngồi web servers cách sử dụng nhiều phương pháp POST, DELETE COPY - Thu thập mục tiêu Thu thập mục tiêu cần phải tập hợp hoạt động thực tester với đối tượng máy bị nghi ngờ nhiều đến thử thách xâm nhập, chẳng hạn quét lỗ hổng đánh giá an ninh • Phương pháp thử nghiệm đạt mục tiêu bao gồm phần không hạn chế như:  Hoạt động cơng thăm dò: sử dụng kết việc quét mạng để thu thập thêm thông tin dẫn đến thỏa hiệp  Quá trình chạy quét lỗ hổng: trình quét lỗ hổng hoàn thành giai đoạn  Hệ thống đáng tin cậy trình đánh giá độ tin cậy: cố gắng truy cập tài nguyên máy cách sử dụng thông tin hợp pháp thu thông qua kỹ thuật giao tiếp kỹ thuật khác - Đặc quyền nâng lên (kỹ thuật leo thang đặc quyền): dành mục tiêu, tester cố gắng khai thác hệ thống truy cập nguồn tài nguyên bảo vệ Các hoạt động bao gồm (nhưng khơng giới hạn): • Các tester tận dụng lợi sách bảo mật tận dụng lợi email code web khơng an tồn để thu thập thơng tin dẫn đến leo thang đặc quyền • Sử dụng kỹ thuật Brute Force để đạt đặc quyền • Sử dụng Trojans phân tích giao thức • Sử dụng thơng tin thu thập thông qua kỹ thuật kỹ thuật giao tiếp để truy cập trái phép vào nguồn tài nguyên đặc quyền - Thực thi, implant reteract (Thực thi, cấy ghép xem lại) • Thỏa hiệp hệ thống: giai đoạn này, tester có thỏa hiệp hệ thống cách thực đoạn code • Thâm nhập vào hệ thống: mục tiêu trình thâm nhập hệ thống để khám phá mức độ lỗi an ninh • Thực khai thác: thực khai thác có sẵn tay để tận dụng lợi lỗ hổng xác định hệ thống mục tiêu  Post Attack Phase: giai đoạn sau công hoạt động Giai đoạn quan trọng kiểm thử xâm nhập có trách nhiệm để khơi phục lại hệ thống trước Bao gồm hoạt động sau: - Loại bỏ tất tập tin tải lên hệ thống - Làm tất mục đăng ký loại bỏ lỗ hổng - Loại bỏ tất công cụ khai thác từ hệ thống thử nghiệm - Khôi phục lại mạng lưới thử nghiệm cách loại bỏ chia sẻ kết nối - Phân tích tất kết trình bày với tổ chức • Mơ tả cơng cụ mà em biết trợ giúp giai đoạn tương ứng hoạt động kiểm thử xâm nhập  Pre-Attack Phase: giai đoạn trước công: Acunetix, Nessus, Wireshark, Nmap, tcpdump, netstat, snort, Wapiti  Attack Phase: giai đoạn công: Metasploit, Ettercap, SQLmap, Reaver  Post Attack Phase: giai đoạn sau công hoạt động Tấn công vào yếu tố người( social engineering) gì? Tại kỹ thuật lại hiệu thực tế? - Social Engineering nghệ thuật thuyết phục người tiết lộ thông tin bí mật Social Engineering phụ thuộc vào thứ mà người thông tin chúng bất cẩn việc bảo vệ - Tại hiệu : • Khơng có phần mêm hay phần cứng chống lại cơng Social Engineering • Chính sách bảo mật mạnh liên kết yếu người yếu tố nhạy cảm • Rất khó để phát Social Engineering • Khơng có phương pháp chắn để đảm bảo an ninh cách đầy đủ từ công Social Engineering Mô tả mục tiêu môt tấn công vào yếu tố người Mô tả giai đoạn công - Các mục tiêu: + User Client + Nhân viên tiếp tân nhân viên hỗ trợ + Giám đốc hỗ trợ kỹ thuật + Người quản trị hệ thống + Người bán hàng tổ chức mục tiêu + Nhân viên văng phòng - Các giai đoạn: + Nghiên cứu công ty mục tiêu : Durmpster diving, trang web, nhân sự, lịch trình… + Lựa chọn nạn nhân: Xác định nhân viên khơng hài lòng sách công ty mục tiêu + Phát triển mối quan hệ : Phát triển mối quan hệ với nhân viên lựa chọn + Khai thác mối quan hệ: Tập hợp thông tin tài khoản nhạy cảm, thông tin tài chính, cơng nghệ Phân loại mô tả số loại công vào yếu tố người Human-based :Tập hợp thông tin nhạy cảm cách khai thác tin tưởng, sợ hãi, giúp đỡ - - Eavesdropping + Nghe nghe trái phép hội thoại đọc tin nhắn + Chặn lại hình thức âm thanh, video văn + Eavesdropping sử dụng với kênh truyền thông khác đường dây điện thoại, email, tin nhắn tức thời, vv Shoulder Surfing + Shoulder Surfing tên cho quy trình mà kẻ trộm sử dụng để tìm mật khẩu, số chứng minh nhân dân, số tài khoản, vv + Kẻ trộm nhìn qua vai bạn chí quan sát từ khoảng cách xa cách sử dụng ống nhòm, để có chút thông tin Computer-based: Social Engineering thực giúp đỡ máy tính • cửa sổ windows tự động bật lên lướt web yêu cầu thông tn người dùng để đăng nhập đăng ký pop-up windows người sử dụng • thư Hoax email cảnh báo vấn đề cho người dùng virus, troijan, sâu làm tổn hại đến hệ thống máy tnh Hoax leters số người khác thư cung cấp quà tặng miễn phí tền hay phần mềm kèm theo điều kiện người dùng phải chuyển tếp thư đến • thu thập thơng tn cá nhân cách nói chuyện với người dùng trực tuyến lựa chọn để lấy thơng tn • email khơng mong muốn không yêu cầu dùng để thu thập thơng tn tài chính, thơng tn mạng • chain leters messenger Instant chat spam email • - pop-ups:Cửa sổ pop-ups lừa đảo bật liên click chuột vào liên kết chuyển hướng chúng đến trang web giả mạo yêu cầu thông tin cá nhân tải trương trình độc hại Keyloggers, Troijan, phần mềm gián điệp phishing: • Một email giả bất hợp pháp tự nhận đến từ web hợp pháp cố gắng để có thơng tin cá nhân tài khoản người dùng • Các email Phishing Pop-Up chuyển hướng người dùng tới trang web giả mạo bắt trước trang web đáng tin cậy yêu cầu họ gửi thông tin nhân họ 10 Trình bày phương pháp cơng cụ đối phó với cơng vào yếu tố người Chính sách : Những sách tốt thủ tục không hiệu họ không giảng dạy tăng cường cho nhân viên Sauk hi đào tạo, nhân viên phải ký tuyên bố thừa nhận họ hiểu sách - Các sách mật khẩu: thay đổi mật định kỳ, tránh mật dễ đoán, mật phải có độ dài tính phức tạp, giữ bí mật mật - Các sách an ninh vật lý: nhận diện nhân viên cách phát thẻ id, đồng phục, hệ thống khách mời, hạn chế khu vực truy cập, băm nhỏ tài liệu bô dụng, tuyển dụng nhân viên an ninh Đào tạo: Một chương tình đào tạo hiệu nên bao gồm tấtcả sách bảo mật phương pháp để nâng cao nhận thức Social Engineering Nguyên tắc hoạt động : Đảm bảo an ninh thông tin nhạy cảm ủy quyền sử dụng tài nguyên Phân loại thông tin : Phân loại thông tin tối mật, độc quyền, sử dụng nội bộ, sử dụng công cộng Đặc quyền truy cập : cần phải có quản trị viên, người sử dụng tài khoản phải ủy quyền thích hợp tần suất phản hồi thích hợp : cần có phản ứng thích hợp cho trường hợp cố gắng sử dụng Social Engineering Kiểm tra nhân viên xử lý đình đắn: Trong nội tiềm tàng hình nhân viên bị thơi việc dễ dàng cho việc mua thông tin 8 Xác thực thành phần : Thay mật cố định, sử dụng xác thực hai thành phần cho dịch vụ mạng có nguy cao VPN Modem Pool Phòng thủ Anti-Virus/Anti-Phishing : sử dụng nhiều lớp để phòng chống virus người dùng đầu cuối mail gateway để giảm thiểu công Social Engineering 10 Thay Đổi Cơng tác quản lí : việc thay đổi quy trình quản lí tài liệu bảo mật q trình ad-hoc Các cơng cụ đối phó : Netcraft, PhishTank 11 Xâm nhập vật lý gì? Trình bày giai đoạn công vật lý - Xâm nhập vât lý thuật ngữ bảo mật máy tính đề cập đến khả người để truy cập vào hệ thống máy tính Việc cho phép truy cập vật lý vào văn phòng , kẻ cơng có hiểu biết nhanh chóng tìm thơng tin cần thiết để truy cập vào hệ thống mạng máy tính tổ chức - Các giai đoạn cơng vật lý • Giai đoạn 1: Trinh sát  Là giai đoạn chuẩn bị, kẻ cơng tìm kiếm, thu thập thơng tin mục tiêu công  Nhiều thông tin mục tiêu tìm hiểu, nhằm mục đích công diễn cách thuận lợi  Trinh sát bao gồm hoạt động tìm hiểu khách hàng, nhân viên, mạng, hệ thống…của mục tiêu • Giai đoạn 2: Quét  Trước công: sở thông tin thu thập trình trinh sát, kẻ cơng qt mạng lưới thơng tin cụ thể  Quét cổng: quét bao gồm việc sử dụng trình quay số, máy quét cổng, lập đề mạng, quét bao quát, quét lỗ hổng…  Khai thác thông tin: kẻ công khai thác thơng tin tên máy tính, địa IP, tài khoản người dùng để bắt đầu công • Giai đoạn 3: Truy cập  Kẻ công truy cập vào hệ thống điều hành ứng dụng mạng qua lỗ hổng  Kẻ công tiến hành nâng cấp quyền để điều khiển tồn hệ thống Kẻ công tiến hành đánh cắp liệu sau nâng cấp quyền thành công Ví dụ: bẻ mật khẩu, tràn đêm, từ chối dịch vụ… • Giai đoạn 4: Duy trì truy cập  Là gia đoạn mà kẻ công cố gắng giữ lại quyền sở hữu hệ thống  Kẻ công sử dụng hệ thống chiếm để bắt đầu công  Kẻ cơng tải lên, tải về, thao tác với liệu, ứng dụng cấu hình hệ thống sở hữu • Giai đoạn 5: Xóa dấu vết  Là giai đoạn mà kẻ công thực hoạt động nhằm che dấu hành vi cơng  Kẻ cơng thực việc xóa dấu vết nhằm mục đích là: xóa chứng liên quan đến thân, để không bị phát hay ý sau tiếp tục truy cập vào hệ thống nạn nhân  Kẻ cơng xóa ghi máy chú, hệ thống ứng dụng để tránh bị nghi ngờ 12 Mô tả số kỹ thuật xâm nhập vật lý phổ biến mà em học Ví dụ thu thập thơng tin, cách vượt qua biện pháp kiểm soát truy cập, biện pháp an ninh,… 13 Kỹ thuật Fuzzing gì? Tại kỹ thuật lại quan trọng? Có kiểu fuzzing nào?  Fuzzing kỹ thuật sử dụng để phát lỗ hổng đoạn code trước phát hành Đó cách thử nghiệm lỗi hệ thống Trong kiểm thử này, thay gửi liệu hợp lý (được xử lý mã nguồn), hệ thống kiểm thử nhận đầu vào chuỗi đầu vào không hợp lệ bán hợp lệ thông qua giao diện tương tác Chương trình framework tạo kiểm thử fuzz (fuzz test) thực thi kiểm thử gọi fuzzer Q trình fuzzing khơng việc gửi nhận thông điệp Việc giám sát mục tiêu cần thực liên tục, tất thất bại ghi lại để đánh giá lần sau Một phần quan trọng trình fuzzing giám sát mã lệnh, xử lý đầu vào không hợp lệ  Tại kỹ thuật lại quan trọng : - Có hiệu việc tìm kiếm lỗi - Tiết kiệm thời gian lựa chọn thay rẻ để kiếm tra an ninh thủ công - Giúp ngăn ngừa việc người bên ngồi tìm thấy lỗi phần mềm bạn  Phân loại fuzzing Mục tiêu fuzzing ứng dụng, bao gồm file định dạng, giao thức mạng, tham số dòng lệnh, biến mơi trường, ứng dụng Web nhiều thứ khác File định 10 dạng giao thứcmạng mục tiêu phổ biến fuzzing, loại chương trình đầu vào mờ hóa (fuzzed) Việc phân loại fuzzing tùy thuộc vào attack vectors, mục tiêu fuzzing, phương pháp fuzzing, v v… Tuy nhiên, có hai phương pháp phân loại phổ biến đây: - Kiểm thử mờ dựa đột biến(Mutation Based Fuzzing) - Kiểm thử mờ dựa hệ (Generation Based Fuzzing) 14 Dumb fuzzing gì? Smart fuzzing gì? Chúng dùng trường hợp nào? • Kiểm thử mờ dựa đột biến(Mutation Based Fuzzing): Hay gọi kiểm thử mờ câm (Dumb Fuzzing), phương pháp biến đổi mẫu liệu có để tạo liệu kiểm thử Đối với cách tiếp cận : + Người thực khơng có kiến thức cấu trúc yếu tố đầu vào giả định +Tính dị thường thêm vào đầu vào hợp lệ có hồn tồn ngẫu nhiên theo số chẩn đoán mặt kinh nghiệm + Phụ thuộc vào yếu tố đầu vào sửa đổi +Yêu cầu việc thiết lập thời gian đơn giản khơng cần thiết v.v… • Kiểm thử mờ dựa hệ (Generation Based Fuzzing) hay gọi kiểm thử mờ thông minh (Smart Fuzzing): Xác định liệu kiểm thử dựa mơ hình đầu vào Đối với cách tiếp cận : + Trường hợp thử nghiệm tạo từ số mô tả định dạng: RFC, định dạng tài liệu v.v… + Tính dị thường thêm vào điểm có đầu vào + Hỗ trợ kiến thức giao thức nên cho kết tốt so với fuzzing ngẫu nhiên + Có thể thời gian đáng kể để thiết lập 15 Mô tả cách thức đánh giá fuzzing dựa mức độ bao phủ mã lệnh (code coverage) - Mức độ bao phủ mã lệnh số liệu sử dụng để xác định số lượng mã thực thi - Dữ liệu thu cách sử dụng nhiều cơng cụ định hình Ví dụ: Gcov - Có mức độ bao phủ mã lệnh: o Độ bao phủ dòng (Line coverage): Đo số lượng dòng source code thực thi o Độ bao phủ điều kiện (Branch coverage): Đo số lệnh rẽ nhánh lấy (lệnh jmps có điều kiện) o Độ bao phủ đường (Path coverage): Đo số lượng đường (paths) lấy Yêu cầu: o test case cho line coverage 11 test cases cho branch coverage test cases cho path coverage:  VD: (a, b) = {(0,0), (3,0), (0,3), (3,3)} Vấn đề Code Coverage: o Mã bao phủ mà khơng tìm thấy lỗi o Hầu thiếu kiểm tra lỗi code (và không đặc biệt quan tâm đến nó) o Chỉ truy cập vào "bề mặt công"  VD: Mã xử lý người dùng kiểm sốt liệu  Khơng có cách dễ dàng để đo bề mặt cơng Code coverage đánh giá được: o File khởi tạo có tốt hay khơng o Cho biết bạn có bị kẹt đâu không o So sánh fuzzer X với fuzzer Y o Cho biết bạn có lợi ích chạy fuzzer khác hay không o o - - 16 Mô tả phân vùng nhớ process, tác dụng phân vùng? Mỗi tiến trình thực thi hệ điều hành cấp cho không gian nhớ ảo (logic) giống Không gian nhớ gồm vùng : Vùng text vùng cố định, chứa mã lệnh thực thi (instruction) liệu đọc (read-only) Vùng chia sẻ tiến trình thực thi file chương trình tương ứng với phân đoạn text file thực thi Dữ liệu vùng đọc, thao tác nhằm ghi lên vùng nhớ gây lỗi segmentation violation Vùng data chứa liệu khởi tạo chưa khởi tạo giá trị Các biến toàn cục biến tĩnh chứa vùng Vùng data tương ứng với phân đoạn databss file thực thi Vùng nhớ Heap sử dụng để cấp phát nhớ thông qua kỹ thuật cấp phát động Sử dụng từ khóa new để cấp phát động Toán tử new sau thực thi thành công trả địa vùng nhớ cấp phát heap, sử dụng trỏ có kiểu liệu phù hợp để lưu trữ địa trả này, trỏ cơng cụ giúp xác định vị trí vùng nhớ cấp phát đâu, thông qua trỏ để giải phóng vùng nhớ cấp phát Vùng stack vùng nhớ dành riêng thực thi chương trình dùng để chứa giá trị biến cục hàm, tham số gọi hàm giá trị trả Thao tác nhớ stack thao tác theo chế "vào sau trước" - LIFO (Last In, First Out) với hai lệnh quan trọng PUSH POP Trong phạm vi viết này, tập trung tìm hiểu vùng stack 12 17 Stack frame gì? Vẽ stack frame hàm main (ví dụ stack1) Stackframe vùng nhớ ngăn xếp Vùng nhớ ngăn xếp hàm bắt đầu với đối số, địa trả về, giá trị EBP cũ, biến nội Mơ hình khơng thay đổi nên xác định vai trò ngăn xếp vai trò ngăn xếp khác xác định ví dụ stack1 Stackframe cho ví dụ 18 Con trỏ trở (old eip) lưu stack gì? Con trỏ trả ghi eip cũ, lưu địa lệnh thực chương trình cha sau kết thúc chương trình 19 Mô tả tác dụng ghi: ESP, EIP, EBP EIP Được cập nhật có lệnh thực để trỏ đến lệnh Khác với ghi khác EIP bị tác động trực tiếp lệnh ESP Thanh ghi trỏ tới đỉnh thời ngăn xếp EBP Được sử dụng để truy nhập liệu ngăn xếp Thanh ghi EBP thường kết hợp với ESP bắt gặp lời gọi hàm, trước hàm thực địa 13 trở chương trình (tức địa câu lệnh lời gọi hàm) cất vào ngăn xếp 20 Lỗi tràn đệm Lỗi tràn đệm (Buffer Overflow) điều kiện bất thường tiến trình lưu trữ liệu vượt biên nhớ đệm có chiều dài cố định Kết liệu đè lên nhớ liền kề Dữ liệu bị ghi đè bao gồm nhớ đệm khác, biến liệu điều khiển luồng chảy chương trình (program flow control) 21 Vẽ sơ đồ trạng thái stack a) Vẽ sơ đồ trạng thái stack gọi hàm foo1(), vị trí ebp, esp … Biến cục EBP cũ Eip (địa trả về) B(int) Stack frame main … b) Khi hàm main() gọi foo1(), truyền tham số cho hàm foo1() cách Nó push tham số b vào stack trước gọi hàm foo1() c) Làm cách để báo cho foo1() biết vị trí lệnh cần quay lại để thực tiếp hàm main()? Giá trị EIP cũ (địa sau lệnh call foo1() ) lưu vào stack, hàm foo1() chạy xong đẩy giá trị EIP cũ vào EIP, từ chương trình quay lại d) Địa biến cục stack hàm foo1() tính cách nào? Dùng EBP để tính 14 22 Nhập chuỗi để in chuỗi "You win!" hình cho đoạn code Vẽ trạng thái ngăn xếp cần đạt Biên dịch chương trình: $ gcc -fno-stack-protector -ggdb –mpreferred-stack-boundary=2 /stack1.c -o stack1 Cách 1: Sử dụng python để nhập chuỗi: python –c ‘print”a”*16 + “DCBA” ‘ | /stack1 Cách 2: Chạy chương trình Nhập chuỗi: “1234567890123456DCBA” 23 Các option lệnh dịch có ý nghĩa $ gcc -fno-stack-protector -ggdb /stack.c -o stack ý nghĩa : - Gcc: Biên dịch từ file stack.c sang file thực thi stack 15 -fno-stack-protector : Tắt tính kiểm tra việc bảo vệ stack (Disable Stack Protector Check) -ggdb: Tạo thông tin gỡ lỗi để phục vụ cho trình gỡ lỗi gdb sử dụng -o: đưa output lệnh vào 24 Quy ước kết thúc nhỏ (little endian) xử lý Intel X86 hiểu nào? Endian cách tổ chức liệu tảng máy tính Bộ nhớ máy tính xem mảng có kích thước lớn, chia làm nhiều ơ, có kích thước byte Nếu liệu bạn gói gọn byte, nghĩa lần bạn xử lý byte khơng có khác biệt Vấn đề xảy liệu bạn vượt byte, ví dụ bạn cần lưu trữ số nguyên Khi byte biến số nguyên lưu vào nhớ máy tính theo thứ tự nào? Ở tảng sử dụng little endian, Least Significant bit (LSB – bit bên phải nhất) lưu ô nhớ có địa nhỏ Most Significant Bit (MSB-bit bên trái nhất) lưu ô nhớ có địa lớn vùng lưu trữ biến Xét lại ví dụ trên, việc lưu trữ số nguyên 7411 vào nhớ máy tính minh họa sau: 25 Thư viện ltrace dùng để làm gì? Ltrace sử dụng để theo dõi lời gọi hệ thống, hay sử dụng để theo dõi gọi thư viện chia sẻ Điều hữu ích để nhìn sâu vào dòng chương trình ứng dụng phân tích vấn đề - ltrace tiện ích gỡ lỗi Linux, sử dụng để hiển thị lời gọi ứng dụng vùng người dùng có thư viện chia sẻ Nó làm điều cách gắn vào hệ thống nạp động, để hiển thị thông số mà ứng dụng sử dụng thực lời gọi Một nhược điểm với ltrace truy vết gọi từ thực thi để thư viện thực thi liên kết - khơng theo dõi gọi thư viện! Do đó, gọi đến hàm printf () (mà thân nằm thư viện chia sẻ libc) khơng hiển thị kết Ngồi ra, khơng có tùy chọn để bao gồm tên thư viện đầu cho chức gọi 26 Hãy mô tả số chế bảo vệ nhớ hệ điều hành - Cơ chế phân bố không gian địa ngẫu nhiên(nhân)-(ASLR) kỹ thuật bảo mật máy tính liên quan đến việc ngăn ngừa lỗ hổng nhớ Để ngăn chặn kẻ 16 cơng nhảy đáng tin cậy, ví dụ chức bị khai thác đặc biệt nhớ, ASLR xếp ngẫu nhiên vị trí khơng gian địa vùng liệu trình, bao gồm sở thực thi vị trí stack, heap thư viện - Cơ chế bảo vệ ngăn xếp thực thi: + Trong bảo mật máy tính, khả thực bảo vệ không gian đánh dấu khu vực nhớ không thực thi được, mà nỗ lực để thực mã máy khu vực gây ngoại lệ Nó sử dụng tính phần cứng bit NX (khơng thực bit), số trường hợp mô phần mềm tính Tuy nhiên, cơng nghệ mà cách mơ cung cấp bit NX thường áp đặt chi phí đo được; Trong sử dụng bit NX cung cấp phần cứng khơng đòi hỏi chi phí vượt trội + Nếu hệ điều hành đánh dấu số tất vùng ghi nhớ khơng thực thi được, ngăn khơng cho ngăn xếp vùng nhớ heap khỏi thực thi Điều giúp ngăn chặn số lỗ hổng tràn đệm định từ thành công, đặc biệt cú công thực thi mã sâu Sasser Blaster Các công dựa vào phần nhớ, thường ngăn xếp, ghi chạy được; Nếu không, công thất bại - Cơ chế Stack Smashing Protector(SSP): Tính biên dịch giúp phát stack buffer overrun cách hủy bỏ giá trị bí mật ngăn xếp thay đổi Điều phục vụ mục đích kép để làm cho xuất lỗi nhìn thấy khai thác giảm nhẹ chương trình định hướng trả SSP đơn phát stack buffer overruns, họ ngăn cản Việc phát bị đánh bại cách chuẩn bị đầu vào cho ngăn xếp Canary ghi đè giá trị khơng cung cấp bảo vệ hồn hảo Các canary stack có kích thước từ gốc chọn cách ngẫu nhiên, kẻ cơng phải đốn giá trị ^ 32 ^ 64 kết hợp (và tiết lộ lỗi đoán sai) dùng phương tiện thông minh để xác định - Cơ chế Executable Stack Protection: + Trong bảo mật máy tính, khả thực bảo vệ không gian đánh dấu khu vực nhớ không thực thi được, mà nỗ lực để thực mã máy khu vực gây ngoại lệ Nó sử dụng tính phần cứng bit NX (không thực bit), số trường hợp mô phần mềm tính Tuy nhiên, cơng nghệ mà cách mơ cung cấp bit NX thường áp đặt chi phí đo được; Trong sử dụng bit NX cung cấp phần cứng khơng đòi hỏi chi phí vượt trội + Nếu hệ điều hành đánh dấu số tất vùng ghi nhớ khơng thực thi được, ngăn không cho ngăn xếp vùng nhớ heap khỏi thực thi Điều giúp ngăn chặn số lỗ hổng tràn đệm định từ thành công, đặc biệt cú công thực thi mã sâu Sasser Blaster Các 17 công dựa vào phần nhớ, thường ngăn xếp, ghi chạy được; Nếu không, công thất bại 27 Làm cách để viết mã máy chèn vào chương trình thực thi? Mã máy chèn vào nằm phân vùng nhớ chương trình? • Cách để viết mã máy: - Cách dài dòng: viết đoạn C, dùng gdb dịch assembly xem nào, sau viết assembly dịch mã máy - Cách ngắn: viết thẳng assembly dịch mã máy - Cách đơn giản: chép bytecode người khác viết sẵn - cách nguy hiểm nhiễm mã độc - Cách chuyên nghiệp: xây dựng thư viện bytecode cho riêng • Mã máy chèn vào nằm phân vùng nhớ chương trình? - Mã máy chèn vào buffer bị tràn, buffer nằm stack nên hacker thực hiện:  Làm tràn đệm (đến return addr) địa buffer  Đặt shellcode vào buffer - Như địa trả trỏ đến shellcode, shellcode đổ root shell Tuy nhiên, thật khó để làm có ret addr trỏ đến shellcode Có cách khác, đặt vào đầu buffer dãy lệnh NOP (không xử lí), đẩy shellcode vào sau NOPs Như thay đổi ret addr trỏ đến nơi đầu buffer, lệnh NOP thi hành, chúng khơng làm Đến gặp lệnh shellcode, shellcode làm nhiệm vụ đổ roor shell 28 Nêu số vấn đề gặp phải tạo chèn bytecode vào chương trình thực thi (vd NULL byte, IDS, chế bảo vệ nhớ, sinh bytecode cho tảng khác )? Làm cách để xử lý nó? a Vấn đề NULL byte: Vunlnerable code đọc liệu vào buffer mà khơng kiểm tra kích thước, bị tràn đệm Ví dụ: #include int main(int argc, char **argv) { char buffer[500]; if (argv[1] != NULL) { strcpy(buffer, argv[1]); } return 0; } Hàm strcpy copy thấy NULL byte, đánh dấu hết chuỗi nhập dừng Nhưng shellcode có NULL byte trong, shellcode bị ngắt chừng - cách xử lý : 18 Sau kiểm tra mã máy, dễ thấy NULL byte lệnh mov eax, (4 byte 0) mov eax, 11 ( byte đầu 11 0) Dễ dùng asembly để giải vấn đề b Tránh phát chữ ký shellcode hệ thống IDS dò tìm: - Khi viết shellcode thực tác vụ phổ biến, chữ ký shellcode dễ dàng bị phát hệ thống IDS => cách xử lý:  Sinh mã máy tự động với tool : - Một số tool tự động : online x86/x64 Assembler and Disassembler - Sử dụng Keystone Capstone (có hỗ trợ nhiều kiến trúc tảng )  Hoặc sử dụng đoạn mã có sẵn tin dùng đặc biệt mạng c Cơ chế bảo vệ stack không cho thực thi (non- executable stack): Như chế "Data Execution Prevention" (DEP) Windows OS chống thực thi stack Linux Không thể đặt shellcode vào buffer bị tràn => xử lý số chế bảo vệ Linux d Chỗ đặt shellcode - Chỗ để shellcode(buffer) nhỏ size shellcode lớn => cách xử lý : Truyền shellcode qua biến mơi trường 29 NOP sled gì? Tại cần dùng NOP sled? * NOP sled gì? - NOP (No Operation) lệnh mà gặp lệnh NOP, CPU khơng làm ngồi việc tăng trỏ lệnh đến lệnh - NOP sled đệm NOP sử dụng khai thác, đặt trước đệm khai thác, eip trỏ đến NOP sled, vi xử lý nhảy đến thực mã khác thác - Nó giải vấn đề việc tìm kiếm địa xác đệm cách có hiệu tăng kích thước khu vực mục tiêu - Khi khơng biết địa xác shellcode, thêm lệnh nop vào để điền đầy buffr cho dễ thực * Tại cần dùng NOP sled? Dùng NOP sled để đoán gần địa buffer chương trình bị lỗi: Thơng thường, ta khơng thể biết cách xác địa đệm chương trình bị lỗi (phụ thuộc vào biến mơi trường, tham số thực thi), ta xác định cách gần Điều có nghĩa phải tổ chức đệm chứa shellcode cho bắt đầu địa lệch so với địa xác mà shellcode thực thi không bị ảnh hưởng NOP sled giúp ta đạt điều cách: 19 + Lấy stack pointer hành chương trình làm mốc xê dịch xuống địa thấp chút đụng chuỗi NOP sled + Vì stack pointer ta thấy có nhiều khả nằm cao stack pointer chương trình bị khai thác, chương trình bị khai thác phải làm nhiều việc, stack ‘dài’ Như vậy, lấp đầy phần đầu đệm lệnh NOP, kế shellcode Hơn nữa, để khơng phải tính tốn xác vị trí lưu trỏ lệnh bảo lưu stack, đặt shellcode khoảng đệm, phần lại chứa toàn giá trị địa bắt đầu shellcode 20 ...Một kiểm thử xâm nhập phân biệt người cơng có mục đích đáng khơng ác ý - Kiểm thử xâm nhập không hồn thành cách chun nghiệp dẫn đến mát dịch vụ gián đoạn ổn định kinh doanh  Tại cần kiểm thử xâm. .. an ninh mạng firewalls, routers, web servers • Để thay đỏi, nâng cấp sở hạ tầng có phần mềm, phần cứng, thiết kế hệ thống mạng Nêu số mục tiêu cần kiểm thử cho hoạt động kiểm thử xâm nhập Cần... cho hoạt động kiểm thử xâm nhập Cần ý lập kế hoạch kiểm thử xâm nhập?  số mục tiêu cần kiểm thử: - Truyền tải thất bại, thất bại giao dịch mạng, thơng tin bí mật - Hệ thống phải đối mặt với

Ngày đăng: 14/06/2018, 19:30

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    2. Kiểm thử xâm nhập là gì? Tại sao chúng ta cần kiểm thử xâm nhập?

    3. Nêu một số mục tiêu cần kiểm thử cho một hoạt động kiểm thử xâm nhập. Cần chú ý những gì khi lập kế hoạch kiểm thử xâm nhập?

    4. Mô tả một số loại kiểm thử xâm nhập

    6. Mô tả công cụ mà em biết có thể trợ giúp trong từng giai đoạn tương ứng của một hoạt động kiểm thử xâm nhập

    7. Tấn công vào yếu tố con người( social engineering) là gì? Tại sao kỹ thuật này lại hiệu quả thực tế?

    8. Mô tả về các mục tiêu của môt tấn cuộc tấn công vào yếu tố con người. Mô tả các giai đoạn của một cuộc tấn công này

    9. Phân loại và mô tả một số loại tấn công vào yếu tố con người

    13. Kỹ thuật Fuzzing là gì? Tại sao kỹ thuật này lại quan trọng? Có các kiểu fuzzing nào?

    14. Dumb fuzzing là gì? Smart fuzzing là gì? Chúng được dùng trong trường hợp nào?

    15. Mô tả cách thức đánh giá fuzzing dựa trên mức độ bao phủ mã lệnh (code coverage)

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

TÀI LIỆU LIÊN QUAN

w