A. 網路安全乾貨知識分享 - Kali Linux滲透測試 106 離線密碼破解
前言
最近整理了一些 奇安信&華為大佬 的課件資料+大廠面試課題,想要的可以私信自取, 無償贈送 給粉絲朋友~
1. 密碼破解簡介
1. 思路
目標系統實施了強安全措施
安裝了所有補丁
無任何已知漏洞
無應用層漏洞
攻擊面最小化
社會 工程學
獲取目標系統用戶身份
非授權用戶不受信,認證用戶可以訪問守信資源
已知用戶賬號許可權首先,需要提權
不會觸發系統報警
2. 身份認證方法
證明你是你聲稱你是的那個人
你知道什麼(賬號密碼、pin、passphrase)
你有什麼(令牌、token、key、證書、密寶、手機)
你是誰(指紋、視網膜、虹膜、掌紋、聲紋、面部識別)
以上方法結合使用
基於互聯網的身份驗證仍以賬號密碼為主要形式
3. 密碼破解方法
人工猜解
垃圾桶工具
被動信息收集
基於字典暴力破解(主流)
鍵盤空間字元爆破
字典
保存有用戶名和密碼的文本文件
/usr/share/wordlist
/usr/share/wfuzz/wordlist
/usr/share/seclists
4. 字典
1. 簡介
鍵盤空間字元爆破
全鍵盤空間字元
部分鍵盤空間字元(基於規則)
數字、小寫字母、大寫字元、符號、空格、瑞典字元、高位 ASCII 碼
2. crunch 創建密碼字典
無重復字元
crunch 1 1 -p 1234567890 | more
1
必須是最後一個參數
最大、最小字元長度失效,但必須存在
與 -s 參數不兼容(-s 指定起始字元串)
crunch 4 4 0123456789 -s 9990
讀取文件中每行內容作為基本字元生成字典
crunch 1 1 -q read.txt
1
字典組成規則
crunch 6 6 -t @,%%^^ | more
-t:按位進行生成密碼字典
@:小寫字母 lalpha
,:大寫字母 ualpha
%:數字 numeric
^:符號 symbols
輸出文件壓縮
root@kali:~# crunch 4 5 -p dog cat bird
1
-z:指定壓縮格式
其他壓縮格式:gzip、bzip2、lzma
7z壓縮比率最大
指定字元集
root@kali:~# crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha-numeric-all-space -o w.txt -t @d@@ -s cdab
1
隨機組合
root@kali:~# crunch 4 5 -p dog cat bird
1
crunch 5 5 abc DEF + !@# -t ,@^%,
在小寫字元中使用abc范圍,大寫字元使用 DEF 范圍,數字使用佔位符,符號使用!@#
佔位符
轉義符(空格、符號)
佔位符
root@kali:~# crunch 5 5 -t ddd%% -p dog cat bird
1
任何不同於 -p 參數指定的值都是佔位符
指定特例
root@kali:~# crunch 5 5 -d 2@ -t @@@%%
1
2@:不超過兩個連續相同字元
組合應用
crunch 2 4 0123456789 | aircrack-ng a.cap -e MyESSID -w -
crunch 10 10 12345 –stdout | airolib-ng testdb -import passwd -
3. CUPP 按個人信息生成其專屬的密碼字典
CUPP:Common User Password Profiler
git clone https://github.com/Mebus/cupp.git
python cupp.py -i
4. cewl 通過收集網站信息生成字典
cewl 1.1.1.1 -m 3 -d 3 -e -c -v -w a.txt
-m:最小單詞長度
-d:爬網深度
-e:收集包含email地址信息
-c:每個單詞出現次數
支持基本、摘要 身份認證
支持代理
5. 用戶密碼變型
基於 cewl 的結果進行密碼變型
末尾增加數字串
字母大小寫變化
字母與符號互相轉換
字母與數字互相轉換
P@$w0rd
6. 使用 John the Ripper 配置文件實現密碼動態變型
2. 在線密碼破解
1. hydra
簡介
密碼破解
Windows 密碼破解
Linux 密碼破解
其他服務密碼破解
圖形化界面
xhydra
HTTP表單身份認證
密碼破解效率
密碼復雜度(字典命中率)
帶寬、協議、伺服器性能、客戶端性能
鎖定閾值
單位時間最大登陸請求次數
Hydra 的缺點
穩定性差,程序時常崩潰
速度控制不好,容易觸發服務屏蔽或鎖死機制
每主機新建進程,每服務新建實例
大量目標破解時性能差
2. pw-inspector
Hydra 小工具 pw-inspector
按長度和字元集篩選字典
pw-inspector -i /usr/share/wordlists/nmap.lst -o p1.lst -l
pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u
pw-inspector -i /usr/share/wordlists/nmap.lst -o P2.lst -u -m 3 -M 5
3. mesa
Mesa 的特點
穩定性好
速度控製得當
基於線程
支持模塊少於hydra(不支持RDP)
WEB-Form 支持存在缺陷
查看支持的模塊
參數
-n:非默認埠
-s:使用SSL連接
-T:並發主機數
mesa -M ftp -q
3. 離線密碼破解
1. 簡介
身份認證
禁止明文傳輸密碼
每次認證使用HASH演算法加密密碼傳輸(HASH演算法加密容易、解密困難)
伺服器端用戶資料庫應加鹽加密保存
破解思路
嗅探獲取密碼HASH
利用漏洞登陸伺服器並從用戶資料庫獲取密碼HASH
識別HASH類型
長度、字元集
利用離線破解工具碰撞密碼HASH
優勢
離線不會觸發密碼鎖定機制
不會產生大量登陸失敗日誌引起管理員注意
2. HASH 識別工具
1. hash-identifier
進行 hash 計算
結果:
進行 hash 識別
2. hashid
可能識別錯誤或無法識別
3. HASH 密碼獲取
1. sammp2
Windows HASH 獲取工具
利用漏洞:Pwmp、fgmp、 mimikatz、wce
物理接觸:sammp2
將待攻擊主機關機
使用 Kali ISO 在線啟動此主機
發現此 windows 機器安裝有兩塊硬碟
mount /dev/sda1 /mnt
將硬碟掛載
cd /mnt/Windows/System32/config
切換目錄
sammp2 SYSTEM SAM -o sam.hash
導出密碼
利用 nc 傳輸 HASH
HASH 值:
2. syskey 工具進行密碼加密
使用 syskey 進行加密(會對 SAM 資料庫進行加密)
重啟需要輸入密碼才能進一步登錄
使用 kali iso live
獲取到 hash 值
hashcat 很難破解
使用 bkhive 破解
使用 Bootkey 利用RC4演算法加密 SAM 資料庫
Bootkey 保存於 SYSTEM 文件中
bkhive
從 SYSTEM 文件中提取 bootkey
Kali 2.0 拋棄了 bkhive
編譯安裝 :http://http.us.debian.org/debian/pool/main/b/bkhive/
在windows的 kali live 模式下,運行
sammp2 SAM key (版本已更新,不再支持此功能)
建議使用 Kali 1.x
1. Hashcat
簡介
開源多線程密碼破解工具
支持80多種加密演算法破解
基於CPU的計算能力破解
六種模式 (-a 0)
0 Straight:字典破解
1 Combination:將字典中密碼進行組合(1 2 > 11 22 12 21)
2 Toggle case:嘗試字典中所有密碼的大小寫字母組合
3 Brute force:指定字元集(或全部字元集)所有組合
4 Permutation:字典中密碼的全部字元置換組合(12 21)
5 Table-lookup:程序為字典中所有密碼自動生成掩碼
hashcat -b
hashcat -m 100 hash.txt pass.lst
hashcat -m 0 hash.txt -a 3 ?l?l?l?l?l?l?l?l?d?d
結果:hashcat.pot
hashcat -m 100 -a 3 hash -i –increment-min 6 –increment-max 8 ?l?l?l?l?l?l?l?l
掩碼動態生成字典
使用
生成文件
計算 hash 類型
結果 MD5
查看 MD5 代表的值
進行破解
2. oclhashcat
簡介
號稱世界上最快、唯一的基於GPGPU的密碼破解軟體
免費開源、支持多平台、支持分布式、150+hash演算法
硬體支持
虛擬機中無法使用
支持 CUDA 技術的Nvidia顯卡
支持 OpenCL 技術的AMD顯卡
安裝相應的驅動
限制
最大密碼長度 55 字元
使用Unicode的最大密碼長度 27 字元
關於版本
oclHashcat-plus、oclHashcat-lite 已經合並為 oclhashcat
命令
3. RainbowCrack
簡介
基於時間記憶權衡技術生成彩虹表
提前計算密碼的HASH值,通過比對HASH值破解密碼
計算HASH的速度很慢,修改版支持CUDA GPU
https://www.freerainbowtables.com/en/download/
彩虹表
密碼明文、HASH值、HASH演算法、字元集、明文長度范圍
KALI 中包含的 RainbowCrack 工具
rtgen:預計算,生成彩虹表,時的階段
rtsort:對 rtgen 生成的彩虹錶行排序
rcrack:查找彩虹表破解密碼
以上命令必須順序使用
rtgen
LanMan、NTLM、MD2、MD4、MD5、SHA1、SHA256、RIPEMD160
rtgen md5 loweralpha 1 5 0 10000 10000 0
計算彩虹表時間可能很長
下載彩虹表
http://www.freerainbowtables.com/en/tables/
http://rainbowtables.shmoo.com/
彩虹表排序
/usr/share/rainbowcrack
rtsort /md5_loweralpha#1-5_0_1000x1000_0.rt
密碼破解
r crack *.rt -h
rcrack *.rt -l hash.txt
4. John
簡介
基於 CPU
支持眾多服務應用的加密破解
支持某些對稱加密演算法破解
模式
Wordlist:基於規則的字典破解
Single crack:默認被首先執行,使用Login/GECOS信息嘗試破解
Incremental:所有或指定字元集的暴力破解
External:需要在主配配文件中用C語言子集編程
默認破解模式
Single、wordlist、incremental
主配置文件中指定默認wordlist
破解Linux系統賬號密碼
破解windows密碼
Johnny 圖形化界面的john
5. ophcrack
簡介
基於彩虹表的LM、NTLM密碼破解軟體
彩虹表:http://ophcrack.sourceforge.net/tables.php
B. 如何利用SAM找差異性表達基因
今天就先來聊聊如何看差異表達基因數據,火山圖,聚類圖又怎麼看。宏大滑1差異基因篩選方法那差異基因是如何篩選出來的呢?差異基因的篩選方法有很多,包括倍數法、T檢驗、F檢驗及SAM等。下面簡單介紹一下GCBI平台上用的倍數法和SAM法。倍數法適用於沒有生物學重復的樣本,其計算基因在兩個條件下表達水平的比值,確定比值的閾值,將絕對值大於此閾值的基因判斷為差異基因。SAM演算法適用於有生物學重復的樣本,通過對分母增加一個常量T檢驗過程減小了假陽性發生的概率。文獻中報道,相較於其他演算法,SAM演算法更為穩定,篩選出的結果也更為准確。2差異基因數據解讀經過合適的差異基因方法篩選出的差異基因,結果一般分為兩部分,數據+圖形。數據結果展示如下圖所示(兩分組)眾多參數中,重點看三個。p-value或q-value沒有做生物學重復請跳過這一步。p-value或q-value是統計學檢驗變數,代表差異顯著仿亂性,一般p-value或q-value小於0.05代表具有顯著性差異,但可根據具體情況適當調整。因為p-value或q-value衡量地是某個基因假陽性的概率,如果p-value或q-value越低,那麼挑選該基因出現假陽性的概率就越低,可驗證性就越高。兩者具體的計算方法具體如下:那p-value、q-value同時存在時看哪個呢?SAM法只有q-value。當兩者同時存在時,可根據具體情況具體分析。差異篩選是一個典型的多重假設檢驗過程,對於多重假設檢驗,單次檢驗中差異顯著基因的假陽性率(p-value較小)可能會較大,而q-value和FDR值較常見的BH校正方法得到的FDR值而言,改進了其對假陽性估計的保守性。即q-value相比於p-value更加嚴格,當差異基因結果較少時,可以退而求其次看p-value。FoldChangeFoldChange表示實驗組比上對照組的差異表達倍數,一般表達相差2倍以上是有意義的,放寬要求1.5倍或者1.2倍也可以接受。看錶達倍數的同時還需結合基因表達豐度,信號值太低的基因會在後續的驗證實驗中檢測不到。3差異基因圖表解讀在差異結果的圖形展示結果中,主要是火山圖和聚類圖。火山圖火山圖只針對兩分組且有生物學重復的情況。如何看火山圖呢?火山圖可反映總體基因的表達情況,橫坐標代表log2(FoldChange),縱坐標表示-log10(P值),每個點代表一個基因,顏色用以區分基因是否差異表達,圖中橙色的點代表差異表達基因,藍色的點代表沒有差異表達的基因。聚類圖聚類圖可以衡量樣本或基因之間表達的相似性。如上圖所示的聚類圖中,橫坐標代表樣本聚類,一列代表一個樣本,聚類基於樣本間基因表達的相似性,樣本間基因表達越接近,靠的越近,以此類推。縱坐標代表基因聚類,一行代表一個基因,聚類基於基因在樣本中表達的相似性,基因在樣本中表達越接近,靠的越近,以此類推。色階代表基因表達豐度,越紅代表上調得越明顯,越綠代表下調得越明顯。如何做聚類圖請戳往期推送做個聚類圖只需1分鍾差異基因有了,如何挑選潛在蔽臘基因進行實驗驗證呢?關鍵還在於感興趣點在哪了。粗略的看,可以先看KEGG或者GO功能分類,看差異基因具體富集在哪些通路或功能。比如關注的是細胞內脂肪酸合成關鍵酶,可以重點看脂肪酸合成和碳流相關通路。具體如何看KEGG或者GO功能分類,請聽下回分解。
C. SAM演算法理解
SAM演算法過程基於數據的噪音分析。一般的,信噪比會隨著信號的降低而減小。然而當人們針對每一個基因進行分析時,發現即使他們的信號在同一水平,每一個基因的表達噪音都不一樣。所以無法籠統地給出一個具體地線性方程來分析全部基因,必須一個一個基因單獨分析。假設有對照實驗I和U兩組局拆,I和U實驗各有平行實驗w組,對於某個指定的基因i,定義相對差異值 (relative difference(d(i)))為基因i在實驗組I和U當中的平均值之差除以I和U的總體標准誤差均值。因為當標准誤差均值過低時,會產生一個較高的d(i)值,所以總體的標准誤差均值增加了一個較正項。具體公式如下:
其中上劃線表示平均值 ,å m 和å n 表示實驗組I和U的基因i表達的樣本標准差,n1和n2表示實驗組I和U當中基因i參與統計的探針的個數。S0為較正談臘陸項,它可以由計算機自動給出,也可以由人手動指定。S0的取值標準是:將所有的d(i)值排序後100等分,每一等分先求得中位數絕對離差,然後計算這些中位數絕對離差值的變異系數。取s0分別等於100等分當中的s(i)的最小值,依次計算。最終s0的值就是在這些計算中,使變異系數最小的s0。
我們來比較一下它和t-test的異同:
[圖片上傳失敗...(image-92c592-1597045517277)]
比較之下,我們就會發現兩者十分的相同。左邊是兩組具有不同探針數和不同標准差的非平行實驗t-test計算公式,右邊就是具有不同探針數和不同標准差的非平行實驗的SAM公式,我們可以看到,它們的最終差別,只在那個s0附加項上。由此我們可以知道,實際上SAM就是t-test的一個具體應用。
在計算得到所有的d(i)值之後,重排樣含頃品計算d(i)期待值d E (i)。然後用期待值d E (i)對實測值d(i)做圖。如果期待值和實測值相同,那麼作圖點就應該落在斜率為1的直線上,如果不同,作圖點就落在其外。差別越大,距離該直線就越遠。給定一個D值(默認的話,可以設置為1.2),當期待值和實測值差別比D大時,就認為有顯著差異。這就是SAM演算法。
下面我們就來使用R來實踐一下SAM演算法。
<pre style="box-sizing: border-box; font-family: "Roboto Slab", Georgia, Times, serif; font-size: 1em; font-weight: 300; font-style: inherit; margin: -2px 0px 27px; padding: 0px; vertical-align: baseline; border: 0px; outline: 0px; line-height: 27px; overflow: auto; max-width: 100%; background: transparent; color: rgb(102, 102, 102);">##安裝SAM庫
--- Please select a CRAN mirror for use in this session ---
also installing the dependency 『impute』
trying URL ' http://software.rc.fas.harvard.e/mirrors/R/bin/windows/contrib/2.11/impute_1.24.0.zip'
Content type 'application/zip' length 1205991 bytes (1.2 Mb)
opened URL
downloaded 1.2 Mb
trying URL ' http://software.rc.fas.harvard.e/mirrors/R/bin/windows/contrib/2.11/samr_1.28.zip'
Content type 'application/zip' length 80418 bytes (78 Kb)
opened URL
downloaded 78 Kb
package 'impute' successfully unpacked and MD5 sums checked
package 'samr' successfully unpacked and MD5 sums checked
The downloaded packages are in
Loading required package: impute
Background correcting
Normalizing
Calculating Expression
</pre>
SAM分析。我們首先來了解一下samr函數。
我們注意到其參數resp.type有以下幾種類型:"quantitative" 定量反應,其中data參數當中的y必須是數值型數組; "Two class unpaired" 比較兩種不同條件下的結果,其中data參數當中的y必須是1或者2數組,即要麼值屬於其中一種條件,要麼屬於另外一種條件; "Survival" for censored survival outcome; "Multiclass" : 兩組以上實驗條件,其中data參數當中的y是自然數數組,指定實驗條件編號; "One class" 單組實驗,y是1的數組; "Two class paired" 比較兩種不同條件下的結果,並且實驗是成對進行的,其中data參數當中的y是-1,1,-2,2……-k,k這樣成對出現的數組; "Two class unpaired timecourse", "One class time course", "Two class.paired timecourse" or "Pattern discovery"與時間相關的比較,y值必須是kTimet這種形式,其中k是組編號,t是時間,Time就是字元Time,起始的時間點要為kTimetStart格式,結束的點要為kTimetEnd格式。
Table 1 Resp.type取值范圍
| Resp.type | 取值 |
| Quantitative | 實數,例:27.4 或者-45.34 |
| Two class (unpaired) | 整數1,2 |
| Multiclass | 整數1,2,3,…… |
| Paired | 整數-1,1,-2,2等等成對出現,通常認為負號代表未處理的對照組,正號代表實驗組;-1總是與1配對,-2與2配對直至-k與k |
| Survival data | (Time, status)這種成對的數字,比如(50,1),(120,0)。第一個數字代表時間,第二個數字代表狀態(1=死亡,0=存活) |
| One class | 整數1 |
在示例的數據中,實驗設計為estrogen存在與不存在,及作用10及48小時的比較。因為時間點過少,不足以形成timecourse,所以我們用多組來比較吧。
<pre style="box-sizing: border-box; font-family: "Roboto Slab", Georgia, Times, serif; font-size: 1em; font-weight: 300; font-style: inherit; margin: -2px 0px 27px; padding: 0px; vertical-align: baseline; border: 0px; outline: 0px; line-height: 27px; overflow: auto; max-width: 100%; background: transparent; color: rgb(102, 102, 102);">> gp=rep(1:4,each=2)
</pre>
SAM演算法因為其提供有 Microsoft Excel插件,所以使用非常廣泛,相反,其在R當中的應用卻顯得相對較少。有研究表明,SAM對FDR的控制並不是很好,這是它最主要的不足。