hashcat sha256 from mac address

只給一天期限的憑證檔案

去年幫忙整合公司一個 demo app 的時候,因為是會留給客戶測試的,所以要求需要加上認證的程序。這個認證 library 是用 C++ 實做的,裡面會檢查特地目錄下有沒有自己格式的憑證,裡面有加上日期以及電腦的 mac address 的檢查,都符合的話才能繼續使用。
當然透過這個機制,就可以控制留在客戶那邊的 demo app 時候到了,或是換台電腦也就不能使用了。不過就內部開發來說,也得需要申請這個憑證,才能測試看看功能是不是正常。

今年自己也做了一個 demo app,因為也是要給客戶裝起來試用的,所以也一樣要加上認證程序,這個沒有問題,就一樣加上就好,不過在要測試的時候發現憑證過期了。
於是跟之前一樣看看希望再給個新的憑證,給是給了但是期限只到隔天,說需要的話要寄信跟部門主管申請才行。

申請就申請,但是這樣好像有點麻煩啊,有沒有什麼辦法繞過呢?

有 source code 但是沒有 private key

於是研究了一下這個認證 library 的 source code,發現了其實沒那麼容易。雖然可以了解憑證的格式改個日期等其他的資訊,但是整個憑證會拿去做 sha256 的 hash,然後拿來用 rsa-sha256 檢查這個 hash 是不是認證過的。
由於整份 source code 只有 rsa 的 public key,所以其實有點困難自己改個資訊重新做一個,算一算要用猜的猜到 256 bits 的 private key,時間也是個天文數字。

但其實有捷徑 golden mac address

不過在看 source code 的發現,那公司有部門是需要常去跑客戶的,他們的電腦其實是不需要憑證的,直接就可以做示範。稍微搜尋了一下就找到原來是有些 golden 的 mac address 表的,雖然看起來不像是 mac 就是,大致上長得像這樣

static bool default_mac_verify(void)
{
    mac_list golden_hashs;
    golden_hashs.insert(std::string("inGqwl33R5VfylgXklKfF95H7rmEEHL64Frp3Xatvt0="));
    ...
}

當然上面只是自己替換的範例,不過其實原本上面也有些註解,大概知道其實除了一些常跑客戶的電腦之外,也還有 ci-runner 以及 hardware keys 也在裡面。

乍看之下雖然不是 mac,但總是要拿來做比對的吧?所以稍微追了一下就知道上面那串字串其實是

mac address 經過 sha256 後的 hash 再過 base64 encode 的結果

但還是 sha256 的 hash 啊

雖然知道了這組 golden_hashs 怎麼來的之後,但它們還是個 sha256 過的 hashes,還是無法知道原本的 mac address 是什麼,即使知道是從 mac 來的。

其實知道這些就可以大幅降低暴力搜尋的成本了

簡單先把上面 golden_hashs 先 base64.decode 回 sha256 hashes 後存成一個檔案 sha256.hash 一行一組,大概約有十來個,然後就可以送進去 hashcat 來跑跑看了,

$ hashcat -m 1400 -a 3 sha256.hash "?H?H?H?H?H?H?H?H?H?H?H?H"

詳細的再查 hashcat 的 manual,但是就是因為知道是從 mac address 來的,而且還是大寫,所以一定是 12 個 ?H,也就是 12 個 [0-9A-F]。這樣設定下去跑的話,在一張 1070 Ti 的顯示卡上,大概需要 1 day 13 hours 可以跑完全部。

這已經非常可以接受了,而實際上剛剛說到有十幾組,其實只要找到其中一組 mac 解出來就可以。

windows hyper-v virtual switch manager

得到 golden mac address 之後,接下來就是找個好方法讓自己的電腦可以產生一張虛擬的網路卡,並且可以自行設定 mac address。

查了一下覺得最方便的就是透過 windows 內建的 hyper-v manager 來做到這件事,當然首先要先安裝一下,不過似乎最新的 WSL 已經就有用這個,所以裝個 WSL 應該也就順便裝上了。
接著可以到 hyper-v manager (hyper-v 管理員) 上會有 virtual switch manager (虛擬交換器管理員),進去之後其實可以專門新增一個 virtual switch,不需要了再直接移除即可。

然後就可以到一般 windows 網路連線設定上選到這張 hyper-v virtual switch ,右鍵->內容->設定->進階->Network Address,就可以任意修改想要的 mac address 了。

不用申請憑證了

有了一張專屬認證用的 virtual switch 之後,這樣就可以不用憑證,就可以正常使用各個有經過這套認證程序的 applications 了,即使不是自己編譯出來的也可以使用,也不再有期限或是換電腦的問題,用的也是工作會用到的工具,而需要的話移除掉也相當快速。

最後的感想就是

有張自己的顯示卡是很不錯的一件事啊!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *