編寫 Metasploit 模塊獲取 SecureCRT 明文密碼
聲明
由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測以及文章作者不為此承擔任何責任。
雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
No.1 前言
最后的功能是支持7.3.3版本之前和之后的兩種解密算法,并且支持Passphrase解密(前提是你要知道用戶設置的Passphrase),這次主要學習了一個河豚解密算法的編寫。舊版本的加解密算法正是使用了河豚算法,這個算法比較容易恢復明文密碼,所以新版本添加了Passphrase的SHA256數據摘要作為AES-256-CBC算法的Key,增加了解密難度,和Xshell的主密碼一樣。
No.2 配置文件
安裝完SecureCRT后,設置主密碼,創建一個新的連接,點開屬性設置保存密碼,就會在當前用戶的%AppData%\Roaming\VanDyke\Config\Sessions下創建一個以連接名稱為文件名的會話配置文件,為了保險起見,我還是通過讀取注冊表’HKEY_CURRENT_USER\Software\VanDyke\SecureCRT’獲取session配置文件的保存目錄,有價值的信息:用戶名,登錄密碼。有時候還會有腳本登錄密碼,主機地址和端口等等。

因為配置文件不是一個可序列化的文件,所以無法轉化為Ruby對象,這里就選擇使用則正表達式去匹配關鍵信息
protocol = Regexp.compile('S:"Protocol Name"=([^\r\n]*)').match(file) ? Regexp.last_match(1) : nil
經過上面的正則就可以匹配到兩個版本的關鍵信息,并且通過對應的解密算法解密,最終入庫并呈現給攻擊者。
No.3 算法實現
現有的解密程序是Python語言編寫的,各個語言之間的加解密和編碼可能不太一樣,轉為Ruby語言開發還是遇到了一些有趣的地方。
首先Python語言可以在字符串的前面添加指定字母表示不同的編碼格式,例如:
self.IV = b'\x00' * Blowfish.block_size
在Ruby中,用雙引號括起來的就是原始的數據,不需要添加修飾,一定要有雙引號才會轉義,單引號括著什么就是什么,并不是hex數據了。
key1 = "\x24\xA6\x3D\xDE\x5B\xD3\xB3\x82\x9C\x7E\x06\xF4\x08\x16\xAA\x07"
因為雙引號和單引號括的根本就不是同一個東西。
irb(main):001:0> "\x24\xA6\x3D\xDE\x5B\xD3\xB3\x82\x9C\x7E\x06\xF4\x08\x16\xAA\x07".unpack('H*')
Python中的bytes.fromhex(Ciphertext)方法實現的是將ciphertext的hex轉換為bytes類型,Ruby實現的方法為:[ciphertext].pack(‘H*’)

舊版本解密
河豚解密函數,非常幸運的是OpenSSL庫中自帶了這個算法,在使用中注意實例化的模式是bf-cbc,CBC模式。
def blowfish_decrypt(secret_key, text)
按照Python語言中的解密流程,轉為Ruby語言的代碼如下,要注意的是:Ruby與Python的切片的第二個參數的含義是不一樣的,Ruby可以使用.step(2)設置循環的步長為2,剩下的都是編碼問題了。
def securecrt_crypto(ciphertext)
新版本解密
bytes類型轉int,按照小端順序的Python實現代碼:int.from_bytes(padded_plain_bytes[0:4], ‘little’),轉為Ruby實現為:padded_plain_bytes[0,4].unpack1(‘l’)。
def securecrt_crypto_v2(ciphertext)
No.4 使用演示
首先獲得一個meterpreter會話,執行run post/windows/gather/credentials/securecrt PASSPHRASE=123456,后面的PASSPHRASE參數為主密碼。

No.5 總結
如果已知加解密的算法,或者有現成的分析文章,在編寫解密代碼時就比較容易,編寫解密模塊主要是要對Ruby的pack和unpack的靈活運用,還有對配置文件的解析,像這個不是規范的INI配置文件,無法將文本序列化成可用對象,還需要使用到正則表達式提取文本信息。
參考
https://github.com/HyperSine/how-does-Secu...
https://github.com/rapid7/metasploit-frame...
- 原創: 三米前有蕉皮 雷神眾測
- 原文鏈接: https://mp.weixin.qq.com/s/Sr95NSTVEgANz_r...