菜鳥必備:ipc$詳細解釋大全 (閱覽
64412 次)
目錄 :
一 前言 二 什么是ipc$ 三 什么是空會話 四 空會話可以做什么 五 ipc$連接所使用的端口 六 ipc$連接在hack攻擊中的意義 七 ipc$連接失敗的常見原因 八 復(fù)制文件失敗的原因 九 如何打開目標的IPC$共享以及其他共享 十 一些需要shell才能完成的命令 十一 入侵中可能會用到的相關(guān)命令 十二 ipc$完整入侵步驟祥解 十三 如何防范ipc$入侵 十四 ipc$入侵問答精選 十五 結(jié)束的話
一 前言
網(wǎng)上關(guān)于ipc$入侵的文章可謂多如牛毛,而且也不乏優(yōu)秀之作,攻擊步驟甚至可以說已經(jīng)成為經(jīng)典的模式,因此也沒人愿意再把這已經(jīng)成為定式的東西拿出來擺弄。 不過話雖這樣說,但我個人認為這些文章講解的并不詳細,對于第一次接觸ipc$的菜鳥來說,簡單的羅列步驟并不能解答他們的種種迷惑(你隨便找一個hack論壇搜一下ipc$,看看存在的疑惑有多少)。因此我參考了網(wǎng)上的一些資料,教程以及論壇帖子,寫了這篇總結(jié)性質(zhì)的文章,想把一些容易混淆,容易迷惑人的問題說清楚,讓大家不要總徘徊在原地! 注意:本文所討論的各種情況均默認發(fā)生在win NT/2000環(huán)境下,win98將不在此次討論之列,而鑒于win Xp在安全設(shè)置上有所提高,個別操作并不適用,有機會將單獨討論。
二 什么是ipc$
IPC$(Internet Process Connection)是共享"命名管道"的資源,它是為了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道并以此通道進行加密數(shù)據(jù)的交換,從而實現(xiàn)對遠程計算機的訪問。IPC$是NT/2000的一項新功能,它有一個特點,即在同一時間內(nèi),兩個IP之間只允許建立一個連接。NT/2000在提供了ipc$功能的同時,在初次安裝系統(tǒng)時還打開了默認共享,即所有的邏輯共享(c$,d$,e$……)和系統(tǒng)目錄winnt或windows(admin$)共享。所有的這些,微軟的初衷都是為了方便管理員的管理,但在有意無意中,導致了系統(tǒng)安全性的降低。 平時我們總能聽到有人在說ipc$漏洞,ipc$漏洞,其實ipc$并不是一個真正意義上的漏洞,我想之所以有人這么說,一定是指微軟自己安置的那個‘后門’:空會話(Null session)。那么什么是空會話呢?
三 什么是空會話
在介紹空會話之前,我們有必要了解一下一個安全會話是如何建立的。 在Windows NT 4.0中是使用挑戰(zhàn)響應(yīng)協(xié)議與遠程機器建立一個會話的,建立成功的會話將成為一個安全隧道,建立雙方通過它互通信息,這個過程的大致順序如下: 1)會話請求者(客戶)向會話接收者(服務(wù)器)傳送一個數(shù)據(jù)包,請求安全隧道的建 立; 2)服務(wù)器產(chǎn)生一個隨機的64位數(shù)(實現(xiàn)挑戰(zhàn))傳送回客戶; 3)客戶取得這個由服務(wù)器產(chǎn)生的64位數(shù),用試圖建立會話的賬號的口令打亂它,將結(jié) 果返回到服務(wù)器(實現(xiàn)響應(yīng)); 4)服務(wù)器接受響應(yīng)后發(fā)送給本地安全驗證(LSA),LSA通過使用該用戶正確的口令來核實響應(yīng)以便確認請求者身份。如果請求者的賬號是服務(wù)器的本地賬號,核實本地發(fā)生;如果請求的賬號是一個域的賬號,響應(yīng)傳送到域控制器去核實。當對挑戰(zhàn)的響應(yīng)核實為正確后,一個訪問令牌產(chǎn)生,然后傳送給客戶??蛻羰褂眠@個訪問令牌連接到服務(wù)器上的資源直到建議的會話被終止。 以上是一個安全會話建立的大致過程,那么空會話又如何呢?
空會話是在沒有信任的情況下與服務(wù)器建立的會話(即未提供用戶名與密碼),但根據(jù)WIN2000的訪問控制模型,空會話的建立同樣需要提供一個令牌,可是空會話在建立過程中并沒有經(jīng)過用戶信息的認證,所以這個令牌中不包含用戶信息,因此,這個會話不能讓系統(tǒng)間發(fā)送加密信息,但這并不表示空會話的令牌中不包含安全標識符SID(它標識了用戶和所屬組),對于一個空會話,LSA提供的令牌的SID是S-1-5-7,這就是空會話的SID,用戶名是:ANONYMOUS LOGON(這個用戶名是可以在用戶列表中看到的,但是是不能在SAM數(shù)據(jù)庫中找到,屬于系統(tǒng)內(nèi)置的賬號),這個訪問令牌包含下面?zhèn)窝b的組: Everyone Network 在安全策略的限制下,這個空會話將被授權(quán)訪問到上面兩個組有權(quán)訪問到的一切信息。那么建立空會話到底可以作什么呢?
四 空會話可以做什么
對于NT,在默認安全設(shè)置下,借助空連接可以列舉目標主機上的用戶和共享,訪問everyone權(quán)限的共享,訪問小部分注冊表等,并沒有什么太大的利用價值;對2000作用更小,因為在Windows 2000 和以后版本中默認只有管理員和備份操作員有權(quán)從網(wǎng)絡(luò)訪問到注冊表,而且實現(xiàn)起來也不方便,需借助工具。從這些我們可以看到,這種非信任會話并沒有多大的用處,但從一次完整的ipc$入侵來看,空會話是一個不可缺少的跳板,因為我們從它那里可以得到戶列表,這對于一個老練的黑客已經(jīng)足夠了。以下是空會話中能夠使用的具體命令:
1 首先,我們先建立一個空會話(需要目標開放ipc$) 命令:net use \\ip\ipc$ "" /user:"" 注意:上面的命令包括四個空格,net與use中間有一個空格,use后面一個,密碼左右各一個空格。
2 查看遠程主機的共享資源 命令:net view \\IP 解釋:建立了空連接后,用此命令可以查看遠程主機的共享資源,如果它開了共享,可以得到如下類似類似結(jié)果: 在 \\*.*.*.*的共享資源 資源共享名 類型 用途 注釋
----------------------------------------------------------- NETLOGON Disk Logon server share SYSVOL Disk Logon server share 命令成功完成。
3 查看遠程主機的當前時間 命令:net time \\IP 解釋:用此命令可以得到一個遠程主機的當前時間。
4 得到遠程主機的NetBIOS用戶名列表(需要打開自己的NBT) nbtstat -A IP 用此命令可以得到一個遠程主機的NetBIOS用戶名列表(需要你的netbios支持),返回如下結(jié)果:
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
以上就是我們經(jīng)常使用空會話做的事情,好像也能獲得不少東西喲,不過要注意一點:建立IPC$連接的操作會在EventLog中留下記錄,不管你是否登錄成功。 好了,那么下面我們就來看看ipc$所使用的端口是什么?
五 ipc$所使用的端口
首先我們來了解一些基礎(chǔ)知識: 1 SMB:(Server Message Block) Windows協(xié)議族,用于文件打印共享的服務(wù); 2 NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口實現(xiàn)基于TCP/IP協(xié)議的NETBIOS網(wǎng)絡(luò)互聯(lián)。 3 在WindowsNT中SMB基于NBT實現(xiàn),而在Windows2000中,SMB除了基于NBT實現(xiàn),還可以直接通過445端口實現(xiàn)。
有了這些基礎(chǔ)知識,我們就可以進一步來討論訪問網(wǎng)絡(luò)共享對端口的選擇了:
對于win2000客戶端來說: 1 如果在允許NBT的情況下連接服務(wù)器時,客戶端會同時嘗試訪問139和445端口,如果445端口有響應(yīng),那么就發(fā)送RST包給139端口斷開連接,用455端口進行會話,當445端口無響應(yīng)時,才使用139端口,如果兩個端口都沒有響應(yīng),則會話失??; 2 如果在禁止NBT的情況下連接服務(wù)器時,那么客戶端只會嘗試訪問445端口,如果445端口無響應(yīng),那么會話失敗。由此可見,禁止了NBT后的win 2000對win NT的共享訪問將會失敗。
對于win2000服務(wù)器端來說: 1 如果允許NBT, 那么UDP端口137, 138, TCP 端口 139, 445將開放; 2 如果禁止NBT,那么只有445端口開放。
我們建立的ipc$會話對端口的選擇同樣遵守以上原則。顯而易見,如果遠程服務(wù)器沒有監(jiān)聽139或445端口,ipc$會話是無法建立的。
六 ipc$連接在hack攻擊中的意義
就像上面所說的,即使你建立了一個空的連接,你也可以獲得不少的信息(而這些信息往往是入侵中必不可少的),如果你能夠以某一個具有一定權(quán)限的用戶身份登陸的話,那么你就會得到相應(yīng)的權(quán)限,顯然,如果你以管理員身份登陸,嘿嘿,那你可就了不得了,基本上可以為所欲為了。不過你也不要高興的太早,因為管理員的密碼不是那么好搞到的,雖然會有一些粗心的管理員存在弱口令,但這畢竟是少數(shù),而且現(xiàn)在不比從前了,隨著人們安全意識的提高,管理員們也愈加小心了,得到管理員密碼將會越來越難的,因此今后你最大的可能就是以極小的權(quán)限甚至是沒有權(quán)限進行連接,甚至在主機不開啟ipc$共享時,你根本就無法連接,你會慢慢的發(fā)現(xiàn)ipc$連接并不是萬能的,所以不要奢望每次連接都能成功,那是不現(xiàn)實的。 是不是有些灰心?倒也不用,關(guān)鍵是我們要擺正心態(tài),不要把ipc$入侵當作終極武器,不要認為它戰(zhàn)無不勝,它只是很多入侵方法中的一種,你有可能利用它一擊必殺,也有可能一無所獲,這些都是正常的,在黑客的世界里,不是每條大路都能通往羅馬,但總有一條路會通往羅馬,耐心的尋找吧!
七 ipc$連接失敗的常見原因
以下是一些常見的導致ipc$連接失敗的原因:
1 IPC連接是Windows NT及以上系統(tǒng)中特有的功能,由于其需要用到Windows NT中很多DLL函數(shù),所以不能在Windows 9.x/Me系統(tǒng)中運行,也就是說只有nt/2000/xp才可以相互建立ipc$連接,98/me是不能建立ipc$連接的;
2 如果想成功的建立一個ipc$連接,就需要對方開啟ipc$共享,即使是空連接也是這樣,如果對方關(guān)閉了ipc$共享,你將會建立失敗;
3 你未啟動Lanmanworkstation服務(wù),它提供網(wǎng)絡(luò)鏈結(jié)和通訊,沒有它你無法發(fā)起連接請求(顯示名為:Workstation);
4 對方未啟動Lanmanserver服務(wù),它提供了 RPC 支持、文件、打印以及命名管道共享,ipc$依賴于此服務(wù),沒有它遠程主機將無法響應(yīng)你的連接請求(顯示名為:Server);
5 對方未啟動NetLogon,它支持網(wǎng)絡(luò)上計算機 pass-through 帳戶登錄身份;
6 對方禁止了NBT(即未打開139端口);
7 對方防火墻屏蔽了139和445端口;
8 你的用戶名或者密碼錯誤(顯然空會話排除這種錯誤);
9 命令輸入錯誤:可能多了或少了空格,當用戶名和密碼中不包含空格時兩邊的雙引號可以省略,如果密碼為空,可以直接輸入兩個引號""即可;
10 如果在已經(jīng)建立好連接的情況下對方重啟計算機,那么ipc$連接將會自動斷開,需要重新建立連接。
另外,你也可以根據(jù)返回的錯誤號分析原因: 錯誤號5,拒絕訪問:很可能你使用的用戶不是管理員權(quán)限的,先提升權(quán)限; 錯誤號51,Windows無法找到網(wǎng)絡(luò)路徑:網(wǎng)絡(luò)有問題; 錯誤號53,找不到網(wǎng)絡(luò)路徑:ip地址錯誤;目標未開機;目標lanmanserver服務(wù)未啟動;目標有防火墻(端口過濾); 錯誤號67,找不到網(wǎng)絡(luò)名:你的lanmanworkstation服務(wù)未啟動或者目標刪除了ipc$; 錯誤號1219,提供的憑據(jù)與已存在的憑據(jù)集沖突:你已經(jīng)和對方建立了一個ipc$,請刪除再連; 錯誤號1326,未知的用戶名或錯誤密碼:原因很明顯了; 錯誤號1792,試圖登錄,但是網(wǎng)絡(luò)登錄服務(wù)沒有啟動:目標NetLogon服務(wù)未啟動; 錯誤號2242,此用戶的密碼已經(jīng)過期:目標有賬號策略,強制定期要求更改密碼。
八 復(fù)制文件失敗的原因
有些朋友雖然成功的建立了ipc$連接,但在copy時卻遇到了這樣那樣的麻煩,無法復(fù)制成功,那么導致復(fù)制失敗的常見原因又有哪些呢?
1 盲目復(fù)制 這類錯誤出現(xiàn)的最多,占到50%以上。許多朋友甚至都不知道對方是否有共享文件夾,就進行盲目復(fù)制,結(jié)果導致復(fù)制失敗而且郁悶的很。因此我建議大家在進行復(fù)制之前務(wù)必用net view \\IP這個命令看一下對方的共享情況,不要認為ipc$連接建立成功了就一定有共享文件夾。
2 默認共享判斷錯誤 這類錯誤也是大家經(jīng)常犯的,主要有兩個小方面:
1)錯誤的認為能建立ipc$連接的主機就一定開啟了默認共享,因而在建立完連接之后馬上向admin$之類的默認共享復(fù)制文件,導致復(fù)制失敗。ipc$連接成功只能說明對方打開了ipc$共享,ipc$共享與默認共享是兩碼事,ipc$共享是一個命名管道,并不是哪個實際的文件夾,而默認共享并不是ipc$共享的必要條件;
2)由于net view \\IP 無法顯示默認共享(因為默認共享帶$),因此通過這個命令,我們并不能判斷對方是否開啟了默認共享,因此如果對方未開啟默認共享,那么所有向默認共享進行的操作都不能成功;(不過大部分掃描軟件在掃弱口令的同時,都能掃到默認共享目錄,可以避免此類錯誤的發(fā)生)
3用戶權(quán)限不夠,包括四種情形: 1)空連接向所有共享(默認共享和普通共享)復(fù)制時,大多情況下權(quán)限是不夠的; 2)向默認共享復(fù)制時,要具有管理員權(quán)限; 3)向普通共享復(fù)制時,要具有相應(yīng)權(quán)限(即對方事先設(shè)定的訪問權(quán)限); 4)對方可以通過防火墻或安全軟件的設(shè)置,禁止外部訪問共享;
還需要說明一點:不要認為administrator就一定是管理員,管理員名稱是可以改的。
4被防火墻殺死或在局域網(wǎng) 也許你的復(fù)制操作已經(jīng)成功,但當遠程運行時,被防火墻殺掉了,導致找不到文件;還有可能你把木馬復(fù)制到了局域網(wǎng)
|