日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RASP技术攻防之基础篇

發(fā)布時間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RASP技术攻防之基础篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文就筆者研究RASP的過程進(jìn)行了一些概述,技術(shù)干貨略少,偏向于普及RASP技術(shù)。中間對java如何實現(xiàn)rasp技術(shù)進(jìn)行了簡單的舉例,想對大家起到拋磚引玉的作用,可以讓大家更好的了解一些關(guān)于web應(yīng)用程序安全防護(hù)的技術(shù)。文筆不好,大家輕拍。

一 、什么是RASP?

在2014年的時候,Gartner引入了“Runtime application self-protection”一詞,簡稱為RASP。它是一種新型應(yīng)用安全保護(hù)技術(shù),它將保護(hù)程序像疫苗一樣注入到應(yīng)用程序中,應(yīng)用程序融為一體,能實時檢測和阻斷安全攻擊,使應(yīng)用程序具備自我保護(hù)能力,當(dāng)應(yīng)用程序遭受到實際攻擊傷害,就可以自動對其進(jìn)行防御,而不需要進(jìn)行人工干預(yù)。

RASP技術(shù)可以快速的將安全防御功能整合到正在運行的應(yīng)用程序中,它攔截從應(yīng)用程序到系統(tǒng)的所有調(diào)用,確保它們是安全的,并直接在應(yīng)用程序內(nèi)驗證數(shù)據(jù)請求。Web和非Web應(yīng)用程序都可以通過RASP進(jìn)行保護(hù)。該技術(shù)不會影響應(yīng)用程序的設(shè)計,因為RASP的檢測和保護(hù)功能是在應(yīng)用程序運行的系統(tǒng)上運行的。

二、RASP vs WAF

很多時候大家在攻擊中遇到的都是基于流量規(guī)則的waf防御,waf往往誤報率高,繞過率高,市面上也有很多針對不同waf的繞過方式,而RASP技術(shù)防御是根據(jù)請求上下文進(jìn)行攔截的,和WAF對比非常明顯,比如說:

攻擊者對url為http://http.com/index.do?id=1進(jìn)行測試,一般情況下,掃描器或者人工測試sql注入都會進(jìn)行一些sql語句的拼接,來驗證是否有注入,會對該url進(jìn)行大量的發(fā)包,發(fā)的包可能如下:

?

http://xxx.com/index.do?id=1' and 1=2--

但是應(yīng)用程序本身已經(jīng)在程序內(nèi)做了完整的注入?yún)?shù)過濾以及編碼或者其他去危險操作,實際上訪問該鏈接以后在數(shù)據(jù)庫中執(zhí)行的sql語句為:

?

select id,name,age from home where id='1 \' and 1=2--'

可以看到這個sql語句中已經(jīng)將單引號進(jìn)行了轉(zhuǎn)義,導(dǎo)致無法進(jìn)行,但是WAF大部分是基于規(guī)則去攔截的(也有小部分WAF是帶參數(shù)凈化功能的),也就是說,如果你的請求參數(shù)在他的規(guī)則中存在,那么waf都會對其進(jìn)行攔截(上面只是一個例子,當(dāng)然waf規(guī)則肯定不會這么簡單,大家不要鉆牛角尖。),這樣會導(dǎo)致誤報率大幅提升,但是RASP技術(shù)可以做到程序底層拼接的sql語句到數(shù)據(jù)庫之前進(jìn)行攔截。也就是說,在應(yīng)用程序?qū)ql語句預(yù)編譯的時候,RASP可以在其發(fā)送之前將其攔截下來進(jìn)行檢測,如果sql語句沒有危險操作,則正常放行,不會影響程序本身的功能。如果存在惡意攻擊,則直接將惡意攻擊的請求進(jìn)行攔截或凈化參數(shù)。

三、國外的RASP

我搜集到國外RASP的產(chǎn)品有的下面幾個,可能列表不足,歡迎補充:P

公司名稱產(chǎn)品官網(wǎng)
Micro Focushttps://www.microfocus.com/en-us/products/application-defender/features
Prevotyhttps://www.prevoty.com/
waratekhttps://www.waratek.com/application-security-platform/
OWASP AppSensorhttp://appsensor.org/
Shadowdhttps://shadowd.zecure.org/overview/introduction/
immunhttps://www.immun.io/features
Contrast Securityhttps://www.contrastsecurity.com/runtime-application-self-protection-rasp
Signal Scienceshttps://www.signalsciences.com/rasp-runtime-application-self-protection/
BrixBitshttp://www.brixbits.com/security-analyzer.html

筆者只列舉了部分國外產(chǎn)品,關(guān)于更多這些產(chǎn)品的介紹請大家自行咨詢。

根據(jù)上述收集到的國外RASP技術(shù)產(chǎn)品,發(fā)現(xiàn)大家都各有千秋,甚至還有根據(jù)RASP技術(shù)衍生出來的一些其他技術(shù)名詞以及解決方案。

并且大家對數(shù)據(jù)可視化越來越注重,讓使用者可以一目了然的看清楚入侵點以及攻擊鏈,以此來對特定的點進(jìn)行代碼整改或者RASP技術(shù)層面的攻擊攔截。

四、國內(nèi)RASP技術(shù)實現(xiàn)進(jìn)度以及狀態(tài)

國內(nèi)目前做RASP技術(shù)的廠家不多,我收集的只有以下幾家。如有不足,歡迎補充。

產(chǎn)品名稱產(chǎn)品官網(wǎng)概述
靈蜥http://www.anbai.com/lxPlatform/靈蜥是北京安百科技研發(fā)的一款RASP防御產(chǎn)品,而RASP安全研究團(tuán)隊的核心是之前烏云核心成員,據(jù)我了解,烏云在2012年后半年左右的時候就對RASP技術(shù)開始進(jìn)行研究了。目前靈蜥RASP安全防御技術(shù)以及升級到了2.0版本,對靈蜥1.0版本的架構(gòu)以及防御點進(jìn)行了大版本的升級,應(yīng)該是目前防御比較完善的一家了。
OneRasphttps://www.oneapm.com/然后藍(lán)海訊通研究的OneRasp也出現(xiàn)在市場,后面不知什么原因,藍(lán)海訊通好像放棄了對oneRasp的研究以及售賣,現(xiàn)在oneRasp官網(wǎng)以及下線。
OpenRasphttps://rasp.baidu.com/在隨后可能就是大家都聽過或者用過百度開源的OpenRasp,百度開源的rasp產(chǎn)品讓更多的企業(yè)以及安全研究者接觸和認(rèn)識到了rasp技術(shù)。該項目目前社區(qū)活躍度挺高,插件開發(fā)也很簡單,大大降低了使用門檻。
云鎖https://www.yunsuo.com.cn云鎖我是在18年的360安全大會上了解到的,官網(wǎng)將RASP技術(shù)列入了一個小功能,主打是的微隔離技術(shù),關(guān)于微隔離技術(shù),在這邊我們不做探討。有興趣的可以搜索一下相關(guān)的技術(shù)文章。
安數(shù)云http://www.datacloudsec.com/#/product-4安數(shù)云WEB應(yīng)用實時防護(hù)系統(tǒng)RASP是在我寫這篇文章的時候,發(fā)現(xiàn)他們也開發(fā)了一款RASP產(chǎn)品才知道的。不過沒有找到其技術(shù)白皮書等可參考的文章。

五、各種語言RASP技術(shù)實現(xiàn)方式

1.JAVA

Java是通過Java Agent方式進(jìn)行實現(xiàn)(Agent本質(zhì)是java中的一個動態(tài)庫,利用JVMTI暴露的一些接口實現(xiàn)的),具體是使用ASM(`或者其他字節(jié)碼修改框架`)技術(shù)實現(xiàn)RASP技術(shù)。Java Agent有三種機(jī)制,分別是Agent_OnLoad、Agent_OnAttach、Agent_OnUnload,大部分時候使用的都是Agent_OnLoad技術(shù)和Agent_OnAttach技術(shù),Agent_OnUnload技術(shù)很少使用。具體關(guān)于Java Agent的機(jī)制大家可以看一下下面這些文章:

JVMTM Tool Interface??javaagent加載機(jī)制分析??JVM 源碼分析之 javaagent 原理完全解讀

2.PHP

PHP是通過開發(fā)第php擴(kuò)展庫來進(jìn)行實現(xiàn)。

3..NET

.NET是通過IHostingStartup(承載啟動)實現(xiàn),具體的大家可以下面這篇文章:

在 ASP.NET Core 中使用承載啟動程序集

4.other

RASP技術(shù)其實主要就是對編程語言的危險底層函數(shù)進(jìn)行hook,畢竟在怎么編碼轉(zhuǎn)換以及調(diào)用,最后肯定會去執(zhí)行最底層的某個方法然后對系統(tǒng)進(jìn)行調(diào)用。由此可以反推出其hook點,然后使用不同的編程語言中不同的技術(shù)對其進(jìn)行實現(xiàn)。

六、舉“栗子”

1.如何在Java中實現(xiàn)RASP技術(shù)

目前筆者我參與研究&研發(fā)了JAVA版本的RASP技術(shù),下面給大家簡單的進(jìn)行講解。

在jdk1.5之后,java提供一個名為Instrumentation的API接口,Instrumentation 的最大作用,就是類定義動態(tài)改變和操作。開發(fā)者可以在一個普通Java程序(帶有 main 函數(shù)的 Java 類)運行時,通過 – javaagent參數(shù)指定一個特定的 jar 文件(包含 Instrumentation 代理)來啟動 Instrumentation 的代理程序。

關(guān)于premain的介紹,大家可以去我博客看一下:java Agent簡單學(xué)習(xí)。

關(guān)于ASM的介紹以及使用,大家可以看一下下面的介紹:ASM官方操作手冊,AOP的利器:ASM3.0介紹關(guān)于ASM的時序圖,我這邊引用一下IBM上的一張圖:?

正文開始

首先編寫一個premain函數(shù),然后在premain中添加一個我們自定義的Transformer。?

?

我們的Transformer需要實現(xiàn)ClassFileTransformer接口中的transform方法,我這邊就簡單的先進(jìn)行一個打印包名的操作。

?

?

在編譯以后,運行結(jié)果如下:?

由此可見我們的transform已經(jīng)生效了。 我們來簡單的類比一下加入agent以及未加入agent的過程。?

?

由此可見,在使用了transform以后,可以對jvm中的未加載的類進(jìn)行重寫。已經(jīng)加載過的類可以使用retransform去進(jìn)行重寫。 在java中有個比較方便的字節(jié)碼操作庫,ASM(ASM是一個比較方便的字節(jié)碼操作框架,可以借助ASM對字節(jié)碼進(jìn)行修改,這樣就可以實現(xiàn)動態(tài)修改字節(jié)碼的操作了。ASM介紹)

ClassVisitor接口,定義了一系列的visit方法,而這些visit方法。

下面這段代碼是對方法進(jìn)行重寫的一個過程。

首先定義一個ClassVisitor,重寫visitMethod方法。?

?

?

可以看到該方法返回的對象為MethodVisitor(后面簡稱mv),我們?nèi)绻薷钠渲械倪壿嬤^程,需要對mv進(jìn)行操作,下面展示一個簡單的修改代碼的過程。?

?

上面visitCode中代碼的大概意思為,插入一個調(diào)用TestInsert類中的hello方法,并且將一個數(shù)字8壓入進(jìn)去。 TestInsert類的代碼如下:

?

如果不出意外,運行jar包以后將輸出類似下面這樣的信息:

?

可以看一下加入agent運行以后的類有什么變化。

源代碼:

加入Agent運行以后的源代碼:

可以看到代碼:

?

System.out.println(TestInsert.hello(8));

成功在:

?

System.out.println("Hello,This is TestAgent Program!");

之前運行,而調(diào)用TestInsert.hello這個方法在源代碼中原來是沒有的,我們是通過java的agent配合asm對運行的字節(jié)碼進(jìn)行了修改,這樣就達(dá)到了埋點hook的目的。

在了解了上面的技術(shù)以后,就可以其他對關(guān)鍵的點進(jìn)行hook了,hook的方法大同小異,這里僅僅是拋磚引玉,大家自行發(fā)揮。可以給大家推薦一個園長師傅寫的一個簡單例子:?javaweb-codereview

筆者展示的該例子項目地址為:javaagent

2.如何在PHP中實現(xiàn)RASP技術(shù)

關(guān)于php中的rasp技術(shù)實現(xiàn),筆者我還沒有進(jìn)行深入研究,大家可以參考以下兩個開源的擴(kuò)展進(jìn)行研究,筆者接下來也準(zhǔn)備研究php方面的rasp技術(shù)實現(xiàn),歡迎大家一起討論。

(1)xmark

(2)taint

七、RASP技術(shù)的其他方面應(yīng)用場景

在RASP技術(shù)實現(xiàn)的過程中,我橫向了遐想一些其他的用法以及參考了一下其他rasp產(chǎn)品的功能點,比如:

代碼審計

對于rasp中運用到的技術(shù),換一種思維方式,可以不進(jìn)行攔截,而進(jìn)行記錄,對所有記錄的日志結(jié)合上下文進(jìn)行代碼審計。

0day防御

對已經(jīng)hook的關(guān)鍵點進(jìn)行告警通知并且要攔截攻擊行為,然后在公網(wǎng)部署多種不同cms的web蜜罐。如若已經(jīng)觸發(fā)到了告警通知,那么已經(jīng)證明攻擊已經(jīng)成功。且攔截到的漏洞可能為0day。

攻擊溯源

對所有攻擊ip以及攻擊的文件進(jìn)行聚合,用時間軸進(jìn)行展示。這樣就可以定位到黑客是從上面時候開始進(jìn)行攻擊的,攻擊中訪問了哪些文件,觸發(fā)了哪些攻擊攔截。然后對所有大致相同的ip進(jìn)行歸類,可以引出來一個專業(yè)用于攻擊溯源的產(chǎn)品。

DevOps

對所有事件詳細(xì)信息提供完整的執(zhí)行路徑,包括代碼行,應(yīng)用程序中使用的完整上下文查詢以及豐富的屬性詳細(xì)信息。

其他方面

當(dāng)然Rasp技術(shù)的應(yīng)用場景肯定不止這么多,還有其他很多方面的一些應(yīng)用場景,大家可以發(fā)散思維去想。本文章僅用于拋磚引玉。

八、RASP技術(shù)有什么缺陷

● 不同的編程語言可能編譯語言和應(yīng)用程序的版本不一致都導(dǎo)致RASP產(chǎn)品無法通用,甚至導(dǎo)致網(wǎng)站掛掉;

● 如果RASP技術(shù)中對底層攔截點不熟悉,可能導(dǎo)致漏掉重要hook點,導(dǎo)致繞過;

● 對于csrf、ssrf、sql語句解析等問題目前還是基于部分正則進(jìn)行防護(hù)(對于sql語句的解析問題可以使用AST語法樹進(jìn)行解析)。

……

九、總結(jié)

目前RASP還處于一個發(fā)展的階段,尚未像防火墻等常見的安全產(chǎn)品一樣有非常明確的功能邊界(scope),此文僅拋磚引玉,更多由RASP防御技術(shù)的用法可以發(fā)揮想象,比如日志監(jiān)控、管理會話、安全過濾、請求管理等。 在研究RASP技術(shù)的時候,我發(fā)現(xiàn)RASP與APM有著部分相同的技術(shù),APM本意是用于監(jiān)控應(yīng)用程序的,反轉(zhuǎn)思路,在APM中監(jiān)控應(yīng)用程序的時候加入漏洞防護(hù)功能,即可形成了一個簡單的RASP demo。在APM這方面,大家參考的對象可就很多了,比如:skywalking、newrelic等,skywalking是開源產(chǎn)品,在github上就可以直接查看其源代碼,而且是Apache的項目,而newrelic的所有agent都沒有進(jìn)行任何代碼混淆,官方安裝文檔也很豐富,這些都是可以進(jìn)行參考的。 由此可見,有時候技術(shù)換個平臺、換個想法,就是一個完全不一樣的東西了。所以對于任何技術(shù)都可以發(fā)散性的去想象一下其他的應(yīng)用場景,萬一恰到好處呢? 不論研究的技術(shù)是什么樣的,可能大家實現(xiàn)的方式不一樣,使用的技術(shù)不一樣,使用的名稱不一樣,不過最終的目的就是為了保護(hù)應(yīng)用程序安全,防止攻擊者入侵成功。

十、參考

https://searchsecurity.techtarget.com/opinion/McGraw-on-why-DAST-and-RASP-arent-enterprise-scale

http://www.cnblogs.com/kingreatwill/p/9756222.html

https://techbeacon.com/security/it-time-take-rasp-seriously

https://www.gartner.com/doc/2856020/maverick-research-stop-protecting-apps

https://github.com/anbai-inc/javaweb-codereview/tree/master/javaweb-codereview-agent

https://www.03sec.com/3232.shtml

總結(jié)

以上是生活随笔為你收集整理的RASP技术攻防之基础篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。