實(shí)現(xiàn)原理是利用TLS協(xié)議的特點(diǎn)和握手過(guò)程來(lái)進(jìn)行測(cè)試和解析響應(yīng)來(lái)確定目標(biāo)服務(wù)器支持哪些TLS協(xié)議和密碼套件。
在TLS握手過(guò)程中,客戶端和服務(wù)器會(huì)協(xié)商并使用相同的TLS協(xié)議版本和密碼套件來(lái)進(jìn)行通信。通過(guò)發(fā)送特定的握手請(qǐng)求并分析響應(yīng),可以確定目標(biāo)服務(wù)器所支持的TLS協(xié)議和密碼套件等信息。
使用namp工具快速確定目標(biāo)服務(wù)器支持哪些協(xié)議和密碼套件
在Linux下,可以使用nmap工具來(lái)快速確定目標(biāo)服務(wù)器支持哪些TLS協(xié)議和密碼套件。具體實(shí)現(xiàn)如下:
-
安裝nmap工具:首先需要在Linux系統(tǒng)上安裝nmap工具。可以通過(guò)包管理器(如apt、yum等)進(jìn)行安裝,或者從官方網(wǎng)站下載并編譯安裝。
-
運(yùn)行nmap掃描:使用以下命令運(yùn)行nmap掃描,以獲取目標(biāo)服務(wù)器支持的TLS協(xié)議和密碼套件信息:
nmap --script ssl-enum-ciphers -p 443 <目標(biāo)IP地址>
其中,--script ssl-enum-ciphers
表示使用ssl-enum-ciphers腳本,該腳本可以列出目標(biāo)服務(wù)器支持的TLS協(xié)議和密碼套件;-p 443
表示只掃描目標(biāo)服務(wù)器的443端口(HTTPS默認(rèn)端口);<目標(biāo)IP地址>
是目標(biāo)服務(wù)器的IP地址。
nmap掃描完成后,會(huì)輸出目標(biāo)服務(wù)器支持的TLS協(xié)議和密碼套件信息??梢愿鶕?jù)需要對(duì)結(jié)果進(jìn)行分析和處理。
sslcan工具快速定位目標(biāo)服務(wù)器支持哪些協(xié)議和密碼套件
sslscan工具的主要工作原理是:通過(guò)創(chuàng)建多個(gè)HTTPS連接來(lái)試探服務(wù)器支持的加密方式。當(dāng)使用HTTPS連接到服務(wù)器時(shí),會(huì)交換雙方所支持的加密方式,之后選擇雙方都能夠支持的方式進(jìn)行通信。
在這個(gè)過(guò)程中,如果https服務(wù)器配置不當(dāng),就會(huì)存在MITM(中間人)攻擊的風(fēng)險(xiǎn),攻擊者可能利用客戶端支持的較弱加密算法來(lái)欺騙服務(wù)器。例如,如果使用的是SSLV2的56位DES加密方式,那么一旦攻擊者成功攔截并使用了這種加密流量,他們可能在很短的時(shí)間內(nèi)就能夠破解加密密鑰。
此外,值得注意的是,sslscan還具有檢測(cè)heartbleed漏洞的功能。Heartbleed是一個(gè)出現(xiàn)在OpenSSL TSL中的安全漏洞,它源于一個(gè)緩沖區(qū)的錯(cuò)誤處理,這個(gè)錯(cuò)誤處理允許從內(nèi)存中讀取數(shù)據(jù)。所以,除了探測(cè)服務(wù)器支持的協(xié)議和密碼套件外,sslscan還能幫助發(fā)現(xiàn)并防備一些潛在的安全風(fēng)險(xiǎn)。
運(yùn)行sslcan掃描:使用以下命令運(yùn)行sslcan掃描,以獲取目標(biāo)服務(wù)器支持的協(xié)議和密碼套件信息:
sslscan -h <目標(biāo)IP地址>
其中,-h
表示使用HTTP方式進(jìn)行掃描;<目標(biāo)IP地址>
是目標(biāo)服務(wù)器的IP地址。sslcan掃描完成后,會(huì)輸出目標(biāo)服務(wù)器支持的協(xié)議和密碼套件信息。可以根據(jù)需要對(duì)結(jié)果進(jìn)行分析和處理。
openssl ciphers密碼套件
可以使用OpenSSL工具來(lái)查看Linux系統(tǒng)支持的TLS密碼套件列表:
openssl ciphers -V | column -t
將顯示您的Linux系統(tǒng)支持的所有TLS密碼套件的列表
運(yùn)行openssl掃描:使用以下命令運(yùn)行openssl掃描,以獲取目標(biāo)服務(wù)器支持的協(xié)議和密碼套件信息:
openssl s_client -connect <目標(biāo)IP地址>:443 -cipher <密碼套件>
其中,-connect <目標(biāo)IP地址>:443
表示連接到目標(biāo)服務(wù)器的443端口;-cipher <密碼套件>
表示指定要測(cè)試的密碼套件。
客戶端和服務(wù)器不支持SSL協(xié)議或密碼套件,會(huì)怎么樣?
如果客戶端和服務(wù)器不支持SSL協(xié)議或密碼套件,可能會(huì)導(dǎo)致通信過(guò)程中數(shù)據(jù)的安全性受到威脅。在這種情況下,應(yīng)該考慮以下解決方案:
-
升級(jí)客戶端和服務(wù)器端的軟件版本,以確保它們支持最新的SSL協(xié)議和密碼套件。
-
如果無(wú)法立即升級(jí)軟件版本,可以考慮使用其他加密協(xié)議,如TLS(傳輸層安全性)來(lái)替代SSL協(xié)議。
-
對(duì)于服務(wù)器端,可以考慮配置SSL證書(shū)和相應(yīng)的密碼套件,以確保通信過(guò)程中的數(shù)據(jù)安全。
-
對(duì)于客戶端,可以考慮配置相應(yīng)的安全選項(xiàng),確保能夠與服務(wù)器端建立安全的連接。
-
如果以上方法都無(wú)法解決問(wèn)題,建議尋求專業(yè)的網(wǎng)絡(luò)安全團(tuán)隊(duì)或廠商的幫助,以確保客戶端和服務(wù)器的通信安全。
Linux下快速確定目標(biāo)服務(wù)器支持哪些協(xié)議和密碼套件(shell腳本實(shí)現(xiàn))
#!/bin/bash
...
TLS_VERSIONS_WITH_CIPHER=(ssl2 ssl3 tls1 tls1_1 tls1_2)
TLS_VERSIONS_WITH_CIPHERSUITES=(tls1_3)
# 刪除`openssl的本地副本不支持的舊TLS版本`
for (( i=${#TLS_VERSIONS_WITH_CIPHER[@]}-1; i>=0; i-- )); do
if ! grep -qxF -- "-${TLS_VERSIONS_WITH_CIPHER[$i]}" <(openssl s_client -help 2>&1 | awk '{print $1}'); then
unset "TLS_VERSIONS_WITH_CIPHER[$i]"
fi
done
# TLS_VERSIONS_WITH_CIPHERSUITES創(chuàng)建反向查找數(shù)組
...
# 查找任何密碼{,suite}名稱的最大長(zhǎng)度
MAX_NAME_LEN=$(openssl ciphers ALL:COMPLEMENTOFALL | tr ':' '\n' | wc -L)
printf "%*s" $((MAX_NAME_LEN - 2)) ""
for tlsv in "${TLS_VERSIONS_WITH_CIPHER[@]}" "${TLS_VERSIONS_WITH_CIPHERSUITES[@]}"; do
printf "%10s" "$tlsv"
done
echo
for cipher in $(openssl ciphers 'ALL:COMPLEMENTOFALL' | sed 's/:/ /g'); do
#for cipher in $(openssl ciphers 'RSA-PSK-AES256-GCM-SHA384' | sed 's/:/ /g'); do
tput sc
found=0
printf "%*s" "$MAX_NAME_LEN" "$cipher"
if ! openssl ciphers "$cipher" >/dev/null 2>/dev/null; then
...
else
cipherarg=("-cipher" "$cipher")
APPLICABLE_TLS_VERSIONS=("${TLS_VERSIONS_WITH_CIPHER[@]}")
fi
for tlsv in "${APPLICABLE_TLS_VERSIONS[@]}"; do
if [ "${TLS_VERSIONS_WITHOUT_CIPHERS+0}" = 1 ]; then
rv=-1
else
...
rv=$?
fi
printf "%5s%1s%4s" "" "$([ $rv -eq 0 ] && echo "√" || :)" ""
[ $rv -eq 0 ] && found=1
done
if [ $found -eq 0 ]
then tput rc
else echo
fi
done
printf "%78s" " "
tput rc
編譯運(yùn)行:
If you need the complete source code, please add the WeChat number (c17865354792)
總結(jié)
對(duì)目標(biāo)服務(wù)器開(kāi)放的端口進(jìn)行詳細(xì)掃描,以確定使用的協(xié)議。例如,通過(guò)連接到80端口可以確定使用HTTP協(xié)議,通過(guò)連接到443端口可以確定使用HTTPS協(xié)議。對(duì)HTTPS協(xié)議的端口進(jìn)行進(jìn)一步掃描,以確定服務(wù)器支持的密碼套件??梢允褂霉ぞ呷鐂slscan或openssl s_client,通過(guò)連接到目標(biāo)服務(wù)器的443端口,并通過(guò)協(xié)商SSL/TLS握手過(guò)程來(lái)獲取支持的密碼套件列表。
主要通過(guò)發(fā)送網(wǎng)絡(luò)請(qǐng)求并解析服務(wù)器響應(yīng)來(lái)獲取目標(biāo)服務(wù)器開(kāi)放的端口和服務(wù)信息,再通過(guò)SSL/TLS握手獲取服務(wù)器支持的密碼套件列表。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-793766.html
Welcome to follow WeChat official account【程序猿編碼】文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-793766.html
到了這里,關(guān)于Linux下快速確定目標(biāo)服務(wù)器支持哪些協(xié)議和密碼套件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!