我們在滲透測試過程中,往往會遇到一些我們看不懂的代碼,一般人都稱之為亂碼,往往都不會太在意,然而有一些所謂的亂碼,其實是通過各種手段加密過的重要信息,只要知道它的加密方法,就可以獲得重要的明文信息,反過來想,如果是無關緊要的信息,那持有者為什么要多費功夫進行加密處理呢?所以經過加密處理的信息,大部分都是一些重要信息,所以一些有經驗的滲透測試者遇到“亂碼”,往往不會一掃而過,而是分析是否是經過加密的信息,有的甚至一眼就能看出是用的什么加密方法,今天我們就來講講滲透測試那些基礎的密碼學知識。
常用網絡編碼
網絡編碼其實也是加密的一種形式,但是并不是為了隱藏真正的信息,而是方便人、瀏覽器、服務器、計算機等應用服務及設備之間的數據識別和交換,經過網絡編碼后的數據都具有十分明顯的特點,普通人見的多了后,一眼就能看出采用的什么編碼方式,下面我們就介紹幾種常見的網絡編碼方式。
URL編碼
URL編碼用于瀏覽器和網站之間的數據交換,我們在使用瀏覽器訪問網頁時,尤其是輸入一些GET請求參數時,當我們點擊訪問時,這些參數就變成我們看不懂的字符了,這其實就是經過了URL編碼后傳到了網站服務器進行識別了,我們可以通過Burp Suite工具的Decoder功能模塊來演示一下URL編碼結果我們以“https://mp.toutiao.com”頭條號主頁地址為例,經過URL編碼后結果如下圖所示:
URL編碼
Base64編碼
用于傳輸8Bit字節碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進制數據的方法。Base64編碼是從二進制到字符的過程,可用于在HTTP環境下傳遞較長的標識信息。同樣以“https://mp.toutiao.com”頭條號主頁地址為例,經過Base64編碼后結果如下圖所示:
Base64編碼
HEX編碼
HEX編碼又叫十六進制編碼,是數據的16進制表達形式,是計算機中數據的一種表示方法。同我們日常中的十進制表示法不一樣。它由0-9,A-F組成。與10進制的對應關系是:0-9對應0-9,A-F對應10-15。同樣以“https://mp.toutiao.com”頭條號主頁地址為例,經過HEX編碼后結果如下圖所示:
HEX編碼
常用加密方法
除了網絡編碼這種不以隱藏原文內容為目的的加密方式外,曾經出現過許多用于信息加密的加密方法,有些現在仍在使用。
摩斯碼
這個大家想必都是耳熟能詳,在各類諜戰影片中,經常看到情報工作者通過電臺發出“長滴聲“”或“短滴聲”的信號來傳遞信息,摩斯碼的基礎格式是"."代表短音,"-"代表長音,"/"代表分隔符,就會出現類似"..../-/-/.--./.../---.../-..-./-..-./--/.--./.-.-.-/-/---/..-/-/../.-/---/.-.-.-/-.-./---/--"一段密文,我們可以通過在線摩斯碼破譯工具:https://www.atool99.com/morse.php,來解密這段密文,原文為:https://mp.toutiao.com,如下圖所示:
摩斯碼在線解密
jsfuck
jsfuck是一種神奇的編碼,能只用6個字符表達所有的式子,同樣使用在線編碼工具:http://www.jsfuck.com,就可以進行編碼,識別他很容易,就像下圖藍框中這樣子的東西就是jsfuck。
jsfuck
Uuencode
Uuencode是二進制信息和文字信息之間的轉換編碼,也就是機器和人眼識讀的轉換。Uuencode編碼方案常見于電子郵件信息的傳輸,目前已被多用途互聯網郵件擴展(MIME)大量取代,Uuencode將輸入文字以每三個字節為單位進行編碼,如此重復進行。如果最后剩下的文字少于三個字節,不夠的部分用零補齊。在線解密網站:http://www.qqxiuzi.cn/bianma/uuencode.php,如下圖所示:
Uuencode
移位密碼
移位密碼是對明文字符在不改變其原形的基礎上,按照密鑰指示的規則,對明文字符進行位置移動的密碼。簡單理解,就是對明文字符的位置進行重新排列的一種密碼。移位密碼的攻擊手段一般是結合已知的明文串進行爆破。
例子:
明文m:wearefamily,密鑰k:25413
加密過程:
首先將明文m按照k的長度5,將明文劃分為三組:weare || famil || y
根據密鑰k更換文字順序,25413 || 25413 || 2→eerwa || alifm || y
得到密文c:eerwaalifmy
柵欄密碼
柵欄密碼是一種規則特殊的移位密碼,所謂柵欄密碼,就是把要加密的明文分成N個一組,然后把每組的第1個字連起來,形成一段無規律的話,然后依次連接。所以柵欄密碼的密鑰僅僅指示一個數字k,表示柵欄也就是分的每組的長度,柵欄密碼的攻擊方法也很簡單,爆破或者分析出柵欄也就是分組的長度即可
例子:
明文m:wearefamily,密鑰k:4
加密過程:
首先將明文m按照k的長度4,將明文進行分組:wear || efam || ily
依次取出每組第1個,第2個,第3個......
wei || efl || aay || rm
得到密文c:weieflaayrm
替代密碼
是指先建立一個替換表,加密時將需要加密的明文依次通過查表,替換為相應的字符,明文字符被逐個替換后,生成無任何意義的字符串,即密文,替代密碼的密鑰就是其替換表 。替代密碼的攻擊手段大部分是進行詞頻分析。
如果秘鑰為13,十分簡單,所有的英文字母在26個順序中向后移動13個即可,如果移動到z了,回來向a移動,大小寫也是分開的,舉個例子:
明文m:asdfgzASDFGZZ,密文c:nfqstmNFQSTMM。
凱撒密碼
通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一個固定數目進行偏移后被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推X將變成A,Y變成B,Z變成C。由此可見,位數就是凱撒密碼加密和解密的密鑰。凱撒密碼的攻擊方法是詞頻分析,但是非常可惜的是由于位數的可能性太小了,所以直接爆破也是可以的。
例子:
明文m:wearefamily,密鑰k:4。
加密過程:
首先講明文m中的每一位+4,然后得到密文c:aievijeqmpc。
維吉尼亞密碼
是在單一愷撒密碼的基礎上擴展出多表代換密碼,根據密鑰(當密鑰長度小于明文長度時可以循環使用)來決定用哪一行的密表來進行替換,以此來對抗字頻統計。
維吉尼亞密碼
例子:
明文: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG,密鑰(循環使用,密鑰越長相對破解難度越大): CULTURE
加密過程:
如果第一行為明文字母,第一列為密鑰字母,那么明文字母'T'列和密鑰字母'C'行的交點就是密文字母'V',以此類推。
密文: VBP JOZGM VCHQE JQR UNGGW QPPK NYI NUKR XFK
Hash
一般翻譯做“散列”,也有直接音譯為“哈希”的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
針對Hash的攻擊也很多,一般不會直接爆破,而是通過其他手段獲取到明文。
在線解密網站:http://www.cmd5.com,如下圖所示:
CMD5
以上就是滲透測試常用到的密碼學基礎知識,感謝閱讀,歡迎關注@科技興了解更多科技尤其是網絡安全方面的資訊和知識。