跳到主要內容

新浪安全中心:Redis 威脅流量監聽實踐

網站內容來源http://server.it168.com/

新浪安全中心:Redis 威脅流量監聽實踐

2018-06-26 15:49    來源:新郎安全中心  作者: 糖果LUA 編輯:
0購買

  概要


  我們在平時的安全運維中,Redis服務對我們來說是一種比較常見的服務,相應的Redis漏洞也比較棘手,網上有很多關於Reids漏洞利用和再現的方法,如果想延伸一下這個課題,我們可以考慮如何主動的防護redis的漏洞,那怕只是監聽redis服務中,可能存在的威脅行為,先解決一部分問題?這個就是本文要給出的一個思路和解決方案。關鍵是,現在有些系統是不提供這種服務的,所以我們嘗試定製開發。


  背景


  我們在再現redis的漏洞時,用tcpdump等工具,抓取了滲透的流量,把威脅流量保存寫到pcap包中,經過分析我們發現redis的協議數據是明文的,經過截取包,我們可以看到其中的內容,所有的這些set、get、dir、config命令一般的流量中我們都可以看到,在redis密碼沒有設置的情況下。我們發現一般的防火牆也並不抓取redis的流量並解析,甚至是報警。基於我們之前的實踐,既然tcpdump能抓到,我們用pcap基礎開發包也可以抓到。


  防護策略


  既然我們可以抓取流量,就可以監聽redis的流量中的內容,先期的預想是,只要我們分析出redis攻擊行為幾個動作序列,採用行為模式匹配的方式,只要有人觸發了比較危險的幾個動作指令,我們就把這次Redis操作列為一個可疑的行為,並對這種形為的IP進行監聽日誌留存,並把威脅攻擊IP相關的屬性信息,和其它設備中的威脅數據做碰撞,這一切基礎前提就是:我們可以抓取訪問者的流量(靠工具),並識別他的行為動作(靠策略)。下面我們就用工具監聽redis的set、get、config命令為例子,通過這個來展示整個流程的監聽過程。


  監聽部署



  為了測試,我們是把某個機房的某個網段的流量,鏡像集中到另一台服務器上, 我們集中監聽打到這台服務上,其它的Redis的服務的流量匯總,我們通過分析這些Redis服務的操作內容,進行流量監控和行為識別,然後將監聽的威脅行為數據保存到威脅行為庫里。


  工具實施


  這個監聽系統工作模式就這樣,接下來就是我們要用工具實施我們方案,我們選用的工具還是傳統的C語言和Lua的腳本方式,用C讀取監聽6379端口是的流量數據,然後將解析出來的數據推給Lua進行模式匹配。



  一般的攻擊行為都有一個大概的請求序列,Redis服務本身就是系統內存的一個服務器監聽程序,一般會Bind本機的IP,監聽默認的6379端口,如果Redis的對外提供服務,需要改變redis.conf的配置,打開配置文件對應把bind xxx.xxx.xxx.xxx的IP改成你本地的網卡IP,這樣在外部使用Redis訪問,才不會出現端口訪問被拒絕的情況。



  改變IP后,我們要解決的是密碼設置問題,如果有一天某台Redis的密碼"消失了"。 這時這台機器可能會被威脅利用,這時就滿足了我們要設定場景,重現這種情況就要把redis.conf中的密碼去掉。




  這種啟動方式,是不能滲透成功的,我們要用下面的方式進行redis的服務啟動,進入root然後輸入:



  如果我們想簡單的用Tcpdump截取Redis數據包,我們可以用下面的命令:



  我們可以一邊滲透Redis,一邊記錄這次滲透過程中,攻擊指令的序列數據。 下面就是用我們要用的工具,用於監聽和解析Redis的流量數據的數據:https://github.com/shengnoah/riff


  我們下載這個pcap監聽的工具包,我們默認的工作平台是: make linux


  因為,這個工具在linux上使用,用C實現,嵌入了Lua腳本插件化的處理,來獲取監聽接口的數據,本文中提的是對6379接口的監聽。我們在完成編譯動作后,需要改一個config.lua的配置。


  打開config.lua, 修改return的返回值,告訴C主進程,我們讓Pcap監聽本機的6389端口,以下。



  需要注意的是watch.c的代碼,以下



  getPacket()這個函數,主體功還是把數據推給lua,基本的邏輯就是這麼簡單,關鍵就是這個有個入口buffer.lua,我們記着這個時序的入口就行,便於以後面的邏輯的理解清楚。 從buffer.lua這個執行序開始后,邏輯都交給lua來處理了,具體lua怎麼處理,要自己根據自己定製的規則情況寫處理邏輯。



  Lua代碼一直運行在pcap的循環內,採用的是插件機制,我們加一個處理,就相當於要加一個插件。插件模板的代碼都是類似的,我們看一個其它的就看懂了,其它相關腳手架的代碼不介紹了:




  用lua寫代碼,是為了降低策略實現部分的代碼複雜度,最關鍵的函數filter_plugin.action(),這裏的stream.data就是吐到6369上的所有數據,包括Redis相關的執行的get、set、config等請求都會在這個變量里中的所體現。我們先打開redis-cli的客戶端,發送一個set指令看看,看我們的程序是否可能監聽到。



  我們啟動這個基於pcap庫的監聽程序,畫紅色圓的地方就是,pcap主循環推給lua腳本的數據。


  "set a www.candylab.net"的整個指令的數據內容都在。



  總結


  到此我們完成了整個監控程序的執行周期,通過這個工具,所有經過6379端口的數據我們都可以取得到,至於客官們想針對什麼樣的的reids攻擊,寫出對應的策略,編寫lua插件邏輯就可以了。本身lua的代碼實現就不複雜,提供的數據結構操作類似字符串序列這種數據也很方便,代碼可以到github上直接下載,如何變動,具體就看各自的需求和各自的策略設計了。簡單說,剩下的工作就是用lua寫攻擊模式的甄別。


網站內容來源http://safe.it168.com/

【精選推薦文章】



智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選



想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計



帶您來看台北網站建置套版網頁設計台北網站改版設計台北RWD響應式網頁設計,各種案例分享



廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

https://www.3chy3.com/?p=2113



Orignal From: 新浪安全中心:Redis 威脅流量監聽實踐

留言

這個網誌中的熱門文章

請問貝果烤前為什麼需要用滾水燙過?

水燙 貝果 的目的是讓貝果提早形成麵包皮以在後續烘焙時避免貝果過度膨脹變成鬆軟的麵包,同時提早形成的麵包皮烤乾後比較硬,這兩個因素產生貝果的特殊口感。在有些食譜熱水會加鹼或糖,讓麵包面容易變褐。原理:水燙貝果時貝果表面的澱粉粒吸水糊化溶出澱粉,因為水煮的時間很短約30-60秒,溶出的澱粉仍舊糊在表面上。後續烘焙中澱粉漿硬化形成麵包皮,因麵包皮的硬殼強度使貝果內的氣泡不容易膨脹,最後形成貝果組織密實而具有咬感,所使用的高筋麵粉也提供的大量麵筋強度是造成這些特性的另一因素。貝果用油較少,產生的麵包皮硬不會酥脆,水溶澱粉產生的是硬殼回潮後變得很堅韌,藉著食用前的熱烤再使它脫水硬化,因硬麵包皮不厚所以咬下時有脆的口感。水煮的時間控制了麵包皮的厚度與強度,水煮時間愈短,貝果愈鬆軟,反之則氣體膨脹愈不容易,成品就會愈密實而有咬感,但也皮愈厚愈不容易咬下口。麵包麵的顏色在不同的烘焙程度與成分組成,受到非酵素褐變(梅納反應)、焦糖化、碳化等影響。一般以非酵素褐變最為重要,此反應是蛋白質與糖的化學反應,產生褐色的物質與特殊的氣味,在鹼性環境中容易進行,所以在有些食譜在水中會加糖或加鹼等處理。 貝果宅配     手工貝果     貝果 http://www.foodhy3.com/?p=65 Orignal From: 請問貝果烤前為什麼需要用滾水燙過?

咳嗽能吃柿子

文章導讀 咳嗽是因為嗓子不舒服引起的,因此咳嗽的時候人們應該避免吃刺激性的食物,比如辛辣的、過甜過鹹的、生冷的、腥的食物等等,這種食物會刺激嗓子粘膜,讓嗓子更不舒服,咳嗽也會因此變得更加嚴重,咳嗽的時候可以吃一些止咳化痰的水果,比如梨,那麼咳嗽能吃柿子嗎? 柿子是人們比較喜歡食用的果品,甜膩可口,營養豐富。不少人還喜歡在冬季吃凍柿子,別有味道。柿子的營養價值很高,含有豐富的胡蘿蔔素、核黃素、維生素等微量元素,所含維生素和糖分比一般水果要高很多。柿恭弘=恭弘=叶 恭弘 恭弘中含有多種活性成分,如維生素C、多種黃酮甙類、二萜類、膽鹼、β-胡蘿蔔素。所以,患者在咳嗽期間是可以吃柿子的,但是不能多吃,一定要適量,以免引起消化不良。患者咳嗽期間,除了柿子以外,還可以吃其他的一些新鮮蔬菜和水果,如蘋果、梨、獼猴桃、芹菜、花菜等,這對於咳嗽的早日康復是有幫助的。 能吃。柿子性寒,味甘、澀。歸肺經。故有健脾澀腸,主治咳嗽止血之功。是慢性支氣管炎、高血壓、動脈硬化、內外痔瘡患者的天然保健食品。但慢性胃炎、消化不良等胃功能低下者以及外感風寒咳嗽者不宜食柿子;體弱多病者、產婦、月經期間女性,均忌食柿子;糖尿病人勿食。 咳嗽是由多種因素造成的,包括吸入容易產生過敏的物質,比如花粉柳絮,以及炎症感染,包括氣候乾燥,辛辣含糖食物刺激,甚至情緒緊張,均可造成咳嗽的現象,而常見的咳嗽多是炎症感染造成的,柿子屬於熱性食物,容易加重局部咽喉炎症反應。 咳嗽期間是可以吃柿子的,一般可以少吃40具有寒涼的作用,一般對人體的刺激性比較大,咳嗽一般都是由於支氣管出現了炎症就會產生咳嗽咳痰的癥狀,一般是要採用口服化痰止咳的藥物來進行用藥治療,如果說咳嗽不是很明顯的話,一般也可以採用口服抗感冒的藥物來進行用藥治療。 網站內容來源https://www.cndzys.com/yinshi/ 【精選推薦文章】 想知道 台東名產 人氣商品是什麼?想知道更多 台東知名伴手禮 有哪些? 想知道全國票選五大 台東必買 、 台東伴手禮 最佳商品哪裡買的到? 台東團購美食 、 台東必買零...

躺着喝水有什麼壞處

文章導讀 躺着喝水是一種不好的做法,因為躺着喝水會導致水容易進入氣管,引起我們嗆到喉嚨,而且不利於水分進入腸道中,所以最好的方法是坐起來喝水。水我們身體重要的成分,每天都需要飲用大量的水來維持身體的運作,如果缺水是會引起新陳代謝下降的,而且會引起各種各樣的疾病,大家要引起重視。 1、容易嗆着,水容易進入氣管;如果嗆着,嚴重的後果有生命危險。 2、這樣喝不衛生,也不符合人的作為。 喝水喝多了有什麼壞處嗎? 1、水喝多了,會增加腎髒的負擔。人體是通過尿液來排毒的,那尿液的主要的組成部分就是水,而所有的尿液都是要經過腎臟過濾的,因此,如果喝水過多,就意味着腎髒的過濾就更多,就會增加腎髒的負擔。 2、飲水過量會引起水中毒。人體腎髒的持續最大利尿速度是每分鐘16毫升,如果人體攝入水的量超過了這個標準,或者喝水的速度超過這個標準,那體內就會出現水過剩的現象,而過剩的水分就會使細胞膨脹,繼而引起脫水低鈉症,臨床會表現為頭暈眼花、嘔吐、虛弱無力、心跳加快等癥狀,這種中毒的癥狀是全身的,嚴重的會出現痙攣、昏迷甚至危及生命。 擴展資料: 感冒時也並不是喝水越多越好。感冒時醫生都叮囑病人要多喝水,因為水可以加速排毒,緩解感冒的癥狀,而且,人在感冒的時候,身體也很容易缺水,所以適當的增加水的攝入是有好處的,但是也絕對不是喝的越多越好,而是要根據個人的差異,適當的增加喝水的量,而且一次喝的量不可過多。 每人飲水量應視個人情況而定,一般1.5~2升為宜。從衛生角度來說,喝涼開水、茶水或礦泉水較好。但應注意,一次飲水過多或喝得過快對身體不利,老年人尤其應該注意。一次飲水過多會加重心、腎負擔,對患有心臟病、高血壓、腎病和水腫的人傷害最大。因勞動或運動而大量出汗后也不宜一次喝水太多。 水喝多了,會引起水中毒。專家介紹,過量飲用卻會導致人體鹽分過度流失,一些水分會被吸收到組織細胞內,使細胞水腫。開始會出現頭昏眼花、虛弱無力、心跳加快等癥狀,嚴重時甚至會出現痙攣、意識障礙和昏迷,即水中毒。大量喝水后,人體易產生疲倦感,食慾大減,還使人感到昏昏沉沉的。 這是因為飲水過多衝淡了血液,全身細胞氣體交換就會受到影響。腦細胞一旦缺氧,人就會變得遲鈍。腎功能正常的人每天最多只可排出10~20升尿。如果飲水過...