freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

常用信息加密技術(shù)介-網(wǎng)絡(luò)信息安全-資料下載頁

2025-01-21 14:52本頁面
  

【正文】 址 90 Linux下發(fā)掘程序的 buffer overflows漏洞 ? 利用 shellcode構(gòu)造出一個(gè) buffer ? 猜測(cè)返回地址 ? 從棧頂 (固定 )一直往下猜,兩個(gè)參數(shù): ?Retval的個(gè)數(shù) ?緩沖區(qū)離棧頂?shù)钠? Ret val shellcode Ret val Ret val … …… para1 Retadd 正常的 Buffer 高地址 低地址 ? 改進(jìn):提高猜中的概率 Ret val shellcode Ret val NOPs Ret val … Buffer: 91 緩沖區(qū)溢出攻擊 ? 4. 緩沖區(qū)溢出防御措施 ? ( 1) 安裝安全補(bǔ)丁 。 ? ( 2) 編寫安全的代碼 :緩沖區(qū)溢出攻擊的根源在于編寫程序的機(jī)制。因此,防范緩沖區(qū)溢出漏洞首先應(yīng)該 確保 在 Linux系統(tǒng)上運(yùn)行的程序(包括系統(tǒng)軟件和應(yīng)用軟件) 代碼的正確性 , 避免程序中有不檢查變量、緩沖區(qū)大小及邊界等情況存在 。比如,使用 grep工具搜索源代碼中容易產(chǎn)生漏洞的庫調(diào)用,檢測(cè)變量的大小、數(shù)組的邊界、對(duì)指針變量進(jìn)行保護(hù),以及使用具有邊界、大小檢測(cè)功能的 C編譯器等。 92 緩沖區(qū)溢出攻擊 ? ( 3) 基于一定的安全策略設(shè)置系統(tǒng) :攻擊者攻擊某一個(gè) Linux系統(tǒng),必須事先通過某些途徑對(duì)要攻擊的系統(tǒng)做必要的了解,如版本信息等,然后再利用系統(tǒng)的某些設(shè)置直接或間接地獲取控制權(quán)。因此,防范緩沖區(qū)溢出攻擊就要對(duì)系統(tǒng)設(shè)置實(shí)施有效的安全策略。這些策略種類很多,下面只列舉幾個(gè)典型措施。 ?在裝有 Tel服務(wù)的情況下,通過手工改寫 “ /etc/” 文件中的Tel設(shè)置,使得遠(yuǎn)程登錄的用戶無法看到系統(tǒng)的提示信息。具體方法是將Tel設(shè)置改寫為: tel stream tcp nowait root /usr/sbin/tcpd/ h末尾加上 “ h” 參數(shù)可以讓守護(hù)進(jìn)程不顯示任何系統(tǒng)信息,只顯示登錄提示。 ?改寫 “ ” 文件。默認(rèn)情況下,當(dāng)?shù)卿?Linux系統(tǒng)時(shí)系統(tǒng)運(yùn)行 件,顯示該 Linux發(fā)行版本的名字、版本號(hào)、內(nèi)核版本和服務(wù)器名稱等信息,這使得大量系統(tǒng)信息被泄露。將 “ ” 文件中顯示這些信息的代碼注釋掉,可以使系統(tǒng)不顯示這些信息。 93 緩沖區(qū)溢出攻擊 ?一種方法是在顯示這些信息的代碼行前加 “ ” : – … echo /etc/issue – echo $R/etc/issue – echo Kernel $ (uname r)on $a $(uname m)/etc/issue – – echo /etc/issue… ?另一種方法是將保存有系統(tǒng)信息的文件 /etc/ issue刪除。這兩個(gè)文件分別用于在遠(yuǎn)程登錄和本地登錄時(shí)向用戶提供相關(guān)信息。刪除這兩個(gè)文件的同時(shí),仍需要完成方法一中的注釋工作,否則,系統(tǒng)在啟動(dòng)時(shí)將會(huì)自動(dòng)重新生成這兩個(gè)文件。 – 禁止提供 finger服務(wù)。使用 finger命令可以顯示本地或遠(yuǎn)程系統(tǒng)中目前已登錄用戶的詳細(xì)信息。禁止提供 finger服務(wù)的有效方法是,通過修改該文件屬性、權(quán)限,使得只有 root用戶才可以執(zhí)行該命令。 – 處理 “ ” 文件。該程序通過 “ /etc/” 文件獲得 id在監(jiān)聽哪些網(wǎng)絡(luò)端口,為每個(gè)端口啟動(dòng)哪些特定服務(wù)等信息,會(huì)泄露大量的敏感信息。 94 緩沖區(qū)溢出攻擊 ? ( 4)保護(hù)堆棧 ?加入函數(shù)建立和銷毀代碼。前者在函數(shù)返回地址后增加一些附加字節(jié),返回時(shí)要檢查這些字節(jié)有無被改動(dòng)。 ?使堆棧不可執(zhí)行 ——非執(zhí)行緩沖區(qū)技術(shù),使入侵者無法利用緩沖區(qū)溢出漏洞。 95 為什么不寫出不受影響的代碼來? ? 編程的問題都可以在開發(fā)階段防止,事實(shí)上,并沒有這么簡(jiǎn)單 ? 有些開發(fā)人員沒有意識(shí)到問題的存在 ? 有些開發(fā)人員不愿意使用邊界檢查,因?yàn)闀?huì)影響效率和性能 ? 另一方面,許多遺留下來的代碼還很多 ? 在開發(fā)過程中,盡量使用帶有邊界檢查的函數(shù)版本,或者自己進(jìn)行越界檢查 96 一些典型的 buffer overflows漏洞 ? NetMeeting buffer overflow ? 文章 “ The Tao of Windows Buffer Overflow” 描述了漏洞發(fā)掘過程 ? Outlook ? 當(dāng)客戶接收郵件的時(shí)候,畸形的郵件頭信息會(huì)導(dǎo)致 buffer overflows,然后就可以執(zhí)行惡意代碼或者拒絕服務(wù) ? Linuxconf ? Linuxconf允許遠(yuǎn)程通過 Web對(duì)系統(tǒng)進(jìn)行管理,當(dāng)收到的 頭中包含過量的信息時(shí),會(huì)產(chǎn)生緩沖區(qū)溢出 ? ToolTalk ? ToolTalk是一個(gè) RPC服務(wù),攻擊者連接到 ToolTalk端口,然后發(fā)送包含惡意代碼的命令,可導(dǎo)致緩沖區(qū)溢出 ? …… (大量的服務(wù)器應(yīng)用程序都包含 buffer overflows漏洞 ) 97 格式化字符串攻擊 ? 格式化字符串攻擊也稱為格式化字符串漏洞,同其他許多安全漏洞一樣是由于程序員的疏漏造成的。不過,這種疏漏來自程序員使用格式化字符串函數(shù)的不嚴(yán)謹(jǐn)。 98 格式化字符串攻擊 ? 1. 格式化字符串函數(shù)族 ? ANSI C定義了一系列的格式化字符串函數(shù),如 ? printf——輸出到一個(gè) stdout流。 ? fprintf——輸出到一個(gè)文件流。 ? sprintf——輸出到字符串。 ? snprintf——輸出到字符串并檢查長(zhǎng)度。 ? vprintf——從 va_arg結(jié)構(gòu)體輸出到一個(gè) stdout流。 ? vfprintf——從 va_arg結(jié)構(gòu)體輸出到一個(gè)文件流。 ? vsprintf——從 va_arg結(jié)構(gòu)體輸出到一個(gè)字符串。 ? vsnprintf——從 va_arg結(jié)構(gòu)體輸出到一個(gè)字符串并檢查長(zhǎng)度。 ? 基于這些函數(shù)的復(fù)雜函數(shù)和非標(biāo)準(zhǔn)函數(shù),包括 setproctitle、 syslog、 err*、verr*、 warm、 *vwarm等。 ? 這些函數(shù)有一個(gè)共同的特點(diǎn),就是都要使用一個(gè)格式化字符串。例如對(duì)于大家熟悉的 prontf函數(shù),它的前一個(gè)參數(shù),就是格式化字符串。 99 格式化字符串攻擊 ? 2. 格式化字符串漏洞 ? 為了說明對(duì)格式化字符串使用不當(dāng)而產(chǎn)生的格式化字符串漏洞,請(qǐng)先看下面的程序。 – 例 2 – include – int main() – { – char *name。 – gets(s)。 – printf(s)。 – } 100 abcde abcde%08x,%08x,%08x 000002e2,0000ffe4,0000011d 格式化字符串攻擊 下面是該函數(shù)的兩次運(yùn)行結(jié)果 101 格式化字符串攻擊 ?也就是說,當(dāng)輸入 “ abcde” 時(shí),輸出仍然是 “ abcde” 。而當(dāng)輸入“ %08x,%08x,%08x” 時(shí),輸出的卻是 “ 000002e2,0000ffe4,0000011d” 。這就是格式化字符串漏洞所造成的問題。因?yàn)椋?printf函數(shù)中, s被解釋成了格式化字符串。當(dāng)調(diào)用該函數(shù)時(shí),首先會(huì)解析格式化字符串,一次取一個(gè)字符進(jìn)行分析:如果字符不是 “ %” ,就將其原樣輸出;若字符是 “ %” ,則其后面的字符就要按照格式化參數(shù)進(jìn)行解析。當(dāng)輸入 “ abcde” 時(shí),由于沒有包含 “ %” ,所以每個(gè)字符都被原樣輸出了。而當(dāng)輸入“ %08x,%08x,%08x” 時(shí),就要將每個(gè) “ %” 后面的 “ x” 都解釋為一個(gè)十六進(jìn)制的數(shù)據(jù)項(xiàng),但函數(shù)沒有這樣 3個(gè)數(shù)據(jù)項(xiàng)。于是,就將堆棧中從當(dāng)前堆棧指針向堆棧底部方向的 3個(gè)地址的內(nèi)容按十六進(jìn)制輸出出來,這就是“ 000002e2,0000ffe4,0000011d” 。 ?這就給人們一個(gè)啟發(fā):當(dāng)格式化字符串中包含有許多 “ %” 時(shí),就會(huì)有機(jī)會(huì)訪問到一個(gè)非法地址。 102 格式化字符串攻擊 ? 3. 格式化字符串攻擊的幾種形式 ? ( 1)查看內(nèi)存堆棧指針開始的一些地址的內(nèi)容 由例子可知,使用類似于 printf (“ %08x,%08x,%08x” )。 的語句,可以輸出當(dāng)前堆棧指針向棧底方向的一些地址的內(nèi)容,甚至可以是超過棧底之外的內(nèi)存地址的內(nèi)容。 ? ( 2)查看內(nèi)存任何地址的內(nèi)容 所查看的內(nèi)存地址內(nèi)容,也可以從任何一個(gè)地址開始的內(nèi)存內(nèi)容。例如語句 printf (“ \x20\02\x85\x08_%08x,%08x,%08x” )。 將會(huì)從地址 0x08850220開始,查看連續(xù) 3個(gè)地址的內(nèi)容。 103 格式化字符串攻擊 ? ( 3)修改內(nèi)存任何地址的內(nèi)容 ? 格式化字符串函數(shù)還可以使用一個(gè)格式字符 “ %n” 。它的作用是將已經(jīng)打印的字節(jié)數(shù)寫入一個(gè)變量。請(qǐng)觀察下面的程序。 – 例 3 – include – int main() – { – int i。 – printf(“ china \%n\n” ,(int*)amp。i)。 – printf(“ i = %d\n” ,i)。 – } 104 程序運(yùn)行的結(jié)果如下: 即 i的值為前面已經(jīng)打印的字符串 “ china” 的長(zhǎng)度 —— 5。利用這一點(diǎn),很容易改變某個(gè)內(nèi)存變量的值。 格式化字符串攻擊 105 格式化字符串攻擊 – 例 4 – include – int main() – { – int i = 5。 – printf(“ %108u%n\t” ,1,(int*)amp。i)。printf(“ i=%d\n” ,i)。 – printf(“ %23s123%n\t” ,”” ,amp。i)。print(“ i=%d\n” ,i)。 – } ? 程序執(zhí)行結(jié)果如下: 106 格式化字符串攻擊 語句 printf(“ %108u%n\t” ,1,(int*)amp。i)。 %108u表示以 108的寬度來以無符號(hào)十進(jìn)制的形式輸出 “ 1” , %n則表示用數(shù)據(jù) “ 1” 的寬度 ——108來修改變量 i的值。 而語句 printf(“ %23s123%n\t” ,”” ,amp。i)。 是用字符串 “” 加上字符串 “ 123” 的存放寬度 ——23+3來修改變量 i的值。 使用同樣的辦法,可以向進(jìn)程空間中的任意地方寫一個(gè)字節(jié)。以達(dá)到下面的目的: – 通過修改關(guān)鍵內(nèi)存地址內(nèi)容,實(shí)現(xiàn)對(duì)程序流程的控制; – 覆蓋一個(gè)程序儲(chǔ)存的 UID值,以降低和提升特權(quán); – 覆蓋一個(gè)執(zhí)行命令; – 覆蓋一個(gè)返回地址,將其重定向到包含 shell code的緩沖區(qū)中。 107 欺騙類攻擊 108 電子欺騙 ? 電子欺騙 ( spoofing)就是在兩臺(tái)建立了信任關(guān)系的計(jì)算機(jī)之間,冒充其中一臺(tái),對(duì)另一臺(tái)進(jìn)行欺騙性連接,而后對(duì)其發(fā)起攻擊。這種欺騙可以通過不同的網(wǎng)絡(luò)協(xié)議漏洞進(jìn)行。 ? 常見的電子欺騙 ? IP欺騙 ? TCP會(huì)話劫持 ? ARP欺騙 ? DNS欺騙 ? WEB欺騙 109 IP欺騙 ? IP欺騙的動(dòng)機(jī) ? 隱藏自己的 IP地址,防止被跟蹤 ? 以 IP地址作為授權(quán)依據(jù) ? 穿越防火墻 ? IP欺騙的形式 ? 單向 IP欺騙:不考慮回傳的數(shù)據(jù)包 ? 雙向 IP欺騙:要求看到回傳的數(shù)據(jù)包 ? 更高級(jí)的欺騙: TCP會(huì)話劫持 ? IP欺騙成功的要訣 ? IP數(shù)據(jù)包路由原則:根據(jù)目標(biāo)地址進(jìn)行路由 110 IP欺騙:改變自己的地址 ? 用網(wǎng)絡(luò)配置工具改變機(jī)器的 IP地址 ? 注意: ? 只能發(fā)送數(shù)據(jù)包 ? 收不到回包 ? 防火墻可能阻擋 ? 在 Linux平臺(tái)上 ? 用 ifconfig 111 用程序?qū)崿F(xiàn) IP欺騙 ? 發(fā)送 IP包, IP包頭填上假冒的源 IP地址 ? 在 Unix/Linux平臺(tái)上,直接用 socket就可以發(fā)送,但是需要 root權(quán)限 ? 在 Windows平臺(tái)上,不能使用 Winsock ?可以使用 winpcap ? 可以用 lib構(gòu)造 IP包 ? 代碼示例 ? 在 Linux平臺(tái)上,打開一個(gè) raw socket,自己填寫 IP頭和傳輸層數(shù)據(jù),然后發(fā)送出去 112 用程序?qū)崿F(xiàn) IP欺騙代碼示例 sockfd = socket(AF_INET, SOCK_RAW, 255)。 setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, amp。on, sizeof(on))。 struct ip *ip。 struct tcphdr *tcp。 struct pseudohdr pseudoheader。 ip = xxx。 // 填充 IP和 TCP頭的其他字段,并計(jì)算校驗(yàn)和 = ip。 tcpcheck = tcpchksum((u_short *)amp。pseudoheader, 12+sizeof(struct tcphdr))。 //計(jì)算校驗(yàn)和 sen
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1