黑客技術:IPC$命令詳解概念篇
黑客技術——什么是IPC$命令
IPC$(Internet Process Connection)是共享"命名管道"的資源,它是為了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道并以此通道進行加密數據的交換,從而實現對遠程計算機的訪問。IPC$是NT/2000的一項新功能,它有一個特點,即在同一時間內,兩個IP之間只允許建立一個連接。NT/2000在提供了ipc$功能的同時,在初次安裝系統時還打開了默認共享,即所有的邏輯共享(c$,d$,e$……)和系統目錄winnt或windows(admin$)共享。所有的這些,微軟的初衷都是為了方便管理員的管理,但在有意無意中,導致了系統安全性的降低。
平時我們總能聽到有人在說ipc$漏洞,ipc$漏洞,其實ipc$并不是一個真正意義上的漏洞,我想之所以有人這么說,一定是指微軟自己安置的那個‘后門’:空會話(Null session)。那么什么是空會話呢?
黑客技術——什么是空會話
在介紹空會話之前,我們有必要了解一下一個安全會話是如何建立的。在Windows NT 4.0中是使用挑戰響應協議與遠程機器建立一個會話的,建立成功的會話將成為一個安全隧道,建立雙方通過它互通信息,這個過程的大致順序如下:
1)會話請求者(客戶)向會話接收者(服務器)傳送一個數據包,請求安全隧道的建 立;
2)服務器產生一個隨機的64位數(實現挑戰)傳送回突В?
3)客戶取得這個由服務器產生的64位數,用試圖建立會話的帳號的口令打亂它,將結 果返回到服務器(實現響應);
4)服務器接受響應后發送給本地安全驗證(LSA),LSA通過使用該用戶正確的口令來核實響應以便確認請求者身份。如果請求者的帳號是服務器的本地帳號,核實本地發生;如果請求的帳號是一個域的帳號,響應傳送到域控制器去核實。當對挑戰的響應核實為正確后,一個訪問令牌產生,然后傳送給客戶??蛻羰褂眠@個訪問令牌連接到服務器上的資源直到建議的會話被終止。
以上是一個安全會話建立的大致過程,那么空會話又如何呢?
空會話是在沒有信任的情況下與服務器建立的會話(即未提供用戶名與密碼),但根據WIN2000的訪問控制模型,空會話的建立同樣需要提供一個令牌,可是空會話在建立過程中并沒有經過用戶信息的認證,所以這個令牌中不包含用戶信息,因此,這個會話不能讓系統間發送加密信息,但這并不表示空會話的令牌中不包含安全標識符SID(它標識了用戶和所屬組),對于一個空會話,LSA提供的令牌的SID是S-1-5-7,這就是空會話的SID,用戶名是:ANONYMOUS LOGON(這個用戶名是可以在用戶列表中看到的,但是是不能在SAM數據庫中找到,屬于系統內置的帳號),這個訪問令牌包含下面偽裝的組:
Everyone
Network
在安全策略的限制下,這個空會話將被授權訪問到上面兩個組有權訪問到的一切信息。那么建立空會話到底可以作什么呢?
空會話可以做什么
對于NT,在默認安全設置下,借助空連接可以列舉目標主機上的用戶和共享,訪問everyone權限的共享,訪問小部分注冊表等,并沒有什么太大的利用價值;對2000作用更小,因為在Windows 2000 和以后版本中默認只有管理員和備份操作員有權從網絡訪問到注冊表,而且實現起來也不方便,需借助工具。
從這些我們可以看到,這種非信任會話并沒有多大的用處,但從一次完整的ipc$入侵來看,空會話是一個不可缺少的跳板,因為我們從它那里可以得到戶列表,而大多數弱口令掃描工具就是利用這個用戶列表來進行口令猜解的,成功的導出用戶列表大大增加了猜解的成功率,僅從這一點,足以說明空會話所帶來的安全隱患,因此說空會話毫無用處的說法是不正確的。以下是空會話中能夠使用的一些具體命令:
1 首先,我們先建立一個空連接(當然,這需要目標開放ipc$)
命令:net use \\ip\ipc$ "" /user:""
注意:上面的命令包括四個空格,net與use中間有一個空格,use后面一個,密碼左右各一個空格。
2 查看遠程主機的共享資源
命令:net view \\ip
解釋:前提是建立了空連接后,用此IPC$命令可以查看遠程主機的共享資源,如果它開了共享,可以得到如下面的結果,但此IPC$命令不能顯示默認共享。
在 \\*.*.*.*的共享資源
資源共享名 類型 用途 注釋
-----------------------------------------------------------
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
命令成功完成。
3 查看遠程主機的當前時間
命令: net time \\ip
解釋:用此命令可以得到一個遠程主機的當前時間。
4 得到遠程主機的NetBIOS用戶名列表(需要打開自己的NBT)
命令:nbtstat -A ip
用此IPC$命令可以得到一個遠程主機的NetBIOS用戶名列表,返回如下結果:
- 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
黑客技術基礎中,以上敘述的就是我們經常使用空會話做的事情,好像也能獲得不少東西喲,不過要注意一點:建立IPC$連接的操作會在Event Log中留下記錄,不管你是否登錄成功。