筍子工作雜記

四月 20, 2006

MSSQL 7.0 密碼還原

Filed under: Windows — shinnlu @ 12:43 上午

今天一個客戶跟我說,他的 MSSQL 7.0 的 sa 密碼忘記了,本來想幫他把 sa 密碼重置,但是客戶有另一隻登入同一個資料庫的程式也不知道密碼,這就頭大了…
好不容易找到相關資料,原來 MSSQL 7 的連線認證編碼做的很容易破解,而 username 的部份是以純文字傳輸,密碼加密/解密的方式如下,並以 sa/password 為例
加密的部份是把每 1 Byte 延展成 2Bytes ,再把每1Byte 的 high 4bits,lower 4bits 互換,互換之後的每 1Byte 和 A5 做 Xor,以字元 “p"為例

p= 0×70(ascii)
70 延展為 70 00
70 00 兩個 Byte 高低位元互換為 07 00
07 00 與 A5 做 XOR運算得到 A2 A5

既然知道加密的方式,那解密就沒有問題了(註1)
同樣的一次1Byte,先與 A5 做 XOR,然後對調高低位元,以上述加密結果 A2 A5 為例

先取 A2 與 A5 做 XOR 得到 07
再將 07 高低位元互換得到 70(char p)

因為筆者有長期訂閱電子報的習慣,所以這篇文章是從 SecuriTeam 電子報裡找出來的,不然剛接到這種問題,還真不知道如何下關鍵字去搜尋,也因此找到幾篇如何重置 MSSQL 密碼的文章。這裡附上原出處網址:MS SQL Server Captured Authentication Packets Cracker,文章裡說的很詳細,也有附加上述程式實作的原始碼,為了預防原始連結有問題,在本blog上也留存一份crack-mssql.c
此程式編釋時需要 Microsoft Visual Studio、Microsoft Platform SDK 和 WinPCap 函式庫

註1:有的時候,知道加密的方式,不一定解的回來,例如 MD5 是一個很好的例子
再補充:這篇文章發表過後一陣子,才突然想起之前不是有人宣稱可以破解 MD5 嗎?
Project RainbowCrack 上面有詳細的破解過程,我試著產生他的 Rainbow Table,速度實在是太慢了,跑了5分鐘 Table 才900k,而站上的範例至少用 610MB 的TABLE ,才會有0.9990的機率破解成功。(但是 3G 的Table 怎麼機率才0.9904)

無迴響 »

仍無迴響。

此篇文章迴響的訂閱源料 TrackBack URL

發表迴響

Powered by WordPress