WireShark駭客發現之旅(5)—掃描探測
作者:Mr.Right、K0r4dji 申明:文中提到的攻擊方式僅為曝光、打擊惡意網路攻擊行為,切勿模仿,否則後果自負。
0x00 簡單介紹
“知己知彼,百戰不殆。”掃描探測,目的就是“知彼”,為了提高攻擊命中率和效率,基本上常見的攻擊行為都會用到掃描探測。
掃描探測的種類和工具太多了,攻擊者可以選擇現有工具或自行開發工具進行掃描,也可以根據攻擊需求採用不同的掃描方式。本文僅對Nmap
常見的幾種掃描探測方式進行分析。如:地址掃描探測、埠掃描探測、作業系統掃描探測、漏洞掃描探測(不包括Web
漏洞,後面會有單獨文章介紹Web
漏洞掃描分析)。
0x01 地址掃描探測
地址掃描探測是指利用ARP
、ICMP
請求目標網段,如果目標網段沒有過濾規則,則可以透過回應訊息獲取目標網段中存活機器的IP
地址和MAC
地址,進而掌握拓撲結構。
如:192.1.14.235
向指定網段發起ARP
請求,如果IP
不存在,則無回應。
如果IP
存在,該IP
會透過ARP
回應攻擊IP
,傳送自己的MAC
地址與對應的IP
。
ARP
欺騙適用範圍多限於內網,透過網際網路進行地址掃描一般基於Ping
請求。
如:192.1.14.235
向指定網段發起Ping
請求,如果IP
存在,則返回Ping reply
。
0x02 埠掃描探測
埠掃描是掃描行為中用得最多的,它能快速獲取目的機器開啟埠和服務的情況。常見的埠掃描型別有全連線掃描、半連線掃描、秘密掃描和UDP
掃描。
1、全連線掃描
全連線掃描呼叫作業系統提供的connect()
函式,透過完整的三次TCP
連線來嘗試目標埠是否開啟。全連線掃描是一次完整的TCP連線。
1)如果目標埠開啟 攻擊方:首先發起SYN
包;
目標:返回SYN ACK
;
攻擊方:發起ACK
;
攻擊方:發起RST ACK
結束會話。
2)如果埠未開啟 攻擊方:發起SYN
包;
目標:返回RST ACK
結束會話。
如:192.1.14.235
對172.16.33.162
進行全連線埠掃描,首先發起Ping
訊息確認主機是否存在,然後對埠進行掃描。
下圖為掃描到TCP3389
埠開啟的情況。
下圖為掃描到TCP1723
埠未開啟的情況。
2、半連線掃描
半連線掃描不使用完整的TCP
連線。攻擊方發起SYN
請求包;如果埠開啟,目標主機回應SYN ACK
包,攻擊方再傳送RST
包。如果埠未開啟,目標主機直接返回RST
包結束會話。
如:192.1.14.235
對172.16.33.162
進行半連線埠掃描,首先發起Ping
訊息確認主機是否存在,然後對埠進行掃描。
掃描到TCP80
埠開啟。
TCP23
埠未開啟。
3、秘密掃描TCPFIN
TCP FIN
掃描是指攻擊者傳送虛假資訊,目標主機沒有任何響應時認為埠是開放的,返回資料包認為是關閉的。
如下圖,掃描方傳送FIN
包,如果埠關閉則返回RST ACK
包。
4、秘密掃描TCPACK
TCP ACK
掃描是利用標誌位ACK
,而ACK
標誌在TCP
協議中表示確認序號有效,它表示確認一個正常的TCP
連線。但是在TCP AC
K掃描中沒有進行正常的TCP
連線過程,實際上是沒有真正的TCP
連線。所以使用TCP ACK
掃描不能夠確定埠的關閉或者開啟,因為當傳送給對方一個含有ACK
表示的TCP
報文的時候,都返回含有RST
標誌的報文,無論埠是開啟或者關閉。但是可以利用它來掃描防火牆的配置和規則等。
5、UDP埠掃描
前面的掃描方法都是針對TCP
埠,針對UDP
埠一般採用UDP ICMP
埠不可達掃描。
如:192.1.14.235
對172.16.2.4
傳送大量UDP
埠請求,掃描其開啟UDP
埠的情況。
如果對應的UDP
埠開啟,則會返回UDP
資料包。
如果埠未開啟,則返回“ICMP
埠不可達”訊息。
0x03 作業系統的探測
NMAP
進行作業系統的探測主要用到的是OS
探測模組,使用TCP/IP
協議棧指紋來識別不同的作業系統和裝置。Nmap
內部包含了2600
多種已知作業系統的指紋特徵,根據掃描返回的資料包生成一份系統指紋,將探測生成的指紋與nmap-os-db
中指紋進行對比,查詢匹配的作業系統。如果無法匹配,則以機率形式列舉出可能的系統。
如:192.168.1.50
對192.168.1.90
進行作業系統的掃描探測。首先發起Ping
請求,確認主機是否存在。
發起ARP
請求,獲取主機MAC
地址。
進行埠掃描。
根據綜合掃描情況,判斷作業系統型別。
0x04 漏洞掃描
作業系統的漏洞探測種類很多,本文針對“smb-check-vulns
”引數就MS08-067
、CVE2009-3103
、MS06-025
、MS07-029
四個漏洞掃描行為進行分析。
攻擊主機:192.168.1.200
(Win7),目標主機:192.168.1.40
(WinServer 03);
Nmap
掃描命令:nmap --script=smb-check-vulns.nse --script-args=unsafe=1 192.168.1.40
。
1、埠掃描
漏洞掃描前,開始對目標主機進行埠掃描。
2、SMB協議簡單分析
由於這幾個漏洞多針對SMB服務,下面我們簡單瞭解一下NAMP
掃描行為中的SMB命令。
SMB Command:Negotiate Protocol
(0x72):SMB協議磋商
SMB Command: Session Setup AndX
(0x73):建立會話,使用者登入
SMB Command: Tree Connect AndX
(0x75):遍歷共享資料夾的目錄及檔案
SMB Command: NT Create AndX
(0xa2):開啟檔案,獲取檔名,獲得讀取檔案的總長度
SMB Command: Write AndX
(0x2f):寫入檔案,獲得寫入的檔案內容
SMB Command:Read AndX
(0x2e):讀取檔案,獲得讀取檔案內容
SMB Command: Tree Disconnect
(0x71):客戶端斷開
SMB Command: Logoff AndX
(0x74):退出登入
3、MS08-067漏洞
(1)MS08-067漏洞掃描部分原始碼如下:
function check_ms08_067(host)
if(nmap.registry.args.safe ~= nil) then
return true, NOTRUN
end
if(nmap.registry.args.unsafe == nil) then
return true, NOTRUN
end
local status, smbstate
local bind_result, netpathcompare_result
-- Create the SMB session \\建立SMB會話
status, smbstate = msrpc.start_smb(host, "\\\\BROWSER")
if(status == false) then
return false, smbstate
end
-- Bind to SRVSVC service
status, bind_result = msrpc.bind(smbstate, msrpc.SRVSVC_UUID, msrpc.SRVSVC_VERSION, nil)
if(status == false) then
msrpc.stop_smb(smbstate)
return false, bind_result
end
-- Call netpathcanonicalize
-- status, netpathcanonicalize_result = msrpc.srvsvc_netpathcanonicalize(smbstate, host.ip, "\\a", "\\test\\")
local path1 = "\\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\..\\n"
local path2 = "\\n"
status, netpathcompare_result = msrpc.srvsvc_netpathcompare(smbstate, host.ip, path1, path2, 1, 0)
-- Stop the SMB session
msrpc.stop_smb(smbstate)
(2)分析
嘗試開啟“\\BROWSER
”目錄,下一包返回成功。
同時還有其它嘗試,均成功,綜合判斷目標存在MS08-067
漏洞。透過Metasploit
進行漏洞驗證,成功溢位,獲取Shell。
4、CVE-2009-3103漏洞
(1)CVE-2009-3103漏洞掃描部分原始碼如下:
host = "IP_ADDR", 445
buff = (
"\x00\x00\x00\x90" # Begin SMB header: Session message
"\xff\x53\x4d\x42" # Server Component: SMB
"\x72\x00\x00\x00" # Negociate Protocol
"\x00\x18\x53\xc8" # Operation 0x18 & sub 0xc853
"\x00\x26"# Process ID High: --> :) normal value should be "\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xfe"
"\x00\x00\x00\x00\x00\x6d\x00\x02\x50\x43\x20\x4e\x45\x54"
"\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31"
"\x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00"
"\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57"
"\x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61"
"\x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c"
"\x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c"
"\x4d\x20\x30\x2e\x31\x32\x00\x02\x53\x4d\x42\x20\x32\x2e"
"\x30\x30\x32\x00"
)
(2)分析
十六進位制字串“0x00000000
到202e30303200
”請求,透過ASCII
編碼可以看出是在探測NTLM
和SMB
協議的版本。無響應,無此漏洞。
5、MS06-025漏洞
(1)MS06-025漏洞掃描部分原始碼如下:
--create the SMB session
--first we try with the "\router" pipe, then the "\srvsvc" pipe.
local status, smb_result, smbstate, err_msg
status, smb_result = msrpc.start_smb(host, msrpc.ROUTER_PATH)
if(status == false) then
err_msg = smb_result
status, smb_result = msrpc.start_smb(host, msrpc.SRVSVC_PATH) --rras is also accessible across SRVSVC pipe
if(status == false) then
return false, NOTUP --if not accessible across both pipes then service is inactive
end
end
smbstate = smb_result
--bind to RRAS service
local bind_result
status, bind_result = msrpc.bind(smbstate, msrpc.RASRPC_UUID, msrpc.RASRPC_VERSION, nil)
if(status == false) then
msrpc.stop_smb(smbstate)
return false, UNKNOWN --if bind operation results with a false status we can't conclude anything.
End
(2)分析
先後嘗試去連線“\router
”、“ \srvsvc
”路徑,均報錯,無RAS RPC
服務。
6、MS07-029漏洞
(1)MS07-029漏洞掃描部分原始碼如下:
function check_ms07_029(host)
--check for safety flag
if(nmap.registry.args.safe ~= nil) then
return true, NOTRUN
end
if(nmap.registry.args.unsafe == nil) then
return true, NOTRUN
end
--create the SMB session
local status, smbstate
status, smbstate = msrpc.start_smb(host, msrpc.DNSSERVER_PATH)
if(status == false) then
return false, NOTUP --if not accessible across pipe then the service is inactive
end
--bind to DNSSERVER service
local bind_result
status, bind_result = msrpc.bind(smbstate, msrpc.DNSSERVER_UUID, msrpc.DNSSERVER_VERSION)
if(status == false) then
msrpc.stop_smb(smbstate)
return false, UNKNOWN --if bind operation results with a false status we can't conclude anything.
end
--call
local req_blob, q_result
status, q_result = msrpc.DNSSERVER_Query(
smbstate,
"VULNSRV",
string.rep("\\\13", 1000),
1)--any op num will do
--sanity check
msrpc.stop_smb(smbstate)
if(status == false) then
stdnse.print_debug(
3,
"check_ms07_029: DNSSERVER_Query failed")
if(q_result == "NT_STATUS_PIPE_BROKEN") then
return true, VULNERABLE
else
return true, PATCHED
end
else
return true, PATCHED
end
end
(2)分析
嘗試開啟“\DNSSERVER
”,報錯,未開啟DNS RPC
服務。
0x05 總結
1、掃描探測可以說是所有網路中遇到最多的攻擊,因其僅僅是資訊蒐集而無實質性入侵,所以往往不被重視。但掃描一定是有目的的,一般都是攻擊入侵的前兆。
2、修補漏洞很重要,但如果在掃描層面進行防禦,攻擊者就無從知曉你是否存在漏洞。
3、掃描探測一般都無實質性通訊行為,同時大量重複性動作,所以在流量監測上完全可以做到阻止防禦。
相關文章
- WireShark駭客發現之旅--開篇2020-08-19
- Wireshark駭客發現之旅(4)——暴力破解2020-08-19
- WireShark駭客發現之旅(7)—勒索郵件2020-08-19
- WireShark駭客發現之旅(3)—Bodisparking惡意程式碼2020-08-19Spark
- WireShark駭客發現之旅—肉雞郵件伺服器2020-08-19伺服器
- WireShark駭客發現之旅(6)—“Lpk.dll劫持+ 飛客蠕蟲”病毒2020-08-19
- WireShark駭客發現之旅(8)—針對路由器的Linux木馬2020-08-19路由器Linux
- 安全科普:Waf實現掃描器識別 徹底抵擋駭客掃描2020-08-19
- ping探測與Nmap掃描2021-10-11
- 駭客玩具入門——4、漏洞掃描與Metasploit2023-11-30
- 滲透測試之主機探測與埠掃描2021-07-19
- 駭客玩具入門——6、網路嗅探2023-12-01
- C語言編譯器開發之旅(一):詞法分析掃描器2021-06-04C語言編譯詞法分析
- Go 實現埠掃描器2023-04-13Go
- html5+的plus 監聽掃描槍廣播 處理掃描結果2020-12-07HTML
- 全表掃描和全索引掃描2023-02-16索引
- AWVS掃描器掃描web漏洞操作2018-08-06Web
- nmap網路探測及安全掃描命令學習?Linux運維技能怎麼學2021-05-13Linux運維
- 掃描器的存在、奧普 掃描器2020-02-06
- GO語言 實現埠掃描2020-12-04Go
- win10系統掃描器提示掃描不到掃描器如何解決2019-01-07Win10
- 掃描器2019-12-27
- Nmap 7.95 - Zenmap 漢化版,埠掃描、網路嗅探工具2024-07-31
- 掃描王 for Mac專業圖片掃描工具2020-12-04Mac
- 黑吃黑——駭客組織透過駭客工具攻擊其他駭客2022-11-27
- 紅客、駭客、駭客有什麼區別?駭客守則注意事項!2022-09-09
- 什麼是漏洞掃描?漏洞掃描功能有哪些?2023-09-28
- MySQL中的全表掃描和索引樹掃描2022-05-14MySql索引
- win10系統連線掃描器提示“未檢測到掃描器”如何解決2020-02-22Win10
- 用 ABAP 呼叫 OCR 介面實現計程車發票掃描2021-12-19
- 使用HTML5實現掃描PC二維碼且觸發WAP端上傳資源功能2020-09-22HTML
- 目錄掃描2020-10-07
- 埠掃描器2020-11-19
- python掃描埠2018-06-14Python
- 【推薦】超好用的5款漏洞掃描工具!2022-04-14
- DAST 黑盒漏洞掃描器 第四篇:掃描效能2022-06-22AST
- 電腦掃描檔案怎麼掃描 win10電腦掃描檔案方法介紹2022-10-18Win10
- 記學習滲透測試之掃描埠2021-11-09