<progress id="yueoz"><code id="yueoz"><xmp id="yueoz">

      1. 吾愛破解 - LCG - LSG |安卓破解|病毒分析|www.13ee.cn

         找回密碼
         注冊[Register]

        QQ登錄

        只需一步,快速開始

        搜索
        查看: 2330|回復: 11
        上一主題 下一主題

        [漏洞分析] vxworks5.5里面rpcbind漏洞分析-2

        [復制鏈接]
        跳轉到指定樓層
        樓主
        LovenSar 發表于 2020-6-21 13:26 回帖獎勵
        本帖最后由 LovenSar 于 2020-6-21 20:17 編輯

        上周因為課程原因,分析中斷了,這個是上一篇,這周末繼續
        vxworks5.5里面rpcbind漏洞分析-1

        腳本長達60個字節,也就是480位:




        首先進行靜態分析一波

        當系統完成啟動之后會進行這樣子的查詢方式,中間會有關中斷的一些操作。

        vxIdleAutoHalt函數是檢查任務隊列

        當前檢查有東西的時候,ln97x啟動初始化

        ln97xInt函數對緩沖寄存器檢查,做進一步的檢查。如果已經處于full的狀態,那么就進入下一步正式接收的狀態。

        繼續深入可以看見驅動里面開始在內存里面申請

        在網絡這一塊,官方vxworks對于內存的管理叫做cluster【簇】,但是根據效果圖看得出來,這個就是堆管理。

        我們直接將其當做堆管理即可。


        OK,這一層分析的差不多了。

        知道了基本上是堆塊管理的方式,那我們只需要在堆中找到我們需要的東西即可。

        對于svc來說,是有svctcp_recv, svcraw_recv 和 svcudp_recv的。

        當然,對于RPC來說自然就是UDP。

        這里乍一看是可以看到有具體的一個函數,recvfrom是一個關鍵函數。

        所以我們關鍵就是要找到第二個緩沖區的地點就行了。

        關鍵就是找到第二個地址

        也就是這個ecx,這個時候的ecx的值是0Xfee3024這個地址。當運行完recvfrom之后,這個地址就會有我們想要的東西。

        隨便在recvfrom之后隨便下個結點,F9

        然后就可以看到這個地方出現了。

        這個就是整個payload的拷貝,從圖中的信息可以判斷出,不是棧溢出,不是堆溢出。

        我們可以先從程序的報錯代碼中找到我們需要的報錯信息。

        之前是已經分析好了程序,基本上的問題都是出現在eax寄存器上,我們只需要對這個寄存器進行回溯操作,也就是在這個出現問題的程序段上開頭按下F2,。也就是下一個斷點,這樣程序往下面走我們就可以看見我們想要的值,最先出現在什么地方。

        根據這個地方,我們可以確定內存地址,進而推斷出進一步的調用關系。

        可以看得到,基本上內存里面一個堆塊,存儲了payload的一半以上的信息,但是對于后面的那一段payload具體在什么地方,我們現在還沒有定論,所以,可以先按照這個地址展開來看。

        圖中的圓圈就是我們找到的對應的payload。

        回去看看偽代碼我么可以知道這個具體的函數就是一個傳參的過程,也就是說,這個payload是從a2這個地方繼承過來的。

        首先,我們關注一下這個a2的地址和數據,同時a1這個地址也請注意一下,因為是從上面繼承來的,0XFEF39B4

        找到gcc2_compiled__312上一級函數svc_getreqset

        當前出問題的這個函數是svc_getreqset

        根據基層調用關系,我們可以得出這樣的結論。

        第一層出現問題的是gcc2_compiled312

        調用gcc2_compiled
        312的是svc_getreqset

        svc_getreqset上一層是svc_run

        SVC是交換虛擬電路,信息包交換虛擬線路面向連接的網絡中,從一臺計算機到另一臺計算機的連接。SVC是虛擬的,因為路徑是從路由表中得到的,而不是建立物理線路。SVC是交換的,因為它能按需要建立,類似于一次電話呼叫。

        從函數的調用關系可以看來,對于svc_runàsvc_getreqsetà gcc2_compiled__312是一個請求號,也就是說,系統是已經接受到了看似合理的請求,而造成這個的錯誤并不是一半的填充數據覆蓋eip之類的,也就是說在從驅動拷貝到內存的過程當中,并沒有出現一般的棧溢出或者堆溢出,不然會有其他的報錯。

        在分析的過程當中,我們經?梢钥匆娨粋命名就是taskIDcurrent這個值,從指針傳遞的值可以看到一直有一個值是0XFEF3B94,這個其實是portmap這個任務的;

        從“In addition, multithreaded RPC servers must call on svc_run(). Note that svc_getreqpoll() and svc_getreqset() are unsafe in MT applications.”

        可以看出,對于svc_runàsvc_getreqsetà gcc2_compiled__312這里其實是一個不太安全的方法。

        那么問題出現在哪里呢?


        細數下來,我們的請求在復制的過程中并沒有發生故障,相反的,反而在執行的時候出現了問題。排除了堆溢出、棧溢出和字符串格式化漏洞,那么還有一個極其隱晦的整數溢出漏洞。

        不論只要保持88888888前面的長度,后面的長度可以截斷,這就可以判斷出不是棧溢出或者堆溢出之類的,實測有效。

        所以,總的下來,出現問題的函數就是在執行請求那里出現了問題,那么也還是回到最初的函數那里可以看到,gcc2_compiled__312。

        當eax為88888888乘以四之后就會溢出。


        整數溢出漏洞。

        官方已經給出了幾個方式去寫exp

        • 一個是整數溢出后導致RCE漏洞,執行危險命令

        • 堆噴射放置shellcode

        • 計算出可驗證的??值

        • 直接跳到shellcode

        綜合來看,我可以嘗試第四種,首先,我先控制call eax這個命令的eax值。

        一般來說,填寫負數將是一個不錯的選擇。

        免費評分

        參與人數 4威望 +2 吾愛幣 +103 熱心值 +4 收起 理由
        gaosld + 1 + 1 用心討論,共獲提升!
        yixi + 1 + 1 謝謝@Thanks!
        fengbolee + 1 + 1 用心討論,共獲提升!
        willJ + 2 + 100 + 1 感謝發布原創作品,吾愛破解論壇因你更精彩!

        查看全部評分

        發帖前要善用論壇搜索功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

        推薦
         樓主| LovenSar 發表于 2020-6-28 22:28 |樓主
        LovenSar 發表于 2020-6-22 18:41
        請教談不上,vxworks是RTOS,實時性要求他們在實模式下運行,在硬件條件不變的情況下是沒有隨機化的。這 ...

        還有一種“偽隨機化”,也就是針對非底層的一些函數【開發人員根據自己的需求開發的】,以及vxworks是裁剪式系統,添加的組件不同的時候,同樣一個函數,對于兩個vxworks內部偏移量就可能不一樣,就達到了“偽隨機化”
        推薦
         樓主| LovenSar 發表于 2020-6-22 18:41 |樓主
        willJ 發表于 2020-6-22 18:14
        想請教下樓主,vxworks5.5這種產品有沒有漏洞緩解措施呢?比如DEP這種,如果有,你直接部署好shellcode跳過 ...

        請教談不上,vxworks是RTOS,實時性要求他們在實模式下運行,在硬件條件不變的情況下是沒有隨機化的。這個漏洞是非常隱蔽的整數溢出。風河公司已經在棧、堆溢出、格式化等漏洞上已經十分努力了。
        沙發
        shellcode 發表于 2020-6-22 10:09
        rpcbind這種漏洞很致命,文中提到的shellcode和我的馬甲一樣,搶個沙發
        3#
        willJ 發表于 2020-6-22 18:14
        想請教下樓主,vxworks5.5這種產品有沒有漏洞緩解措施呢?比如DEP這種,如果有,你直接部署好shellcode跳過去應該是不行的吧?
        5#
         樓主| LovenSar 發表于 2020-6-22 18:43 |樓主
        willJ 發表于 2020-6-22 18:14
        想請教下樓主,vxworks5.5這種產品有沒有漏洞緩解措施呢?比如DEP這種,如果有,你直接部署好shellcode跳過 ...

        而且這邊的shellcode一般來說不熟悉vxworks的也還是很難達到的,它與linux不同,vxworks的源碼一向保密做得很好
        6#
        lifebeyond 發表于 2020-6-28 16:53
        字很多,看不完,看不懂,大神
        7#
         樓主| LovenSar 發表于 2020-6-28 21:14 |樓主
        lifebeyond 發表于 2020-6-28 16:53
        字很多,看不完,看不懂,大神

        之前都分析好了,等下我發一個你看得懂的,這是直接RCE代碼。
        9#
        sssjcccz01a 發表于 2020-7-1 08:23
        真不好說,只有部分系統看看,具體搞的少。
        10#
        8823 發表于 2020-7-3 17:47
        我一直覺得國內做vxworks的人不多,好多科研院所用的好的人很少。這系統授權費用很貴,不知道您是怎么學習這個系統的?我也很想學習一下vxworks。
        您需要登錄后才可以回帖 登錄 | 注冊[Register]

        本版積分規則 警告:本版塊禁止灌水或回復與主題無關內容,違者重罰!

        快速回復 收藏帖子 返回列表 搜索

        RSS訂閱|小黑屋|聯系我們|吾愛破解 - LCG - LSG ( 京ICP備16042023號 | 京公網安備 11010502030087號 )

        GMT+8, 2020-7-20 11:09

        Powered by Discuz!

        Copyright © 2001-2020, Tencent Cloud.

        快速回復 返回頂部 返回列表
        快三开奖结果