: → SupCat: 最好linux不會中... 05/15 15:34
: 當然不會中啊,電腦病毒蠻低等的,大概類似真實世界游擊隊小米加步槍的等級而已,只能
: 對付一些「幾乎裸體」不設防的系統。
:
: GNU/Linux很難玩病毒的,要攻破一個GNU/Linux系統都是要用裝甲師等級的,要不是派高
: 級特務滲透(帶著usb隨身碟,騙到一個Linux系統的最高權限者的ID card跟登入金鑰或密
: 碼親身物理性侵入,就像電影裡面演的那樣),不然就是用搞類似裝甲師等級的直接撞一
: 個Linux系統(五台、十台電腦圍毆一台),成本超高,而對方皮很厚的話,你可能還要加
: 更多人力、電腦來破,如果不是高價值的GNU/Linux系統,誰無聊要去破解呢?
:
既然提到病毒這事情 順便來說說好了
本人不是系統專業 講錯可以幫忙糾正一下
windows 的病毒主要是寄身在執行黨(.exe)上面 (廢話)
windows exe 檔案用的是 PE 格式 裡面最重要的還是 symbol table
https://msdn.microsoft.com/en-us/library/ms809762.aspx
一般病毒是通過修改PE的 table 來執行病毒碼
舉例來說 假設程式裡面 有執行到 open() 這個函式
病毒會去修改 open() 的entry point
讓他先去執行病毒碼 再跳回去執行正常的 open()
這過程叫做 injection 就是 注入病毒碼的意思
在windows中 最會被注入程式碼的檔案就是 kernel32.dll 跟 user32.dll
因為這兩個是windows的系統函式庫 所有的執行檔都會用到它們
所以常常有人會問 明明沒有執行到被感染的檔案 為什麼還會中毒
就是這個原因
至於注入的病毒程式碼 要做些什麼呢
有些會利用系統本身API 另外開一個隱藏的程序 就是所謂的後門
可以讓駭客 偷偷的登入電腦取得使用權
還有一個就是繼續搜尋電腦的執行檔 去感染它
這些程式碼都有很顯著的特徵 所以防毒軟體都是抓特徵值
去認定執行檔是不是病毒的
所以一個好的病毒 要具備變形的能力
病毒碼會使用執行檔的某一段資料作為加密的 key
然後將自己的程式碼加密打亂
所以執行病毒碼的時候 他會先跑一段解密程式
然後才會出現完整的病毒碼 這樣防毒軟體就抓不到了
至於 linux 上面有沒有病毒 也是有的
但是在 linux 上面要拿到 root 權限 才算成功
病毒感染使用者一堆檔案都沒用啦
反而是 exploit 漏洞 比較常使用
所以在 linux 上面是利用 buffer overflow 去做溢位攻擊
像是有些網路服務會使用 strcpy() 之類的東西
buffer overflow 就是利用 溢位 來將程式碼 copy 到執行程式裡面
http://www.tenouk.com/Bufferoverflowc/Bufferoverflow5.html
http://www.primalsecurity.net/tutorials/
至於利用 buffer overflow attack 好不好破 理論上要先看過程式碼才知道漏洞在哪
然後網路上可以找到上千種 exploits 的 hack tool
只要輸入對方的 linux IP
hack tool 就用那些 exploit 去嘗試
所以也沒很難破啦 linux 服務開越多 漏洞越大....
而且很多 linux 使用者還習慣放 kernel source 在 /usr/src 下面
人家可以改 kernel 改到多一個使用者 root 都查不出來的...