開放IPC$共用_安全教程

來源:互聯網
上載者:User

首先,我們先認識一下什麼是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
解釋:前提是建立了空串連後,用此命令可以查看遠程主機的共用資源,如果它開了共用,可以得到如下面的結果,但此命令不能顯示預設共用。

在 \\*.*.*.*的共用資源
資源共用名稱 類型 用途 注釋

-----------------------------------------------------------
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
命令成功完成。

3 查看遠程主機的目前時間
命令: net time \\ip
解釋:用此命令可以得到一個遠程主機的目前時間。


4 得到遠程主機的NetBIOS使用者名稱列表(需要開啟自己的NBT)
命令:nbtstat -A ip
用此命令可以得到一個遠程主機的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中留下記錄,不管你是否登入成功。 好了,那麼下面我們就來看看ipc$所使用的連接埠是什嗎?

首先我們來瞭解一些基礎知識:
1 SMB:(Server Message Block) Windows協議族,用於檔案列印共用的服務;
2 NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)連接埠實現基於TCP/IP協議的NETBIOS網路互聯。
3 在WindowsNT中SMB基於NBT實現,即使用139(TCP)連接埠;而在Windows2000中,SMB除了基於NBT實現,還可以直接通過445連接埠實現。

有了這些基礎知識,我們就可以進一步來討論訪問網際網路共用對連接埠的選擇了:

對於win2000用戶端(發起端)來說:
1 如果在允許NBT的情況下串連伺服器時,用戶端會同時嘗試訪問139和445連接埠,如果445連接埠有響應,那麼就發送RST包給139連接埠中斷連線,用455連接埠進行會話,當445連接埠無響應時,才使用139連接埠,如果兩個連接埠都沒有響應,則會話失敗;
2 如果在禁止NBT的情況下串連伺服器時,那麼用戶端只會嘗試訪問445連接埠,如果445連接埠無響應,那麼會話失敗。


對於win2000伺服器端來說:
1 如果允許NBT, 那麼UDP連接埠137, 138, TCP 通訊埠 139, 445將開放(LISTENING);
2 如果禁止NBT,那麼只有445連接埠開放。


我們建立的ipc$會話對連接埠的選擇同樣遵守以上原則。顯而易見,如果遠程伺服器沒有監聽139或445連接埠,ipc$會話是無法建立的。

ipc管道本來是微軟為了方便管理員進行遠端管理而設計的,但在入侵者看來,開放ipc管道的主機似乎更容易得手。通過ipc管道,我們可以遠程調用一些系統函數(大多通過工具實現,但需要相應的許可權),這往往是入侵成敗的關鍵。如果不考慮這些,僅從傳送檔案這一方面,ipc管道已經給了入侵者莫大的支援,甚至已經成為了最重要的傳輸手段,因此你總能在各大論壇上看到一些朋友因為打不開目標機器的ipc管道而一籌莫展大呼救命。當然,我們也不能忽視許可權在ipc管道中扮演的重要角色,想必你一定品嘗過空會話的尷尬,沒有許可權,開啟管道我們也無可奈何。但入侵者一旦獲得了管理員的許可權,那麼ipc管道這把雙刃劍將顯示出它猙獰的一面。

目前最快捷的IPC$入侵方法
[1]psexec.exe \\IP -u 管理員帳號 -p 密碼 cmd
\\用這個工具我們可以一步到位的獲得shell

OpenTelnet.exe \\server 管理員帳號 密碼 NTLM的認證方式 port
\\用它可以方便的更改telnet的驗證方式和連接埠,方便我們登陸

[2]
已經沒有第二步了,用一步獲得shell之後,你做什麼都可以了,安後門可以用winshell,複製就用ca吧,開終端用3389.vbe,記錄密碼用win2kpass,總之好的工具不少,隨你選了,我就不多說了。

看到了IPC$這麼可怕的安全隱患,還不關閉它,還在等什嗎?

接下來,我們介紹防範IPC$入侵的一些方法。

一、防止建立IPC$空串連

修改註冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\

數值名稱:RestrictAnonymous 類型:dword 值:1

點擊查看詳細介紹 點擊下載NoIPC.REG檔案

二、關閉C$等系統預設共用

修改註冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
LanmanServer\Parameters

數值名稱:AutoShareServer 類型:dword 值:0

點擊查看詳細介紹 點擊下載NOShare.REG檔案

三、停止server服務(關閉IPC$服務)
net stop server /y (重新啟動後server服務會重新開啟)

四、 屏蔽139,445連接埠
由於沒有以上兩個連接埠的支援,是無法建立ipc$的,因此屏蔽139,445連接埠同樣可以阻止ipc$入侵。

1、139連接埠可以通過禁止NBT來屏蔽
本地串連-TCP/IT屬性-進階-WINS-選‘禁用TCP/IT上的NETBIOS'一項

2、445連接埠可以通過修改註冊表來屏蔽
添加一個索引值
Hive: HKEY_LOCAL_MACHINE
Key: System\Controlset\Services\NetBT\Parameters
Name: SMBDeviceEnabled
Type: REG_DWORD
Value: 0

五、安裝防火牆進行連接埠過濾


六、 設定複雜密碼,防止通過ipc$窮舉出密碼,我覺得這才是最好的辦法,增強安全意識,比不停的打補丁要安全的多。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.