熱點推薦:
您现在的位置: 電腦知識網 >> 電腦常識 >> 正文

菜鳥必備:ipc$詳細解釋大全(上)

2013-11-11 13:57:43  來源: 電腦常識 

  一 前言
  
  網上關於ipc$入侵的文章可謂多如牛毛而且也不乏優秀之作攻擊步驟甚至可以說已經成為經典的模式因此也沒人願意再把這已經成為定式的東西拿出來擺弄
  
  不過話雖這樣說但我個人認為這些文章講解的並不詳細對於第一次接觸ipc$的菜鳥來說簡單的羅列步驟並不能解答他們的種種迷惑(你隨便找一個hack論壇搜一下ipc$看看存在的疑惑有多少)因此我參考了網上的一些資料教程以及論壇帖子寫了這篇總結性質的文章想把一些容易混淆容易迷惑人的問題說清楚讓大家不要總徘徊在原地!
  
  注意本文所討論的各種情況均默認發生在win NT/環境下win將不在此次討論之列而鑒於win Xp在安全設置上有所提高個別操作並不適用有機會將單獨討論
  
  二 什麼是ipc$
  
  IPC$(Internet Process Connection)是共享命名管道的資源它是為了讓進程間通信而開放的命名管道通過提供可信任的用戶名和口令連接雙方可以建立安全的通道並以此通道進行加密數據的交換從而實現對遠程計算機的訪問IPC$是NT/的一項新功能它有一個特點即在同一時間內兩個IP之間只允許建立一個連接NT/在提供了ipc$功能的同時在初次安裝系統時還打開了默認共享即所有的邏輯共享(c$d$e$……)和系統目錄winnt或windows(admin$)共享所有的這些微軟的初衷都是為了方便管理員的管理但在有意無意中導致了系統安全性的降低
  
  平時我們總能聽到有人在說ipc$漏洞ipc$漏洞其實ipc$並不是一個真正意義上的漏洞我想之所以有人這麼說一定是指微軟自己安置的那個後門空會話(Null session)那麼什麼是空會話呢?
  
  三 什麼是空會話
  
  在介紹空會話之前我們有必要了解一下一個安全會話是如何建立的
  
  在Windows NT 中是使用挑戰響應協議與遠程機器建立一個會話的建立成功的會話將成為一個安全隧道建立雙方通過它互通信息這個過程的大致順序如下
  
  )會話請求者(客戶)向會話接收者(服務器)傳送一個數據包請求安全隧道的建立
  
  )服務器產生一個隨機的位數(實現挑戰)傳送回客戶
  
  )客戶取得這個由服務器產生的位數用試圖建立會話的帳號的口令打亂它將結果返回到服務器(實現響應)
  
  )服務器接受響應後發送給本地安全驗證(LSA)LSA通過使用該用戶正確的口令來核實響應以便確認請求者身份如果請求者的帳號是服務器的本地帳號核實本地發生如果請求的帳號是一個域的帳號響應傳送到域控制器去核實當對挑戰的響應核實為正確後一個訪問令牌產生然後傳送給客戶客戶使用這個訪問令牌連接到服務器上的資源直到建議的會話被終止
  
  以上是一個安全會話建立的大致過程那麼空會話又如何呢?
  
  空會話是在沒有信任的情況下與服務器建立的會話(即未提供用戶名與密碼)但根據WIN的訪問控制模型空會話的建立同樣需要提供一個令牌可是空會話在建立過程中並沒有經過用戶信息的認證所以這個令牌中不包含用戶信息因此這個會話不能讓系統間發送加密信息但這並不表示空會話的令牌中不包含安全標識符SID(它標識了用戶和所屬組)對於一個空會話LSA提供的令牌的SID是S這就是空會話的SID用戶名是ANONYMOUS LOGON(這個用戶名是可以在用戶列表中看到的但是是不能在SAM數據庫中找到屬於系統內置的帳號)這個訪問令牌包含下面偽裝的組
  
  Everyone
  Network
  
  在安全策略的限制下這個空會話將被授權訪問到上面兩個組有權訪問到的一切信息那麼建立空會話到底可以作什麼呢?
  
  四 空會話可以做什麼
  
  對於NT在默認安全設置下借助空連接可以列舉目標主機上的用戶和共享訪問everyone權限的共享訪問小部分注冊表等並沒有什麼太大的利用價值作用更小因為在Windows 和以後版本中默認只有管理員和備份操作員有權從網絡訪問到注冊表而且實現起來也不方便需借助工具從這些我們可以看到這種非信任會話並沒有多大的用處但從一次完整的ipc$入侵來看空會話是一個不可缺少的跳板因為我們從它那裡可以得到戶列表這對於一個老練的黑客已經足夠了以下是空會話中能夠使用的具體命令
  
   首先我們先建立一個空會話(需要目標開放ipc$)
  
  命令net use \\ip\ipc$ /user:
  
  注意上面的命令包括四個空格net與use中間有一個空格use後面一個密碼左右各一個空格
  
   查看遠程主機的共享資源
  命令net view \\IP
  解釋建立了空連接後用此命令可以查看遠程主機的共享資源如果它開了共享可以得到如下類似類似結果
  在 \\****的共享資源
  資源共享名 類型 用途 注釋
  
  
  NETLOGON Disk Logon server share
  SYSVOL Disk Logon server share
  命令成功完成
  
   查看遠程主機的當前時間
  命令net time \\IP
  解釋用此命令可以得到一個遠程主機的當前時間
  
   得到遠程主機的NetBIOS用戶名列表(需要打開自己的NBT)
  nbtstat A IP
  用此命令可以得到一個遠程主機的NetBIOS用戶名列表(需要你的netbios支持)返回如下結果
  
  Node IpAddress: [****] Scope Id: []
  
  NetBIOS Remote Machine Name Table
  
  Name Type Status
  
  SERVER <00> UNIQUE Registered
  OYAMANISHIH <00> GROUP Registered
  OYAMANISHIH <1C> GROUP Registered
  SERVER <20> UNIQUE Registered
  OYAMANISHIH <1B> UNIQUE Registered
  OYAMANISHIH <1E> GROUP Registered
  SERVER <03> UNIQUE Registered
  OYAMANISHIH <1D> UNIQUE Registered
  __MSBROWSE__<01> GROUP Registered
  INet~Services <1C> GROUP Registered
  IS~SERVER<00> UNIQUE Registered
  
  MAC Address = BAD
  
  以上就是我們經常使用空會話做的事情好像也能獲得不少東西喲不過要注意一點建立IPC$連接的操作會在EventLog中留下記錄不管你是否登錄成功 好了那麼下面我們就來看看ipc$所使用的端口是什麼?
  
  五 ipc$所使用的端口
  
  首先我們來了解一些基礎知識
  
   SMB:(Server Message Block) Windows協議族用於文件打印共享的服務
  
   NBT:(NETBios Over TCP/IP)使用(UDP)(UDP)(TCP)端口實現基於TCP/IP協議的NETBIOS網絡互聯
  
   在WindowsNT中SMB基於NBT實現而在WindowsSMB除了基於NBT實現還可以直接通過端口實現
  
  有了這些基礎知識我們就可以進一步來討論訪問網絡共享對端口的選擇了
  
  對於win客戶端來說
  
   如果在允許NBT的情況下連接服務器時客戶端會同時嘗試訪問端口如果端口有響應那麼就發送RST包給端口斷開連接端口進行會話端口無響應時才使用端口如果兩個端口都沒有響應則會話失敗
  
   如果在禁止NBT的情況下連接服務器時那麼客戶端只會嘗試訪問端口如果端口無響應那麼會話失敗由此可見禁止了NBT後的win 對win NT的共享訪問將會失敗
  
  對於win服務器端來說
  
   如果允許NBT 那麼UDP端口 TCP 端口 將開放
  
   如果禁止NBT那麼只有端口開放
  
  我們建立的ipc$會話對端口的選擇同樣遵守以上原則顯而易見如果遠程服務器沒有監聽端口ipc$會話是無法建立的
  
  六 ipc$連接在hack攻擊中的意義
  
  就像上面所說的即使你建立了一個空的連接你也可以獲得不少的信息(而這些信息往往是入侵中必不可少的)如果你能夠以某一個具有一定權限的用戶身份登陸的話那麼你就會得到相應的權限顯然如果你以管理員身份登陸嘿嘿那你可就了不得了基本上可以為所欲為了不過你也不要高興的太早因為管理員的密碼不是那麼好搞到的雖然會有一些粗心的管理員存在弱口令但這畢竟是少數而且現在不比從前了隨著人們安全意識的提高管理員們也愈加小心了得到管理員密碼將會越來越難的因此今後你最大的可能就是以極小的權限甚至是沒有權限進行連接甚至在主機不開啟ipc$共享時你根本就無法連接你會慢慢的發現ipc$連接並不是萬能的所以不要奢望每次連接都能成功那是不現實的
  
  是不是有些灰心?倒也不用關鍵是我們要擺正心態不要把ipc$入侵當作終極武器不要認為它戰無不勝它只是很多入侵方法中的一種你有可能利用它一擊必殺也有可能一無所獲這些都是正常的在黑客的世界裡不是每條大路都能通往羅馬但總有一條路會通往羅馬耐心的尋找吧!
  
  七 ipc$連接失敗的常見原因
  
  以下是一些常見的導致ipc$連接失敗的原因
  
   IPC連接是Windows NT及以上系統中特有的功能由於其需要用到Windows NT中很多DLL函數所以不能在Windows x/Me系統中運行也就是說只有nt//xp才可以相互建立ipc$連接
From:http://tw.wingwit.com/Article/Common/201311/4880.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.